亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

淺談PostgreSQL的兩種復制槽

2024-11-12 09:25:11
147
0

PostgreSQL復制槽分兩種,物理復制槽(physical replication slot)和邏輯復制槽(logic replication slot),邏輯復制槽在PG10加入。

1.物理復制槽

        物理復制槽是 PostgreSQL 中用于主備同步的一種組件。物理復制涉及將主服務器上的二進制更改流式傳輸到一個或多個從服務器。這種復制是在較低級別進行的,復制的是實際的數據文件更改,而不是單獨的數據記錄或事務。物理復制槽的主要作用是確保主服務器上的 WAL 日志(預寫式日志)不會在從服務器確認接收之前被刪除,從而解決了備庫掉線或主庫重啟導致的數據一致性問題。

        物理復制槽不能跨版本傳輸數據,因為物理復制涉及到底層數據文件的直接字節級復制。每個 PostgreSQL 版本可能會有不同的數據文件格式、內部索引結構、系統表的布局以及其他底層存儲細節。這些差異意味著即使是小的版本升級也可能引入不兼容的更改,從而使得不同版本之間的直接數據文件復制變得不可行。

1.1創建物理復制槽

        修改postgresql.conf,加入wal_level = replica或logical,重啟數據庫。使用一個至少有replication權限的賬號,執行SELECT pg_create_physical_replication_slot('my_replication_slot';創建物理復制槽。
        執行SELECT * FROM pg_replication_slots;可以看到已經創建的復制槽的信息。

1.2使用物理復制槽

        修改備庫的postgresql.conf,加入:

primary_conninfo = 'host=master_host port=5432 user=replication_user password=replication_pass sslmode=prefer sslcompression=1 krbsrvname=postgres'
primary_slot_name = 'my_replication_slot'

standby_mode=on

        重啟數據庫使配置生效。此時備庫會執行所有在主庫上進行的操作,包括創建和更改表、索引、視圖等。

2.邏輯復制槽

        物理復制槽雖然很好地解決了主備同步的問題,實現了數據庫備份。但是,當主備庫的數據庫版本不一致、只需要同步部分表,或是需要在不同的數據庫系統間進行同步時,物理復制槽就無能為力。

        與物理復制槽不同,邏輯復制槽允許用戶復制表級的更改,而不是整個數據庫的物理更改。這使得邏輯復制可以在不同版本的 PostgreSQL 數據庫之間,甚至在不同的數據庫系統之間進行數據復制。

        邏輯復制槽通過解碼 WAL 記錄來工作,它將 WAL 記錄轉換為SQL語句,然后輸出到Subscriber。因此它不直接復制底層數據庫,比起物理復制槽更慢,性能更差。

        2.1創建邏輯復制槽

        執行SELECT * FROM pg_create_logical_replication_slot('my_slot', 'pgoutput');第二個參數是使用的WAL解碼插件,用于解碼WAL文件并轉換成特定格式,pgoutput是用于邏輯復制的官方輸出插件,支持更復雜的復制需求,如表級復制控制。

        2.2創建Publisher

        執行CREATE PUBLICATION publication_name FOR TABLE table_name ,創建Publisher。在這里可以指定需要發布的表,可以指定多個表,用','隔開。發布整個庫則使用ALL TABLE。ALTER PUBLICATION  publication_name ADD table_name可增加Publisher發布的表。

        2.3創建訂閱者

        在備庫,執行CREATE SUBSCRIPTION subseription_name CONNECTION 'dbname=mydb host=your_host user=your_user password=your_password' PUBLICATION publication_name完成對publisher發布的表的同步。

0條評論
0 / 1000
李****恒
2文章數
0粉絲數
李****恒
2 文章 | 0 粉絲
李****恒
2文章數
0粉絲數
李****恒
2 文章 | 0 粉絲
原創

淺談PostgreSQL的兩種復制槽

2024-11-12 09:25:11
147
0

PostgreSQL復制槽分兩種,物理復制槽(physical replication slot)和邏輯復制槽(logic replication slot),邏輯復制槽在PG10加入。

1.物理復制槽

        物理復制槽是 PostgreSQL 中用于主備同步的一種組件。物理復制涉及將主服務器上的二進制更改流式傳輸到一個或多個從服務器。這種復制是在較低級別進行的,復制的是實際的數據文件更改,而不是單獨的數據記錄或事務。物理復制槽的主要作用是確保主服務器上的 WAL 日志(預寫式日志)不會在從服務器確認接收之前被刪除,從而解決了備庫掉線或主庫重啟導致的數據一致性問題。

        物理復制槽不能跨版本傳輸數據,因為物理復制涉及到底層數據文件的直接字節級復制。每個 PostgreSQL 版本可能會有不同的數據文件格式、內部索引結構、系統表的布局以及其他底層存儲細節。這些差異意味著即使是小的版本升級也可能引入不兼容的更改,從而使得不同版本之間的直接數據文件復制變得不可行。

1.1創建物理復制槽

        修改postgresql.conf,加入wal_level = replica或logical,重啟數據庫。使用一個至少有replication權限的賬號,執行SELECT pg_create_physical_replication_slot('my_replication_slot';創建物理復制槽。
        執行SELECT * FROM pg_replication_slots;可以看到已經創建的復制槽的信息。

1.2使用物理復制槽

        修改備庫的postgresql.conf,加入:

primary_conninfo = 'host=master_host port=5432 user=replication_user password=replication_pass sslmode=prefer sslcompression=1 krbsrvname=postgres'
primary_slot_name = 'my_replication_slot'

standby_mode=on

        重啟數據庫使配置生效。此時備庫會執行所有在主庫上進行的操作,包括創建和更改表、索引、視圖等。

2.邏輯復制槽

        物理復制槽雖然很好地解決了主備同步的問題,實現了數據庫備份。但是,當主備庫的數據庫版本不一致、只需要同步部分表,或是需要在不同的數據庫系統間進行同步時,物理復制槽就無能為力。

        與物理復制槽不同,邏輯復制槽允許用戶復制表級的更改,而不是整個數據庫的物理更改。這使得邏輯復制可以在不同版本的 PostgreSQL 數據庫之間,甚至在不同的數據庫系統之間進行數據復制。

        邏輯復制槽通過解碼 WAL 記錄來工作,它將 WAL 記錄轉換為SQL語句,然后輸出到Subscriber。因此它不直接復制底層數據庫,比起物理復制槽更慢,性能更差。

        2.1創建邏輯復制槽

        執行SELECT * FROM pg_create_logical_replication_slot('my_slot', 'pgoutput');第二個參數是使用的WAL解碼插件,用于解碼WAL文件并轉換成特定格式,pgoutput是用于邏輯復制的官方輸出插件,支持更復雜的復制需求,如表級復制控制。

        2.2創建Publisher

        執行CREATE PUBLICATION publication_name FOR TABLE table_name ,創建Publisher。在這里可以指定需要發布的表,可以指定多個表,用','隔開。發布整個庫則使用ALL TABLE。ALTER PUBLICATION  publication_name ADD table_name可增加Publisher發布的表。

        2.3創建訂閱者

        在備庫,執行CREATE SUBSCRIPTION subseription_name CONNECTION 'dbname=mydb host=your_host user=your_user password=your_password' PUBLICATION publication_name完成對publisher發布的表的同步。

文章來自個人專欄
文章 | 訂閱
0條評論
0 / 1000
請輸入你的評論
1
1