项目实战2—Mysql实现日志管理、备份与恢复

299 阅读2分钟

一、mysqldump+binlog 实现备份与恢复

1. 准备备份的目录,开启二进制日志

把备份的目录所属人所属组改为mysql image.png

1655610948449.png

重启systemctl restart mariadb

2. 准备要备份的数据和表

mysql -u root -p进入数据库

image.png

image.png

3. 进行完整备份

指令分析:

mysqldump -u用户名 -p 数据库名 > 数据库名.sql

mysqldump [OPTIONS] -u用户名 -p --databases [OPTIONS] DB1 [DB2 DB3...]:备份一个或多个库

OPTIONS:

  --lock-all-tables锁定所有表

  --lock-tables:锁定备份的表

  --single-transaction:启动一个大的单一事务实现备份

  --compress:压缩传输

  --events:备份指定库的事件调度器

  --routines:备份存储过程和存储函数

  --triggers:备份触发器

  --master-data={0|1|2}

    0:不记录

    1:记录CHANGE MASTER TO语句;此语句未被注释

    2:记录为注释语句

  --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

image.png

4. 插入数据

image.png

5. 进行增量备份,备份二进制日志

原理:需先知道要增量备份的起始,然后进行备份。

(1)通过数据库查询起始

查询当前使用的二进制日志 image.png

查询二进制日志,里面有编号位置 image.png

(2)通过命令行查询起始

image.png image.png

(3)进行增量备份

mysqlbinlog --start-position=314 --stop-position=453 bin-log.000008 > /backup/mysql-along-backup-add-date +%F-%T.sql

注意:起始的编号一定要往前和往后推一个编号,例如:412是执行插入命令的,要从前一个编号314备份。

6. 插入数据,模拟误删数据库

image.png

7. 恢复数据库

image.png

image.png

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

image.png