mysql binlog
作者:互联网
MySql BinLog
- BinLog 开启 配置
- 检查是否开启
// mysql 命令检查是否开启 默认BinLog关闭
show variables like '%log_bin%';
// 查询结果如下:
log_bin ON //注释 : 是否开启 NO 开启 OFF关闭
log_bin_basename /var/log/mysql/mysql-bin //注释 :文件昵称前缀
log_bin_index /var/log/mysql/mysql-bin.index //注释 :索引
log_bin_trust_function_creators OFF
log_bin_use_v1_row_events OFF
sql_log_bin ON
- 开启 Binlog 修改my.cnf 或 mysql.cnf 配置修改如下
提示:linux 版本不同安装方式不同需要修改的配置文件可能也不同,举栗子!安装方式不同 mysql启动对应的配置文件不同一般的配置文件是/ect/my.cnf ,小部分 如 同事 ubuntu 安装的mysql 的配置文件在 /etc/mysql/mysql.conf.d/mysqld.cnf 里面
// 配置文件 如果是新建配置自行添加,如果是安装自带配置文件找到对应修改即可,然后重启mysql即可
log_bin=ON
log_bin_basename=/var/lib/mysql/mysql-bin
log_bin_index=/var/lib/mysql/mysql-bin.index
- 再次查看 运行 上面命令查看是否开启,然后根据配置路径找到对应的log文件例如:
root@foldcc:/var/log/mysql$ ll
total 240
drwxr-x--- 2 mysql adm 4096 4月 20 11:17 ./
drwxrwxr-x 12 root syslog 4096 4月 20 00:08 ../
-rw-r----- 1 mysql adm 40440 4月 20 13:47 error.log
-rw-r----- 1 mysql adm 396 4月 19 23:33 error.log.1.gz
-rw-r----- 1 mysql adm 20 4月 18 00:09 error.log.2.gz
-rw-r----- 1 mysql adm 20 4月 17 00:07 error.log.3.gz
-rw-r----- 1 mysql adm 2761 4月 16 18:43 error.log.4.gz
-rw-r----- 1 mysql adm 2873 4月 15 23:55 error.log.5.gz
-rw-r----- 1 mysql adm 660 4月 15 00:04 error.log.6.gz
-rw-r----- 1 mysql adm 1677 4月 14 00:03 error.log.7.gz
-rw-r----- 1 mysql mysql 687 4月 20 11:05 mysql-bin.000001
-rw-r----- 1 mysql mysql 7000 4月 20 11:17 mysql-bin.000002
-rw-r----- 1 mysql mysql 139632 4月 20 14:46 mysql-bin.000003
-rw-r----- 1 mysql mysql 96 4月 20 11:17 mysql-bin.index
root@foldcc:/var/log/mysql$ pwd
/var/log/mysql
//或者执行mysql 命令查看
show master status; // 查看最新log
show binlog events in 'mysql-bin.000001' //查看指定binlog 内容
//mysql查询结果示例如下 (部分):
log_name pos
mysql-bin.000002 5937 Anonymous_Gtid 1 6002 SET @@SESSION.GTID_NEXT= 'ANONYMOUS'
mysql-bin.000002 6002 Query 1 6074 BEGIN
mysql-bin.000002 6074 Table_map 1 6120 table_id: 113 (demo.c_t)
mysql-bin.000002 6120 Write_rows 1 6160 table_id: 113 flags: STMT_END_F
mysql-bin.000002 6160 Xid 1 6191 COMMIT /* xid=542 */
mysql-bin.000002 6191 Anonymous_Gtid 1 6256 SET @@SESSION.GTID_NEXT= 'ANONYMOUS'
mysql-bin.000002 6256 Query 1 6328 BEGIN
mysql-bin.000002 6328 Table_map 1 6374 table_id: 113 (demo.c_t)
mysql-bin.000002 6374 Write_rows 1 6414 table_id: 113 flags: STMT_END_F
mysql-bin.000002 6414 Xid 1 6445 COMMIT /* xid=545 */
mysql-bin.000002 6445 Anonymous_Gtid 1 6510 SET @@SESSION.GTID_NEXT= 'ANONYMOUS'
解释:简单来说 这里面记录了每次mysql操作的全部,一个执行动作 被 BEGIN 、COMMIT 包括起来 ,可自行根据 最后列保存的记录执行内容分辨自行定位时间(取pos 值),然后 增量‘恢复’
- 增量恢复 需要调用 mysqlbinlog 命令完成
// 命令 规则 : mysqlbinlog binlog文件 --start-position 开始时间点 --stop-position 结束时间点 | mysql -u root -p 库名
//就以上述 案例 我要恢复POS:6002~6414
mysqlbinlog mysql-bin.000002 --start-position 6002 --stop-position 6414 | mysql -u root -p demo
5 最后效果图我就不上了,就是恢复成你指定时间内操作之后的样子,不信 你可以新建个库建表写数据然后删除然后在恢复试试!说实话这个很有用。尽管你备份了但是你任然有部分时间数据丢失,这种方法可以很好的弥补这一点,当然忘了备份也可以用这个方式来搞但是,时间间隔太长 恢复起来耗时且 鬼晓得会中途出现什么问题的。!最后提醒:wind任务计划周期性备份 !+ binlog日志开启
标签:bin,binlog,rw,20,log,bin.000002,mysql 来源: https://blog.csdn.net/qq_34064680/article/details/105631481