云数据库MySQL版使用开源软件Percona Xtrabackup对数据库进行备份,所以您可以使用该软件将云数据库MySQL的备份文件恢复到自建数据库中,本文将介绍详细的操作步骤。

关于云数据库MySQL版如何备份数据,请参见​​备份RDS数据​​。

前提条件

  • 本地MySQL数据库安装在64位的Linux系统中,且与云数据库MySQL版的版本相同。

说明:由于软件限制,目前只支持将云数据库MySQL的备份文件恢复到安装在Linux系统中的自建MySQL数据库中。但在Linux下恢复的数据文件,可以在Windows和Linux操作系统中正常使用。


  • 操作系统中已安装数据恢复工具Percona XtraBackup。MySQL 5.6及之前的版本需要安装 Percona XtraBackup 2.3。MySQL 5.7版本需要安装 Percona XtraBackup 2.4。可以从Percona XtraBackup官网下载安装,安装指导请参见官方文档 Percona XtraBackup 2.3Percona XtraBackup 2.4.
  • 操作系统中已安装数据备份文件解压工具rds_backup_extract.sh。若未安装,请点击下载

操作步骤

  1. 获取数据备份文件下载地址,具体操作步骤如下。
  1. 登录RDS管理控制台
  2. 选择目标实例所在地域。
  3. 单击目标实例的ID,进入基本信息页面。
  4. 在左侧导航栏中,选择备份恢复,进入备份恢复页面。
  5. 选择数据备份标签页。
  6. 选择查询的时间范围,然后单击查询。
  7. 在数据备份列表中,找到要下载的数据备份,并单击其对应的下载,如下图所示。
    恢复阿里云RDS云数据库MySQL的备份文件到自建数据库_数据库
  8. 在实例备份文件下载窗口,单击复制外网地址,获取数据备份文件外网下载地址,如下图所示。
    恢复阿里云RDS云数据库MySQL的备份文件到自建数据库_备份文件_02
  1. 下载数据备份文件,具体操作步骤如下。
  1. 登录云服务器ECS。
  2. 执行如下命令,下载数据备份文件。
  1. wget -c '<数据备份文件外网下载地址>' -O <自定义文件名>.tar.gz

参数说明:

-c:启用断点续传模式。

-O:将下载的结果保存为指定的文件(建议使用URL中包含的文件名)。

说明:若提示显示100%进度,则表示文件下载完成。

  1. 将下载的数据备份恢复到本地MySQL数据库中,具体操作步骤如下。
  1. 执行如下命令,解压已下载的数据备份文件。

说明:本文以自定义路径/home/mysql/data为例,您可以根据实际情况将其替换成实际路径。

  1. bash rds_backup_extract.sh -f <数据备份文件名>.tar.gz -C /home/mysql/data  (如果数据库比较大 , 可以在 screen 里执行)

参数说明:

-f:指定要解压的备份集文件。

-C:指定文件要解压到的目录。可选参数,若不指定就解压到当前目录。

  1. 执行如下命令,查询解压后生成的文件。
  1. ls -l /home/mysql/data

命令执行成功后,系统会返回如下结果,其中蓝色字体为生成备份文件时RDS实例所包含的数据库。

  1. 执行如下命令,恢复解压好的备份文件。
  1. innobackupex --defaults-file=/home/mysql/data/backup-my.cnf --apply-log /home/mysql/data --use-memory=8G   (如果数据比较大, 可以在screen 里执行,设置内存大小加速恢复速度)

若系统返回如下类似结果,则说明备份文件已成功恢复到本地数据库。

  1. 为避免版本问题,需修改backup-my.cnf参数,具体操作步骤如下。
  1. 执行如下命令,以文本方式编辑backup-my.cnf文件。
  1. vi /home/mysql/data/backup-my.cnf
  1. 执行如下命令,注释掉如下参数。
  1. #innodb_fast_checksum
  2. #innodb_page_size
  3. #innodb_log_block_size
  1. 按Esc键,然后输入:wq进行保存并关闭编辑器。
  1. 执行如下命令,修改文件属主,并确定文件所属为MySQL用户。
  1. chown -R mysql:mysql /home/mysql/data
  1. 执行如下命令,启动MySQL进程。
  1. mysqld_safe --defaults-file=/home/mysql/data/backup-my.cnf --user=mysql --datadir=/home/mysql/data &
  1. 执行如下命令,登录MySQL数据库以验证进程启动成功。
  1. mysql -uroot

若系统返回如下结果,进程启动成功,则说明已成功执行参数注释和修改文件属主。

  1. 恢复完成后,表mysql.user中不包含在RDS实例中创建的用户,需要新建。在新建用户前,执行如下命令。
  1. delete from mysql.db where user<>’root’ and char_length(user)>0;delete from mysql.tables_priv where us

实际遇到问题:

mysql 启动不起来 , 更改了 配置文件 

# This MySQL options file was generated by innobackupex.

# The MySQL server
[mysqld]
#innodb_checksum_algorithm=innodb
#innodb_log_checksum_algorithm=innodb
innodb_data_file_path=ibdata1:200M:autoextend
innodb_log_files_in_group=2
innodb_log_file_size=1572864000
#innodb_fast_checksum=false
#innodb_page_size=16384
#innodb_log_block_size=512
innodb_undo_directory=.
innodb_undo_tablespaces=0

#rds_encrypt_data=false
#innodb_encrypt_algorithm=aes_128_ecb
mysql -uroot  直接登录不了

重置root 密码也不行

用原先rds的高权限账户登录是可以的