mysql数据库恢复一例

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 --one-database < alldb20220801.sql

等了几分钟后,进行检查,对应的数据库恢复。

 

参考链接地址: https://www.rootop.org/pages/4772.html

 

posted @ 2024-06-09 11:35  烟云过眼  阅读(1)  评论(0编辑  收藏  举报