MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

阿里云 RDS MySQL物理备份文件恢复到自建数据库

2025-07-03 15:37 huorong 精选文章 2 ℃ 0 评论


  • 帮助文档

首页云数据库 RDSRDS MySQL物理备份文件恢复到自建数据库

RDS MySQL物理备份文件恢复到自建数据库

更新时间:2025年5月7日 17:17:40

本文介绍如何使用Percona XtraBackup工具,将RDS MySQL的物理备份文件恢复到自建数据库。

背景

RDS MySQL支持将实例备份文件恢复到自建数据库,当前支持物理备份文件恢复、逻辑备份文件恢复等多种方式。如何选择数据恢复方案,请参见MySQL数据恢复方案。

您可以前往RDS管理控制台,在左侧导航栏选择备份恢复,然后在基础备份列表 > 数据备份中查看实例备份的类型。

说明

如果没有物理备份,可以手动创建备份后,再进行本文操作。创建方法,请参见手动备份。

应用场景

如果您未来一段时间不再使用RDS MySQL,或实例已释放但有物理备份文件,您可以将RDS MySQL数据库的物理备份恢复到本地自建数据库,以保留RDS MySQL中的数据。

前提条件

  • RDS MySQL实例基础配置需满足以下条件:
    • 大版本:8.0、5.7、5.6、5.5
    • 系列:高可用系列
    • 存储类型:高性能本地盘
  • 说明
    • 您可以在实例基本信息页面查看以上信息。
    • 仅如上版本的实例支持下载物理备份。如果您的实例是基础系列实例,请参见本文常见问题。
  • RDS实例中的表未通过TDE加密。
  • 重要
    • 加密表会导致恢复出错,请先执行解密操作。
    • 您可在RDS控制台目标实例数据安全性TDE页面查看TDE开启状况。
  • RAM账号需要具备下载备份文件的权限,授权操作请参见添加下载备份文件权限给只读子账号。

使用限制

  • 仅适用于本地盘实例的物理备份文件恢复。如需恢复云盘实例的快照备份,请参见RDS MySQL快照备份文件恢复到自建数据库。
  • 用于恢复备份文件中的全部数据。如仅需恢复部分库表,请参见RDS MySQL逻辑备份文件恢复到自建数据库。
  • 目前仅支持将RDS MySQL的物理备份文件恢复到Linux系统中的自建MySQL数据库中。
  • 暂不支持MGR(MySQL Group Replication)集群的数据恢复。

影响

  • 如果将RDS MySQL物理备份恢复到当前运行其他业务的自建数据库,原有业务将不可用。
  • 本文介绍的恢复方案将数据恢复到新建的数据库数据目录中,不影响自建数据库中的原数据。

技术实现

本文介绍的物理备份恢复方式主要是通过如下流程实现的:

  1. 对数据库进行全量物理备份。
  2. 下载物理备份文件到本地,通过qpress工具进行解压。
  3. 使用Percona XtraBackup工具,将解压后的备份文件恢复到自建数据库的数据目录中。
  4. 重启数据库后,即可在自建数据库中查看到原先位于RDS MySQL中的数据。

注意事项

  • 备份下载链接有效时间为一小时,过期后请刷新页面获取新链接。
  • 请勿修改或删减备份文件内容,否则可能导致文件损坏且无法恢复。如需修改,请先恢复到自建数据库。

费用说明

  • 如果需要手动备份,请关注当前备份使用量,超出免费额度的备份空间将会产生备份费用。
  • 下载备份时,如果您的自建数据库部署在本地,则需要使用外网链接下载备份数据,超出外网下载免费额度后需要支付外网流量费用。
  • 说明
  • 如果您的自建数据库部署在与RDS相同地域、相同VPC的云服务器 ECS中,使用内网链接下载备份数据,不收取流量费用。

准备工作

