mysqlbinlog介绍
在mysql中,任意时间对数据库所做的修改,都会被记录到日志文件中。例如,当你添加了一个新的表,或者更新了一条数据,这些事件都会被存储到二进制日志文件中。二进制日志文件在MySQL主从复合中是非常有用的,主服务器会发送其数据到远程服务器中。
mysqlbinlog 命令,以用户可视的方式展示出二进制日志中的内容。同时,也可以将其中的内容读取出来,供其他MySQL实用程序使用。
mysql开启binlog
[mysqld]
log-bin = mysql-bin
binlog_format = ROW
expire-logs-days = 3
mysql binlog相关命令
常用命令
mysql> show binary logs;
mysql> show binlog events; # 不指定显示最新的binlog文件
mysql> show binlog events in 'mysql-bin.000002' limit 3,5\G #从第三行开始列出5行
mysqlbinlog --start-date="2019-10-15 16:30:00" --stop-date="2019-10-15 17:00:00" mysql_bin.000001 > /data/1.sql
mysqlbinglog常见的选项有以下几个:
--start-datetime
从二进制日志中读取指定时间戳或者本地计算机时间之后的日志事件。
--stop-datetime
从二进制日志中读取指定时间戳或者本地计算机时间之前的日志事件。
--start-position
从二进制日志中读取指定position 事件位置作为开始。
--stop-position
从二进制日志中读取指定position 事件位置作为事件截至
# 例子
mysqlbinlog /usr/local/mysql/data/mysql-bin.000001 > /opt/mysql-bin.000001.sql
mysqlbinlog --stop-position=287 /usr/local/mysql/data/mysql-bin.000002 > /opt/287.sql
mysqlbinlog --start-position=416 /usr/local/mysql/data/mysql-bin.000002 > /opt/416.sql
binlog_format ROW
mysqlbinlog -v -v --database=test --base64-output=DECODE-ROWS --start-datetime="2019-08-09 10:42:36" --stop-datetime="2019-08-10 10:42:36" mysql-bin.008508
指定数据库
mysqlbinlog -d crm mysql-bin.000001
相关问题
unknown variable
# /usr/local/mysql/bin/mysqlbinlog --help
/usr/local/mysql/bin/mysqlbinlog: unknown variable 'default-character-set=utf8mb4'
原因是mysqlbinlog这个工具无法识别binlog中的配置中的default-character-set=utf8这个指令。
可使用 mysqlbinlog –no-defaults