PostgreSQL數據庫邏輯復制實踐


修改主庫以及從庫的postgresql.conf

wal_level = logical

max_wal_senders = 10

max_replication_slots = 8

參數簡要說明如下

  • wal_level:設置成logical才支持邏輯復制

  • max_wal_senders:由於每個訂閱節點和流復制備庫在主庫上都會占用主庫上一個WAL發送進程,因此此參數設置值需大於max_replication_slots參數值加上物理備庫數量

  • max_replication_slots:設置值需大於訂閱節點的數量

邏輯主庫創建庫和表,邏輯從庫創建庫和表

主庫和從庫庫名可以不一致,但是庫中需要同步的表必須表名和表結構一致

createdb sourcedb

create table logical_tb(id int primary key,name varchar(20));

創建邏輯復制賬號並授權

邏輯復制用戶需要REPLICATION權限即可,可以不需要SUPERUSER權限,之后需要在主庫上將需要同步的表賦權給logical_repl用戶,使logical_repl賬號具有對這些表的讀權限,這樣從庫可以通過這個賬號進行連接訪問

CREATE USER logical_repl REPLICATION LOGIN CONNECTION LIMIT 8 ENCRYPTED PASSWORD 'logical_repl';

GRANT USAGE ON SCHEMA public TO logical_repl;

GRANT SELECT ON logical_tb1 TO logical_repl;

主庫創建發布

注意:進入當前庫下執行語句

  • 為庫中所有的表創建發布
CREATE PUBLICATION puball FOR ALL TABLES
  • 指定庫中某個表創建發布
CREATE PUBLICATION pub FOR TABLE logical_tb;

從庫創建訂閱

CREATE SUBSCRIPTION suballtable
CONNECTION 'host=10.10.64.30 port=5434 user=logical_repl password=logical_repl dbname=testall'
PUBLICATION puball;
ALTER SUBSCRIPTION sub REFRESH PUBLICATION


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM