国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Postgres邏輯復(fù)制構(gòu)建

IT那活兒 / 1558人閱讀
Postgres邏輯復(fù)制構(gòu)建

點擊上方“IT那活兒”公眾號,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了!!!

 

1

概  述

Postgresql流復(fù)制是物理復(fù)制技術(shù),跟Oracle ADG一樣,要求主備數(shù)據(jù)庫在數(shù)據(jù)塊級完全一樣,這樣就大大保證了數(shù)據(jù)同步的低延遲和數(shù)據(jù)一致性。但是在某些場景下 ,物理復(fù)制技術(shù)并不適用,比如基于庫級或者表級的復(fù)制、多對一匯總的數(shù)據(jù)倉庫、要求備機可寫等。
Postgresql邏輯復(fù)制技術(shù)基于WAL日志解析實現(xiàn),可實現(xiàn)表級同步,并且可以跨版本同步數(shù)據(jù)。

2

邏輯復(fù)制相關(guān)概念

PG邏輯復(fù)制基于發(fā)布和訂閱模型,一個發(fā)布可以有多個訂閱者。
發(fā)布publication可以創(chuàng)建在任意單機上,也可以在物理復(fù)制的主庫上,發(fā)布端要求數(shù)據(jù)庫參數(shù)WAL_LEVEL為logical。一個發(fā)布可以被多個數(shù)據(jù)庫訂閱。一個發(fā)布只能包含一個數(shù)據(jù)庫中的表,但是這些表可以分布在不同的schema下。
訂閱處于邏輯復(fù)制的下游端,一個訂閱只能對應(yīng)一個發(fā)布。訂閱端的數(shù)據(jù)庫名可以跟發(fā)布端不同,但是訂閱發(fā)布的表名和schema必須相同。
當訂閱創(chuàng)建成功后,就會自動在發(fā)布端創(chuàng)建多個邏輯復(fù)制槽,其中一個用于后續(xù)的增量數(shù)據(jù)同步,永久保留,另外還會創(chuàng)建一個或者多個的臨時復(fù)制槽,用于復(fù)制表的全量快照數(shù)據(jù)。是當發(fā)布端是物理復(fù)制架構(gòu)時,如果發(fā)生主從切換,發(fā)布是不會跟隨數(shù)據(jù)庫failover的。但是可以通過手工拷貝文件或者利用插件實現(xiàn)。
2.1 邏輯復(fù)制的限制
  • 數(shù)據(jù)庫的表結(jié)構(gòu)不會被復(fù)制,所以需要在訂閱端先創(chuàng)建對應(yīng)的schema和表
  • DDL不會不復(fù)制,如果要進行DDL變更,需要先在訂閱端執(zhí)行DDL,然后在發(fā)布端執(zhí)行。
  • Sequence不會不復(fù)制,當發(fā)布端使用了sequence數(shù)據(jù),其寫入了表的值會同步到訂閱端,但是目標庫的sequence并不會發(fā)生變化。
  • 不支持大對象。
  • 復(fù)制只能是基表到基表,不支持視圖、物化視圖、外部表等。支持DDL,如果表是分區(qū)表,需要基于分區(qū)進行復(fù)制。

2.2 邏輯復(fù)制參數(shù)要求

發(fā)布端:


wal_level = logical
max_replication_slots ##大于訂閱數(shù)+物理復(fù)制槽數(shù)量+少量剩余用作臨時快照復(fù)制
max_wal_senders #大于max_replication_slots+物理復(fù)制的備機數(shù)量


訂閱端:

  • max_replication_slots   = 訂閱數(shù)加上保留給表同步的連接數(shù)
  • max_logical_replication_workers =訂閱數(shù)加上保留給表同步的連接數(shù)
  • max_worker_processes =至少max_logical_replication_workers+1

2.3 邏輯復(fù)制構(gòu)建

需要進行邏輯復(fù)制的表,要求最好是有主鍵或者唯一索引。為了能夠復(fù)制UPDATE和DELETE操作,被發(fā)布的表必須配置有一個“復(fù)制標識”,這樣在訂閱者那一端才能標識對于更新或刪除合適的行。默認情況下,復(fù)制標識就是主鍵,如果既沒有主鍵也沒有唯一索引,就需要配置復(fù)制標識為full

復(fù)制標識配置:


