重建基于pglogical逻辑复制的从库
重建基于pglogical逻辑复制的从库
December 6, 2019
《Postgres 9.x 升级至 10.x》一文中提到了使用pglogical逻辑复制升级。基于这种方式的升级有个缺点,就是主库的DDL发生改变的话,那么从库的复制就会有影响,可能需要重建从库来解决。
重建从库的步骤与之前创建逻辑复制有点类似,但是由于之前已经做过一些操作,所以相比之下,少了一些步骤。
从库中删除数据库,再创建一个空的数据库
由于表结构的改变,原先的数据都不能用了,需要重新同步。创建新的空数据库是最快的方式
从库中导入最新的表结构
在 provider 上导出结构数据
sudo -iu postgres pg_dumpall --schema-only -f dump.sql
在 subscriber 上导入结构数据
sudo -iu postgres psql -f dump.sql
从库上创建pglogical扩展
mydb=# CREATE EXTENSION pglogical;
从库上创建逻辑复制节点
-- host 填的是subscriber的IP
mydb=# SELECT pglogical.create_node(node_name := 'subscriber', dsn := 'host=10.1.10.22 port=5432 dbname=mydb');
从库上创建逻辑复制订阅端
-- host 填的是provider的IP
mydb=# SELECT pglogical.create_subscription( subscription_name := 'subscriber', provider_dsn := 'host=10.1.10.6 port=5432 dbname=mydb');
在主库上检查复制状态
select * from pg_stat_replication;
最后更新于