pg_dump/pg_restore:不同的 PostgreSQL 版本,另一个数据库名称,另一个表空间

saa*_*lin 7 postgresql upgrade pg-dump

我要将数据库从旧服务器移至新服务器。

  • 旧的运行 PostgreSQL 9.1,新的运行 9.3。
  • 我想更改数据库名称。
  • 我希望新数据库位于专用表空间中(旧数据库默认) - 包括索引等。

不幸的是,我没有机会进行实验(并且旧服务器的 HDD 开始出现故障),因此我询问了适用于我的情况的 pg_dump/pg_restore 选项。

saa*_*lin 7

我已顺利完成迁移。

创建转储很容易:

sudo -u postgres pg_dump --verbose --no-tablespaces --format=directory --file=/backup/path old_database_name
Run Code Online (Sandbox Code Playgroud)

在新实例上恢复:首先,创建一个新表空间,并在该表空间中创建一个目标数据库。然后像这样导入你的转储:

sudo -u postgres pg_restore --verbose --dbname=new_database_name --jobs=8 /backup/path/
Run Code Online (Sandbox Code Playgroud)

您可以根据您的硬件(处理器内核、I/O 子系统性能等)调整并发作业的数量。

现在,我们将所有数据放在另一个数据库中,名称不同,位于专用表空间中,位于运行较新 PostgreSQL 的新服务器上。