阿里云RDS Mysql物理备份文件恢复到自建数据库
今天需要将Mysql数据从RDS迁移到ECS云服务器上自建Mysql中。因我的RDS已到期停机,无法通过mysqldump等命令导出数据,好在RDS给提供了数据库物理文件的每日全量备份,姑且用之。
整个操作流程可分为三个:下载解压物理文件备份, 使用Percona XtraBackup恢复数据,启动MySQL并校验数据。
下载解压备份文件
在RDS的备份恢复界面找到最新备份:
获取下载地址并使用wget或curl下载到ECS机器上。下载得到的是一个tar.gz压缩包,使用如下命令解压缩:
1 | tar -izxvf '<backup_file_name.tar.gz>' -C '<MySQL data dir>' |
这里我直接解压到了默认的MySQL数据目录/var/lib/mysql.(我的MySQL是新装的,还没启动,因此默认数据目录下是空的)。
使用Percona XtraBackup恢复数据
首先,需要安装Percona XtraBackup。这里需要注意,不同的MySQL版本,需要不同的Percona XtraBackup版本。比如,MySQL 5.6及之前的版本需要安装 Percona XtraBackup 2.3,MySQL 5.7版本需要安装 Percona XtraBackup 2.4,MySQL 8.0版本需要安装 Percona XtraBackup 8.0。
安装完毕后,执行如下命令,恢复解压后的文件:
1 | innobackupex --defaults-file=/var/lib/mysql/backup-my.cnf --apply-log /var/lib/mysql |
若恢复成功,则会提示类似文字:
启动MySQL并校验数据
设置正确的文件属主:
1 | chown -R mysql:mysql /var/lib/mysql |
执行如下命令启动mysql:
1 | service mysql restart |
使用各种客户端软件连接MySQL,根据业务情况校验各数据库、各表的数据。