华为云数据库通过备份文件恢复到自建数据库MySQL

操作场景

原文:https://support.huaweicloud.com/usermanual-rds/rds_08_0044.html

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

须知:

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

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

前提条件

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

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

ps -ef | grep mysql

操作步骤1-2如果是Ub/De用户可以直接通过官方APT Deb包源安装:

https://www.percona.com/doc/percona-xtrabackup/2.4/installation/apt_repo.html

CentOS:

  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. 拷贝全备文件,并修改目录权限。(注意my.cnf文件位置,mysql)
    • 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 查看数据恢复结果