免责声明: 本文档可能包含第三方产品信息,该信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。
当您需要在本地或者ECS实例自建数据库上进行RDS MySQL实例数据增量恢复时(恢复到某一时间点),可以参考以下示例进行操作。
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
按时间点恢复数据注意事项:
本地实例恢复请参见RDS备份文件恢复到自建数据库。
flush privileges;
grant all privileges on *.* to root@'%' identified by '[$Password]';
flush privileges;
说明:[$Password]为root用户的密码。
说明:xtrabackup_binlog_info文件目录请以实际环境为准,可以使用find命令查看。
cat xtrabackup_binlog_info系统显示类似如下。
mysql-bin.000688 531167 66ef5f51-94f3-11e5-98cf-40a8f034c4d0:1-405320,
72fb7cf6-94f3-11e5-98cf-a0d3c1f98c98:1-3082798,
79f98899-5d2d-11e4-a7c9-ecf4bbc08418:1-365786,
7e88493e-5d2d-11e4-a7c9-ecf4bbc06cb8:1,
a9285f36-9d56-11e4-8a2c-d89d672a9530:1-29549875,
ac2d9725-9d56-11e4-8a2c-d89d672af420:1-4838217
说明:mysql-bin.000688是应用的起始Binlog文件,531167是开始位置点(start position)。
tar xvpf mysql-bin.000688.tar
tar xvpf mysql-bin.000689.tar
mysqlbinlog -v --base64-output=decode-rows mysql-bin.0006XX > 689.log
vi 689.log
mysqlbinlog mysql-bin.000688 mysql-bin.000689 --start-position=531167 --stop-datetime="16-05-16 18:05:03" | mysql -uroot -p[$Password] -P[$Port] -h[$Host_IP]
说明:
- -p参数和[$Password]间不要有空格,[$Password]请自行替换为实际密码。
- [$Host_IP]参数请指定非127.0.0.1的主机IP。
- [$Port]为数据库端口。
- mysqlbinlog命令格式如下所示。
mysqlbinlog binlog_file1 binlog_file2 ... binlog_filen --start-position=xxxx --stop-datetime="YY-mm-dd hh:mm:ss" | mysql -uroot -pyour_password -Pmysql_port -hyour_host_ip- mysqlbinlog其他可以使用的参数如下:
- --database db_name指定仅增量恢复指定数据库db_name的数据。
- --start-position指定开始恢复的Binlog位置点,该位置点应存在于指定的第一个binlog文件。
- --stop-position指定恢复到的Binlog位置点,该位置点应存在于指定的最后一个binlog文件。
- --start-datetime指定开始恢复的时间点(从第一个等于或大于该时间点的Binlog事件开始)。
以本地时间时区为准,格式为MySQL可以接受的时间格式,比如"2016-05-16 08:01:05"或"16-05-16 08:01:05"。- --stop-datetime指定停止恢复的时间点(在第一个等于或大于该时间点的Binlog事件停止)。
以本地时间时区为准,格式为 MySQL 可以接受的时间格式,比如"2016-05-16 08:01:05" 或 "16-05-16 08:01:05"。
如果您是MySQL 5.7或8.0版本进行增量备份出现以下报错时,需要通过skip-grant-tables参数关闭MySQL的认证,再进行授权。
ERROR 1227 (42000) at line 7: Access denied; you need (at least one of) the SUPER privilege(s) for this operation