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

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

背景

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

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

image

说明

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

应用场景

  • 如果您未来一段时间不再使用RDS MySQL,可以使用本方案,将RDS MySQL数据库的物理备份恢复到本地自建数据库,从而保留RDS MySQL中的数据。

  • 如果您的实例已释放无法找回,而您保存有下载好的物理备份文件,可使用本方案,将RDS MySQL数据库的物理备份恢复到本地自建数据库。

前提条件

  • RDS MySQL实例基础配置需满足以下条件:

    • 大版本:8.0、5.7、5.6、5.5

    • 系列:高可用系列

    • 存储类型:本地SSD盘

    说明
    • 您可以前往实例基本信息页面查看以上信息。

    • 仅如上版本的实例支持下载物理备份。如果您的实例是基础系列实例,请参见本文常见问题

  • RDS实例中的表未通过TDE加密。

    重要
    • 实例中如果存在加密过的表,会导致恢复过程出错,请先在下载备份文件前,对已加密的表执行设置透明数据加密TDE

    • 您可在RDS控制台目标实例数据安全性TDE页面查看TDE开启状况。

  • RAM账号需要具备下载备份文件的权限。如需为RAM账号授权,请参见添加下载备份文件权限给只读子账号

使用限制

  • 本方案仅适用于本地盘实例的物理备份文件恢复。如果您需要恢复云盘实例的快照备份,请参见RDS MySQL快照备份文件恢复到自建数据库

  • 本方案用于恢复备份文件中的全部数据。如仅需恢复部分库表,请参见RDS MySQL逻辑备份文件恢复到自建数据库

  • 目前仅支持将RDS MySQL的物理备份文件恢复到安装在Linux系统中的自建MySQL数据库中。

  • 本方案暂不支持MGR(MySQL Group Replication)集群的数据恢复。

影响

  • 如果您当前的自建数据库正在运行其他业务,将RDS MySQL物理备份恢复到此数据库后,原有业务将不可用。

  • 本文介绍的恢复方案中,是将数据恢复到一个新建的数据库数据目录中,对自建数据库中原数据无影响。

技术实现

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

  1. 在RDS MySQL的管理控制台中,对数据库进行全量物理备份。

  2. 将物理备份文件下载到本地,然后通过qpress工具进行解压。

  3. 使用Percona XtraBackup工具,将解压后的备份文件恢复到自建数据库的数据目录中。

  4. 重启数据库后,即可在自建数据库中查看到原先位于RDS MySQL中的数据。

注意事项

  • 备份下载地址链接获取后有效时间仅有一个小时。超过有效时间后您可刷新页面获取最新链接下载即可。

  • 请勿修改或删减备份文件中的内容,修改或删减操作可能会导致备份文件损坏且无法恢复,如需修改,请恢复到自建数据库后,再进行修改操作。

费用说明

  • 如果需要手动备份,请关注当前备份使用量,超出免费额度的备份空间将会产生备份费用。更多信息,请参见备份费用

  • 下载备份时,如果您的自建数据库部署在本地,则需要使用外网链接下载备份数据,超出外网下载免费额度后需要支付外网流量费用。更多信息,请参见费用说明

    说明

    如果您的自建数据库部署在与RDS相同地域、相同VPC的云服务器 ECS中,使用内网链接下载备份数据,不收取流量费用。

准备工作

