mysqldump+binlog备份工具

mysqldump+binlog备份工具

mysqldump+binlog自动记录日志position位置.
语法:

mysqldump -h 服务器 -u用户 -p密码 数据库名称 > 备份文件.sql
mysqldump+binlog备份流程
  • 准备库
    准备一个数据库并且插入好数据
  • 执行备份
mysqldump -uroot -p"Mysql@Password123" --all-databases --single-transaction --master-data=2 --flush-logs > /backup/`date +%F-%H`-mysql-all.sql 

–all-databases表示的数据库的范围,是所有库
–single-transaction使innoDB保持一致性和服务可用性
–master-data=1 | 2将记录binlog的日志位置和文件名称追加到文件中

mysqldump+binlog恢复流程
  • 备份二进制日志文件
cp /var/lib/mysql/*bin* ~
  • 停止数据库
systemctl stop mysqld
  • 清理环境
rm -rf /var/lib/mysql/*
  • 启动数据库
systemctl start mysqld
grep "password" /var/log/mysqld.log
  • mysql恢复数据
mysql -uroot -p"Mysql@Password1234" < /backup/2021-01-31-19-mysql-all.sql

可以登陆数据库刷新并且查看

mysql -uroot -p"Mysql@Password1234" -e "flush privileges"
  • 二进制日志恢复
    观察二进制截取的记录
vi /backup/2021-01-31-19-mysql-all.sql

在这里插入图片描述

其中有这样的两行信息:

LOCK TABLES 'user' WRITE# 观察各种锁的机制,用来保证数据的一致性
-- CHANGE MASTER TO MASTER_LOG_FILE='localhost-bin.000012', MASTER_LOG_POS=154;# 二进制日志截断位置

这里的二进制日志有多少,就写多少

mysqlbinlog 所有的二进制日志 --start-position=154 | mysql -p"Mysql@Password123"
  • 查看数据
    可以登陆数据库再次查看一下
mysql -uroot -p"Mysql@Password123"

猜你喜欢

转载自blog.csdn.net/qq_45671732/article/details/113444224