环境准备

  1. 本文以CentOS 7.9 64位为例,其他Linux发行版本请适配命令。
  2. 部署自建MySQL数据库,其中数据库大版本与RDS MySQL的大版本必须相同(例如都是8.0)。
  3. 使用以下命令查询自建数据库大版本:
  4. 放大查看复制代码mysql --version
  5. 查询自建数据库的配置文件路径
  6. 本文示例中涉及的数据库配置文件路径如下:
  7. MySQL 8.0、5.7为/etc/my.cnf
  8. MySQL 5.6为/usr/my.cnf
  9. MySQL 5.5需要手动创建,使用echo "[mysqld]" | sudo tee /etc/my.cnf命令创建。
  10. 使用如下命令查询自建数据库的配置文件路径。
  11. 放大查看复制代码sudo find / -name my.cnf
  12. 说明
  13. 如果查询结果不一致,请根据实际情况修改后续命令。
  14. 创建备份解压路径mysql_bkdata),用于存放解压后的备份文件。
  15. 使用如下命令创建备份解压目录
  16. 放大查看复制代码sudo mkdir /var/mysql_bkdata sudo chown -R $USER:$USER /var/mysql_bkdata
  17. 说明
  18. $USER:$USER表示从环境变量中获取当前用户及用户组,无需修改。
  19. 创建数据库数据目录mysql_newdata),用于将备份文件恢复到此目录,启动数据库时使用此目录的数据。
  20. 使用如下命令创建数据目录
  21. 放大查看复制代码sudo mkdir /var/mysql_newdata sudo chown -R $USER:$USER /var/mysql_newdata
  22. 说明
  23. 上述命令的$USER:$USER表示从环境变量中获取当前用户及用户组,无需修改。

工具准备

  1. 安装备份恢复工具Percona XtraBackup。
  2. MySQL 8.0对于MySQL 8.0实例,请根据主机环境下载对应版本的XtraBackup工具,上传至服务器后安装使用。如您需要上传至ECS服务器,请参考ECS上传或下载文件。
  3. 重要
  4. 由于RDS MySQL 8.0有新增Redo类型,开源版本的Percona XtraBackup可能存在兼容性问题。因此请下载下表RDS提供的XtraBackup工具。
  5. 放大查看
  6. 主机环境
  7. XtraBackup 8.0工具下载入口
  8. 安装命令示例
  9. 说明
  10. 本示例将工具下载至/Xtrabackup8.0目录下,实际安装命令会因目录不同而有所变化,请以实际工具下载位置为准调整安装命令。
  11. Linux 6(基于x86_64架构)
  12. RDS XtraBackup 8.0工具下载
  13. 放大查看复制代码sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.alios6.x86_64
  14. Linux 7(基于x86_64架构)
  15. RDS XtraBackup 8.0工具下载
  16. 放大查看复制代码sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.alios7.x86_64.rpm
  17. Linux 7(基于ARM AArch64架构)
  18. RDS XtraBackup 8.0工具下载
  19. 放大查看复制代码sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.alios7.aarch64.rpm
  20. Linux 8(基于ARM AArch64架构)
  21. RDS XtraBackup 8.0工具下载
  22. 放大查看复制代码sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.al8.aarch64.rpm
  23. 说明
  24. 安装完成后,Percona XtraBackup的可执行文件将位于/u01/xtrabackup80/bin目录下,该目录路径默认不会被添加到Linux系统的PATH环境变量中。
  25. 如您需要在其他目录下直接执行Percona XtraBackup命令,您有两种方法:
  26. 在执行Percona XtraBackup命令时,使用完整路径(本文多处命令均采用该方式)。例如/u01/xtrabackup80/bin/xtrabackup --xxxxxx
  27. 手动将/u01/xtrabackup80/bin目录添加到系统的PATH环境变量中。
  28. MySQL 5.7、5.6或5.5对于MySQL 5.7、5.6或5.5实例,下载并安装Percona XtraBackup 2.4。本文以Percona XtraBackup 2.4.28为例,安装命令如下:
  29. 放大查看复制代码wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.28/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm sudo yum localinstall -y percona-xtrabackup-24-2.4.28-1.el7.x86_64.rpm
  30. 安装解压工具qpress。
  31. 放大查看复制代码## 下载可执行文件的tar包 wget "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20230406/flxd/qpress-11-linux-x64.tar" ## 解压下载的tar包 tar -xvf qpress-11-linux-x64.tar ## 设置qpress文件的执行权限 sudo chmod 775 qpress ## 拷贝qpress到/usr/bin中,以便系统可以全局访问 sudo cp qpress /usr/bin

