文档首页/ 云数据库 RDS/ 用户指南(吉隆坡区域)/ MySQL用户指南/ 备份与恢复/ 通过备份文件恢复到自建数据库(MySQL)
更新时间:2022-08-16 GMT+08:00

通过备份文件恢复到自建数据库(MySQL)

操作场景

您可根据业务需要,参考下载备份文件,并通过备份文件进行本地存储备份或者恢复数据。

备份文件不支持恢复到本地为Windows操作系统的数据库。

由于开源备份工具(XtraBackup)目前仅支持x86包,不支持ARM,因此ARM的ECS自建库不能根据本章操作进行备份文件恢复,推荐您可以使用DRS迁移或数据导出导入的方式,具体请参见数据迁移

前提条件

通过下载备份文件恢复数据到自建MySQL,请确保恢复目标MySQL版本不低于备份源RDS for MySQL版本。

恢复数据过程中,您可通过命令查看任务进程:

ps -ef | grep mysql

操作步骤

  1. 下载qpress程序,并上传到ECS进行安装。

    网站下载文件“qpress-11-linux.x64.tar”, 并上传到ECS上。

    tar -xvf qpress-11-linux-x64.tar

    mv qpress /usr/bin/

  2. 下载XtraBackup软件,并上传到ECS进行安装。

    网站下载XtraBackup,并上传到ECS上,下面以下载“percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm”为例。

    rpm -ivh percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm --nodeps --force

  3. 在ECS上解压下载好的全备文件。

    1. 创建一个临时目录backupdir。

      mkdir backupdir

    2. 解压文件。

      xbstream -x -p 4 < ./全备文件.qp -C ./backupdir/

      • 5.6和5.7版本执行:innobackupex --parallel 4 --decompress ./backupdir
      • 8.0版本执行:xtrabackup --parallel 4 --decompress --target-dir=./backupdir
    3. 删除“.qp”备份文件。

      find ./backupdir/ -name '*.qp' | xargs rm -f

  4. 应用日志。

    • 5.6和5.7版本执行:innobackupex --apply-log ./backupdir
    • 8.0版本执行:xtrabackup --prepare --target-dir=./backupdir

  5. 备份数据。

    1. 停止MySQL数据库服务。

      service mysql stop

      如果是MySQL5.7, 需执行如下命令停止MySQL数据库服务:

      /bin/systemctl stop mysqld.service

    2. 备份原来的数据库目录。

      mv /var/lib/mysql/data /var/lib/mysql/data_bak

    3. 创建新的数据库目录并修改目录权限。

      mkdir /var/lib/mysql/data

      chown mysql:mysql /var/lib/mysql/data

  6. 拷贝全备文件,并修改目录权限。

    • 5.6和5.7版本执行:innobackupex --defaults-file=/etc/my.cnf --copy-back ./backupdir
    • 8.0版本执行:xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=./backupdir

    chown -R mysql:mysql /var/lib/mysql/data

  7. 启动数据库。

    service mysql start

    如果是MySQL5.7, 需执行如下命令启动数据库:

    /bin/systemctl start mysqld.service

  8. 登录数据库,查看数据恢复结果。

    mysql -u root

    show databases

    图1 查看数据恢复结果