什么是binlog
MySQL的二进制日志binlog可以说是MySQL最重要的日志,它记录了所有的DDL和DML语句(除了数据查询语句select),还有语句执行消耗的时间。
binlog日志是二进制格式的,它不能使用查看文本工具的命令(比如,cat,vi等)查看,使用mysqlbinlog解析查看
补充:
- DDL(Data Definition Language 数据库定义语言 )
主要的命令有create、alter、drop等,ddl主要是用在定义或改变表(table)的结构,数据类型,表之间的连接和约束等初始工作上,他们大多在建表时候使用。 - DML(Data Manipulation Language 数据操纵语言)
主要命令是select、update、insert、delete是用来对数据库里的数据进行操作的语言。
binlog的格式
binlog有三种格式:Statement、Row以及Mixed。
–基于SQL语句的复制(statement-based replication,SBR),
–基于行的复制(row-based replication,RBR),
–混合模式复制(mixed-based replication,MBR)。
binlog使用场景
binlog日志有两个最重要的使用场景。
- mysql主从复制:mysql replication在master端开启binlog,master把它的二进制日志传递给slaves来达到master-slave数据一致的目的。
- 数据恢复:通过mysqlbinlog工具来恢复数据。
binlog日志
在mysql的配置文件my.cnf中,增加log_bin参数即可开启binlog日志,也可以通过赋值来指定binlog日志的文件名:
(1)编辑打开mysql配置文件/application/mysql3307/my.cnf在mysqld的区块添加
log-bin=mysql-bin(也可指定二进制日志生成的路径,如:log-bin=/opt/Data/mysql-bin)
server-id=1
binlog_format=MIXED(加入此参数才能记录到insert语句)
(2)开启mysqld服务
service mysqld restart
(3)查看binlog日志是否开启
mysql> show variables like 'log_%';
(3)查看最后(最新)一个binlog日志的编号名称,及其最后一个操作事件pos结束点(Position)值。
mysql> show master status;
(4)查看第一个日志的内容
mysql> show binlog events;
(5)查看指定binlog文件的内容
mysql> show binlog events in 'mysql-bin.000002';
(6) 清空所有binlog
mysql> reset master;
(7)刷新log日志,立刻产生一个新编号的binlog日志文件
mysql>flush logs;
(8)查看binlog的格式
show variables like 'binlog_format';