1. 下载备份文件

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
  2. 在左侧导航栏单击备份恢复。
  3. 基础备份列表 > 数据备份中,找到目标物理备份,单击操作列的实例备份下载
  4. 如果没有物理备份文件,您可以手动备份,具体操作,请参见手动备份。
  5. 如果跳转至高级下载页面,表示您的RDS实例为云盘实例,请参见RDS MySQL快照备份文件恢复到自建数据库进行恢复。
  6. 实例备份下载对话框,单击复制内网地址复制外网地址
  7. 重要
  8. 使用内网地址下载时,需要在同地域的VPC网络中才可下载,在跨地域VPC以及经典网络的服务器端无法下载。
  9. 通过外网链接下载备份数据时,超出外网下载免费额度后需要支付外网流量费用。更多信息,请参见费用说明。
  10. 备份下载地址有效时间为一个小时,超过有效时间后可刷新页面获取最新链接。
  11. 请勿修改或删减已备份的文件内容,可能造成备份文件损坏,无法恢复。如需修改,请恢复到自建数据库后再进行修改操作。
  12. 登录本地自建MySQL所在的Linux服务器,执行如下命令下载物理备份。
  13. 放大查看复制代码wget -c 'https://****.bak.rds.aliyuncs.com/****_xb.qp?****' -O test_xb.qp
  14. 说明
  15. 请将上述命令中的https://****.bak.rds.aliyuncs.com/****_xb.qp?****替换为实际复制的备份下载地址。备份文件下载后请您及时保存,避免泄露。
  16. 本文示例将test_xb.qp作为另存的文件名,您可以自定义该文件名,但文件名后缀必须与下载地址里的后缀保持一致
  17. 目前RDS MySQL备份下载地址的后缀名存在两种格式_xb.qp_qp.xb,您可以在下载链接中查看备份文件后缀格式。
  18. RDS MySQL 5.5的物理备份格式为tar.gz

