故事背景
- 数据库用的阿里云的RDS For MySQL 5.7
- 因操作失误删除了一个表需要恢复
- 因超过一小时,所以通过最追踪数据需要花钱(ps:如果没有超过一小时,可以追踪单表获取该表一小时内的操作)
- 只能通过下载全量备份文件恢复到本地数据库和覆盖式恢复备份(全量覆盖现有的数据库)
处理方法
因为当时下载全量备份文件恢复到本地数据的过程中因为RDS与MySQL官方版本使用的系统库不同
方法一:覆盖式恢复备份(全量覆盖现有的数据库)
因为mysql里数据库只有两个,所以打算把最新的备份出来新建一个数据库(简称数据库1)之后执行覆盖式备份(简称数据库2),现在数据库2有我需要的表,我把表insert进数据库1,然后再把数据库1同步到数据库2
方法二:
后来尝试通过本地数据库恢复数据,因为只有一张表,所以最保险的方法是只动这张表。
故障原因
- 恢复数据库时候报错
- RDS For MySQL 5.7.20 到自建MySQL 5.7.20主从同步异常的原因为RDS与MySQL官方版本使用的系统库不同
解决方法
-
先按照RDS for MySQL 物理备份文件恢复到自建数据库执行命令
-
执行恢复命令的时候报错,删除ib_logfile0和ib_logfile1两个原有的日记文件,再执行
innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data
- 自建MySQL 5.7.20 恢复RDS的全备份数据后无法对系统表执行更新操作,报错如下:
ERROR 1064 (42000): Unknown trigger has an error in its body: 'Unknown system variable 'maintain_user_list''
本文由 纸鸢's 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为:
2019/02/25 13:53