阿里云数据库 MySQL 版支持通过物理备份文件和逻辑备份文件两种途径将云上数据迁移到本地数据库。

利用物理备份文件导出

背景信息

因为软件限制,目前数据恢复只支持在 Linux 系统下进行。如果您要恢复数据到 Windows 系统,可以先将数据恢复到 Linux 系统下,再将数据迁移到 Windows 系统。

前提条件

操作系统中已安装数据恢复工具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

操作步骤

本例以本地服务器为 RHEL6/x64 系统,备份文件存储路径为 /home/mysql/ 为例。

  1. 下载云数据库 物理备份文件 并上传至目标服务器。备份文件获取方法请参见 下载数据备份和日志备份。如果目标服务器可以访问源实例,您也可以使用 wget "url" 下载备份文件。其中 url 为备份文件下载地址。
  2. 切换路径到备份文件所在路径。
    cd /home/mysql/
  3. 解压备份文件。
    tar vizxf filename.tar.gz
    其中,filename.tar.gz为备份文件名。
  4. 检查解压后文件包含的数据库是否正确。
    cd filename/ll
    系统显示如下,其中 db0dz1rv11f44yg2mysqltest 为云数据库中存在的数据库。
    -rw-r--r-- 1 root root       269 Aug 19 18:15 backup-my.cnf
    drwxr-xr-x 2 root root      4096 Aug 21 10:31 db0dz1rv11f44yg2
    -rw-rw---- 1 root root 209715200 Aug  7 10:44 ibdata1
    drwxr-xr-x 2 root root      4096 Aug 21 10:31 mysql
    drwxr-xr-x 2 root root      4096 Aug 21 10:31 test
    -rw-r--r-- 1 root root        10 Aug 19 18:15 xtrabackup_binary
    -rw-r--r-- 1 root root        23 Aug 19 18:15 xtrabackup_binlog_info
    -rw-r--r-- 1 root root        77 Aug 19 18:15 xtrabackup_checkpoints
    -rw-r--r-- 1 root root      2560 Aug 19 18:15 xtrabackup_logfile
    -rw-r--r-- 1 root root        72 Aug 19 18:15 xtrabackup_slave_info
  5. 恢复数据文件。
    innobackupex --defaults-file=./backup-my.cnf --apply-log ./
    系统显示innobackupex: completed OK!,则数据恢复成功。
  6. 修改配置文件。将解压文件 backup-my.cnf 中的 innodb_fast_checksuminnodb_page_sizeinnodb_log_block_size注释掉,并且添加 datadir=/home/mysql,如下所示。
    # This MySQL options file was generated by innobackupex-1.5.1.
    # The MySQL Server
    [mysqld]
    innodb_data_file_path=ibdata1:200M:autoextend
    innodb_log_files_in_group=2
    innodb_log_file_size=524288000
    #innodb_fast_checksum=0
    #innodb_page_size=16364
    #innodb_log_block_size=512
    datadir=/home/mysql/
  7. 重装 MySQL 系统库,取得数据库的 root 权限。
    rm -rf mysql
    mysql_install_db --user=mysql --datadir=/home/mysql/
    系统显示如下,则 mysql 系统库重装成功。
    Installing MySQL system table...
    OK
    Filling help table...
    OK
  8. 修改文件属主。
    chown -R mysql:mysql /home/mysql/
  9. 启动 mysqld 进程。
    mysqld_safe --defaults-file=/home/mysql/backup-my.cnf &
  10. 使用客户端登录数据库。
    mysql –u root –p
  11. 验证数据库是否完整。
    show databases;
    系统显示入选,则数据库恢复成功。
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | db0dz1rv11f44yg2   |
    | mysql              |
    | performance_schema |
    | test               |
    +--------------------+

利用逻辑备份文件导出

本例以本地服务器为 RHEL6/x64 系统,备份文件存储路径为 /home/mysql/ 为例。

操作步骤
  1. 下载云数据库 逻辑备份文件 并上传至目标服务器。备份文件获取方法请参见 下载数据备份和日志备份。如果目标服务器可以访问源实例,您也可以使用wegt "url" 下载备份文件。其中 url 为备份文件下载地址。
  2. 切换路径到备份文件所在路径。
    cd /home/mysql/
  3. 解压备份文件。
    tar vizxf filename.tar.gz
    其中,filename.tar.gz 为备份文件名。
  4. 解压 sql 压缩文件。
    gunzip filename.sql.gz
    其中,filename.sql.gz为 sql 压缩文件名。
  5. 执行逻辑导入操作,将数据导入目标数据库。
    mysql -u userName -p -h hostName -P port dbName < filename.sql
    其中,filename.sql为解压后的 sql 文件。