14.1.升级 BDR 0.9.x 为 1.0
升级 BDR 可能没有充分的停机维护窗口做 0.9.x 为 1.0。每个节点将需要重新启动,但这可以通过滚动重新启动维护系统的可用性。正常的负载可能会继续运行在节点上,但应避免 DDL,因为全球的 DDL 锁,可能无法获取一个或更多的节点是遥不可及。
BDR-1.0.0 不能加入 BDR 0.9.3 组,所以不可能通过添加新的节点和退休旧执行升级。 试图将BDR01.0.0 添加到0.9.3集群终将失败。
BDR 无法降级从 1.0.0 到 0.9.x 释放因为 BDR 扩展目录已经改变了。
之前或在升级到 1.0.0 BDR 插件的同时,一定要升级到至少 9.4.9 bdr pg。 如果您已经从软件包安装 BDR,这将会自动完成。如果你从源代码安装,请务必安装 (至少和一样新标记 bdr-pg/REL9_4_9) 的最新 bdr-pg/REL9_4_STABLE 分支。下载并安装最新 bdr pg tar 文件会没事。
要从0.9.x 升级到1.0.0必须更新扩展,数据库服务器重新启动。你可能在下一个节点上启动之前完成上一个节点的升级步骤或立刻在所有节点上都执行的步骤并行。
- 如果该节点尚未运行至少 BDR-postgres 9.4.9,安装 BDR-postgres 9.4.9
- 通过关闭PostgreSQL来停止节点
- 从软件包或源代码安装 BDR 1.0 扩展
- 通过再次启动PostgreSQL数据库, 启动节点
在启动备份后, 执行ALTER EXTENSION bdr 不是必要改变扩展 bdr。BDR 扩展自我升级在启动过程中,
当检测到新的版本。
必须重启 PostgreSQL 数据库;如果您尝试升级无需重新启动 BDR 无法工作,
因为在 shared_preload_libraries 中加载 BDR 版本扩展将不匹配的扩展架构和目录。
您可以从源代码或包,就像初始安装安装 bdr 修补 PostgreSQL 和 BDR 扩展的更新。你应该使用相同的方法你用于初始安装;不要试图从源代码到包或反之亦然切换。
没有升级后的步骤是必需的。
在每个节点上执行如下命令,检查是否成功完成了升级︰
SELECT bdr.bdr_version(), (SELECT extversion FROM pg_extension WHERE extname = 'bdr') AS extversion
并确认两个显示出来的版本号和1.0.0一致。类似输出如下:
bdr_testdb=# SELECT bdr.bdr_version(), (SELECT extversion FROM pg_extension WHERE extname = 'bdr') AS extversion;
bdr_version | extversion
--------------------------+------------
1.0.0-2016-08-01-3b785b4 | 1.0.0.0
(1 row)