前提条件:
- 启用二进制文件选项:
[root@node2 ~]# vim /etc/my.cnf [mysqld] log_bin=/data/log_bin/mariadb-bin - 数据库全备份
[root@node2 ~]# mysqldump -A -F --single-transaction --master-data=2 --flush-privileges > /backup/full_bak_$(date +%F).sql
还原步骤:
数据库加读锁,防止进一步的变化,并做好准备工作
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER LOGS; #查看binlog的position
mysql> FLUSH LOGS; #生成新日志
导出二进制日志文件
- 查看全备份文件中二进制日志起始位置
[root@node2 ~]# head /backup/full_bak_2020-03-31.sql - 导出二进制日志为sql脚本
[root@node2 ~]# mysqlbinlog --start-position=245 /data/bin_log/mariadb-bin.000003 > /backup/bin_log.sql
编辑二进制日志sql脚本
- 找到误操作指令并删除
~]# vim /backup/bin_log.sql
恢复数据库
- 禁止用户访问数据库,启动之
[root@node2 ~]# vim /etc/my.cnf [mysqld] skip-networking [root@node2 ~]# systemctl restart mariadb.service - 恢复全备,导入全备sql脚本
~]# mysql -uroot -pcentos < /backup/full_bak_2020-03-31.sql - 恢复二进制日志,导入sql脚本
~]# mysql -uroot -pcentos < /backup/bin_log.sql - 解除禁止用户访问,重启服务
[root@node2 ~]# vim /etc/my.cnf [mysqld] [root@node2 ~]# systemctl restart mariadb.service