MySQL二进制文件(binlog)
二进制文件(binlog)记录对MySQL数据库执行更改的所有操作,但不包括SELECT和SHOW这类操作,因为这类操作没有改变数据。 为什么会有binlog?首先 binlog 是 Server 层的日志模块,最初设计来是为了归档(备份)使用的。经过多个版本的发展,现在 binlog 主要有三个作用:
如何记录下面以一条Update语句来介绍 binlog 是如何记录的。
这里涉及两阶段提交和 redo log 的内容,感兴趣的移步到此处。 binlog 的写入时机是在数据更改后,事务提交前。 三种写入格式binlog_format=STATEMENTbinlog 记录逻辑SQL语句。 当执行以下命令:
其中'master.000001'是binlog的文件名。 binlog 记录的内容如下图所示: 优点:省空间:只记录逻辑语句。 缺点:可能产生主备不一致。
上面的SQL,假如在主库使用索引 a,而备库使用索引 t_modified 会导致删除的记录不一样。 binlog_format=ROWbinlog 记录表的行更改情况。配合 READ COMMITED,获得更好的并发性。 查看 binlog 内容: 解析 binlog 内容:使用 mysqlbinlog 命名解析 binlog 内容。
优点:记录原始数据;保证主备一致性; 缺点: 1、费空间:因为要保存原始数据; 例如:删除十万行数据,STATEMENT 格式只记录逻辑语句,而 ROW 会记录十万条日志,相当费空间。 2、费IO 例如:删除十万行数据,ROW 会记录十万条日志,而写 binlog 会耗费一定的 IO。 推荐使用 binlog_format=ROW:能记录原记录数据。误操作时,能够根据原数据进行恢复,例如 Delete 就转写成 Insert,Update 就把 Update 前的再执行一次。 binlog_format=MIXED因为 STATEMENT 和 ROW 各有优缺点,因此 MySQL 新增了一种格式 MIXED,采用折中方案,MySQL 会判断采用 STATEMENT 还是 ROW 来记录 binlog。 如何使用1、查看是否开启 mysql 默认是不开启 binlog 的。
从结果看到 2、开启 binlog 日志 退出 MySQL,使用 vi 编辑器修改 MySQL 的 my.cnf 配置文件(vim /etc/my.cnf)
3、重启 MySQL 及查看 binlog 开启状态
登录 MySQL,输入
参考资料
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Mysql入门与MSSQL对比学习MYSQL的心得(七)--查询
- MYSQL查询:最近30分钟的最新时间戳唯一值
- MYSQL数据库mysql查询今天、昨天、近7天、近30天、本月、上
- php – 在事务中使用mysql_insert_id()
- mysql – 表中的最大列数
- MySQL修改视图
- mysql报错Expression #3 of SELECT list is not in GROUP B
- Mysql应用利用ssh tunnel链接mysql服务器的方法
- Mysql实例出现错误mysql Table 'performance_schema...
- MYSQL教程CentOS6.5下RPM方式安装mysql5.6.33的详细教程