MySQL實(shí)驗(yàn):誤刪除表后,如何還原最新狀態(tài)(mysqldump)

前提條件:

  1. 啟用二進(jìn)制文件選項(xiàng):
    [root@node2 ~]# vim /etc/my.cnf
    [mysqld]
    log_bin=/data/log_bin/mariadb-bin
    
  2. 數(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)制日志文件

  1. 查看全備份文件中二進(jìn)制日志起始位置
    [root@node2 ~]# head /backup/full_bak_2020-03-31.sql
    
  2. 導(dǎo)出二進(jìn)制日志為sql腳本
    [root@node2 ~]# mysqlbinlog --start-position=245 /data/bin_log/mariadb-bin.000003 > /backup/bin_log.sql
    

編輯二進(jìn)制日志sql腳本

  1. 找到誤操作指令并刪除
    ~]# vim /backup/bin_log.sql

恢復(fù)數(shù)據(jù)庫(kù)

  1. 禁止用戶訪問數(shù)據(jù)庫(kù),啟動(dòng)之
    [root@node2 ~]# vim /etc/my.cnf
    [mysqld]
    skip-networking
    [root@node2 ~]# systemctl restart mariadb.service
    
  2. 恢復(fù)全備,導(dǎo)入全備sql腳本
    ~]# mysql -uroot -pcentos < /backup/full_bak_2020-03-31.sql
  3. 恢復(fù)二進(jìn)制日志,導(dǎo)入sql腳本
    ~]# mysql -uroot -pcentos < /backup/bin_log.sql
  4. 解除禁止用戶訪問,重啟服務(wù)
    [root@node2 ~]# vim /etc/my.cnf
    [mysqld]
    [root@node2 ~]# systemctl restart mariadb.service
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容