Mysql-Binlog操作

Mysql-Binlog操作

binlog信息

参考博客
https://blog.csdn.net/yangsen251024/article/details/39693471
https://blog.csdn.net/king_kgh/article/details/74890381
https://www.pianshen.com/article/14921574573/
查看binlog功能是否开启,默认是关闭状态 
show variables like 'log_bin';

查看日志开启状态 
show variables like 'log_%';

查看当前binlog模式信息
how global variables like "binlog%";

查看所有binlog日志列表
show master logs;

查看最新一个binlog日志的编号名称,及其最后一个操作事件结束点 
show master status;

刷新log日志,立刻产生一个新编号的binlog日志文件,跟重启一个效果
flush logs;

清空所有binlog日志 
reset master;

日志查看,因为是二进制文件没法用vi等打开,可以用mysql的mysqlbinlog打开,
/usr/bin/mysqlbinlog /home/logs/aa-bin.000001,

查看指定binlog文件的重要事件
show binlog events in 'binlog.000001';

使用binlog恢复数据库

查看binlog方法

在windows查看binlog文件,转为sql文件
mysqlbinlog --no-defaults  "C:\Users\Administrator\Desktop\binlog.000008" > "C:\Users\Administrator\Desktop\gitea08.sql"

在数据库中查看binlog文件(数据库中操作)
查看指定当前数据库中的binlog文件的重要事件
show master logs;
show binlog events in 'binlog.000001';

全量备份命令(linux中执行)

/usr/bin/mysqldump -u root -p@Lisijiang1994321ZaQ! -B -F -R -x  easysitedb | gzip > /mysql_backup/easysitedb_$(date +%Y%m%d).sql.gz

命令解释
/usr/bin/mysqldump  mysql备份命令
-u root -p123456    登录mysql
test 			   数据库名称
| gzip > /mysql_backup/test_$(date +%Y%m%d).sql.gz  打包压缩至/mysql_backup/目录下命名为数据库名称+时间
-B:指定数据库
-F:刷新日志
-R:备份存储过程等
-x:锁表

恢复方式(在linux中操作)

按照节点pos值恢复数据
/usr/bin/mysqlbinlog /var/lib/mysql/binlog.000002 --start-position 363 --stop-position 407 | mysql -u root -p123456  testdb;
按照时间恢复数据
/usr/bin/mysqlbinlog /www/binlog.000001 --start-datetime='2021-03-19 00:00:00' --stop-datetime='2021-03-19 21:41:56'| mysql -u root -p123456  testdb;


/usr/bin/mysqlbinlog /var/lib/mysql/binlog.000008 --start-position 156 --stop-position 233 | mysql -u root -p123456  gitea;

/usr/bin/mysqlbinlog /var/lib/mysql/binlog.000008 --start-datetime='2021-10-14 09:00:00' --stop-datetime='2021-10-14 09:00:00'| mysql -u root -p@Lisijiang1994321ZaQ!  gitea;


/usr/bin/mysqlbinlog /var/lib/mysql/binlog.000008 --start-datetime='2021-10-14 09:00:00' --stop-datetime='2021-10-14 09:00:00'| mysql -u root -p123456  gitea;


命令解释
/usr/bin/mysqlbinlog   #myslq的binlog命令
/www/binlog.000001	   #备份的binlog文件,默认为binlog.000001,数字递加
--start-position 363   #开始恢复节点
--stop-position 407	   #停止恢复节点
--start-datetime='2021-03-19 00:00:00' #开始恢复时间
--stop-datetime='2021-03-19 21:41:56'  #停止恢复时间
mysql -u root -p123456  testdb #登录数据库,并选择需要恢复的数据库名称  test为测试数据库

恢复方案

首先恢复最新的全量备份binlog,再依次执行每天的binlog文件,根据实际情况选择时间、节点,然后进行恢复操作

获取节点id有两个方法
	1,通过show binlog events in 'binlog.000001';命令查看指定binlog的关键节点恢复
	2,通过将binlog转为sql文件,从中选择节点id进行恢复
获取时间没有限制,指定一个范围即可,格式必须为"yyyy-MM-dd HH:mm:ss'',否则无法识别

mysqlbinlog /www/binlog.000001 --start-datetime='210319 21:41:26' --stop-datetime='210319 21:41:56' |  mysql -u root -p  test;
数据库恢复流程

注意事项

一般binlog日志很占服务器的磁盘空间,最好定期对binlog做备份。
binlog会帮助我们恢复我们误操作删除的数据。

mysql文件路径

数据文件:/var/lib/mysql/
配置文件模板:/usr/share/mysql
mysql客户端工具目录:/usr/bin
日志目录:/var/log/
pid,sock文件目录:/tmp/

数据自动备份

每天定时使用flush logs命令当天数据库的增量备份,生成文件位于/var/lib/mysql/中,以binlog.000001(数字递增)命名。扫描该文件夹,取出所有binlog文件,同时读取数据库记录(记录binlog文件名称和备份时间),如果该文件不存在于数据库记录中,则将该文件读取,调用备份文件服务器,进行文件上传备份操作。

mysql -uroot -p@123456 -e"flush logs"

/usr/bin/mysqldump -u root -p@123456 -B -F -R -x  testDb | gzip > /mysql_backup/testDb_$(date +%Y%m%d).tar.gz

猜你喜欢

转载自blog.csdn.net/weixin_42559985/article/details/129982409