mysql的binlog详解之ubuntu下开启binlog

2017-08-03  本文已影响168人  九七学姐

1.什么是mysql binlog

二进制文件,也称为二进制日志,记录对数据发生或潜在发生更改的SQL语句,并以二进制的形式保存在磁盘中;可以用来查看数据库的变更历史(具体的时间点所有的SQL操作)、数据库增量备份和恢复(增量备份和基于时间点的恢复)、Mysql的复制(主主数据库的复制、主从数据库的复制)。

2.三种格式

1).Statement:每一条会修改数据的sql都会记录在binlog中。
优点:不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。(相比row能节约多少性能与日志量,这个取决于应用的SQL情况,正常同一条记录修改或者插入row格式所产生的日志量还小于Statement产生的日志量,但是考虑到如果带条件的update操作,以及整表删除,alter表等操作,ROW格式会产生大量日志,因此在考虑是否使用ROW格式日志时应该跟据应用的实际情况,其所产生的日志量会增加多少,以及带来的IO性能问题。)
缺点:由于记录的只是执行语句,为了这些语句能在slave上正确运行,因此还必须记录每条语句在执行的时候的一些相关信息,以保证所有语句能在slave得到和在master端执行时候相同的结果。另外mysql 的复制,像一些特定函数功能,slave可与master上要保持一致会有很多相关问题(如sleep()函数, last_insert_id(),以及user-defined functions(udf)会出现问题).
使用以下函数的语句也无法被复制:

总结:
mysql的binlog是多文件存储,定位一个LogEvent需要通过binlog filename + binlog position,进行定位
mysql的binlog数据格式,按照生成的方式,主要分为:statement-based、row-based、mixed

开启binlog功能,只需要在/etc/mysql/my.cnf中加入如下内容:
[mysqld] #注意一定要有这句 server-id=1918 log_bin=mysql-bin binlog_format=ROW

mysql binlog

上一篇 下一篇

猜你喜欢

热点阅读