开发者社区> idealities> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

手动恢复RDS MySQL数据库

简介: 有时难免需要恢复数据库到之前某个制定时间点(例如由于SQL误操作并且已经commit导致)。在阿里云控制台,RDS有两种恢复方法,一种是覆盖性恢复,可以为理解通过全量备份覆盖当前数据库,只能选取某个全量备份进行操作;一种是通过创建临时库,可以制定近7天内任意时间点。显然,选择后者相对能将影响降到最.
+关注继续查看

有时难免需要恢复数据库到之前某个制定时间点(例如由于SQL误操作并且已经commit导致)。在阿里云控制台,RDS有两种恢复方法,一种是覆盖性恢复,可以为理解通过全量备份覆盖当前数据库,只能选取某个全量备份进行操作;一种是通过创建临时库,可以指定近7天内任意时间点。显然,选择后者相对能将影响降到最低。但是假如由于不靠谱的操作或者其他原因选择了前者,一旦覆盖恢复完成,则不能再创建覆盖性恢复之前时间点的临时库了。本文仅讨论操作了覆盖性恢复,如何尽量再找回一个最接近误操作时间点的数据库。

参考这个文档,首先要把最近的正常的全量备份下载下来,然后是在备份时间点之后的所有binlog增量。最后的一个binlog增量,其中会混合了正常的操作和误操作。

按照文档,先通过rds_backup_extract解压全量备份文件。再通过innobackupex恢复数据文件。然后修改backup-my.cnf,这个文档已经偏旧,实际上你应该只保留如下图的中间那几行就可以。

images70

然后再根据RDS控制台显示的数据库版本,去下载一个版本号大于等于该版本的MySQL。可以从国内开源镜像下载,不然会比较尴尬。由于是临时使用,随便指向一个目录用完可以删了。

$ mkdir build && cd build
$ cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/tmp/mysql
$ make && make install

之后把/path/to/tmp/mysql/bin临时加到PATH环境变量,放在最前面。

然后就可以启动这个数据库了。

$ mysqld_safe --defaults-file=/path/to/mysqldata/backup-my.cnf --datadir=/path/to/mysqldata

先用客户端连接看看是否正常。如果启动之后异常推出,看看错误日志,一般都能解决。

然后就可以挨个执行那些binlog文件了,当然前面说到的那个混合了正常的操作和误操作的binlog除外。

$ mysqlbinlog mysql-bin.xxxxxx | mysql -uroot --force

如果是5.6开启了GTID,可能会遇到关于GTID的报错。有两个解决办法:

  • 1 修改启动参数,改为如下:
$ mysqld_safe --defaults-file=/path/to/mysqldata/backup-my.cnf --datadir=/path/to/mysqldata --log-bin --log-slave-updates --gtid-mode=ON --enforce-gtid-consistency --binlog_format=row
  • 2 mysqlbinlog加上--skip-gtids参数。

最后,针对那个混合了正常的操作和误操作,先用mysqlbinlog将其转换成文本文件,找到最后的正常事务的时间点,可以通过head -c把正常的部分切割出来,然后手工编辑下,使其格式完整,再重放执行这个binlog。

这样基本能拿到一个最接近误操作时刻的完整数据库了。

更多精彩活动:【有“福”同享.第二季】每日一分享,虚机邮箱免费用

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
企业级RDS MySQL数据库产品优势与价值
企业级RDS MySQL数据库产品优势与价值
0 0
利用RDS MySQL数据库云开发ToDo List-5
利用RDS MySQL数据库云开发ToDo List-5
0 0
利用RDS MySQL数据库云开发ToDo List-2
利用RDS MySQL数据库云开发ToDo List-2
0 0
利用RDS MySQL数据库云开发ToDo List-2
利用RDS MySQL数据库云开发ToDo List-2
0 0
利用RDS MySQL数据库云开发ToDo List-1
利用RDS MySQL数据库云开发ToDo List-1
0 0
冬季实战营第三期:MySQL数据库进阶实战之使用ECS和RDS搭建个人博客
本场景将提供一台基础环境为CentOS的ECS(云服务器)和一台RDS MySQL版数据库实例。我们将会在这台服务器安装Apache+PHP+WordPress网站环境,结合RDS MySQL版数据库实例帮助您快速搭建自己的云上博客。
0 0
【云起实验室】MySQL数据库进阶实战-基于RDS与ECS部署博客
我们的wordpress博客系统基于lnmp或lamp环境,即linux、网页服务、数据库服务、php服务组成。使用ECS和RDS我们将业务完成云上的部署,将原本all in one的架构,将数据库服务独立,部署在云数据库RDS上,其余的服务,部署在ECS云服务器上。 常规的mysql部署及sql基础是每一个运维必掌握的东西,简单的整理一下。 至于阿里云的RDS,多数以网页点击为主,个人认为网页点击配置的都不需要好好学,重要的还是掌握基础的mysql部署流程
0 0
利用RDS MySQL数据库云开发ToDo List
场景介绍基于云开发平台、Midway FaaS 和 云数据库RDS MySQL 版快速开发一个 Todo List。
0 0
RDS MySQL数据库常见问题解析|阿里云产品内容精选(十四)
本文源于阿里云开发者社区数据库版块,助力开发者解决数据库使用过程中遇到的问题。
0 0
RDS管理控制台如何手机备份MySQL数据库?
RDS管理控制台如何手机备份MySQL数据库
609 0
+关注
idealities
https://github.com/ideal
文章
问答
文章排行榜
最热
最新
相关电子书
更多
云数据库RDS MySQL从入门到高阶
立即下载
PolarDB for PostgreSQL 源码与应用实战
立即下载
PolarDB for PostgreSQL 开源必读手册
立即下载