mysql資料庫恢復一例

烟云过眼發表於2024-06-09

1)問題:使用者報可能mysql庫故障,診斷儀用不了

2)檢查:

show databases;發現,其中對應的db01這個資料庫不存在了,但其它的庫還在。

mysqlbinlog mysql-bin.0000141檢查歸檔日誌發現,資料庫被drop了。

3)處理:

因做了MHA,找到了一個以前的備份,跟領導確認後,對全庫備份中的db01這個單一庫,進行恢復。

mysql> create database db01;

[root@localhost ~]# mysql -uroot -pxxx db01< alldb20220801.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.

提示如上錯誤。

# 清空本地的gtid
mysql> reset master;
Query OK, 0 rows affected (0.04 sec)

如上操作後,再次進行資料庫恢復,發現還是報ERROR 1840錯誤。

[root@localhost ~]$ head -30 alldb20220801.sql

找到GLOBAL.GTID,在24和25行。

SET @@GLOBAL.GTID_PURGED='6822560b-3659-11e8-afba-7cd30adaf22a:1-33310212,
79abd425-3659-11e8-8eeb-7cd30adaf28e:1-36989543';

因為備份有16G,檔案太大,用sed把24行和25行清除。

[root@localhost ~]$ sed -i '24d' alldb20220801.sql

[root@localhost ~]$ sed -i '24d' alldb20220801.sql

這個命令執行2次後,才把24和25行刪除。再次執行恢復:

[root@localhost ~]# mysql -uroot -pxxx db01< alldb20220801.sql

等了幾分鐘後,進行檢查,對應的資料庫恢復。

參考連結地址: https://www.rootop.org/pages/4772.html

相關文章