有几种方法来评估当你需要升级PostgreSQL。在这篇文章中,我们看看升级postgres数据库使用的选项pg_dumpall。这个工具也可以用来支持PostgreSQL集群,那么它是一个有效的选择集群升级。我们认为这种方法的优点和缺点,并向您展示所需的步骤来实现升级。
这是我们的第一次PostgreSQL新版本升级或迁移遗留PostgreSQL系列中,我们将探索不同的路径来完成postgres升级或迁移。本系列将达到高潮一个实际的网络研讨会4月17日播出(你可以注册在这里)。
我们开始这段旅程,提供你最直截了当的方式进行一个PostgreSQL升级或迁移:通过重建从逻辑备份整个数据库。
定义范围
让我们定义是什么意思升级或迁移使用pg_dumpall PostgreSQL。
如果您需要执行一个PostgreSQL升级在同一个数据库服务器,我们称之为一个就地升级或升级。而一个过程涉及到PostgreSQL服务器从一台服务器迁移到另一个服务器,加上从旧版本升级(假设9.3)新版本PostgreSQL 11.2 (PG),可以被认为是移民。
有两种方法可以实现这个要求使用逻辑备份:
- 使用pg_dumpall
- 使用pg_dumpall + pg_dump + pg_restore
我们将讨论第一个选项(pg_dumpall),并将在下一篇文章讨论第二个选项。
pg_dumpall
pg_dumpall可用于获得一个文本格式转储整个数据库集群,包括集群中的所有数据库。这是唯一的方法,可以用来备份全局变量如PostgreSQL的用户和角色。
当然,优点和缺点在采用这种方法使用pg_dumpall PostgreSQL通过重建数据库集群升级。
升级一个PostgreSQL服务器使用pg_dumpall的优点:
- 适用于一个小的数据库集群。
- 可以使用几个命令完成升级。
- 删除从表的所有表和收缩膨胀他们的绝对大小。
缺点使用pg_dumpall升级PostgreSQL服务器:
- 不是最好的选择,数据库规模是巨大的,因为它可能涉及更多的停机时间。(几个GB或TB)。
- 不能使用并行模式。备份/恢复可以使用只是一个过程。
- 需要双磁盘上的空间,因为它涉及到临时创建的副本数据库集群的就地升级。
让我们看看使用pg_dumpall执行升级所涉及的步骤:
- 安装新的PostgreSQL二进制文件在目标服务器(可以是相同的一个源数据库服务器如果它是一个就地升级)。
12345- - - 为 一个 RedHat 家庭 操作系统# yum安装postgresql11 *或- - - 在 一个 Ubuntu / Debian 操作系统# apt安装postgresql11 - 关闭所有的数据写入到数据库服务器,以避免数据丢失/升级后新老版本之间的不匹配。
- 如果你正在做一个升级在同一台服务器上,创建一个集群使用新的二进制文件在新数据目录并开始使用一个港口以外的来源。例如,如果旧版本PostgreSQL在端口5432上运行,在端口5433上启动新的集群。如果你升级和数据库迁移到另一个服务器,创建一个新的集群使用新的二进制文件在目标服务器,集群可能不需要运行在一个不同的端口以外的违约,除非那是你的偏好。
1234美元 / usr / pgsql - - - - - - 11 / 本 / initdb - - - - - - D new_data _目录美元 cd new_data _目录美元 回声 ”港口 = 5433年” > > postgresql 翻 . conf美元 / usr / pgsql - - - - - - 11 / 本 / pg_ctl - - - - - - D new_data_directory 开始 - 你可能会有一些扩展安装在旧版本PostgreSQL集群。得到所有的列表中创建的扩展源数据库服务器并安装新版本。你可以排除这些默认的contrib模块。看到扩展的列表创建并安装在您的数据库服务器,您可以运行下面的命令。
1美元 psql - - - - - - d dbname - - - - - - c “\ dx”
请一定要检查所有的数据库集群的扩展你看到一个数据库可能不匹配的另一个数据库中创建列表。 - 准备一个postgresql。c在f文件for the new cluster. Carefully prepare this by looking at the existing configuration file of the older version postgres server.
- 使用一个集群pg_dumpall采取备份和恢复新的集群。
12345- - - 命令 来 转储 的 整个 集群 来 一个 文件 。美元 / usr / pgsql - - - - - - 11 / 本 / pg_dumpall > / tmp / dumpall . sql- - - 命令 来 恢复 的 转储 文件 来 的 新 集群 ( 假设 它 是 运行 在 港口 5433年 的 的 相同 服务器 ) 。美元 / usr / pgsql - - - - - - 11 / 本 / psql - - - - - - p 5433年 - - - - - - f / tmp / dumpall . sql
请注意,我使用了新的pg_dumpall从二进制文件备份。
另一个更容易的方法是使用管道来避免参与创建一个转储文件的时间。只是添加一个主机名,如果你执行升级和迁移。
123美元 pg_dumpall - - - - - - p 5432年 | psql - - - - - - p 5433年或美元 pg_dumpall - - - - - - p 5432年 - - - - - - h source_server | psql - - - - - - p 5433年 - - - - - - h target_server - 运行分析新服务器上的每个数据库更新统计数据。
- 重新启动数据库服务器使用相同的端口作为源。
我们在本系列的下一文章提供了一个类似的方式升级PostgreSQL服务器同时提供一些灵活性,继续像上面描述的变化。请继续关注!