环境准备

  1. 本文以CentOS 7.9 64位的Linux系统为例,其他Linux发行版本,请适配相关命令。

  2. 部署自建MySQL数据库,其中数据库大版本与RDS MySQL的大版本必须相同(例如都是8.0)。

    您可以使用如下命令查询自建数据库大版本。

    mysql --version
  3. 查询您的自建数据库的配置文件路径

    本文示例中涉及的数据库配置文件路径如下:

    • MySQL 8.0、5.7为/etc/my.cnf

    • MySQL 5.6为/usr/my.cnf

    • MySQL 5.5需要手动创建,使用echo "[mysqld]" | sudo tee /etc/my.cnf命令创建。

    您可以使用如下命令查询自建数据库的配置文件路径。

    sudo find / -name my.cnf
    说明

    如果您的查询结果不一致,请在执行后续命令时,根据实际情况修改。

  4. 创建备份解压路径mysql_bkdata),用于存放解压后的备份文件。

    您可以使用如下命令创建备份解压目录

    sudo mkdir /var/mysql_bkdata
    sudo chown -R $USER:$USER /var/mysql_bkdata
    说明

    上述命令的$USER:$USER表示从环境变量中获取当前用户及用户组,无需修改。

  5. 创建数据库数据目录mysql_newdata),用于将备份文件恢复到此目录,启动数据库时使用此目录的数据。

    您可以使用如下命令创建数据目录

    sudo mkdir /var/mysql_newdata
    sudo chown -R $USER:$USER /var/mysql_newdata
    说明

    上述命令的$USER:$USER表示从环境变量中获取当前用户及用户组,无需修改。

工具准备

  1. 安装备份恢复工具Percona XtraBackup。

    • 如果是MySQL 8.0实例,请根据实际主机环境下载对应版本的XtraBackup工具,下载后再安装。

      重要

      由于RDS MySQL 8.0有新增Redo类型,开源版本的Percona XtraBackup可能存在兼容性问题。因此请下载下表RDS提供的XtraBackup工具。

      主机环境

      XtraBackup 8.0工具下载入口

      安装命令示例

      说明

      本示例将工具下载至/Xtrabackup8.0目录下,实际安装命令会因目录不同而有所变化,请以实际工具下载位置为准调整安装命令。

      Linux 6(基于x86_64架构)

      RDS XtraBackup 8.0工具下载

      sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.alios6.x86_64

      Linux 7(基于x86_64架构)

      RDS XtraBackup 8.0工具下载

      sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.alios7.x86_64.rpm

      Linux 7(基于ARM AArch64架构)

      RDS XtraBackup 8.0工具下载

      sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.alios7.aarch64.rpm

      Linux 8(基于ARM AArch64架构)

      RDS XtraBackup 8.0工具下载

      sudo yum localinstall -y /XtraBackup8.0/t-rds-xtrabackup-80-8.0.31-20230817110455.al8.aarch64.rpm
      说明

      安装完成后,Percona XtraBackup的可执行文件将位于/u01/xtrabackup80/bin目录下,该目录路径默认不会被添加到Linux系统的PATH环境变量中。

      若要方便未来在任何目录下直接执行Percona XtraBackup命令,您有两种方法:

      • 在执行Percona XtraBackup命令时,使用完整路径(本文多处命令均采用该方式)。例如/u01/xtrabackup80/bin/xtrabackup --xxxxxx

      • 手动将/u01/xtrabackup80/bin目录添加到系统的PATH环境变量中。

    • 如果是MySQL 5.7、5.6或5.5实例,下载并安装Percona XtraBackup 2.4,具体请参见Percona XtraBackup 2.4

      本文以Percona XtraBackup 2.4.28为例,安装命令如下:

      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
  2. 安装解压工具qpress。

    ## 下载可执行文件的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. 实例备份下载对话框,单击复制内网地址复制外网地址后image

    重要
    • 使用内网地址下载时,需要在同地域的VPC网络中才可下载,在跨地域VPC以及经典网络的服务器端无法下载。

    • 通过外网链接下载备份数据时,超出外网下载免费额度后需要支付外网流量费用。更多信息,请参见费用说明

    • 备份下载地址链接获取后有效时间仅有一个小时。超过有效时间后您可刷新页面获取最新链接下载即可。

    • 请勿修改或删减已备份的文件内容,可能造成备份文件损坏,无法恢复,如需修改,请恢复到自建数据库后,再进行修改操作。

  5. 登录本地自建MySQL所在的Linux服务器,执行如下命令下载物理备份。

    wget -c 'https://****.bak.rds.aliyuncs.com/****_xb.qp?****' -O test_xb.qp
    说明
    • 请将上述命令中的https://****.bak.rds.aliyuncs.com/****_xb.qp?****替换为实际复制的备份下载地址。备份文件下载后请您及时保存,避免泄露。

    • 本文示例将test_xb.qp作为另存的文件名,您可以自定义该文件名,但文件名后缀必须与下载地址里的后缀保持一致

      目前RDS MySQL备份下载地址的后缀名存在两种格式_xb.qp_qp.xb,您可以在下载链接中查看备份文件后缀格式。

    • 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. 恢复前准备。

    /u01/xtrabackup80/bin/xtrabackup --defaults-file=/var/mysql_bkdata/backup-my.cnf  --prepare --target-dir=/var/mysql_bkdata/

    参数解释:

    参数

    含义

    --defaults-file

    通过传入配置文件设置MySQL默认选项。

    RDS MySQL备份文件中,提供名为backup-my.cnf的配置文件,该文件位于备份解压目录,即/var/mysql_bkdata/

    --prepare

    XtraBackup工具的准备命令。

    --target-dir

    备份解压目录/var/mysql_bkdata/

  2. 修改自建数据库的数据目录(datadir)。

    1. 编辑数据库配置文件。

      sudo vim /etc/my.cnf

      查询数据库配置文件路径,请参见准备工作

    2. i键进入编辑模式,修改datadir的参数取值为/var/mysql_newdata

      datadir = /var/mysql_newdata

      mysql_newdata为自建数据库的新数据目录,已在准备工作中创建。

    3. Esc键退出编辑模式,输入:wq!保存并退出。

  3. 恢复数据。

    sudo xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=/var/mysql_bkdata/

    参数解释:

    参数

    含义

    --defaults-file

    自建数据库的my.cnf文件,根据此配置文件中设置的数据目录(datadir),获取恢复数据的目标路径。

    --copy-back

    XtraBackup工具的恢复命令。

    --target-dir

    备份解压目录/var/mysql_bkdata/,XtraBackup工具将此目录数据恢复到自建数据库的数据目录中。

