背景

现有一套业务库,想再创建一个中间库,保证中间库和业务库数据实时同步。

解决方案

使用 PostgreSQL 数据库的 发布与订阅 功能。

  1. 环境准备:
    发布端: 172.18.12.155:5432/zrzy
    订阅端: 172.18.12.22:5432/zrzyzjk
  2. 两个数据库中都有djdyj这张表,表结构一致;
  3. 保证订阅端数据库的 wal_level 级别为 logical具体操作查看这篇文章);
  4. 在发布端创建发布(PUBLICATION):
# 创建名为 djdyj_publication 的发布
CREATE PUBLICATION djdyj_publication FOR TABLE djdyj;
  1. 在订阅端创建订阅(SUBSCRIPTION):
# 创建名为djdyj_subscription 的订阅
CREATE SUBSCRIPTION djdyj_subscription 
CONNECTION 'hostaddr=172.18.12.155 dbname=zrzy user=postgres password=postgres' 
PUBLICATION djdyj_publication;
  1. 在发布端修改djdyj表数据测试效果。
  2. PostgreSQL 数据库关于发布与订阅的一些常用SQL:
# 查询现有所有发布
select * from pg_catalog.pg_publication ;
# 查询现有所有订阅
SELECT * FROM pg_subscription;
# 查询当前wal_level级别
SHOW wal_level;
Logo

一站式 AI 云服务平台

更多推荐