mysql里面的bin-log日志,相信大家都有过相应的了解,但是对于bin-log日志而言,具体的内容是做什么的,今天小编特意抽空学习了一下,下边是我的笔记心得。
主从同步的一个基本原理
MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。
由于在主从架构中,master将相应的sql信息通过Replication写入到了bin-log文件当中,然后slaver的io线程读取master的日志内容,并将里面的内容写入到写入到 Slave 端的Relay Log,sql线程会监控到Relay Log相应的内容并且进行读取,达到相应的一个主从数据同步的模式。
mysql的binlog日志除了我们常说的这个主从同步功能以外,还能为我们的数据库备份提供一定的帮助。
常用binlog日志操作命令
1.查看所有binlog日志列表
mysql> show master logs; 复制代码
2.查看master状态,即最后(最新)一个binlog日志的编号名称,及其最后一个操作事件pos结束点(Position)值
mysql> show master status; 复制代码
3.刷新log日志,自此刻开始产生一个新编号的binlog日志文件
mysql> flush logs; 注:每当mysqld服务重启时,会自动执行此命令,刷新binlog日志;在mysqldump备份数据时加 -F 选项也会刷新binlog日志; 复制代码
4.重置(清空)所有binlog日志
mysql> reset master; 复制代码
我们登录自己的mysql服务器,在确认log-bin配置开启之后,使用mysql自带的mysqlbinlog工具进行日志文件的查看(mysql的binlog日志文件通过vi,cat是无法查看的)
这里面正好有一段相应的write_rows的插入数据记录,根据相应的end_log_pos指标,我们可以记住相应的pos数值,然后进入mysql服务里面进行详细日志文件的阅读
通过相应的mysql-binlog阅读命令,我们可以去查询相关的日志记录:
这里需要结合以下相应的命令进行查看:
mysql> show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]; 选项解析: IN 'log_name' 指定要查询的binlog文件名(不指定就是第一个binlog文件) FROM pos 指定从哪个pos起始点开始查起(不指定就是从整个文件首个pos点开始算) LIMIT [offset,] 偏移量(不指定就是0) row_count 查询总条数(不指定就是所有行) 复制代码
注意,这里要求起始点位置是正确的offset才能使得命令生效。