RDS PostgreSQL CSV或SQL文件恢复到自建数据库

您可以使用RDS PostgreSQL的备份下载功能,将云盘实例的快照备份数据转换成CSV文件或SQL文件导出,然后通过该文件将数据恢复到自建PostgreSQL数据库中。

操作步骤

本示例以RDS PostgreSQL云盘实例的SQL文件恢复至ECS实例(CentOS 7.8 64位Linux系统)的自建PostgreSQL数据库为例,以下命令和脚本不支持在非Linux环境下使用,否则将会报错。

  1. 登录RDS控制台,使用下载备份功能将云盘实例的备份文件转换成CSV文件或SQL文件,并下载到本地或ECS实例中。

  2. 在本地或ECS实例中解压下载的备份文件,命令如下:

    tar -zxvf <压缩包文件名>.tar.gz -C <解压缩后的文件位置>

    本示例将名为backup.tar.gz的压缩文件解压缩到指定目录/home/ecs-test-user中,具体请以实际文件名和目录为准。

    tar -zxvf backup.tar.gz -C /home/ecs-test-user
  3. (可选)查看备份文件是否已解压到指定位置(/home/ecs-test-user)。

    ls -al /home/ecs-test-user
  4. PostgreSQL Python脚本文件下载至本地或ECS实例中。

  5. 对Python脚本文件restore_from_downloads.py进行授权,命令如下:

    chmod +x ./restore_from_downloads.py
  6. 将CSV文件或SQL文件恢复至自建数据库,恢复命令如下:

    python3 restore_from_downloads.py <CSV文件或SQL文件目录路径> <数据库主机> <数据库端口> <数据库账号> <数据库密码>

    示例如下:

    python3 restore_from_downloads.py /home/ecs-test-user 127.0.0.1 5432 postgres "#Tes********"
    重要
    • 请确保自建数据库中没有和待导入的数据库同名的库,否则将导入失败。

    • 如果数据库账号名或密码中包含了特殊字符(例如:#、空格等),在命令行传入参数时需要使用英文双引号("")将密码括起来。例如,如果数据库密码是#1234,则需要在命令行中传入"#1234"

    • 如果您的系统没有安装Python 3.x,恢复可能会出错。您可通过python3 --version命令查看Python版本。

相关文档