更新时间:2024-12-25 gmt 08:00

恢复到自建mysql数据库-九游平台

本章节介绍将下载的华为云rds for mysql全量备份文件恢复到自建mysql数据库的操作步骤。

如果您希望在本地重新建立一个同样体量mysql数据库,并且将华为云rds for mysql数据全部迁移,可以使用本章节操作将下载的.qp文件在本地进行重建。

操作流程

  1. 下载华为云rds for mysql实例中对应时间点的全备文件。
  2. 将全备文件上传到本地用以重建数据库。
  3. 使用qpress工具将全备文件解压。
  4. 通过xtrabackup工具将全备文件恢复到数据库的data目录中,并将数据库原数据保留到data_back文件中。
  5. 重启数据库,数据重建成功。

约束限制

  • 本章节仅使用从华为云rds for mysql 5.6、5.7、8.0版本实例下载的全量备份文件在本地恢复到对应版本自建数据库,不包括增量备份的恢复操作。
  • 自建mysql数据库内核小版本需与华为云rds for mysql版本号一致。

    通过mysql -vmysqld --version命令,可以查看mysql内核版本。

  • 仅支持恢复到本地为linux操作系统的数据库。
  • 由于开源备份工具目前仅支持x86包,不支持arm,因此,不支持arm的ecs自建库使用本章操作进行备份文件恢复。您可以使用drs迁移或数据导出导入的方式,具体请参见数据迁移
  • 全量备份文件恢复到自建数据库将使用以下三个软件:
    • mysql数据库
    • qpress工具
    • percona xtrabackup工具
    • 请使用对应版本工具,否则将无法恢复成功。
      表1 版本对应关系

      数据库

      qpress

      percona xtrabackup

      mysql 8.0

      qpress 7

      xtrabackup 8.0.0及以上版本

      mysql 5.7、mysql 5.6

      qpress 7

      xtrabackup 2.4.9及以上版本

  • 在进行恢复阶段请勿在本地自建数据库运行其他业务。

步骤一:在华为云rds for mysql下载全量备份文件

rds for mysql实例会在固定时间进行自动全备任务,也可以由您指定时间进行手动全备任务,其生成的.qp文件支持下载以及在本地进行恢复自建数据库。

  1. 您可以在rds界面单击实例名称,选择“备份恢复 > 全量备份 > 下载”,下载全量备份文件。
    图1 下载全量备份
  2. 通过文件传输工具(例如winscp)将全备文件上传到本地mysql库所在的linux设备。

步骤二:在本地mysql安装qpress和xtrabackup

方式一:手动安装

  1. 下载正确版本的qpress和xtrabackup,也可以根据表2进行下载。下载完成后将安装包上传到本地mysql库所在的linux设备。
    • 下载mysql:
    • 下载qpress工具:
    • 下载percona xtrabackup工具:
      • 对于mysql 5.6和5.7版本,下载及其以上版本。
      • 对于mysql 8.0版本,下载及其以上版本。
    表2 下载示例

    工具

    下载示例

    mysql 5.6

    mysql-5.6.51-linux-glibc2.12-x86_64.tar.gz

    mysql 5.7

    mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz

    mysql 8.0

    mysql-8.0.26-linux-glibc2.12-x86_64.tar

    qpress

    percona xtrabackup

    (mysql 5.6、5.7)

    (mysql 8.0)

  2. 安装qpress rpm包。以enterprise linux 7(centos 7, rhel 7, rocky linux 7, almalinux 7)操作系统为例。

    rpm -ivh qpress-11-1.el7.x86_64.rpm

  3. 解压xtrabackup包,并改名为“xtrabackup”。

    tar -zxvf percona-xtrabackup-2.4.9-linux-x86_64.tar.gz

    mv percona-xtrabackup-2.4.9-linux-x86_64 xtrabackup

  4. xtrabackup添加到环境变量。
    echo  "export  path=$path:/usr/local/xtrabackup/bin"  >> /etc/profile
    mv xtrabackup/ /usr/local/
    source  /etc/profile

方式二:wget安装

  1. 安装qpress rpm包。

    wget https://repo.percona.com/yum/release/7/rpms/x86_64/qpress-11-1.el7.x86_64.rpm

    rpm -ivh qpress-11-1.el7.x86_64.rpm

  2. 安装percona xtrabackup。
    • mysql 5.6、5.7,以下载并安装percona xtrabackup 2.4.9为例

      wget

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

    • mysql 8.0,以下载并安装percona xtrabackup 8.0为例

      wget

      rpm -ivh percona-xtrabackup-80-8.0.32-26.1.el7.x86_64.rpm --nodeps --force

步骤三:使用备份文件恢复数据到自建mysql

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

    mkdir backupdir

  2. 解压全备文件。

    解压全备文件到临时目录“backupdir”前,需要保证临时目录下为空,再进行解压,避免恢复异常。

    • mysql 5.6、5.7

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

      innobackupex --parallel 4 --decompress ./backupdir

    • mysql 8.0

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

      xtrabackup --parallel 4 --decompress --target-dir=./backupdir

  3. 删除qp文件。

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

  4. 应用redo日志。
    • mysql 5.6、5.7

      innobackupex --apply-log ./backupdir

    • mysql 8.0

      xtrabackup --prepare --target-dir=./backupdir

  5. 备份数据。
    1. 停止mysql数据库服务。

      service mysql stop

      如果是mysql 5.7,需执行如下命令停止mysql数据库服务:

      /bin/systemctl stop mysqld.service

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

      mv /usr/local/mysql/data /usr/local/mysql/data_bak

      mkdir /usr/local/mysql/data

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

      chown mysql:mysql /usr/local/mysql/data

  6. 恢复数据到自建库,并修改目录权限。

    执行该步骤前,需要清空自建库的“data”目录,参考5.b

    • mysql 5.6、5.7

      innobackupex --defaults-file=/etc/my.cnf --copy-back ./backupdir

      chown -r mysql:mysql /usr/local/mysql/data

    • mysql 8.0

      xtrabackup --defaults-file=/etc/my.cnf --copy-back --target-dir=./backupdir

      chown -r mysql:mysql /usr/local/mysql/data

    • 命令中的相对路径(./backupdir)可替换成绝对路径。
    • --defaults-file”为mysql配置文件位置,您可以根据实际情况进行修改。
  7. 启动数据库。

    service mysql start

    如果是mysql 5.7,需执行如下命令启动数据库:

    /bin/systemctl start mysqld.service

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

    show databases

相关文档

网站地图