数据库备份与恢复--mysqldump+binlog增量备份

一、前提:开启bin-log

修改配置文件

vim /etc/my.cnf

[mysqld]

log_bin=mysql-bin

server_id=31122         --注意此处server_id要独立,建议使用IP地址后几位

重启mysqld:systemctl restart mysqld

二、mysqldump+binlog

当在完全备份后,由于操作失误将数据遗失而未来得及备份时使用binlog日志进行恢复

当失误出现后:

1.检查完全备份

2.检查完全备份后的所有binlog

ls -lrt /var/lib/mysql/mysql-bin.*           --按照时间排序,以便找到失误发生出的binlog日志文件

3.立即刷新并备份除binlog

刷新:使用 mysqladmin -uroot -p flush-logs 或 在数据库内 mysql> flush-logs;

备份:cp /var/lib/mysql/mysql-bin.00008 /mysqlbak/

4.恢复binlog生成sql语句

查看binlog文件:mysqlbinlog /var/lib/mysql/mysql-bin.00008 --base64-output=DECODE-ROWS -vv

因为在MySQL5.7版本insert语句在日志文件中已经加密,所以需要加 --base-output=DECODE-ROWS -vv

5.基于时间点或位置信息恢复sql语句

(1)时间点

在日志文件中找到完全备份后的开始时间以及事务提交之后失误之前的结束时间 commit

mysqlbinlog mysql-bin.00008 --start-datetime 2023-07-20 8:19:16 --stop-datetime 2023-07-20 8:19:36 -r time1.sql

(2)位置点

在日志文件中找到完全备份后的开始位置以及事务提交之后失误之前的结束位置 commit

mysqlbinlog mysql-bin.00008 --start-position=1920 --stop-position=2302 -r pos1.sql

6.恢复完全备份

mysql -uroot -p tb3 < epm3.sql

7.恢复增量备份

mysql -uroot -p tb3 < time1.sql 或 mysql -uroot -p tb3 < pos1.sql

你可能感兴趣的:(数据库运维,数据库)