mysqlbinlog的使用
发布网友
发布时间:2024-09-15 07:17
我来回答
共1个回答
热心网友
时间:2024-10-13 16:24
一、二进制日志(binlog)开启的前提
1、开启二进制日志:配置文件中配置log_bin,log_bin_basename(配置该参数,可不配置log_bin),server_id,binlog_format,sync_binlog。
2、开启基于GTID的二进制日志:修改my.cnf配置文件
二、操作二进制日志文件
2.1 查看二进制事件:您可以使用以下命令来查看二进制日志:
您可以使用以下命令来查看主服务器日志:
2.2 刷新及查看当前二进制日志文件:刷新日志,显示当前使用的二进制文件及目前位置
2.3 查看二进制事件:查看特定binlog中的事件
show binlog events in ''xxxxxx";
查看指定区域二进制日志
2.4 删除binlog:一般为2个备份周期+1天;在my.cnf中设置expire_logs_days=15;
三、mysqlbinlog帮助
四、操作binlog内容
4.1 查看binlog内容的方法:mysqlbinlog xxxx,由于是binlog文件,记录的内容是看不到。如果需要看内容,需要添加--base64-output=decode-row -vvvvv,内容可读性略微好点:
4.2 对特定库的查看/过滤:mysqlbinlog -d 库名 1.000026
4.3 对特定时段的查看/过滤:mysqlbinlog --start-datetime="xxxx-xx-xx xx:xx:xx" --stop-datetime="xxxx-xx-xx xx:xx:xx" binlog文件
4.4 对特定位置的查看/过滤:mysqlbinlog --start-position=xxx --stop-position=xxx binlog文件 > 截取后文件名,mysqlbinlog --start-position=xxx --stop-position=xxx binlog文件
4.5 通过gtid进行备份:因在开启gtid的库中,无法恢复相同gtid的数据,故以下操作无法执行:在实际执行中需要增加--skip-gitds,在截取的binlog中跳过gtid,在恢复时,生成新的gtid
4.6 过滤某些GTID,进行截取:如果需要过滤多个:mysqlbinlog --skip-gitds --include-gtids='c899d55b-6c72-11ed-8072-000c297b6d39:1-10' exclude-gtids='c899d55b-6c72-11ed-8072-000c297b6d39:3,c899d55b-6c72-11ed-8072-000c297b6d39:7' > /tmp/bin.sql
五、mysqlbinlog的数据恢复