本文介绍如何将云数据库 MySQL 版的物理备份文件恢复到自建数据库。支持使用以下备份文件或备份文件的组合进行恢复:
对于 MySQL 5.7 版本实例,需安装 Percona XtraBackup 2.4。
对于 MySQL 8.0 版本实例,需安装 Percona XtraBackup 8.0。
如果您当前的自建数据库正在运行其他业务,恢复云数据库 MySQL 版的物理备份到此数据库后,原有业务将不可用。
本文介绍的恢复方案是将数据恢复到自建数据库的一个新建的数据库数据目录中,对自建数据库中原数据无影响。
在自建库服务器上,为备份文件创建数据目录。此处以 /home/mysql/data
为例。
说明
如果有多个备份文件,则需要为每个备份文件创建数据目录。
mkdir /home/mysql/data
处理备份文件。
如备份文件未压缩或为 MySQL 8.0 版本实例的备份文件,使用以下命令处理备份文件。此处,备份文件的本地路径以 /data/backup.xbstream
为例。
xbstream -x --parallel=4 -C /home/mysql/data < /data/backup.xbstream
如备份文件为 MySQL 5.7 版本实例的备份文件且经过压缩,需按照以下操作步骤处理备份文件。此处,备份文件的本地路径以 /data/backup.qp.xbstream
为例。
解包备份文件。
xbstream -x --parallel=4 -C /home/mysql/data < /data/backup.qp.xbstream
解压备份文件。
解压目标目录下所有以 .qp
为后缀的文件。
xtrabackup --decompress --target-dir=/home/mysql/data
说明
xtrabackup
默认在解压缩后不删除原始的 .qp
压缩文件,如需在解压后删除 .qp
压缩文件,可在上述命令加上 --remove-original
参数。Prepare 备份数据。
xtrabackup --prepare --target-dir=/home/mysql/data
当显示如下日志时,prepare 成功。
如果有多个增量备份文件,则需要按照从早到晚的顺序,对每份增量备份执行 prepare 操作。
xtrabackup --prepare --target-dir=/home/mysql/data --incremental-dir=<增量备份解压的目录>
注意
如果存在增量备份,除最后一个增量备份以外,其他备份文件的 --prepare
都需要加上 --apply-log-only
参数。
修改数据文件属性。
chown -R mysql:mysql /home/mysql/data
启动 MySQL。
mysqld --defaults-file=/home/mysql/data/my.cnf --user=mysql --datadir=/home/mysql/data &
说明
my.cnf 为自建数据库的配置文件。
登录数据库。
使用在源数据库实例设置的账号的密码进行登录。
mysql -u<源 RDS 实例账号> -p<对应密码>
--skip-grant-tables
参数重新启动 mysqld 以跳过鉴权,在该模式下修改 root 用户密码。修改后,重新启动 mysqld,即可使用 root 用户身份登录。