常见下载问题

  • Q:为什么下载数据文件会报错?
  • A:使用wget -c 'https://****.bak.rds.aliyuncs.com/****_xb.qp?****' -O test_xb.qp命令下载时请用2个英文单引号(')将下载地址包裹起来,便于程序识别具体的地址,防止出错。

2. 解压备份文件

请根据备份文件的实际后缀,选择相关命令解压备份压缩包。

重要

请参考准备工作章节,先安装Percona XtraBackupqpress,然后执行以下命令。

xbstream文件包(_xb.qp后缀)

执行以下解压命令时,将test_xb.qp替换为您另存为的备份文件名,/var/mysql_bkdata/替换为您创建的备份解压路径。

放大查看复制代码

### MySQL 8.0
qpress -do  test_xb.qp | /u01/xtrabackup80/bin/xbstream -x -v -C /var/mysql_bkdata/

### MySQL 5.5/5.6/5.7
qpress -do  test_xb.qp | xbstream -x -v -C /var/mysql_bkdata/

xbstream文件包(_qp.xb后缀)

执行以下解压命令时,请将test_qp.xb替换为您另存为的备份文件名,/var/mysql_bkdata/替换为您创建的备份解压路径。

放大查看复制代码

## 步骤一:解包
cat test_qp.xb | xbstream -x -v -C /var/mysql_bkdata/

## 步骤二:解压
### MySQL 5.5/5.6/5.7
innobackupex --decompress --remove-original /var/mysql_bkdata/

### MySQL 8.0
/u01/xtrabackup80/bin/xtrabackup --decompress --remove-original --target-dir=/var/mysql_bkdata/

tar压缩包(.tar.gz后缀)

执行以下解压命令时,请将test.tar.gz替换为您另存为的备份文件名,/var/mysql_bkdata/替换为您创建的备份解压路径。

放大查看复制代码

tar -izxvf test.tar.gz -C /var/mysql_bkdata/

xbstream压缩包(.xb.gz后缀)

执行以下解压命令时,请将test.xb.gz替换为您另存为的备份文件名,/var/mysql_bkdata/替换为您创建的备份解压路径。

放大查看复制代码

### MySQL 8.0
gzip -d -c test.xb.gz | /u01/xtrabackup80/bin/xbstream -x -v -C /var/mysql_bkdata/

### MySQL 5.5/5.6/5.7
gzip -d -c test.xb.gz | xbstream -x -v -C /var/mysql_bkdata/

常见解压问题

  • Q:下载的备份文件解压缩报错怎么办?
  • A:请根据如下步骤检查或处理报错:
  • 确认您下载的文件是否为物理备份文件。
  • 请确认压缩文件保存的名称后缀是否正确(使用URL中包含的文件名后缀xb.qp.tar.gz.xb.gz_qp.xb)。
  • 针对不同格式的压缩文件,请使用本步骤提供的解压命令。
  • 常见的报错如下:
    • 执行解压命令出现sh: qpress: command not found报错。
    • 解决方法:请参考本文前提条件确认您自建库所在服务器中是否已安装解压工具qpress。
    • 备份文件类型为xbstream文件包(_qp.xb 后缀),执行解压命令出现innobackupex未找到。
    • 解决方法:请参考本文前提条件确认您自建库所在服务器中是否已安装Percona XtraBackup。
    • 出现报错:备份文件类型为xbstream文件包(_qp.xb 后缀),执行cat解包命令出现can't change to dir to xx( errorcode:no such file or directory)报错。
    • 解决方法:报错原因可能是命令中文件名或路径错误引起,请确认文件名和路径是否正确。

3. 恢复数据

重要

恢复数据库前,请先停止自建数据库服务。

您可以使用ps -ef | grep '[m]ysql'命令查看是否存在mysql相关进程,并使用sudo kill -9 <PID>将进程结束。

MySQL 8.0恢复

  1. 恢复前准备。
  2. 放大查看复制代码/u01/xtrabackup80/bin/xtrabackup --defaults-file=/var/mysql_bkdata/backup-my.cnf --prepare --target-dir=/var/mysql_bkdata/
  3. 参数解释:
  4. 放大查看
  5. 参数
  6. 含义
  7. --defaults-file
  8. 通过传入配置文件设置MySQL默认选项。
  9. RDS MySQL备份文件中,提供名为backup-my.cnf的配置文件,该文件位于备份解压目录,即/var/mysql_bkdata/
  10. --prepare
  11. XtraBackup工具的准备命令。
  12. --target-dir
  13. 备份解压目录/var/mysql_bkdata/
  14. 修改自建数据库的数据目录(datadir)。
    1. 编辑数据库配置文件。
    2. 放大查看复制代码sudo vim /etc/my.cnf
    3. 查询数据库配置文件路径,请参见准备工作。
    4. i键进入编辑模式,修改datadir的参数取值为/var/mysql_newdata
    5. 放大查看复制代码datadir = /var/mysql_newdata
    6. mysql_newdata为自建数据库的新数据目录,已在准备工作中创建。
    7. 为新数据目录授权。
    8. 放大查看复制代码chown -R mysql:mysql /var/mysql_newdata
    9. Esc键退出编辑模式,输入:wq!保存并退出。
  15. 恢复数据。
  16. 放大查看复制代码sudo xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/var/mysql_bkdata/
  17. 参数解释:
  18. 放大查看
  19. 参数
  20. 含义
  21. --defaults-file
  22. 自建数据库的my.cnf文件,根据此配置文件中设置的数据目录(datadir),获取恢复数据的目标路径。
  23. --copy-back
  24. XtraBackup工具的恢复命令。
  25. --target-dir
  26. 备份解压目录/var/mysql_bkdata/,XtraBackup工具将此目录数据恢复到自建数据库的数据目录中。

MySQL 5.7恢复

  1. 恢复前准备。
  2. 放大查看复制代码innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/
  3. 参数解释:
  4. 放大查看
  5. 参数
  6. 含义
  7. --defaults-file
  8. 通过传入配置文件设置MySQL默认选项。
  9. RDS MySQL备份文件中,提供名为backup-my.cnf的配置文件,该文件位于备份解压目录,即/var/mysql_bkdata/
  10. --apply-log
  11. XtraBackup工具的准备命令。
  12. 该命令后配置存放备份文件的目录,即备份解压目录/var/mysql_bkdata/
  13. 修改自建数据库配置文件my.cnf
    1. 编辑数据库配置文件。
    2. 放大查看复制代码sudo vim /etc/my.cnf
    3. 查询数据库配置文件路径,请参见准备工作。
    4. i键进入编辑模式,修改datadir的参数取值为/var/mysql_newdata
    5. 放大查看复制代码datadir = /var/mysql_newdata
    6. mysql_newdata为自建数据库的新数据目录,已在准备工作中创建。
    7. my.cnf中添加如下内容。
    8. 放大查看复制代码innodb_undo_tablespaces=2 innodb_undo_directory=/var/mysql_newdata
    9. 重要
    10. 参数innodb_undo_tablespaces的取值需要与/var/mysql_bkdata/backup-my.cnf中的取值相同,您可以使用cat /var/mysql_bkdata/backup-my.cnf | grep innodb_undo_tablespaces查询。
    11. Esc键退出编辑模式,输入:wq!保存并退出。
  14. 恢复数据。
  15. 放大查看复制代码sudo innobackupex --defaults-file=/etc/my.cnf --copy-back /var/mysql_bkdata/
  16. 参数解释:
  17. 放大查看
  18. 参数
  19. 含义
  20. --defaults-file
  21. 自建数据库的my.cnf文件,根据此配置文件中设置的数据目录(datadir),获取恢复数据的目标路径。
  22. --copy-back
  23. XtraBackup工具的恢复命令。
  24. 该命令后配置存放备份文件的目录,即备份解压目录/var/mysql_bkdata/,XtraBackup工具将此目录数据恢复到自建数据库的数据目录中。

MySQL 5.6恢复

  1. 恢复前准备。
  2. 放大查看复制代码innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/
  3. 参数解释:
  4. 放大查看
  5. 参数
  6. 含义
  7. --defaults-file
  8. 通过传入配置文件设置MySQL默认选项。
  9. RDS MySQL备份文件中,提供名为backup-my.cnf的配置文件,该文件位于备份解压目录,即/var/mysql_bkdata/
  10. --apply-log
  11. XtraBackup工具的准备命令。
  12. 该命令后配置存放备份文件的目录,即备份解压目录/var/mysql_bkdata/
  13. 修改自建数据库的数据目录(datadir)。
    1. 编辑数据库配置文件。
    2. 放大查看复制代码sudo vim /usr/my.cnf
    3. 查询数据库配置文件路径,请参见准备工作。
    4. i键进入编辑模式,添加datadir参数。
    5. 放大查看复制代码datadir = /var/mysql_newdata
    6. mysql_newdata为自建数据库的新数据目录,已在准备工作中创建。
    7. Esc键退出编辑模式,输入:wq!保存并退出。
  14. 恢复数据。
  15. 放大查看复制代码sudo innobackupex --defaults-file=/usr/my.cnf --copy-back /var/mysql_bkdata/
  16. 参数解释:
  17. 放大查看
  18. 参数
  19. 含义
  20. --defaults-file
  21. 自建数据库的my.cnf文件,根据此配置文件中设置的数据目录(datadir),获取恢复数据的目标路径。
  22. --copy-back
  23. XtraBackup工具的恢复命令。
  24. 该命令后配置存放备份文件的目录,即备份解压目录/var/mysql_bkdata/,XtraBackup工具将此目录数据恢复到自建数据库的数据目录中。

MySQL 5.5恢复

  1. 恢复前准备。
  2. 放大查看复制代码innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/
  3. 参数解释:
  4. 放大查看
  5. 参数
  6. 含义
  7. --defaults-file
  8. 通过传入配置文件设置MySQL默认选项。
  9. RDS MySQL备份文件中,提供名为backup-my.cnf的配置文件,该文件位于备份解压目录,即/var/mysql_bkdata/
  10. --apply-log
  11. XtraBackup工具的准备命令。
  12. 该命令后配置存放备份文件的目录,即备份解压目录/var/mysql_bkdata/
  13. 修改自建数据库配置文件my.cnf
    1. 编辑数据库配置文件。
    2. 放大查看复制代码sudo vim /etc/my.cnf
    3. 查询数据库配置文件路径,请参见准备工作。
    4. i键进入编辑模式,添加datadir参数。
    5. 放大查看复制代码datadir = /var/mysql_newdata
    6. mysql_newdata为自建数据库的新数据目录,已在准备工作中创建。
    7. my.cnf中添加如下内容。
    8. 放大查看复制代码innodb_log_file_size=1048576000
    9. 重要
    10. 参数innodb_log_file_size的取值需要与/var/mysql_bkdata/backup-my.cnf中的取值相同,您可以使用cat /var/mysql_bkdata/backup-my.cnf | grep innodb_log_file_size查询。
    11. Esc键退出编辑模式,输入:wq!保存并退出。
  14. 恢复数据。
  15. 放大查看复制代码sudo innobackupex --defaults-file=/etc/my.cnf --copy-back /var/mysql_bkdata/
  16. 参数解释:
  17. 放大查看
  18. 参数
  19. 含义
  20. --defaults-file
  21. 自建数据库的my.cnf文件,根据此配置文件中设置的数据目录(datadir),获取恢复数据的目标路径。
  22. --copy-back
  23. XtraBackup工具的恢复命令。
  24. 该命令后配置存放备份文件的目录,即备份解压目录/var/mysql_bkdata/,XtraBackup工具将此目录数据恢复到自建数据库的数据目录中。

常见恢复问题

  • Q:系统返回报错xtrabackup: Unknown error 3613,如何处理?
  • A:请将Percona XtraBackup更新到最新版本后再次尝试。
  • Q:系统返回报错Original data directory /var/mysql_newdata is not empty!,如何处理?
  • A:使用sudo rm -rf /var/mysql_newdata/*命令清空文件夹内文件,然后在重新执行恢复操作。
  • Q:系统返回报错InnodDB: Encryption information in datafile: ./xxx.ibd can't be decrypted, please check if a keyring plugin is loaded and initialized successfully.,如何处理?
  • 请检查实例是否开启了TDE加密:
    • 如果开启了TDE加密,请确认是否存在加密过的表,请参见本文前提条件,先对已加密的表执行设置透明数据加密TDE,然后重新根据本文操作指引进行恢复。
    • 如果未开启TDE加密,请确保您的Percona XtraBackup版本正确,请参见准备工作安装。
  • Q:已下载的备份文件发现存在TDE加密的数据,导致恢复数据出错,有什么解决办法?
  • A:该情况下无法基于已下载的加密的备份文件进行恢复。RDS实例中如果存在加密过的表,会导致恢复过程出错。请参见本文前提条件,先对已加密的表执行设置透明数据加密TDE,然后重新根据本文操作指引进行恢复。
  • Q:恢复时报错innobackupex: File 'undo001' not found (Errcode: 2 - No Such file or directory)如何处理?
  • A:undo文件为系统文件,不同版本数据库间存在差异,请检查本地自建数据库的版本是否与RDS MySQL数据库版本一致。

4. 启动数据库

MySQL 8.0、5.7启动

  1. (可选)在RDS MySQL管理控制台中查看实例参数lower_case_table_names的取值,如果取值为1,则需要修改自建数据库配置文件my.cnf
    1. 编辑数据库配置文件。
    2. 放大查看复制代码sudo vim /etc/my.cnf
    3. 查询数据库配置文件路径,请参见准备工作。
    4. i进入编辑模式,添加如下内容。
    5. 放大查看复制代码lower_case_table_names=1
    6. Esc键退出编辑模式,输入:wq!保存并退出。
  2. 数据目录授权。
  3. 放大查看复制代码sudo chown -R mysql:mysql /var/mysql_newdata
  4. 执行如下命令,启动MySQL进程。
  5. 放大查看复制代码sudo mysqld --defaults-file=/etc/my.cnf --user=mysql --datadir=/var/mysql_newdata &
  6. 参数解释:
  7. 放大查看
  8. 参数
  9. 含义
  10. --defaults-file
  11. 自建数据库的配置文件路径。本文以/etc/my.cnf为例,您可以参考准备工作,确认数据库的配置文件路径。
  12. --user
  13. 启动数据库的用户。固定为mysql,无需修改。
  14. --datadir
  15. 启动数据库使用的数据目录。本文以/var/mysql_newdata为例,您可以参考准备工作,确认数据库的数据目录。

MySQL 5.6启动

  1. (可选)在RDS MySQL管理控制台中查看实例参数lower_case_table_names的取值,如果取值为1,则需要修改自建数据库配置文件my.cnf
    1. 编辑数据库配置文件。
    2. 放大查看复制代码sudo vim /usr/my.cnf
    3. 查询数据库配置文件路径,请参见准备工作。
    4. i进入编辑模式,添加如下内容。
    5. 放大查看复制代码lower_case_table_names=1
    6. Esc键退出编辑模式,输入:wq!保存并退出。
  2. 数据目录授权。
  3. 放大查看复制代码sudo chown -R mysql:mysql /var/mysql_newdata
  4. 执行如下命令,启动MySQL进程。
  5. 放大查看复制代码sudo mysqld --defaults-file=/usr/my.cnf --user=mysql --datadir=/var/mysql_newdata &
  6. 放大查看
  7. 参数
  8. 含义
  9. --defaults-file
  10. 自建数据库的配置文件路径。本文以/usr/my.cnf为例,您可以参考准备工作,确认数据库的配置文件路径。
  11. --user
  12. 启动数据库的用户。固定为mysql,无需修改。
  13. --datadir
  14. 启动数据库使用的数据目录。本文以/var/mysql_newdata为例,您可以参考准备工作,确认数据库的数据目录。

MySQL 5.5启动

  1. 数据目录授权。
  2. 放大查看复制代码sudo chown -R mysql:mysql /var/mysql_newdata
  3. 执行如下命令,启动MySQL进程。
  4. 放大查看复制代码sudo mysqld --defaults-file=/etc/my.cnf --user=mysql --datadir=/var/mysql_newdata &
  5. 放大查看
  6. 参数
  7. 含义
  8. --defaults-file
  9. 自建数据库的配置文件路径。本文以/etc/my.cnf为例,您可以参考准备工作,确认数据库的配置文件路径。
  10. --user
  11. 启动数据库的用户。固定为mysql,无需修改。
  12. --datadir
  13. 启动数据库使用的数据目录。本文以/var/mysql_newdata为例,您可以参考准备工作,确认数据库的数据目录。

常见启动问题

  • Q:Ubuntu操作系统报错mysqld: [ERROR] Failed to open required defaults file: /etc/my.cnf,是为什么,怎么处理?
  • A:该报错是由Ubuntu自带安全程序AppArmor导致的,请使用apt install -y apparmor-utilsaa-complain /usr/sbin/mysqld命令修改AppArmor设置。
  • Q:恢复完成后,无法启动自建库或在使用自建库的过程中遇到error 1105 Unknown error错误怎么办?
  • A:执行如下SQL语句转换数据库存储引擎即可:
  • 放大查看复制代码USE mysql; ALTER TABLE proc engine=myisam; ALTER TABLE event engine=myisam; ALTER TABLE func engine=myisam;
  • 说明
  • 如果执行上述语句报错ERROR 1067 (42000): Invalid default value for 'modified',请先执行SET SQL_MODE='ALLOW_INVALID_DATES';语句。
  • Q:数据库恢复后,root密码是多少?
  • A:根据版本不同,root密码获取方法如下:
    • 如果您的实例版本为MySQL 5.7或8.0,则root密码即自建库的root密码。
    • 如果您的实例版本为MySQL 5.5或5.6,需要重置root密码方可正常使用。更多信息,请参见官方文档。
  • Q:启动时报错InnodDB: Assertion failure in thread 140xxx in file page0zip.icne xxx,如何处理?
  • A:造成该报错的原因可能是系统磁盘空间不足,您可以尝试扩容自建数据库所在服务器的磁盘后,再进行尝试。
  • Q:启动时报错[ERROR] Failed to open the relay log xxx[ERROR] Slave: Failed to initialize the master info xxx[ERROR] Failed to create or recover replication info repositories.,如何处理?
  • A:该报错是由于RDS实例为高可用,而本地自建数据库不涉及主备节点而导致的,不影响数据库启动,无需关注。
  • Q:启动时报错[ERROR] Data Dictionary initialization failed如何处理?
  • A:该报错可能由操作系统不兼容导致,RDS底层操作系统为Linux,建议使用Linux操作系统恢复数据库,不同操作系统恢复可能会有版本兼容问题。
  • Q:使用sudo systemctl start mysqld启动本地MySQL失败,如何处理?
  • A:可能由于Linux系统的SELinux为强制模式(Enforcing mode)引起。通过getenforce命令可以查看SELinux的当前状态。
    • 如果是开发或测试环境,建议将SELinux模式修改为许可模式(Permissive mode)后,再尝试使用sudo systemctl start mysqld启动MySQL。
    • 如果是生产环境,建议详细检查 SELinux日志确认MySQL无法启动的具体原因,并根据这些信息修复SELinux策略。

5. 连接数据库并验证

  1. 执行如下命令,登录MySQL数据库以验证进程启动成功。
  2. 放大查看复制代码mysql -u<源RDS MySQL实例账号> -p<对应密码>
  3. 说明
  4. 该登录命令用于验证恢复成功。若仅需查看表数据,确保账号有查询权限即可。
  5. 若忘记账号或密码,请在执行启动MySQL进程命令时,传入--skip-grant-tables参数,进程启动后会忽略权限检查,允许无需账户密码登录数据库。登录成功后,您可以重新设置账号和密码。
  6. 执行如下命令,查看是否有RDS MySQL实例中的数据库。
  7. 放大查看复制代码SHOW DATABASES;

常见连接及验证问题

  • Q:为什么阿里云物理备份还原到自建MySQL上以后,数据的时间字段和本地时间不一致?怎样才能保持时间一致?
  • A:如果自建库的时区与RDS实例的时区不一致,则需要修改自建库的time_zone参数,使其与RDS实例的time_zone参数一致。如果RDS实例的time_zone参数值为system,则需查看RDS实例所在的地域,并将自建库的time_zone设置为该地域的时区。
  • Q:连接自建数据库时报错Access denied for user 'XXX',如何处理?
  • A:请检查RDS MySQL实例账号或密码是否正确,使用的账号和密码为RDS中创建的账号和密码。
  • Q:连接自建数据库时,忘记密码了怎么办?
  • A:若忘记账号或密码,请在执行启动MySQL进程命令时,传入--skip-grant-tables参数,进程启动后会忽略权限检查,允许无需账户密码登录数据库。请注意,使用--skip-grant-tables参数存在安全风险,建议在登录成功后立即修改账号和密码。
  • Q:连接自建数据库后,只看到系统库或部分数据库怎么处理?
  • A:请重启数据库后,使用root账号或原RDS实例中的高权限账号连接数据库查看。

相关文档

  • 如需将RDS MySQL全部数据或指定库表数据,恢复到其他RDS实例或新RDS实例中,请参见恢复全量数据或恢复库表。
  • 更多数据恢复方案,请参见数据恢复方案概览。

其他常见问题

下载的RDS MySQL备份能恢复到另一个RDS MySQL实例上吗?

暂不支持此操作。如需恢复到另一个实例中,您可以:

  • 方案一:先参考本文将RDS MySQL物理备份文件恢复至自建数据库,随后参考自建数据库备份恢复上云,恢复到新建RDS MySQL实例。
  • 方案二:使用DTS实现RDS MySQL实例间的数据迁移。

如何恢复指定时间段的数据到自建数据库?

您可以在控制台下载指定时间段的日志备份并恢复到自建库。详情请参见下载备份和按时间点恢复数据。

如何将MySQL实例的数据备份到自建数据库?

  • 方式一:按照本文操作,通过下载备份文件恢复到自建MySQL。
  • 方式二:通过DTS将从RDS MySQL迁移至自建MySQL中。

基础系列实例的备份怎么恢复或迁移呢?

基础系列实例仅支持快照备份,您可以使用以下方法:

  • 使用mysqldump迁移MySQL数据
  • 用DTS将数据从RDS导出到本地

可以将多个RDS MySQL的物理备份恢复到一个自建数据库中吗?

暂不支持此操作,您可以分别恢复到多个自建数据库,然后使用DTS或mysqldump进行数据迁移。详情请参见使用DTS将自建MySQL迁移至RDS MySQL或使用mysqldump迁移MySQL数据。

后端创建一个高权限账号,通过物理备份到本地后,该账号是否仍有高权限?

是的,原库账号权限不受备份影响。


以上内容是否对您有帮助?

有帮助没帮助

如需咨询产品相关问题,请 点此反馈。

文档中心打开截图反馈

Tags:mysql备份表

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言