功能概述

PostgreSQL 可通过离线导出数据,再通过 PostgreSQL 支持的方式导入数据,实现 PostgreSQL 的数据迁移。

注意

数据迁移过程,请暂停数据写操作。为避免数据丢失,建议在业务低峰期执行。

操作步骤

步骤一:数据导出

在源数据库使用 pg_dump 将数据导出到 xxx.sql 文件。详细操作如下。

  1. 连接 PostgreSQL 数据库。详情可参考如何连接 PostgreSQL 数据库

  2. 在客户端服务器终端,执行如下命令行。

    pg_dump -U <远端数据库账号> -h <远端数据库 IP> -t <表名> <数据库名> > <路径/文件名.sql>
    • 命令行参数说明

      选项 说明

      -U

      数据库用户账号名。

      -h

      数据库节点的 IP 或者双节点集群的 VIP。

      -t

      数据库名称。缺省时,为数据库用户账号名。

  3. 如导出远端数据库 IP 地址为 192.168.100.246,数据库名为 qingcloud,目标文件及路径为 /tmp/pgdatabk.sql,则导出该数据库全部数据的命令行示例如下。

    pg_dump -U qingcloud -h 192.168.100.246 qingcloud  > /tmp/pgdatabk.sql
    数据导出

步骤二:数据导入

用户可选择将上文导出的数据库文件导入目标数据库,或使用 pg_dumppsql 的读写管道能力,将数据直接从一个服务器转储数据库到另一个服务器。

详细操作分别说明如下。

  • 离线导入数据

    1. 在客户端服务器终端,执行以下命令行,创建数据库。

      createdb newdatabase;
    2. 通过 psql 命令,导入数据。

      psql -d <目标数据库名> -U <目标数据库账号> -h <目标数据库 IP > -f < <路径/文件名.sql>
      • 命令行参数说明

        选项 说明

        -d

        目标数据库名,这里为上一步创建的数据库 newdatabase

        -U

        数据库用户账号名。这里使用 root 账号。

        -h

        数据库节点的 IP 或者双节点集群的 VIP。

        -f

        待导入的数据库文件路径。

      • 命令行示例

        psql -d qingcloud -U root -h 192.168.100.6 -f /tmp/pgdatabk.sql
        pg_dataimport
  • 在线导入数据

    在客户端服务器终端,执行以下命令行。

    pg_dump -U <远端数据库账号> -h <远端数据库 IP> <远端数据库名> -w | psql -d <目标数据库名> -U <目标数据库账号> -h <目标数据库 IP > -W

    命令行示例

    pg_dump -U qingcloud -h 192.168.100.246 qingcloud -w | psql -d qingcloud -U root -h 192.168.100.6 -W
    数据导入

步骤三:数据检查

数据迁移完成后,可以使用 select 语句检查。

select * from t_user;
数据check