You need to enable JavaScript to run this app.
导航

从物理备份文件恢复到自建数据库

最近更新时间2024.01.05 16:55:47

首次发布时间2022.12.14 21:15:41

本文介绍如何将云数据库 MySQL 版的物理备份文件恢复到自建数据库。支持使用以下备份文件或备份文件的组合进行恢复:

  • 单个全量备份文件
  • 一个全量文件和一个或多个增量备份文件

前提条件

  • 已获取云数据库 MySQL 版的物理备份。更多关于获取备份文件的信息,请参见下载备份文件
    • 如果备份文件中包含了增量备份文件,请确保已获得了该增量备份文件所基于的全量备份文件。
    • 如果备份文件中包含了多个增量备份文件,请确保这些增量文件是连续的增量备份。
  • 自建 MySQL 数据库的数据库版本应与云数据库 MySQL 版的数据库版本相同。
  • 自建数据库的实例类型应为高可用版。
  • 请确保该 MySQL 服务上没有运行其他业务。
  • 已在自建 MySQL 数据库所在的服务器中安装 Percona XtraBackup。

使用限制

如果您当前的自建数据库正在运行其他业务,恢复云数据库 MySQL 版的物理备份到此数据库后,原有业务将不可用。
本文介绍的恢复方案是将数据恢复到自建数据库的一个新建的数据库数据目录中,对自建数据库中原数据无影响。

操作步骤

  1. 在自建库服务器上,为备份文件创建数据目录。此处以 /home/mysql/data 为例。

    说明

    如果有多个备份文件,则需要为每个备份文件创建数据目录。

    mkdir /home/mysql/data
    
  2. 处理备份文件。

    1. 如备份文件未压缩或为 MySQL 8.0 版本实例的备份文件,使用以下命令处理备份文件。此处,备份文件的本地路径以 /data/backup.xbstream 为例。

      xbstream -x --parallel=4 -C /home/mysql/data < /data/backup.xbstream
      
    2. 如备份文件为 MySQL 5.7 版本实例的备份文件且经过压缩,需按照以下操作步骤处理备份文件。此处,备份文件的本地路径以 /data/backup.qp.xbstream 为例。

      • 解包备份文件。

        xbstream -x --parallel=4 -C /home/mysql/data < /data/backup.qp.xbstream
        
      • 解压备份文件。

        解压目标目录下所有以 .qp 为后缀的文件。

        xtrabackup --decompress --target-dir=/home/mysql/data
        

      说明

  3. Prepare 备份数据。

    xtrabackup --prepare --target-dir=/home/mysql/data
    

    当显示如下日志时,prepare 成功。

    如果有多个增量备份文件,则需要按照从早到晚的顺序,对每份增量备份执行 prepare 操作。

    xtrabackup --prepare --target-dir=/home/mysql/data --incremental-dir=<增量备份解压的目录>
    

    注意

    如果存在增量备份,除最后一个增量备份以外,其他备份文件的 --prepare 都需要加上 --apply-log-only 参数。

  4. 修改数据文件属性。

    chown -R mysql:mysql /home/mysql/data
    
  5. 启动 MySQL。

    mysqld --defaults-file=/home/mysql/data/my.cnf --user=mysql --datadir=/home/mysql/data &
    

    说明

    my.cnf 为自建数据库的配置文件。

  6. 登录数据库。
    使用在源数据库实例设置的账号的密码进行登录。

    mysql -u<源 RDS 实例账号> -p<对应密码>
    

常见问题

  • 如何使用 root 用户进行登录?
    先关闭 mysqld,然后加上 --skip-grant-tables 参数重新启动 mysqld 以跳过鉴权,在该模式下修改 root 用户密码。修改后,重新启动 mysqld,即可使用 root 用户身份登录。