MySQL 5.7恢复

  1. 恢复前准备。

    innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/

    参数解释:

    参数

    含义

    --defaults-file

    通过传入配置文件设置MySQL默认选项。

    RDS MySQL备份文件中,提供名为backup-my.cnf的配置文件,该文件位于备份解压目录,即/var/mysql_bkdata/

    --apply-log

    XtraBackup工具的准备命令。

    该命令后配置存放备份文件的目录,即备份解压目录/var/mysql_bkdata/

  2. 修改自建数据库配置文件my.cnf

    1. 编辑数据库配置文件。

      sudo vim /etc/my.cnf

      查询数据库配置文件路径,请参见准备工作

    2. i键进入编辑模式,修改datadir的参数取值为/var/mysql_newdata

      datadir = /var/mysql_newdata

      mysql_newdata为自建数据库的新数据目录,已在准备工作中创建。

    3. my.cnf中添加如下内容。

      innodb_undo_tablespaces=2
      innodb_undo_directory=/var/mysql_newdata
      重要

      参数innodb_undo_tablespaces的取值需要与/var/mysql_bkdata/backup-my.cnf中的取值相同,您可以使用cat /var/mysql_bkdata/backup-my.cnf | grep innodb_undo_tablespaces查询。

    4. Esc键退出编辑模式,输入:wq!保存并退出。

  3. 恢复数据。

    sudo innobackupex --defaults-file=/etc/my.cnf --copy-back /var/mysql_bkdata/

    参数解释:

    参数

    含义

    --defaults-file

    自建数据库的my.cnf文件,根据此配置文件中设置的数据目录(datadir),获取恢复数据的目标路径。

    --copy-back

    XtraBackup工具的恢复命令。

    该命令后配置存放备份文件的目录,即备份解压目录/var/mysql_bkdata/,XtraBackup工具将此目录数据恢复到自建数据库的数据目录中。

