一、mysqldump+binlog 实现备份与恢复
1. 准备备份的目录,开启二进制日志
把备份的目录所属人所属组改为mysql
重启systemctl restart mariadb
2. 准备要备份的数据和表
mysql -u root -p进入数据库
3. 进行完整备份
指令分析:
mysqldump -u用户名 -p 数据库名 > 数据库名.sql
mysqldump [OPTIONS] -u用户名 -p --databases [OPTIONS] DB1 [DB2 DB3...]:备份一个或多个库
--single-transaction:启动一个大的单一事务实现备份
1:记录CHANGE MASTER TO语句;此语句未被注释
--flush-logs: 锁定表之后执行flush logs命令,生成一个新的二进制日志
备份所有数据库
mysqldump -uroot -p -d --all-databases --flush-log > /backup/mysql-all-backup-date +%F-%T.sql
备份指定数据库
mysqldump -uroot -p -d --database along --flush-log > /backup/mysql-along-backup-date +%F-%T.sql
4. 插入数据
5. 进行增量备份,备份二进制日志
(1)通过数据库查询起始
查询当前使用的二进制日志
查询二进制日志,里面有编号位置
(2)通过命令行查询起始
(3)进行增量备份
mysqlbinlog --start-position=314 --stop-position=453 bin-log.000008 > /backup/mysql-along-backup-add-date +%F-%T.sql
注意:起始的编号一定要往前和往后推一个编号,例如:412是执行插入命令的,要从前一个编号314备份。
6. 插入数据,模拟误删数据库
7. 恢复数据库
ls命令查看之前的备份目录
mysql -uroot -p < mysql-along-backup-2022-06-20-15:10:20.sql
mysql -uroot -p < mysql-along-backup-add-2022-06-20-15:41:11.sql
mysql -uroot -p < mysql-along-backup-add-2022-06-20-15:49:21.sql