记一次误删数据的恢复过程
情况描述:
6月25日在做盲期数据时,将101下的trademarknew中48张表复制到50下的trademarknew库时,误操作复制到了trademark库,导致trademark库中表被覆盖。
恢复思路:
为保证50不停机,必须热恢复。今天是周一,可以将周日的全备份传输到52机器上(5.7),在52上使用xtrabackup工具恢复数据。恢复后,将48张表使用mysqldump方式备份,再将备份传输到50上 ,执行热恢复操作。
恢复过程:
- 先将备份传输到52上
Scp -r /backup/2018-06-24/ 172.16.1.52:/backup
- 将原数据文件删除
Rm -rf /var/lib/mysql/*
- 关闭数据库
Service mysqld stop
- 将备份文件恢复(14.20开始恢复)
Innobackup --apply-log /backup/2018-06-24
Innobackup --copy-back /backup/2018-06-24
- 恢复完成后开启数据库(16点多恢复完成)
Service mysqld start
- 将45张表中被修改的使用mysqldump备份出来
mysqldump -uroot -p trademark tm_goods_trans1 > /backup/1.sql
报错,因为多了gtid-mode参数
重新执行
mysqldump --set-gtid-purged=off -uroot -p trademark tm_goods_trans1 > /backup/1.sql
报错,执行以下语句
mysql_upgrade -u root -p --force
出现所有表状态为 ok
重启数据库
再次备份
mysqldump --set-gtid-purged=off -uroot -p trademark tm_goods_trans1 > /backup/1.sql
成功!
- 将备份传输到50上
scp -r /backup/1.sql 172.16.1.50:/backup/
- 50数据库现清空相关表,再执行source操作恢复数据库
Mysql> source /backup/1.sql;