HGDB企業版V6邏輯複製搭建

瀚高PG實驗室發表於2021-10-20
目錄
環境
文件用途
詳細資訊
 
 
環境
系統平臺:  Linux x86-64 Red Hat Enterprise Linux 7
版本:  6.0
 
文件用途

本文只要用於描述HGDB企業版V6邏輯複製在redhat7環境下的搭建過程。

 
詳細資訊

一、環境介紹

  資料庫版本:HGDB企業版V6.0.1

作業系統版本:Redhat7.x

伺服器IP地址:192.168.230.51(釋出端)

              192.168.230.52(訂閱端)

 

二、邏輯複製搭建

1、釋出端修改資料庫執行引數

highgo=# alter system set listen_addresses='*';
highgo=# alter system set wal_level='logical';
highgo=# alter system set max_replication_slots=30;
highgo=# alter system set max_wal_senders=40;
highgo=# alter system set max_logical_replication_workers=40;
highgo=# alter system set max_sync_workers_per_subscription=10;
highgo=# alter user postgres with password'postgres';

2、釋出端修改pg_hba.conf檔案,增加以下內容

host   all              all    0.0.0.0/0    md5
host replication      all    0.0.0.0/0   md5
3、釋出端重啟資料庫,使修改後的配置引數生效
pg_ctl start
4、釋出端建立用於邏輯複製同步的表,並插入測試資料
highgo=# create table test1(id int primary key,txt text);
highgo=# insert into  test1 values(1,'a');
highgo=# insert into  test1 values(2,'b');
highgo=# create table test2(id int primary key,txt text);
highgo=# insert into  test2 values(1,'a');
highgo=# insert into  test2 values(2,'b');
5、釋出節點建立邏輯複製使用者
highgo=# create user logicalrep replication login encrypted password 'Logical ';
6、將釋出表的相關許可權授權給釋出使用者。
highgo=# grant usage on schema public to logicalrep;
highgo=# grant select on all tables in schema public to logicalrep;
highgo=# alter default privileges in schema public grant select on tables to logicalrep ;

7、釋出節點建立釋出

highgo=# create publication pub1 for table public.test1,public.test2;
highgo=# select * from pg_publication;    #查詢釋出詳情
8、訂閱端修改資料庫執行引數
highgo=# alter system set listen_addresses='*';
highgo=# alter system set max_replication_slots=30;
highgo=# alter system set max_wal_senders=40;
highgo=# alter system set max_logical_replication_workers=40;
highgo=# alter system set max_sync_workers_per_subscription=10;

9、訂閱端匯出匯入釋出表的表結構

pg_dump -h 192.168.80.251 -d postgres -U postgres -s -t test1 -t test2 -f createtable.sql

psql -f createtable.sql

11、訂閱端建立訂閱(必須為超級使用者建立訂閱)
highgo=# create subscription sub1 connection 'host=192.168.230.51 port=5866 dbname=highgo user=logicalrep password=Logical ' publication pub1;

12、訂閱端查詢同步狀態

highgo=# select * from test1;
 id | txt
----+-----
  1 | a
  2 | b
(2 rows)
highgo=# select * from test2;
 id | txt
----+-----
  1 | a
  2 | b
(2 rows)

13、插入資料測試

##釋出端新插入資料

highgo=# insert into test1 values(3,'c');
INSERT 0 1
highgo=# select * from test1;
 id | txt
----+-----
  1 | a
  2 | b
  3 | c
(3 rows)

 

##訂閱端查詢資料是否同步

highgo=# select * from test1;  
 id | txt
----+-----
  1 | a
  2 | b
  3 | c
(3 rows)

通過查詢同步表內的資料可驗證邏輯複製搭建完成。

 

三、邏輯複製相關查詢

1、釋出端

select * from pg_publication;        ##查詢資料庫內釋出資訊
select * from pg_stat_replication;    ##查詢流複製相關資訊
select * from pg_publication_tables;  ##查詢已經發布的表的資訊

2、訂閱端

select * from pg_subscription;       ##查詢訂閱資訊
select * from pg_subscription_rel;   ##查詢每張表的同步狀態
select * from pg_replication_origin_status;

 

四、邏輯複製注意事項

不支援DDL複製(ALTER TABLE/CREATE TABLE)

不支援TEMPRORARY表和UNLOGGED表複製

不支援Sequences複製( serial/bigserial/identity)

不支援TRUNCATE操作複製
不支援大物件複製

不支援檢視、物化檢視、外部表複製被複制的表上最好有主鍵約束;如果沒有,必須執行:ALTER TABLE reptest REPLICA IDENTITY FULL;

注:訂閱端的複製表是可修改的,複製表一旦修改,釋出者和訂閱者會資料不一致,進而打破複製。

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69994931/viewspace-2838309/,如需轉載,請註明出處,否則將追究法律責任。

相關文章