频道栏目
首页 > 数据库 > MySQL > 正文
mysql二进制日志
2017-01-10 11:06:19         来源:liuzp111的专栏  
收藏   我要投稿

mysql二进制日志

Mysql二进制日志记录了所有对mysql的修改事件,包括增删改查和对表结构的修改 Mysql二进制日志记录的都是成功执行的语句,没有成功执行,回滚了的sql和语法错误的sql是不会写入这里的。

binlog工具

binlog二进制日志的格式STATEMENT

基于段的格式 binglog_formart = STATEMENT

这种方式,记录的是执行的语句

优点:

日志记录量相对较少,节约磁盘和网络I/O

缺点:

必须要记录上下文信息,以保证语句在主服务器和从服务器上执行的结果相同 对于特定的函数如UUID()、user() 这些非确定性函数还是无法复制,如果使用这些函数,可能导致主从服务器上的数据不一致
#确定当前使用的是什么binglog格式
show variables like 'binlog_format';

#显示binlog日志
show binary logs;

#刷新binlog,这会产生一个新的binlog文件,方便测试
flush logs

#查看产生的binglog,使用mysqlbinlog命令。不要使用vim
mysqlbinlog mysql-bin.000053

mysqlbinlog -vv mysql-bin.000053

binlog二进制日志的格式ROW(建议的方式)

mysql5.7版本后的默认格式

基于行的格式 binglog_formart = ROW,这种格式记录了数据表中的增删改查行的信息

row格式可以避免mysql复制中出现的主从不一致的问题

同一SQL语句修改了10000条的情况下,基于段的格式(statement)只会记录这个SQL语句,而基于行的格式(row)会有10000条记录分别记录每一行的数据修改

优点:

使mysql主从复制更加安全 对每一行的数据修改比基于段的复制更高效,降低主从复制的延迟 误操作而修改了数据库中的数据,同时又没有备份可以恢复时,我们可以通过分析二进制日志,对日志中记录的数据修改操作做反向处理的方式来达到恢复数据的目的

缺点:

记录日志量较大,需要通过再配置一个参数控制记录的方式,binlog_row_image = [FULL | MINIMAL | NOBLOB]
#查看binlog_row_image的方式,推荐使用MINIMAL ,只记录修改的列
SHOW VARIABLES LIKE 'binlog_row_image'

binlog二进制日志的格式MIXED

根据SQL语句由操作系统决定选择基于段(statement)或行(row)的格式记录日志

binlog二进制日志记录方式的选择

建议选择 row 或mixed

注意:
使用binlog二进制日志记录方式row时,需要再设置一个参数 binlog_row_image = MINIMAL

点击复制链接 与好友分享!回本站首页
上一篇:MYSQL基础上机练习题(四)表连接
下一篇:MySQL查看表结构的实际操作命令简介
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站