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"