Alter table table_name
REPLICA IDENTITY { DEFAULT | USING INDEX index_name | FULL | NOTHING }
  • Default表示使用主鍵,默認標識,可以不設(shè)置;

  • Using index index_name表示使用唯一索引;

  • Full 表示表中無主鍵和唯一索引,full標識影響復(fù)制效率;

  • Noting 標識的表不能進行delete和update復(fù)制。

創(chuàng)建發(fā)布:
Create publication pub_name for table customize_prod.t_migu_scenelooptone_11 ,
customize_prod.t_migu_scenelooptone_12 ,
customize_prod.t_migu_scenelooptone_13 ;
這樣就成功創(chuàng)建了發(fā)布 。
創(chuàng)建訂閱:
CREATE SUBSCRIPTION subscription_name CONNECTION conninfo PUBLICATION publication_name;
當在邏輯復(fù)制架構(gòu)下,需要增加同步的表時,我們可以使用如下命令:
Alter publication pub_name add table table_name;
Alter subscription sub_name refresh publication;

2.4 邏輯復(fù)制相關(guān)視圖和監(jiān)控

發(fā)布端:


pg_publication
pg_publication_tables;
pg_stat_replications
pg_replication_slots

復(fù)制延遲:


select application_name,client_addr,COALESCE(trunc(extract(epoch 
FROM (now() - (now()- replay_lag)
))::numeric),0),trunc(pg_wal_lsn_diff(pg_current_wal_lsn(),
replay_lsn)/1024) rep
lay_delay from pg_stat_replication;

訂閱端:

pg_subscription
pg_stat_subscription
pg_subscription_rel
 

END



 



本文作者:劉運彬

本文來源:IT那活兒(上海新炬王翦團隊)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/129505.html

相關(guān)文章

  • 構(gòu)建可擴展的PostgreSQL解決方案

    摘要:這可以通過負載平衡來實現(xiàn)數(shù)據(jù)分片當問題不是并發(fā)查詢的數(shù)量,而是數(shù)據(jù)庫的大小和單個查詢的速度時,可以實現(xiàn)不同的方法。 showImg(https://segmentfault.com/img/remote/1460000018875091); 來源 | 愿碼(ChainDesk.CN)內(nèi)容編輯 愿碼Slogan | 連接每個程序員的故事 網(wǎng)站 | http://chaindesk.cn...

    jonh_felix 評論0 收藏0
  • 構(gòu)建可擴展的PostgreSQL解決方案

    摘要:這可以通過負載平衡來實現(xiàn)數(shù)據(jù)分片當問題不是并發(fā)查詢的數(shù)量,而是數(shù)據(jù)庫的大小和單個查詢的速度時,可以實現(xiàn)不同的方法。 showImg(https://segmentfault.com/img/remote/1460000018875091); 來源 | 愿碼(ChainDesk.CN)內(nèi)容編輯 愿碼Slogan | 連接每個程序員的故事 網(wǎng)站 | http://chaindesk.cn...

    FrozenMap 評論0 收藏0
  • Dockerfile最佳實踐

    摘要:比如和指令,鏡像中的文件內(nèi)容被檢查并且為每個文件計算校驗和。這些文件的最終修改和訪問時間將不被考慮到校驗和內(nèi)。在查找緩存期間,校驗和將被用于與已存在的鏡像校驗和進行對比。 Docker 可以從 Dockerfile 中讀取指令自動構(gòu)建鏡像,Dockerfile是一個包含構(gòu)建指定鏡像所有命令的文本文件。Docker堅持使用特定的格式并且使用特定的命令。你可以在 Dockerfile參考 ...

    張金寶 評論0 收藏0
  • PG的兩種集群技術(shù):Pgpool-II與Postgres-XL

    摘要:最近研究了的兩種集群方案,分別是和,在這里總結(jié)一下二者的機制結(jié)構(gòu)優(yōu)劣測試結(jié)果等。其中的前身的,的前身是。為了避免單點故障,可以為所有節(jié)點配置對應(yīng)的節(jié)點。測試測試結(jié)果測試結(jié)果顯示,兩種集群與單機的性能指標幾乎一致,無法分辨高下。 最近研究了PG的兩種集群方案,分別是Pgpool-II和Postgres-XL,在這里總結(jié)一下二者的機制、結(jié)構(gòu)、優(yōu)劣、測試結(jié)果等。 1、 Pgpool-I...

    gitmilk 評論0 收藏0
  • postgresql 10主備流復(fù)制測試

    postgresql 10主備流復(fù)制測試 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; ...

    IT那活兒 評論0 收藏2959

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<