有奖征文:轻量对象存储LighthouseCOS用户实践> HOT

操作场景

说明:
为节约存储空间,云数据库 MySQL 的物理备份和逻辑备份文件,都会先经过 qpress 压缩,后经过 xbstream 打包(xbstream 为 Percona 的一种打包/解包工具)进行压缩与打包。
开源软件 Percona Xtrabackup 可以用于对数据库进行备份恢复,本文为您介绍使用 XtraBackup 工具,将 MySQL 物理备份文件恢复至其他主机上的自建数据库。
注意:
如果使用透明加密或 Instant DDL 功能,则无法使用物理备份在自建系统上进行恢复。
XtraBackup 只支持 Linux 平台,不支持 Windows 平台。
Windows 平台恢复数据请参考 命令行工具迁移数据

前提条件

下载并安装 XtraBackup 工具。
MySQL 5.6、5.7 请选择 Percona XtraBackup 2.4.6 及以上的版本,下载地址,安装介绍请参见 Percona XtraBackup 2.4 指引
MySQL 8.0 请选择 Percona XtraBackup 8.0.22-15 及以上版本,下载地址,安装介绍请参见 Percona XtraBackup 8.0 指引
支持的实例版本:MySQL 双节点、三节点。
开启透明数据加密(TDE)功能的实例,不支持使用物理备份恢复数据库。
说明:
本文以 CentOS 操作系统的云服务器和 MySQL 5.7 版本为例进行演示。

步骤1:
下载备份文件

您可通过控制台下载云数据库 MySQL 的数据备份、日志备份。
说明:
默认每个 IP 限制10个链接,每个链接下载速度可达20Mpbs - 30Mpbs。
1. 登录 MySQL 控制台,在实例列表,单击实例 ID 或操作列的管理,进入实例管理页面。
2. 在实例管理页面,选择备份恢复 > 数据备份列表页, 选择需要下载的备份,在操作列单击下载
3. 在弹出的对话框,推荐您复制下载地址,并 登录到云数据库所在 VPC 下的 CVM(Linux 系统) 中,运用 wget 命令进行内网高速下载,更高效。
说明:
您也可以选择本地下载直接下载,但耗时较多。
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:下载备份解密密钥(开启了备份加密功能才需操作此步骤)

您可通过控制台下载云数据库 MySQL 的数据备份解密密钥。
说明:
每个数据库备份的解密密钥独立生成,如开启了备份加密功能,下载备份文件时需要连同解密密钥一并下载保留。
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
说明:
若 wget 下载提示错误,您可单击 下载 qpress 工具 下载到本地后,再将 qpress 工具上传至 Linux 云服务器,请参见 通过 SCP 上传文件到 Linux 云服务器
2. 通过如下命令解压出 qpress 二进制文件。
tar -xf qpress-11-linux-x64.tar -C /usr/local/bin
source /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 成功。
prepare.png



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




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


备份相关问题