精华内容
下载资源
问答
  • # 打开数据库连接 db = MySQLdb.connect("localhost","root","","TESTDB") # 使用cursor()方法获取操作游标 cursor = db.cursor() # 如果数据表已经存在使用 execute() 方法删除表。 cursor.execute("DROP TABLE ...

    生成验证码效果:


    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    import MySQLdb
    import random
    import string
    import sys
    
    #生成验证码
    def codeMaker():
        s = "0123456789" + string.letters
        a = ""
        for i in range(4):
            for i in range(4):
                a += random.choice(s)
            if i < 4:
                a += '-'
        a = a[:-1]
        return a
    #保存在文件中
    file = open("test.txt",'w')
    for i in range(200):
        file.write(codeMaker())
    #从文件中读取并保存在str里
    file = open("test.txt", "r+")
    str = file.read()
    
    # 打开数据库连接
    db = MySQLdb.connect("localhost","root","","TESTDB")
    
    # 使用cursor()方法获取操作游标
    cursor = db.cursor()
    
    # 如果数据表已经存在使用 execute() 方法删除表。
    cursor.execute("DROP TABLE IF EXISTS Code")
    
    # 创建数据表SQL语句
    sql = """CREATE TABLE Code (
            Codes  CHAR(20) NOT NULL)"""
    
    cursor.execute(sql)
    # 关闭数据库连接
    db.close()
    
    # 打开数据库连接
    db = MySQLdb.connect("localhost","root","","TESTDB" )
    
    # 使用cursor()方法获取操作游标
    cursor = db.cursor()
    # SQL 插入语句
    for n in range(200):
        sql = "INSERT INTO Code(Codes) VALUES ('%s')" % (str[19*n : 19*n+19])
        try:
            # 执行sql语句
            cursor.execute(sql)
            # 提交到数据库执行
            db.commit()
        except:
            # Rollback in case there is any error
            db.rollback()
    # 关闭数据库连接
    db.close()
    # 关闭文件
    file.close()


    展开全文
  • 带你走进MySQL数据库(MySQL入门详细总结一)

    千次阅读 多人点赞 2020-04-20 19:49:12
    MySQL数据库的安装:(这里就不细讲了,建议百度)。 MySQL的使用 MySQL的登录: 1.在doc窗口下输入:mysql -uroot -p加密码。(也可以敲回车后输入密码,这样密码不可见)。 2.MySQL服务默认端口号:3306。 3.修改...

    导读:关于MySQL用三篇文章带你进入MySQL的世界。

    带你走进MySQL数据库(MySQL入门详细总结二)

    带你走进MySQL数据库(MySQL入门详细总结三)

    1.MySQL

    MySQL开源免费,MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。。MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。
    在这里插入图片描述
    1.免安装版MySQL的安装
    2.安装版MySQL的安装

    2.MySQL的使用

    MySQL的登录:(本地服务)
    1.在doc窗口下输入:mysql -uroot -p加密码。(也可以敲回车后输入密码,这样密码不可见)。

    登入服务器端MySql:
    mysql -hlocalhost -P3306 -uroot -p加密码
    2.MySQL服务默认端口号:3306。
    3.修改root密码:
    在这里插入图片描述
    在这里插入图片描述
    4.卸载MySQL

    • 双击原来的安装包,然后点击remove。卸载。
    • 手动删除Program File中的MySQL目录。
    • 手动删除 ProgramDate目录(一般为隐藏)中的MySQL目录。

    3.MySQL概述

    1.sql,DB,DBMS分别是什么?他们之间是什么关系?

    • DB:DataBase(数据库,数据库实际上在硬盘上以文件的形式存在)
    • 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
    • DBMS数据库管理软件。
      2.什么是表?
    • 表:table
    • 表是数据库的基本组成单元,所有的数据都以表格的形式组织,目的是可读性强。
    • 一个表包括行和列:
      行:被称为数据/记录(data)
      列:被称为字段。(column)
    • 每个字段应该包括哪些属性?
      字段名,数据类型,相关的约束。
      如:学号(int) 姓名(varchar)
    • RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:
      1.数据以表格的形式出现
      2.每行为各种记录名称
      3.每列为记录名称所对应的数据域
      4.许多的行和列组成一张表单
      5.若干的表单组成database
      RDBMS 术语
      在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语:
    • 数据库: 数据库是一些关联表的集合。
    • 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
    • 列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
    • 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
    • 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
    • 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
    • 外键:外键用于关联两个表。
    • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
    • 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
    • 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
      3.MySQL主要学习SQL语句,SQL语句怎么分类呢?
    • DQL(数据查询语言):查询语句,凡是select语句都是DQL.
    • DML(数据操作语言):insert delete update,对表当中的数据进行增删改。
    • DDL(数据定义语言):create drop(删除) alter(修改),对表结构的增删改。
    • TCL(事物控制语言):commit提交事务,rollback回滚事务。
    • DCL(数据控制语言):qrant授权,revoke撤销权限。

    4.导入数据

    第一步:登录mysql数据库管理系统。(mysql -uroot -p)
    第二步:查看有哪些数据库
    show databases;命令。(不是SQL语句,属于MySQL命令)
    ±-------------------+
    | Database |
    ±-------------------+
    | information_schema |
    | mysql |
    | performance_schema |
    | sys |
    ±-------------------+
    第三步:创建属于我们自己的数据库
    create database xingkong;(这个是mysql命令)
    第四步:使用xingkong数据库
    use xingkong;(mysql命令)
    第五步:查看当前使用的数据库有哪些表格(mysql命令)
    show tables;(查看exam数据库中的表:show tables from exam;)
    第六步:初始化数据
    source 路径和文件名称;(这里自定义了一个数据库,一下出现的代码都是基于此)
    5.xingkong.sql,这个文件以sql结尾,这样的文件被称为“sql脚本”。
    什么是sql脚本?

    • 当一个文件的扩展名为.sql,并且该文件中编写了大量的sql语句,我们称这样的为sql脚本。
    • 注意:直接使用source命令可以执行sql脚本。
    • sql脚本中的数据量太大的时候,无法打开,请使用source命令完成初始化。
      6.删除数据库:
      drop database xingkong;
      7.查看表结构:
      desc dept;部门表(自定义表)
      desc emp;员工表(自定义表)
      desc salgrade;工资等级表(自定义表)
      8.表中的数据:
      select * from emp;
      select *from dept;
      9. 查看当前用的数据库:
      select database();
      select version();版本
      10.常用命令
    • \c 命令 结束一条语句。
    • exit 命令,退出mysql;
      11.查看创建表的语句:
      show create table emp;

    5.sql语句

    1.查询

    1.简单的查询语句(DQL)

    • 语法格式:select 字段名1,字段名2,字段名3,…from 表名;
    • 提示:任何一个sql语句以“;”结尾。
    • sql语句不区分大小写。(但对表中存储的数据就不一样,mysql语法严格)
      *** 查询的时候字段可以参与数学运算:**
      select ename,sal*12 as (新名字) from emp;(ename,sal 为字段,emp为表)名字如果为中文需要用单引号括起来。(as关键字可以省略)
    • 字符串使用单引号括起来。
    • 查询所有字段?
      select * from emp;(emp为自定义的表),效率较低。
      2.条件查询
    • 语法格式:selcet 字段,字段,… from 表名 where 条件;条件为字符串需要单引号括起来。
      执行顺序为:from,然后where,最后select;
      不等于:<>符合。或!=。
    • select ename ,sal from emp where sal between 11 and 500;
      between …and 使用的时候必须左小右大,也可以使用在字符串方面。数字【左闭右闭】。
      在这里插入图片描述
      select ename from emp where ename between ‘a’ and ‘c’;首字母【左闭右开】。
    • 在数据库中NULL不是一个之,代表什么也没有,不能用等号衡量,只能使用 is null 或者 is not null;(0和null表示的东西不一样)
    • 找出工作岗位是xxx和xxxx的员工:
      用or:select ename,job from emp where job = ‘xxx’ or job=‘xxxx’;可以加小括号来搞定优先级。
      where job in (‘xxx’,‘xxxx’);不是一个区间,直接是一个值。
      not in 表示不在。
    • 模糊查询like?
      找出名字当中含有嘉的?(模糊查询需掌握两个特殊的符号,一个是%,一个是_)
      %代表任意多个字符,_代表任意一个字符。
      如:*查找含A的(ename为自定义字段,emp为自定义表)
      select ename from emp where ename like ‘%O%’;
      *查找名字第二个字母是A的?
      select ename from emp where ename like ‘_A%’;
      *找出名字有下划线的?(用下划线转义)
      select ename from emp where ename like ‘%\ _%’;
      *找出名字中最后一个是T的?
      select ename from emp where like ‘%T’;

    2.排序(升序,降序)

    1.按照工资升序,找出员工名和薪资?(默认升序)
    select
    ename,sal
    from
    emp
    order by
    sal;
    注意:默认为升序,指定升序:asc,指定降序desc
    select ename, sal from emp order by sal desc;
    2.按照工资的降序排列,当工资相同的时候,按照名字的升序排序。
    select ename,sal from emp order by sal desc,ename asc;
    多个排序,靠前面的字段更加重要,去主导作用,后面的字段可能都用不上。
    3.找出工作岗位是xxxx的员工,并且要求按照薪资的降序排列。
    select
    ename,job,sal
    from
    emp
    where
    job =‘xxxx’
    order by
    sal desc;
    order by是最后执行的。先from,后where,再select,最后order by.

    3.分组函数

    另称:多行处理函数。

    • 一.那什么是单行处理函数呢?
      输入一行,输出一行。
    • 计算每个员工的年薪?
      select ename ,(8000+NULL)*12 as yearsal from emp;(数据库中数学表达式中有NULL,结果一定是NULL)
    • ifnull()空处理函数怎么用?
      ifnull(可能为null的数据,被当作什么处理):属于单行处理函数。
      select ename ,ifnull(comn,0)as comm from emp;
      二.分组函数(多行处理函数)
      1.count 计数
      2.sum 求和
      3.avg 平均值
      4.max 最大值
      5.min 最小值

      一共就这五个。
      注意:所有的分组函数都是对“某一组”数据操作。
    • 找出工资总和?
      select sum(sal) from emp;
    • 找出最高工资?
      select max(sal) from emp;
    • 找出平均工资?
      select avg(sal) from emp;
    • 找出总人数?
      select count(*) from emp;
      select count(ename) from emp;
    • 输入多行,最终输出为一行。
    • 分组函数自动忽略NULL。(不会统计)
      所以:select sum(sal) from emp where sal is not nul;是没有必要的。
      select count (comm)from emp;(comm自定义字段,含义:津贴)
    • 找出工资高于平均工资的员工?
    • select ename,sal from emp where sal>avg(sal);//这种写法是错误的。
      原因:**SQL语句当中有一个语法规则,分组函数不可以直接使用在where字句当中。**因为 group by是在where之后执行的。所以说还没有分组,不能用分组函数,没有group by 语句也自成一组,即有缺省的group by。
      因此:解决问题的方法为:
      第一步:找出平均工资
      select avg(sal) from emp;
      第二步:找出高于平均工资的员工。
      select ename,sal,from emp where sal >2073.xx
      综合起来:select ename ,sal from emp where sal>(select avg(sal) from emp);
      ±------±--------+
      | ename | sal |
      ±------±--------+
      | JONES | 2975.00 |
      | BLAKE | 2850.00 |
      | CLARK | 2450.00 |
      | SCOTT | 3000.00 |
      | KING | 5000.00 |
      | FORD | 3000.00 |
      ±------±--------+
    • count()和count(具体的某个字段),他们有什么区别。
      count(
      ):不是统计某个字段中数据的个数,而是统计总记录条数。(和某个字段无关)count(comm):表示统计comm字段中不为NULL的数据总数量。

    4.group by和having

    group by:按照某个字段或者某些字段进行分组。
    having :having 是对分组之后的数据进行再次过滤。
    两者必须联合使用。
    案例:找出某个岗位的最高薪资?
    1.先进行分组。

    • select max(sal) from emp group by job;
      注意:分组函数一般和group by联合使用,这也是为什么他被称为分组函数的原因。
    • 任何一个分组函数count sum avg max min)都是在group by 语句执行结束之后才会执行的。当一条sql语句没有group by 的话,整张表就会自成一组。
    • 当一条语句中有group by 时,select后面只能跟分组函数,和分组字段。
      案例:找出每个部门,不同工作岗位的最高薪资?(两个字段联合分组)
      select
      deptno,job,max(sal)
      from
      emp
      group by
      deptno,job;
    • 找出每个部门的最高薪资,要求显示薪资大于2500的数据。

    第一步:找出每个部门的最高薪资
    select max(sal) ,deptno from emp group by deptno;
    第二部:找出薪资大于2900
    select max(sal) ,deptno from emp group by deptno having max(sal)>2900;//效率较低(较高的mysql版本不能用)
    第二种方法:
    select
    max(sal) deptno
    from
    emp
    where
    sal>2900
    group by
    deptno;//效率较高
    案例:找出每个部门的平均工资,要求显示薪资大于2000的数据。
    第一步:找出每个部门的平均工资。
    select deptno ,avg(sal) from emp group by deptno;
    第二步:要求显示薪资大于2000的数据。
    select deptno,avg(sal) from emp group by deptno having avg(sal) >2000;
    在这里插入图片描述

    • select语句总结
      在这里插入图片描述
    • 关于查询结果集的去重?
      在select后加distinct关键字去除重复记录。
      distinct关键字只能出现在所有字段的最前面。(不然不均衡啊)如果有多个字段,联合起来去重。
      如:select distinct deptno ,job from emp;
      结果:
      ±-------±----------+
      | deptno | job |
      ±-------±----------+
      | 20 | CLERK |
      | 30 | SALESMAN |
      | 20 | MANAGER |
      | 30 | MANAGER |
      | 10 | MANAGER |
      | 20 | ANALYST |
      | 10 | PRESIDENT |
      | 30 | CLERK |
      | 10 | CLERK |
      ±-------±----------+
    • 统计岗位的数量?
      select count(distinct job) from emp;

    关注公众号【轻松玩编程】回复关键字激活码即可获取:全家桶通用激活码(激活码支持idea,pycharm,webstorm,phpstorm…激活)定期更新。适用于最新及以下版本。(无需破解和修改hosts,如果破解过请卸载重新安装官方原版,如果修改过hosts,请删除你添加的网址,然后重新激活)

    回复关键字“电子书”,“计算机资源”,“Java从入门到进阶”,”JavaScript教程“,“算法”,“Python学习资源”,“人工智能”等即可获取学习资源。
    在这里插入图片描述

    展开全文
  • mysql激活

    2012-07-30 06:54:14
    mysql激活
  • MySQL数据库日志详解

    2019-05-19 22:26:22
    MYSQL数据类型 详解说明 错误日志 当数据库启动运行或停止时产生该日志。 普通查询日志 客户端连接数据库执行语句时产生该日志。 二进制日志 当数据库发生改变时产生该日志。 中继日志 ...
      	MYSQL数据类型									详解说明	
          错误日志                      	 当数据库启动运行或停止时产生该日志。
         普通查询日志                      客户端连接数据库执行语句时产生该日志。
          二进制日志                     	 当数据库发生改变时产生该日志。
          中继日志	                     从库收到主库更新时产生该日志。
          慢查询日志             	         SQL在数据库查询超过指定时间而产生日志。
          DDL日志             	         执行DDL语句操作原数据时产生该日志。
    

    默认情况下,以上所有的日志都处于非激活状态(Linux环境)。当激活日志时,所有的日志都默认配置在数据文件的目录下。管理员也可以对上述日志进行轮询切割,实现该功能常见的命令是mysqladmin flush-logs、mysqldump的“-F”或“–master-data”参数等,下面就分别介绍这几种日志知识。

    常用查询简介

    (1)错误日志的介绍与配置
    1.错误日志的介绍
    MySQL的错误日志用于记录MySQL服务进程mysqld在启动/关闭或运行过程中遇到的错误信息。
    2.错误日志的记录配置
    MySQL的错误日志通常由mysqld或mysqld_safe程序产生,前文已经讲解过MySQL的启动原理,因此,可利用如下方法配置记录MySQL错误日志。
    方法1:在my.cnf配置文件中调整,注意,是在[mysqld_safe]或[mysqld]模块的下面进行配置。命令如下:
    [mysqld]
    log-error = /data/mysql/error.err /data/mysql/error.err 都是自己手动创建的,记得修改所属的用户与所属的组为mysql ,或者修改操作权限
    chown -R mysql:mysql /data/mysql
    chmod -R 755 /data/mysql
    方法2:在启动MySQL服务的命令里加入记录错误日志的参数。
    示例如下:
    log-error=/data/mysql/error/error.err
    查看到的最终结果为:
    show variables like ‘log_error%’;
    修改文件夹的权限
    3.错误日志轮询
    管理员可以使用命令轮询错误日志,例如可以按天轮询,具体方法如下:
    [root@songls~]# cd /data/mysql/error/ #<==切换到日志目录下。
    [root@songls mysql]# mv error.err error_$(date +%F).err #<==将错误日志按天
    移动改名。
    [root@songls data]# mysqladmin flush-logs #<==执行刷新日志命令。
    [root@songls data]# ls -l error.err
    -rw-rw----. 1 mysql mysql 0 Mar 19 19:34 error.err #<==新的错误日志诞生了。
    4.数据库故障排查案例分析
    新手安装数据库时,遇到数据库无法启动时的排查方法具体如下。
    1)先清空错误日志文件,然后重新启动MySQL服务,再查看日志文件报什么错误,并根据错误日志进行处理。
    2)如果无法解决,则删除数据文件,重新初始化数据库。
    假设在排查故障时,得到的错误日志提示为:
    180321 17:36:26 InnoDB: Completed initialization of buffer pool
    180321 17:36:26 InnoDB: Operating system error number 13 in a file operation.
    InnoDB: The error means mysqld does not have the access rights to
    InnoDB: the directory.
    InnoDB: File name ./ibdata1
    根据提示可知,该错误是权限问题导致的问题,可对数据目录递归执行权限,然后再重启数据库。命令如下:

    [root@songls data]# chown -R mysql:mysql /data/mysql/error
    

    (2)慢查询日志
    1.慢查询日志介绍
    简单地理解,慢查询日志(slow query log)就是记录执行时间超出指定值(long_query_time)或其他指定条件(例如,没有使用到索引,结果集大于1000行)的SQL语句。
    2.慢查询日志相关参数说明
    慢查询的参数,对于数据库SQL的优化非常重要,是SQL优化的前提,因此,这里以表的形式进行说明,具体见表

    在这里插入图片描述

    3.慢查询日志重要参数配置
    企业中常见的配置慢查询的参数为:
    slow-query-log = ON #<==慢查询开启开关
    long_query_time = 2 #<==记录大于2秒的SQL语句。
    log_queries_not_using_indexes #<==没有使用到索引的SQL语句。
    slow-query-log-file = /data/mysql/slow/slow.log #<==记录SQL语句的文件。
    min_examined_row_limit = 800 #<==记录结果集大于800行的SQL语句。
    可将上述参数配置到my.cnf里,配置完毕重启MySQL服务,并进行检查:
    mysql> show variables like ‘slow_query%’;
    ±--------------------±----------------------------+
    | Variable_name | Value |
    ±--------------------±----------------------------+
    | slow_query_log | ON | #<==开关已打开。
    | slow_query_log_file | /data/mysql/slow.log | #<==文件路径已生效。
    ±--------------------±----------------------------+
    2 rows in set (0.00 sec)
    mysql> show variables like ‘%long_query%’;
    ±----------------±---------+
    | Variable_name | Value |
    ±----------------±---------+
    | long_query_time | 2.000000 | #<==记录大于2秒的查询已生效。
    ±----------------±---------+
    1 row in set (0.01 sec)
    mysql> show variables like ‘%log_queries_not%’;
    ±------------------------------±------+
    | Variable_name | Value |
    ±------------------------------±------+
    | log_queries_not_using_indexes | ON | #<==记录没有使用索引的查询已生效。
    ±------------------------------±------+
    1 row in set (0.00 sec)

    mysql> show variables like ‘%min_examined_row_limit%’;
    ±-----------------------±------+
    | Variable_name | Value |
    ±-----------------------±------+
    | min_examined_row_limit | 800 | #<==记录查询结果集大于800行的SQL已生效。
    ±-----------------------±------+
    1 row in set (0.00 sec)
    到此,就已经设定好记录慢查询SQL语句的条件了,那么,对于每天所产生的大量慢查询,又该如何处理和分析呢?
    4.慢查询日志的刷新方法
    在工作中,可以利用定时任务按天对慢查询日志进行切割,然后再分析。
    示例切割脚本如下:
    [root@oldboy data]# mkdir /server/scripts/ -p
    [root@oldboy data]# cat /server/scripts/cut_slow_log.sh
    export PATH=/application/mysql/bin:/sbin:/bin:/usr/sbin:/usr/bin
    cd /data/mysql/slow
    mv slow.log slow.log.$(date +%F)
    mysqladmin flush -log
    将上述脚本放入定时任务,每天0点执行切割任务,配置结果如下:
    [root@oldboy data]# tail -2 /var/spool/cron/root
    #cut mysql slow log by oldboy at 20180324
    00 00 * * * /bin/sh /server/scripts/cut_slow_log.sh >/dev/null 2>&1
    5.使用工具分析慢查询日志
    实际工作中,慢查询的日志可能非常多,给运维人员的优化工作带来了一定的困难,MySQL官方提供了慢查询的分析工具mysqldumpslow,有兴趣的读者可以参考官方手册。
    下面为大家介绍一款很不错的第三方分析工具mysqlsla(需要单独安装该工具)。
    (1)安装mysqlsla
    请提前下载好mysqlsla-2.03.tar.gz到指定目录下,然后执行如下命令安装:
    yum install perl-devel perl-DBI -y
    rpm -qa perl-devel perl-DBI
    tar -xf mysqlsla-2.03.tar.gz
    cd mysqlsla-2.03
    perl Makefile.PL
    make
    make install
    (2)利用mysqlsla工具分析慢查询
    mysqlsla命令的默认路径为:/usr/local/bin/mysqlsla。
    简单语法如下:
    mysqlsla -lt slow [SlowLogFilePath] > [ResultFilePath]
    在实际工作中,通常使用脚本调用mysqlsla工具进行分析,然后每天早晨8点,把分析结果发给企业的核心人员(DBA、运维总监、CTO、研发总监、核心开发),最后由DBA配合核心开发共同优化这些棘手的SQL慢查询。

    (3)二进制日志的介绍与配置
    1.二进制日志的介绍
    二进制日志的作用是记录数据库里的数据被修改的SQL语句,一般为DDL和DML语句,例如含有insert、update、delete、create、drop、alter等关键字的语句。
    2.二进制日志的作用
    二进制日志最重要的作用有2个,具体如下。
    第一个是记录MySQL数据的增量数据,用来做增量数据库恢复,没有二进制日志功能,MySQL的备份将无法完整还原数据。
    第二个是实现主从复制功能,具体见MySQL主从复制的相关内容。
    3.二进制日志的配置
    在/etc/my.cnf
    log-bin=/data/mysql/bin/binlog.bin

    [root@songls data]# grep log_bin /etc/my.cnf
    log_bin #<==默认情况下记录日志前缀为“主机名-bin”。
    mysql> show variables like ‘log_bin’;
    ±--------------±------+
    | Variable_name | Value |
    ±--------------±------+
    | log_bin | ON | #<==记录binlog开关。
    ±--------------±------+
    1 row in set (0.00 sec)

    mysql> show variables like ‘%log_bin’;
    ±--------------±------+
    | Variable_name | Value |
    ±--------------±------+
    | log_bin | ON | #<==记录binlog开关。
    | sql_log_bin | ON | #<==临时不记录binlog开关。
    ±--------------±------+
    2 rows in set (0.00 sec)
    有个参数可以实现在开启binlog功能的前提下,临时不记录binlog,示例如下:
    mysql> set session sql_log_bin = OFF; #<==临时停止记录binlog,注意是session
    级别,不影响其他会话。
    Query OK, 0 rows affected (0.00 sec)
    mysql> show variables like ‘%log_bin’;
    ±--------------±------+
    | Variable_name | Value |
    ±--------------±------+
    | log_bin | ON |
    | sql_log_bin | OFF | #<==已关闭。
    ±--------------±------+
    2 rows in set (0.00 sec)
    mysql> create database oldgirl; #<==建库测试。
    Query OK, 1 row affected (0.00 sec)

    mysql> show binary logs; #<==查看binlog文件列表及位置点。
    ±------------------±----------+
    | Log_name | File_size |
    ±------------------±----------+
    | oldboy-bin.000001 | 143 |
    | oldboy-bin.000002 | 168 |
    | oldboy-bin.000003 | 168 |
    | oldboy-bin.000004 | 9299 |
    | oldboy-bin.000005 | 211 | #<==最新的binlog文件及位置点,也可以通过
    “show master status;”来确定。
    ±------------------±----------+
    5 rows in set (0.00 sec)
    mysql> system mysqlbinlog oldboy-bin.000005|grep “oldgirl”
    #<==过滤binlog文件,没有记录binlog。
    mysql> set session sql_log_bin = On; #<==开启开关。
    Query OK, 0 rows affected (0.00 sec)
    mysql> drop database oldgirl; #<==删除数据库。
    Query OK, 0 rows affected (0.00 sec)
    mysql> system mysqlbinlog oldboy-bin.000005|grep “oldgirl”
    #<==继续过滤,发现记录了binlog。
    drop database oldgirl
    到这里,读者应该知道sql_log_bin的功能了吧,这个功能通常用于在用户使用mysql恢复数据时不希望恢复的数据SQL记录到binlog里的情况。当然,还有其他的应用场景。
    4.二进制日志文件的刷新条件
    1)数据库重启会自动刷新binlog为新文件。
    2)执行“mysqldump -F”或“mysqladmin flush-logs”会将binlog刷新为新文件。
    3)binlog文件达到1GB左右时,会自动刷新binlog为新文件。
    4)人为配置切割及调整。
    binlog最大值控制参数及默认大小查看方法如下:
    mysql> show variables like ‘max_binlog_size’;
    ±----------------±-----------+
    | Variable_name | Value |
    ±----------------±-----------+
    | max_binlog_size | 1073741824 |
    ±----------------±-----------+
    1 row in set (0.00 sec)
    5.二进制日志索引文件
    除了很多按序列生成的binlog文件列表之外,还有一个索引文件,例如下文里的oldboy-bin.index:
    [root@oldboy data]# pwd
    /application/mysql/data
    [root@oldboy data]# ls -l oldboy-bin.*
    -rw-rw----. 1 mysql mysql 143 Mar 3 05:50 oldboy-bin.000001
    -rw-rw----. 1 mysql mysql 168 Mar 3 05:57 oldboy-bin.000002
    -rw-rw----. 1 mysql mysql 168 Mar 3 05:57 oldboy-bin.000003
    -rw-rw----. 1 mysql mysql 9299 Mar 19 19:34 oldboy-bin.000004
    -rw-rw----. 1 mysql mysql 211 Mar 19 20:15 oldboy-bin.000005
    -rw-rw----. 1 mysql mysql 100 Mar 19 19:34 oldboy-bin.index
    索引文件的文件名和binlog文件一样,只是扩展名为index,查看索引文件内容的命令如下:
    [root@oldboy data]# cat oldboy-bin.index
    ./oldboy-bin.000001
    ./oldboy-bin.000002
    ./oldboy-bin.000003
    ./oldboy-bin.000004
    ./oldboy-bin.000005
    binlog索引文件的控制参数为:
    mysql> show variables like ‘log_bin_index’;
    ±--------------±------------------------------------------------+
    | Variable_name | Value |
    ±--------------±------------------------------------------------+
    log_bin_index | /application/mysql-5.6.40/data/oldboy-bin.index |
    ±--------------±------------------------------------------------+
    1 row in set (0.00 sec)
    6.删除二进制日志的方法
    binlog日志很重要,不能随意清除,有些读者看到所维护的服务器空间满了,竟然会直接删除binlog物理文件,这样的操作是错误的,应避免。那么如何正确删除binlog文件呢?
    首先,要确定什么时候可以删除binlog。
    理论上每天的数据库全备时刻以前的binlog都是无用的,但是工作中我们会根据需要保留3~7天的本地binlog文件。
    下面来看看具体的删除方式。
    (1)设置参数自动删除binlog
    设置参数自动删除binlog是每个管理员都应该做的,参数设置示例如下。
    假设参数为:
    expire_logs_days = 7 #<==删除7天前的日志
    该参数默认是没有配置的,生产中可以同时实现在线更改以及永久更改配置文件:
    mysql> show variables like ‘expire_logs_days’;
    ±-----------------±------+
    | Variable_name | Value |
    ±-----------------±------+
    | expire_logs_days | 0 |
    ±-----------------±------+
    1 row in set (0.00 sec)

    mysql> set global expire_logs_days = 7;
    Query OK, 0 rows affected (0.00 sec)

    mysql> show variables like ‘expire_logs_days’;
    ±-----------------±------+
    | Variable_name | Value |
    ±-----------------±------+
    | expire_logs_days | 7 |
    ±-----------------±------+
    1 row in set (0.00 sec)

    [root@oldboy data]# grep expir /etc/my.cnf
    expire_logs_days = 7
    (2)从最开始一直删除到指定的文件位置(不含指定文件)
    这种方法一般用于处理临时的需求,操作如下:
    [root@oldboy data]# cp oldboy-bin.* /tmp
    登录数据库时执行如下命令:
    mysql> show binary logs;
    ±------------------±----------+
    | Log_name | File_size |
    ±------------------±----------+
    | oldboy-bin.000001 | 143 |
    | oldboy-bin.000002 | 168 |
    | oldboy-bin.000003 | 168 |
    | oldboy-bin.000004 | 9299 |
    | oldboy-bin.000005 | 211 |
    ±------------------±----------+
    4 rows in set (0.00 sec)
    mysql> purge binary logs to ‘oldboy-bin.000002’;
    Query OK, 0 rows affected (0.00 sec)
    mysql> show binary logs;
    ±------------------±----------+
    | Log_name | File_size |
    ±------------------±----------+
    | oldboy-bin.000002 | 168 | #<==序列000002以前的就没了。
    | oldboy-bin.000003 | 168 |
    | oldboy-bin.000004 | 9299 |
    | oldboy-bin.000005 | 211 |
    ±------------------±----------+
    4 rows in set (0.00 sec)
    (3)按照时间删除binlog日志
    这种方法也是用于处理临时的需求,操作如下:
    [root@oldboy data]# ls -l --time-style=long-iso oldboy-bin*
    -rw-rw----. 1 mysql mysql 168 2018-03-03 05:57 oldboy-bin.000002
    -rw-rw----. 1 mysql mysql 168 2018-03-03 05:57 oldboy-bin.000003
    -rw-rw----. 1 mysql mysql 9299 2018-03-19 19:34 oldboy-bin.000004
    -----------------------±---------------------+
    2 rows in set (0.00 sec)
    (2)max_binlog_size
    该参数用于设置binlog日志的最大大小,默认为1GB,但是该值并不能严格控制binlog的大小。若binlog大小接近1GB,而此时又在执行一个较大的事务,那么为了保证事务的完整性,数据库不会做日志刷新动作,而是直到该事务的日志全部记录进入当前binlog日志后才会进行刷新。该参数的默认值查询结果为:
    mysql> show variables like ‘%max_binlog_size%’;
    ±----------------±-----------+
    | Variable_name | Value |
    ±----------------±-----------+
    | max_binlog_size | 1073741824 |
    ±----------------±-----------+
    1 row in set (0.00 sec)
    (3)sync_binlog
    这个参数的作用是控制binlog什么时候同步到磁盘。对数据库来说,这是很重要的参数,它不仅会影响数据库的性能,还会影响数据库数据的完整性。
    对于“sync_binlog”参数的说明具体如下。
    ·“sync_binlog=0”表示在事务提交之后,数据库不会将binlog_cache中的数据刷新到磁盘,而是让文件系统自行决定什么时候来做刷新或者在缓存满了之后才刷新到磁盘。
    ·“sync_binlog=n”表示每进行n次事务提交之后,数据库都会进行一次将缓存数据强制刷新到磁盘的操作。
    该参数默认的设置是0,示例如下:
    mysql> show variables like ‘%sync_binlog%’;
    ±--------------±------+
    | Variable_name | Value |
    ±--------------±------+
    | sync_binlog | 0 |
    ±--------------±------+
    1 row in set (0.00 sec)
    设置为0时数据库的性能是最好的,但数据风险也是最大的,对于数据安全性要求较高的数据库,应该调整该参数将其改为1,值得注意的是,即使参数设置为1,仍然有binlog记录的内容与数据库的实际内容不一致的风险。

    展开全文
  • 如果定义了触发器,当数据库执行这些语句的时候就会激活触发器执行相应的操作,触发程序是与表有关的命令数据库对象,当表上出现特定事件,将激活该对象。  触发器是一个特殊的存储过程,不同的是,执行存储过程要...
  • mysql数据库链接工具

    2018-11-13 17:26:08
    本人通过如上的资源文件工具,成功的激活了。有需要可自取,谢谢。
  • 来源数据库和目标数据库可以版本不同,比如:来源数据库是sqlserver 2012 目标数据库mysql 5.5 ,都是可以的, SyncNavigator 支持跨数据库版本,无缝传输数据。 只需要能连接上数据库, SyncNavigator 可以...

     

    下载网站:www.SyncNavigator.CN 

     客服QQ1793040

    ----------------------------------------------------------

     

     

    关于HKROnline SyncNavigator 注册机价格的问题


    HKROnline SyncNavigator 8.4.1 企业版数据同步软件 自2009年第一个版本开发出来以来,经过8年不断地根据客户需求,加强功能,修复bug,现在已经具备强大的数据库同步功能,以前官方syncnavigator授权码的价格是2800元一套,授权码是绑定电脑硬件的,更换硬件或者电脑,软件无法正常运行,需要重新购买授权码。

    今年官方团队有其他项目,没有重点开发市场,其中一个以前官方团队的程序员开发了syncnavigator注册机,用这款注册机也能进行syncnavigator授权激活,功能和以前官方,没有任何影响,只是改变了授权方式。

    因为这个版本的syncnavigator注册机是程序员自己开发的,因而成本比以前官方成本要小,并且没有做过多市场开发营销,所以价格相对以前来说优惠很多,这对于有数据同步需求的公司和团队来说,无疑是巨大的福音。

    因为这款HKROnline SyncNavigator 软件是目前为止,国内做的最好的数据库同步软件,傻瓜式同步数据库,只需要你设置好来源数据库和目标数据库的账号和密码,一键开启,后台自动同步,断点续传,增量同步,几乎不占内存和CPU资源。并且还支持异构数据库,也可以同步部分表或者部分字段,都可以进行更为精准的设置操作。

     

    SyncNavigator 数据酷同步工具 做数据同步时所支持的数据库类型:

    支持sqlserver 2000-2014所有版本,全兼容,和MYsql 4.x 、MYsql 5.x 、MYsql 6.x版本。

    来源数据库和目标数据库可以版本不同,比如:来源数据库是sqlserver 2012  目标数据库是mysql 5.5 ,都是可以的, SyncNavigator 支持跨数据库版本,无缝传输数据。

    只需要能连接上数据库, SyncNavigator 可以安装在第三方电脑上,来源数据库和目标数据库电脑上可以不用安装程序。

    展开全文
  • 文章目录MySQL数据库基础MySQL的安装登陆MySQLMySQL数据库的基本操作MySQL数据类型MySQL数据表的基本操作操作MySQL数据MySQL数据库的备份与还原数据备份数据还原PHP操作MySQL数据库mysqli连接操作数据库连接和选择...
  • 各种数据库的注册码

    千次阅读 2018-09-21 12:57:00
    Navicat for MySQL 10.1.7 名:组织:注册码:均为NAVN-LNXG-XHHX-5NOO 转载于:https://www.cnblogs.com/BruceAlex/p/9686024.html
  • mysql数据库突然不见的原因之一

    万次阅读 2019-09-06 13:36:09
    在网上看到很多种导致mysql数据库不见的情况,大概率是权限的原因。 我今天也遇到了,打开Workbench并登录,左边Schemas中的数据库列表大白一片,乍看吓一跳。赶紧登录后台,通过mysql命令登录,执行show databases...
  • 别人想连你的数据库是不连不了??? 诶 连不了就对喽 得开一下权限滴 操作如下:↓↓↓↓↓ 1.打开cmd运行mysql或者到bin目录下cmd 2.进入mysql 1.use mysql 2.mysql -uroot -p 3.开启权限 grant all privileges on *....
  • MySQL数据库:触发器Trigger

    万次阅读 2018-11-28 19:18:43
    触发器是与表有关的数据库对象,当触发器所在表上出现指定事件并满足定义条件的时候,将执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。触发器是一个特殊的存储过程,不同的...
  • 转载自:... 1.mysql&gt; show status like 'Threads%'; +-------------------+-------+ | Variable_name | Value | +-------------------+-------+ | ...
  • MySQL数据库基础-MySQL编程语言

    千次阅读 2019-09-16 13:39:25
    文章目录MySQL编程语言SQL介绍MySQL常用函数数学函数字符串函数日期、时间函数聚合函数逻辑函数其他函数数据定义定义数据库定义表数据查询数据更新数据更新索引视图触发器事件存储过程与存储函数访问控制与安全管理...
  • 操作触发器 系列八:关于数据库对象触发器的操作 课程安排 为什么使用触发器 ...是由程序调用,也不是由手工启动,而是由事件来触发激活从而 实现执行 在具体应用中,之所以会经常使用触发器数据库对象,是由于 该对象能够加
  • MySQL数据库触发器讲解与案例

    万次阅读 多人点赞 2018-05-13 21:35:19
    触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。【创建触发器】在MySQL中,创建触发器语法如下:CREATE TRIGGER trigger_name ...
  • MySQL数据库基础(一)——MySQL数据库简介 本文转载自:https://blog.51cto.com/9291927/2087947 一、MySQL简介 1、MySQL简介 MySQL是一个轻量级关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle...
  • mysql数据库触发器相关触发器(TRIGGER)是MySQL的数据库对象之一,是一种特殊类型的存储过程,从5.0版本开始支持。该对象与编程语言中的函数非常类似,都需要声明、执行等。但是触发器的执行不是由程序call调用,...
  • mysql数据库删除数据的三种方式:

    万次阅读 2018-08-20 15:32:33
    mysql数据库删除数据的三种方式: delete from table where 直接删除表中的某一行数据,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。所以delete相比较truncate更加占用资源,数据空间...
  • Mysql数据库可视化工具Navicat使用

    万次阅读 多人点赞 2020-05-12 14:23:59
    安装打开Navicat,选择连接,选择mysql。 输入连接名和密码,端口和计算机保持默认即可。 左侧出现对的连接 名,为灰色状态。 双击则出现对应的连接内容,连接激活了。 连接...
  • MySQL数据库表Id过大

    千次阅读 2020-03-31 15:57:37
    MySQL数据库表Id过大,设置Id为自增的。 一次操作失误把Id设为了很大的一个值10000001,导致后面增加的数据库数据id都是往上加。 我是用delete方式还是不行。 使用navicat的 也不行,最终只能使用truncate 这个方式...
  • 注册账户通过email进行激活
  • 过阿里云数据传输,并使用 dts-ads-writer 插件, 可以将您在阿里云的云数据库RDS for MySQL中数据表的变更实时同步到分析型数据库中对应的实时写入表中(RDS端目前暂时仅支持MySQL引擎)。 前提条件 您...
  • 能直接打开Oracle数据库,图标是彩色的,界面也很好看,打开直接运行 无需激活
  • MySQL数据库实现双向自动同步

    万次阅读 2018-11-13 09:41:28
    为了确保数据的安全性和及时性,我们需要配置如何实现两台MySQL数据库内容的双向自动同步与监控,来保障数据库的数据冗余和数据安全。  2、MySQL介绍  MySQL数据库是业界著名的开源关系型数据库之一,也是一...
  • 运维中的MySQL数据库管理方式

    千次阅读 2019-02-27 01:05:19
    1.几种主流数据库类型简介 数据库种类大体分为:关系型数据库和非关系型数据库。 关系型数据库模型是把复杂的数据结构归结为简单的...典型产品:Mysql、Oracle、DB2、Sqlserver 1.IBM的DB2  DB2是IBM出口的一...
  • 本文记录学习mysql过程中遇到的各种专有名词,汇总以便于日后快速查询和回忆。 1. 数据库简介: 数据库(database): 数据库是数据的汇集,它以一定的组织形式存于存储介质上。 补充说明: 数据库软件称为数据库...
  • MySql数据库连接池

    万次阅读 2018-03-10 16:17:13
    官方:数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对连接池中的连接进行申请,使用,释放。 理解:创建数据库连接池是一个很耗时的操作,也...
  • Linux--mysql数据库的复制

    千次阅读 2019-07-04 16:42:29
    一.mysql的复制类型 mysql复制类型主要包括异步复制、全同步复制、半同步复制 1.异步复制(Asynchronous replication) MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,307
精华内容 14,922
关键字:

mysql数据库激活

mysql 订阅