pg_easy_replicate:实现PostgreSQL最短停机时间的停机复制


轻松设置逻辑复制并切换到新数据库,停机时间最短

可在五分钟范围内使用标准复制在两台“主”服务器之间切换,完成了最短停机时间的主要版本升级。

pg_easy_replicate是一个 CLI 协调器工具,可简化在两个 PostgreSQL 数据库之间设置逻辑复制的过程。

pg_easy_replicate还支持切换。
切换是通过将用户置于只读模式的源数据库上进行的,这样它就不再接受任何写入并等待刷新滞后为 0。

在源(主数据库)完全复制后,pg_easy_replicate将其置于只读模式并通过逻辑复制将所有数据刷新到新的目标数据库。
这确保了应用程序的零数据丢失和最短停机时间。

在切换完成后,由用户来启动你的应用容器的重启或故障转移DNS(更多关于这些的策略在下面),这样你的应用就不会向旧的/源数据库发送任何读/写请求。
​​​​​​​
此方法可用于在两个 PostgreSQL 数据库之间执行最短停机时间(最多 <1 分钟,视情况而定)主要版本升级、使用蓝/绿数据库设置进行负载测试以及其他类似用例。

要求

  • PostgreSQL 10 及更高版本
  • Ruby 2.7 及更高版本
  • 数据库用户应具有以下权限SUPERUSER
  • 两个数据库应该有相同的模式

安装
将此行添加到应用程序的 Gemfile 中:

gem "pg_easy_replicate"
然后执行:

$ bundle install
或者自己安装:

$ gem install pg_easy_replicate
这也将相应地包括所有依赖项。确保满足以下要求。

或者通过 Docker:

docker pull shayonj/pg_easy_replicate:latest

其他:
还有一个新的(开源)Postgres 扩展,声称提供基于逻辑复制、BDR 和 pglogic 的多主复制
https://pgedge.github.io/spock/
也可用于在线升级。
但是它仅支持 Postgres 15 和(尚未发布)16