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

資訊專欄INFORMATION COLUMN

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

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

點(diǎn)擊上方“IT那活兒”公眾號(hào),關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。。?/strong>

 

1

概  述

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

2

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

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

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

發(fā)布端:


wal_level = logical
max_replication_slots ##大于訂閱數(shù)+物理復(fù)制槽數(shù)量+少量剩余用作臨時(shí)快照復(fù)制
max_wal_senders #大于max_replication_slots+物理復(fù)制的備機(jī)數(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)建

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

復(fù)制標(biāo)識(shí)配置:


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

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

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

  • Noting 標(biāo)識(shí)的表不能進(jìn)行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;
當(dāng)在邏輯復(fù)制架構(gòu)下,需要增加同步的表時(shí),我們可以使用如下命令:
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



 



本文作者:劉運(yùn)彬

本文來源:IT那活兒(上海新炬王翦團(tuán)隊(duì))

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

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

相關(guān)文章

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

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

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

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

    FrozenMap 評(píng)論0 收藏0
  • Dockerfile最佳實(shí)踐

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

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

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

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

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

    IT那活兒 評(píng)論0 收藏2959

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<