操作场景
说明:
为节约存储空间,云数据库 MySQL 的物理备份和逻辑备份文件,都会先经过 qpress 压缩,后经过 xbstream 打包(xbstream 为 Percona 的一种打包/解包工具)进行压缩与打包。
开源软件 Percona Xtrabackup 可以用于对数据库进行备份恢复,本文为您介绍使用 XtraBackup 工具,将 MySQL 物理备份文件恢复至其他主机上的自建数据库。
注意:
如果使用透明加密或 Instant DDL 功能,则无法使用物理备份在自建系统上进行恢复。
XtraBackup 只支持 Linux 平台,不支持 Windows 平台。
Windows 平台恢复数据请参考 命令行工具迁移数据。
前提条件
下载并安装 XtraBackup 工具。
说明:
请确保您下载的工具的版本与您数据库的版本一致,例如您的实例数据库版本为 MySQL 8.0.30,则请对应下载8.0.30版本的 Percona XtraBackup 工具。点击 下载地址 可跳转查询版本和下载工具,安装介绍请参见 Percona XtraBackup 指引。
支持的实例版本:MySQL 双节点、三节点。
说明:
本文以 CentOS 操作系统的云服务器和 MySQL 5.7 版本为例进行演示。
步骤1:下载备份文件
您可通过控制台下载云数据库 MySQL 的数据备份、日志备份。
说明:
默认每个 IP 限制10个链接,每个链接下载速度可达20Mpbs - 30Mpbs。
1. 登录 MySQL 控制台,在实例列表,单击实例 ID 或操作列的管理,进入实例管理页面。
2. 在实例管理页面,选择备份恢复 > 数据备份列表页, 选择需要下载的备份,在操作列单击下载。
3. 在弹出的对话框,下载地址后单击复制,获取下载链接。
4. 登录本地自建 MySQL 所在的 Linux 云服务器,运用 wget 命令进行内网高速下载物理备份。
说明:
下载地址有效期均为12小时,过期后请主动刷新页面重新获取。
wget 命令格式:wget -c '备份文件下载地址' -O 自定义文件名.xb
示例如下:
wget -c 'https://mysql-database-backup-sh-1218.cos.ap-nanjing.myqcloud.com/12427%2Fmysql%2F0674-ffba-11e9-b592-70bd%2Fdata%2Fautomatic-delete%2F2019-12-03%2Fautomatic%2Fxtrabackup%2Fbk_61_156758150%2Fcdb-293fl9ya_backup_20191203000202.xb?sign=q-sign-algorithm%3Dsha1%26q-ak%3DAKzxfbLJ1%26q-sign-time%3D1575374119%3B1575417319%26q-key-time%3D1575374119%3B1575417319%26q-header-list%3D%26q-url-param-list%3D%26q-signature%3Dba959757&response-content-disposition=attachment%3Bfilename%3D%22yuan177685_backup_20191203000202.xb%22&response-content-type=application%2Foctet-stream' -O /data/test.xb
步骤2:下载备份解密密钥(开启了备份加密功能才需操作此步骤)
您可通过控制台下载所需物理备份对应的数据备份解密密钥。
说明:
每个数据库备份的解密密钥独立生成,如开启了备份加密功能,下载备份文件时需要连同解密密钥一并下载保留。
1. 登录 MySQL 控制台,在实例列表,单击实例 ID 或操作列的管理,进入实例管理页面。
2. 在实例管理页面,选择备份恢复 > 数据备份列表页, 选择需要下载的备份对应的解密密钥,在操作列单击下载密钥。
3. 在弹出的对话框,选择需要保存密钥的文件路径,单击下载。
步骤3:恢复数据
3.1 解包备份文件
使用 xbstream 命令将备份文件解包到目标目录。
xbstream -x --decrypt=AES256 --encrypt-key-file=<备份密钥文件> --parallel=2 -C /data/mysql < /data/test.xb
说明:
未开启备份加密时,解包备份文件命令为:
xbstream -x -C /data/mysql < /data/test.xb
。本文目标目录以
/data/mysql
为数据文件恢复存储,您可根据实际情况替换为实际路径。/data/test.xb
替换为您的备份文件。解包结果如下图所示:
3.2 解压备份文件
1. 通过如下命令下载 qpress 工具。
wget -d --user-agent="Mozilla/5.0 (Windows NT x.y; rv:10.0) Gecko/20100101 Firefox/10.0" https://docs-tencentdb-1256569818.cos.ap-guangzhou.myqcloud.com/qpress-11-linux-x64.tar
说明:
2. 通过如下命令解压出 qpress 二进制文件。
tar -xf qpress-11-linux-x64.tar -C /usr/local/binsource /etc/profile
3. 使用如下命令将目标目录下所有以
.qp
结尾的文件都解压出来。xtrabackup --decompress --target-dir=/data/mysql
说明:
/data/mysql
为之前存储备份文件的目标目录 ,您可根据实际情况替换为实际路径。Percona Xtrabackup 在2.4.6及以上版本中才支持
--remove-original
选项。xtrabackup
默认在解压缩时不删除原始的压缩文件,若需解压完删除原始的压缩文件,可在上面的命令中加上 --remove-original
参数。
3.3 Prepare 备份文件
备份解压出来之后,执行如下命令进行 apply log 操作。
xtrabackup --prepare --target-dir=/data/mysql
执行后若结果中包含如下输出,则表示 prepare 成功。
3.4 修改配置文件
1. 执行如下命令打开
backup-my.cnf
文件。vi /data/mysql/backup-my.cnf
说明:
本文以目标目录
/data/mysql
为例,您可以根据实际情况将其替换成实际路径。2. 由于存在的版本问题,请将解压文件
backup-my.cnf
中如下参数进行注释。innodb_checksum_algorithm
innodb_log_checksum_algorithm
innodb_fast_checksum
innodb_page_size
innodb_log_block_size
redo_log_version
server_uuid
master_key_id
3.5 修改文件属性
修改文件属性,并检查文件所属为 mysql 用户。
chown -R mysql:mysql /data/mysql
步骤4:启动 mysqld 进程并登录验证
1. 启动 mysqld 进程。
mysqld_safe --defaults-file=/data/mysql/backup-my.cnf --user=mysql --datadir=/data/mysql &
2. 客户端登录 mysql 验证。
mysql -uroot