使用MySQL自带的mysqldump工具可以通过逻辑备份文件恢复数据库,本文将介绍详细的逻辑备份恢复数据库操作步骤。
前提条件
- 实例版本如下:
- MySQL 8.0高可用版(本地SSD盘)
- MySQL 5.7高可用版(本地SSD盘)
- MySQL 5.6
- MySQL 5.5
- 已有逻辑备份。具体操作,请参见自动备份与手动备份。
说明
- 通过物理备份文件恢复到自建数据库请参见RDS MySQL物理备份文件恢复到自建数据库。
- 关于云数据库MySQL版如何备份数据,请参见备份RDS数据。
演示环境
本地MySQL数据库安装在64位的Linux系统中,且与云数据库MySQL版的版本相同。本文使用Linux7的操作系统以及MySQL5.7版本为例进行演示。
逻辑备份恢复操作步骤
常见问题
- 为什么实例没有逻辑备份?
系统发起的备份默认为物理备份,如果需要逻辑备份,需要手动发起备份。详情请参见自动备份与手动备份。
- 为什么下载逻辑备份时,显示的备份集恢复时间点为0?
RDS MySQL的物理备份结合日志备份可以实现按时间点恢复功能,所以会显示具体的备份集恢复时间点(时间戳),而逻辑备份不是用来按时间点恢复的,所以显示为0。
- 报错
ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.
如何解决?这是由于GTID导致的问题,您可以参考如下几种方案:
- 开启GTID后重新执行恢复操作。
- 不开启GTID,可以将导入文件(
.sql
结尾)中的GTID_PURGED内容都注释掉,然后重新执行恢复操作。 - 在没有主从同步复制的情况下,可以登录数据库后执行
reset master
命令,然后重新执行恢复操作。
- 报错
ERROR 3546 (HY000) at line 26: @@GLOBAL.GTID_PURGED cannot be changed: the added gtid set must not overlap with @@GLOBAL.GTID_EXECUTED
如何解决?带有GTID信息的导入文件(
.sql
结尾), 要求当前数据库中无其他GTID信息,请登录数据库后执行reset master
进行重置,然后重新执行恢复操作。 - 为什么恢复的数据只在主库中,从库的数据没有自动同步?
您可以检查下导入文件(
.sql
结尾)中是否有SESSION.SQL_LOG_BIN= 0
,该设置会导致主库的操作不会同步到从库中。