MySQL 5.6恢复

  1. 恢复前准备。

    innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/

    参数解释:

    参数

    含义

    --defaults-file

    通过传入配置文件设置MySQL默认选项。

    RDS MySQL备份文件中,提供名为backup-my.cnf的配置文件,该文件位于备份解压目录,即/var/mysql_bkdata/

    --apply-log

    XtraBackup工具的准备命令。

    该命令后配置存放备份文件的目录,即备份解压目录/var/mysql_bkdata/

  2. 修改自建数据库的数据目录(datadir)。

    1. 编辑数据库配置文件。

      sudo vim /usr/my.cnf

      查询数据库配置文件路径,请参见准备工作

    2. i键进入编辑模式,添加datadir参数。

      datadir = /var/mysql_newdata

      mysql_newdata为自建数据库的新数据目录,已在准备工作中创建。

    3. Esc键退出编辑模式,输入:wq!保存并退出。

  3. 恢复数据。

    sudo innobackupex --defaults-file=/usr/my.cnf --copy-back /var/mysql_bkdata/

    参数解释:

    参数

    含义

    --defaults-file

    自建数据库的my.cnf文件,根据此配置文件中设置的数据目录(datadir),获取恢复数据的目标路径。

    --copy-back

    XtraBackup工具的恢复命令。

    该命令后配置存放备份文件的目录,即备份解压目录/var/mysql_bkdata/,XtraBackup工具将此目录数据恢复到自建数据库的数据目录中。

MySQL 5.5恢复

  1. 恢复前准备。

    innobackupex --defaults-file=/var/mysql_bkdata/backup-my.cnf --apply-log /var/mysql_bkdata/

    参数解释:

    参数

    含义

    --defaults-file

    通过传入配置文件设置MySQL默认选项。

    RDS MySQL备份文件中,提供名为backup-my.cnf的配置文件,该文件位于备份解压目录,即/var/mysql_bkdata/

    --apply-log

    XtraBackup工具的准备命令。

    该命令后配置存放备份文件的目录,即备份解压目录/var/mysql_bkdata/

  2. 修改自建数据库配置文件my.cnf

    1. 编辑数据库配置文件。

      sudo vim /etc/my.cnf

      查询数据库配置文件路径,请参见准备工作

    2. i键进入编辑模式,添加datadir参数。

      datadir = /var/mysql_newdata

      mysql_newdata为自建数据库的新数据目录,已在准备工作中创建。

    3. my.cnf中添加如下内容。

      innodb_log_file_size=1048576000
      重要

      参数innodb_log_file_size的取值需要与/var/mysql_bkdata/backup-my.cnf中的取值相同,您可以使用cat /var/mysql_bkdata/backup-my.cnf | grep innodb_log_file_size查询。

    4. Esc键退出编辑模式,输入:wq!保存并退出。

  3. 恢复数据。

    sudo innobackupex --defaults-file=/etc/my.cnf --copy-back /var/mysql_bkdata/

    参数解释:

    参数

    含义

    --defaults-file

    自建数据库的my.cnf文件,根据此配置文件中设置的数据目录(datadir),获取恢复数据的目标路径。

    --copy-back

    XtraBackup工具的恢复命令。

    该命令后配置存放备份文件的目录,即备份解压目录/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. 编辑数据库配置文件。

      sudo vim /etc/my.cnf

      查询数据库配置文件路径,请参见准备工作

    2. i进入编辑模式,添加如下内容。

      lower_case_table_names=1
    3. Esc键退出编辑模式,输入:wq!保存并退出。

  2. 数据目录授权。

    sudo chown -R mysql:mysql /var/mysql_newdata
  3. 执行如下命令,启动MySQL进程。

    sudo mysqld --defaults-file=/etc/my.cnf --user=mysql --datadir=/var/mysql_newdata &

    参数解释:

    参数

    含义

    --defaults-file

    自建数据库的配置文件路径。本文以/etc/my.cnf为例,您可以参考准备工作,确认数据库的配置文件路径。

    --user

    启动数据库的用户。固定为mysql,无需修改。

    --datadir

    启动数据库使用的数据目录。本文以/var/mysql_newdata为例,您可以参考准备工作,确认数据库的数据目录。

