前提條件:
- 啟用二進(jìn)制文件選項(xiàng):
[root@node2 ~]# vim /etc/my.cnf [mysqld] log_bin=/data/log_bin/mariadb-bin - 數(shù)據(jù)庫(kù)全備份
[root@node2 ~]# mysqldump -A -F --single-transaction --master-data=2 --flush-privileges > /backup/full_bak_$(date +%F).sql
還原步驟:
數(shù)據(jù)庫(kù)加讀鎖,防止進(jìn)一步的變化,并做好準(zhǔn)備工作
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER LOGS; #查看binlog的position
mysql> FLUSH LOGS; #生成新日志
導(dǎo)出二進(jìn)制日志文件
- 查看全備份文件中二進(jìn)制日志起始位置
[root@node2 ~]# head /backup/full_bak_2020-03-31.sql - 導(dǎo)出二進(jìn)制日志為sql腳本
[root@node2 ~]# mysqlbinlog --start-position=245 /data/bin_log/mariadb-bin.000003 > /backup/bin_log.sql
編輯二進(jìn)制日志sql腳本
- 找到誤操作指令并刪除
~]# vim /backup/bin_log.sql
恢復(fù)數(shù)據(jù)庫(kù)
- 禁止用戶訪問數(shù)據(jù)庫(kù),啟動(dòng)之
[root@node2 ~]# vim /etc/my.cnf [mysqld] skip-networking [root@node2 ~]# systemctl restart mariadb.service - 恢復(fù)全備,導(dǎo)入全備sql腳本
~]# mysql -uroot -pcentos < /backup/full_bak_2020-03-31.sql - 恢復(fù)二進(jìn)制日志,導(dǎo)入sql腳本
~]# mysql -uroot -pcentos < /backup/bin_log.sql - 解除禁止用戶訪問,重啟服務(wù)
[root@node2 ~]# vim /etc/my.cnf [mysqld] [root@node2 ~]# systemctl restart mariadb.service