恢复下载后的备份数据

您可以参考本文将下载的备份数据恢复到数据库实例中。

前提条件

  • 已下载备份数据。更多详情,请参见手动下载备份集配置自动下载备份集

  • 在待恢复的服务器上部署对应的数据库服务。例如在恢复MySQL数据库前,需要在服务器上安装好对应版本的MySQL服务。

  • 备份目标存储类型仅支持DBS内置存储,不支持用户OSS存储。

恢复物理备份的下载数据

下载后的备份数据说明

  • MySQL数据为Xtrabackup产生的数据格式,并进行压缩。

  • SQL Server数据为其原生备份命令产生的数据格式,并进行压缩。

MySQL物理备份下载数据的示例如下。物理备份下载数据

操作步骤

  1. 下载完成后,您需要对下载的文件进行解压操作,默认情况下,文件被压缩在<下载任务ID>.tar.gz文件中。

    命令行方式的解压命令如下:

    1. 执行gzip -d <下载任务ID>.tar.gz命令,获得<下载任务ID>.tar文件。

    2. 通过file <下载任务ID>.tar命令查看gzip命令执行后的文件格式:

      • 如果文件格式为POSIX tar archive,则执行tar xvf <下载任务ID>.tar命令,获得<下载任务ID>文件。

      • 如果文件格式为Zip archive data, at least v2.0 to extract,则执行unzip <下载任务ID>.tar命令,获得<下载任务ID>文件。

  2. 启动数据库服务。

    例如MySQL数据库,需执行如下操作。

    1. 将my.cnf(数据库配置文件)中的datadir参数修改为当前已恢复的数据目录。

    2. 执行启动数据库命令,例如在Linux操作系统中,可以通过如下命令启动。

      service mysqld start

恢复逻辑备份的下载数据

下载后的备份数据说明

包含数据库的建表语句(DDL)和SQL数据。

MySQL逻辑备份下载数据的目录结构与示例文件如下:

逻辑备份下载的目录结构

建表语句示例

CREATE TABLE `rds_db`.`orders` (
`order_id`  bigint(20)     COMMENT ''    ,
`product_name`  varchar(32)  CHARSET `utf8` COLLATE `utf8_general_ci`    COMMENT ''    ,
`price`  double     COMMENT ''    ,
`total_amount`  double     COMMENT ''    ,
`created_date`  date     COMMENT ''
) engine=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=`utf8` DEFAULT COLLATE `utf8_general_ci` comment = '' ;
CREATE TABLE `rds_db`.`rds_table` (
`id`  int(11)     COMMENT ''    ,
`price`  decimal(10,2)     COMMENT ''    ,
`trx_time`  timestamp   on update CURRENT_TIMESTAMP  COMMENT ''   NOT NULL   DEFAULT CURRENT_TIMESTAMP
) engine=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=`utf8` DEFAULT COLLATE `utf8_general_ci` comment = '' ;

SQL数据

gmt_create,id
"2020-08-06 12:00:00","1"
"2020-08-06 12:00:01","2"
"2020-08-06 12:00:02","3"
"2020-08-06 12:00:03","4"
"2020-08-06 12:00:04","5"
"2020-08-06 12:00:05","6"
"2020-08-06 12:00:06","7"
"2014-09-06 15:56:07","8"

操作步骤

  1. 下载完成后,您需要对下载的文件进行解压操作,默认情况下,文件被压缩在<下载任务ID>.tar.gz文件中。

    说明

    以下命令仅适用于Linux操作系统。

    命令行方式的解压命令如下:

    mkdir download && tar -zvxf 1jewk54******.tar.gz -C ./download
  2. 根据建表语句恢复表结构,再导入SQL数据。

    例如MySQL数据库,您可以通过import.py脚本恢复全量备份数据,该方案需要您的服务器提前安装Python 3,执行命令如下。

    python import.py ./download/ <restore_db_host> <restore_db_port> <restore_db_user> <restore_db_password>

    示例如下:

    python import.py ./download/ 127.0.0.1 3306 root password123

    参数

    说明

    ./download/

    下载备份数据文件所在的文件夹路径。

    restore_db_host

    待恢复数据的目标数据库的IP地址。

    restore_db_port

    待恢复数据的目标数据库的端口号。

    restore_db_user

    目标数据库账号。

    restore_db_password

    目标数据库密码。

常见问题

Q:下载的数据恢复到本地MySQL数据库时,执行出现报错ERROR 1148 (42000): The used command is not allowed with this MySQL version

A:在MySQL上执行查询脚本show variables like 'local_infile';。如果结果是OFF,执行set global local_infile = 1;语句开启文件导。上述操作完成后,再次执行导入脚本即可成功。