数据库
首页 > 数据库> > mysql binlog

mysql binlog

作者:互联网

MySql BinLog

  1. 检查是否开启
// 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
  1. 开启 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 
  1. 再次查看 运行 上面命令查看是否开启,然后根据配置路径找到对应的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 值),然后 增量‘恢复’

  1. 增量恢复 需要调用 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