一、准备

  1.安装mysql5.7 注意:需要跟rds云数据库版本对应

  2.安装Percona XtraBackup工具,将解压后的备份文件恢复到自建数据库的数据目录中

  3.下载需要还原的物理备份文件 我的是.qp类型

    wget -c 'https://****.bak.rds.aliyuncs.com/****_xb.qp?****' -O ins24382148_data_20240117022004_xb.qp  

    路径前后需要用'',否则会路径解析错误

   4.创建备份解压路径(/data/mysqldatabak),用于存放解压后的备份文件。

    sudo mkdir /data/mysqldatabak

  5.创建自建数据库mysql 数据存储文件夹

    sudo mkdir /data/mysql

二、解压文件

  1.解压

    qpress -do ins24382148_data_20240117022004_xb.qp | xbstream -x -v -C /var/mysql_bkdata/

三、恢复数据

  1.innobackupex --defaults-file=/data/mysqldatabak/backup-my.cnf --apply-log /data/mysqldatabak/

    --defaults-file  通过传入配置文件设置MySQL默认选项。RDS MySQL备份文件中,提供名为backup-my.cnf的配置文件,该文件位于备份解压目录,即/data/mysqldatabak/。

    --apply-log XtraBackup工具的准备命令。该命令后配置存放备份文件的目录,即备份解压目录/data/mysqldatabak/。

出现 completed OK 即为成功

  2.修改自建数据库配置文件my.cnf

    找到自己数据库的配置文件修改datadir为自己定义的数据库data文件夹 我的是/data/mysql

  3.在my.cnf中添加如下内容

    innodb_undo_tablespaces=0
    innodb_undo_directory=/data/mysql

    **注意 参数innodb_undo_tablespaces的取值需要与/data/mysqldatabak/backup-my.cnf中的取值相同,您可以使用cat /data/mysqldatabak/backup-my.cnf | grep innodb_undo_tablespaces查询。

  4.恢复数据

  sudo innobackupex --defaults-file=/etc/my.cnf --copy-back /data/mysqldatabak/

--defaults-file

自建数据库的my.cnf文件,根据此配置文件中设置的数据目录(datadir),获取恢复数据的目标路径。

--copy-back

XtraBackup工具的恢复命令。

该命令后配置存放备份文件的目录,即备份解压目录/data/mysqldatabak/,XtraBackup工具将此目录数据恢复到自建数据库的数据目录中。

  ** 如果报错Original data directory /data/mysql is not empty!  说明要还原的文件夹不为空,需要删除该文件夹下的所有内容,在进行执行

  5.启动数据库

    1.首先要为新的数据库文件夹授权 

      sudo chown -R mysql:mysql /data/mysql

    2.编辑配置文件

      lower_case_table_names=1

    3. 启动mysql即可