MySQL 5.6启动

  1. (可选)在RDS MySQL管理控制台中查看实例参数lower_case_table_names的取值,如果取值为1,则需要修改自建数据库配置文件my.cnf

    1. 编辑数据库配置文件。

      sudo vim /usr/my.cnf

      查询数据库配置文件路径,请参见准备工作

    2. i进入编辑模式,添加如下内容。

      lower_case_table_names=1
    3. Esc键退出编辑模式,输入:wq!保存并退出。

  2. 数据目录授权。

    sudo chown -R mysql:mysql /var/mysql_newdata
  3. 执行如下命令,启动MySQL进程。

    sudo mysqld --defaults-file=/usr/my.cnf --user=mysql --datadir=/var/mysql_newdata &

    参数

    含义

    --defaults-file

    自建数据库的配置文件路径。本文以/usr/my.cnf为例,您可以参考准备工作,确认数据库的配置文件路径。

    --user

    启动数据库的用户。固定为mysql,无需修改。

    --datadir

    启动数据库使用的数据目录。本文以/var/mysql_newdata为例,您可以参考准备工作,确认数据库的数据目录。

MySQL 5.5启动

  1. 数据目录授权。

    sudo chown -R mysql:mysql /var/mysql_newdata
  2. 执行如下命令,启动MySQL进程。

    sudo mysqld --defaults-file=/etc/my.cnf --user=mysql --datadir=/var/mysql_newdata &

    参数

    含义

    --defaults-file

    自建数据库的配置文件路径。本文以/etc/my.cnf为例,您可以参考准备工作,确认数据库的配置文件路径。

    --user

    启动数据库的用户。固定为mysql,无需修改。

    --datadir

    启动数据库使用的数据目录。本文以/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实例为高可用,而本地自建数据库不涉及主备节点而导致的,不影响数据库启动,无需关注。

5. 连接数据库并验证

  1. 执行如下命令,登录MySQL数据库以验证进程启动成功。

    mysql -u<源RDS MySQL实例账号> -p<对应密码>
    说明
    • 此登录操作仅用于验证是否恢复成功,不涉及高权限操作,因此无需使用高权限账号。如果只需查看某些表的数据,确保登录账号具有查询这些表的权限即可。

    • 若忘记账号或密码,请在执行启动MySQL进程命令时,传入--skip-grant-tables参数,进程启动后会忽略权限检查,允许无需账户密码登录数据库。登录成功后,您可以重新设置账号和密码。

  2. 执行如下命令,查看是否有RDS MySQL实例中的数据库。

    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参数,进程启动后会忽略权限检查,允许无需账户密码登录数据库。登录成功后,您可以重新设置账号和密码。

  • Q:连接自建数据库后,只看到系统库或部分数据库怎么处理?

    A:请重启数据库后,使用root账号或原RDS实例中的高权限账号连接数据库查看。

相关文档

其他常见问题

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

暂不支持此操作。本文仅适用将RDS MySQL物理备份文件恢复到本地自建数据库,已经下载的物理备份文件不支持直接恢复到新建RDS MySQL实例。您可以:

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

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

除了下载备份文件恢复之外,还有其他方法可以将实例的数据快速恢复到自建数据库吗?

您还可以通过DTS将RDS MySQL迁移至自建MySQL中。

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

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

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

暂不支持此操作,您可以先分别恢复多个RDS MySQL的物理备份的多个自建数据库中,然后使用DTS或mysqldump进行数据迁移。更多信息,请参见DTS数据迁移使用mysqldump迁移MySQL数据