1 2 | # grep log-bin my.cnf log-bin = /data/3306/mysql-bin |
1 | mysql>show variables like 'log_bin' ; |
2、Mysqlbinlog解析工具
参数 | 描述 |
-d | 指定库的binlog |
-r | 相当于重定向到指定文件 |
--start-position--stop-position | 按照指定位置精确解析binlog日志(精确),如不接--stop-positiion则一直到binlog日志结尾 |
--start-datetime--stop-datetime | 按照指定时间解析binlog日志(模糊,不准确),如不接--stop-datetime则一直到binlog日志结尾 |
1 | #mysqlbinlog -d ceshi mysql-bin.000003 -r my.sql |
1 | #mysqlbinlog mysql-bin.000003 --start-position=100 --stop-position=200 -r my.sql |
4、MySQL企业binlog模式的选择
- 互联网公司使用MySQL的功能较少(不用存储过程、触发器、函数),选择默认的Statement level
- 用到MySQL的特殊功能(存储过程、触发器、函数)则选择Mixed模式
- 用到MySQL的特殊功能(存储过程、触发器、函数),又希望数据最大化一直则选择Row模式
1 2 3 4 5 6 7 8 9 10 | mysql>show global variables like "binlog%" ; +-----------------------------------------+-----------+ | Variable_name | Value | +-----------------------------------------+-----------+ | binlog_cache_size | 1048576 | | binlog_direct_non_transactional_updates | OFF | | binlog_format | STATEMENT | #系统默认为STATEMENT模式 | binlog_stmt_cache_size | 32768 | +-----------------------------------------+-----------+ 4 rows in set (0.00 sec) |
1 | mysql> set global binlog_format= 'ROW' ; |
1 2 3 4 5 6 | #vim my.cnf [mysqld] binlog_format= 'ROW' #放在mysqld模块下面 user = mysql port = 3306 socket = /data/3306/mysql .sock |
1 | #mysqlbinlog --base64-output="decode-rows" -v mysql-bin.000001 |