PostgreSQL 数据库迁移笔记

前几天在工作中遇到一个需求,需要将远程服务器上的 PostgreSQL 数据库迁移到本地环境用于测试开发。由于平时主要接触的是基本的 CRUD 操作,对数据库的导出/导入操作并不熟悉,导致在迁移过程中遇到了不少困难。好在经过反复尝试和排查,最终成功完成了数据迁移任务。现将这个过程记录下来,既作为个人技术积累,也希望能为遇到类似需求的同行提供参考。

1. 在远程服务器上导出 postgres 数据库

在远程服务器上,你需要使用 pg_dump 工具将 postgres 数据库导出为一个 SQL 文件。

运行以下命令来导出数据库:

pg_dump -U <远程用户> -h <远程服务器IP或主机名> -d postgres -F c -f /path/to/save/postgres_backup.dump

解释:

  • <远程用户> 是远程数据库的用户,例如 postgres
  • <远程服务器IP或主机名> 是远程服务器的 IP 地址或主机名。
  • -d postgres 指定要导出的数据库。
  • -F c 表示导出为自定义格式(你也可以选择 -F t 进行 tar 压缩)。
  • -f 指定输出文件路径,如 /path/to/save/postgres_backup.dump

你也可以使用文本格式的 SQL 导出,命令如下:

pg_dump -U <远程用户> -h <远程服务器IP或主机名> -d postgres > /path/to/save/postgres_backup.sql
pg_dump -U postgres -d postgres > /path/to/save/postgres_backup.sql

2. 将备份文件复制到本地电脑

如果你使用的是远程服务器,下一步需要将导出的备份文件传输到你本地的电脑。可以通过 scp 进行传输。

例如:

scp <远程用户>@<远程服务器IP或主机名>:/path/to/save/postgres_backup.dump /local/path/postgres_backup.dump

或者使用 rsync

rsync -avz <远程用户>@<远程服务器IP或主机名>:/path/to/save/postgres_backup.dump /local/path/postgres_backup.dump

3. 在本地电脑上恢复 postgres 数据库

确保你的本地 PostgreSQL 服务已经启动,并且你已经创建了一个名为 postgres 的数据库。如果还没有创建,你可以通过以下命令创建数据库:

createdb -U postgres postgres

接着使用 pg_restorepsql 将备份恢复到本地数据库。

如果使用 pg_dump 的自定义格式 (dump 文件):

pg_restore -U postgres -d postgres /local/path/postgres_backup.dump

如果使用的是 SQL 文件:

psql -U postgres -d postgres -f /local/path/postgres_backup.sql

4. 验证导入是否成功

最后,连接到 postgres 数据库并检查数据是否成功导入:

psql -U postgres -d postgres

你可以查询一些表或运行 \dt 来列出数据库中的表,确认导入成功。

Keywords

Postgres 数据库 迁移