国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PostgreSQL16中的新增功能:雙向邏輯復(fù)制

這篇具有很好參考價(jià)值的文章主要介紹了PostgreSQL16中的新增功能:雙向邏輯復(fù)制。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

在這篇博客中,我們將深入探討Postgres 16中引入的一些更高級(jí)的新功能。為了更好地理解這些功能,讀者應(yīng)具備一些Linux、Postgres和SQL的基礎(chǔ)知識(shí),因?yàn)槲覀儗⑸钊胩接戇@些新功能并指導(dǎo)如何實(shí)現(xiàn)它們。

本博客以在Ubuntu 23.04上運(yùn)行的PostgreSQL 16(開(kāi)發(fā)版)為基礎(chǔ)進(jìn)行編寫(xiě)。首先,我們將介紹一些背景信息,并簡(jiǎn)要介紹什么是雙向復(fù)制,以及為什么它很重要,然后介紹我們?nèi)绾螌?shí)現(xiàn)雙向邏輯復(fù)制。

#1?背景

在開(kāi)始學(xué)習(xí)雙向邏輯復(fù)制之前,我們首先必須了解什么是邏輯復(fù)制。

#2??邏輯復(fù)制的基礎(chǔ)知識(shí)

從 PostgreSQL 10 就支持邏輯復(fù)制功能,并且在接下來(lái)的幾年中邏輯復(fù)制功能已得到廣泛應(yīng)用和持續(xù)更新。邏輯復(fù)制是復(fù)制?(ie. replicating)數(shù)據(jù)對(duì)象的過(guò)程,其表示為它們的更改。通過(guò)這種方式,我們可以只復(fù)制表等對(duì)象的特定更改,而不是復(fù)制整個(gè)數(shù)據(jù)庫(kù),并將這些更改流式傳輸?shù)讲煌钠脚_(tái)和版本。與物理復(fù)制形成鮮明對(duì)比,邏輯復(fù)制更注重于抽象層面的數(shù)據(jù)表示,這使得它能在不同平臺(tái)和版本之間實(shí)現(xiàn)無(wú)縫的數(shù)據(jù)流傳輸。相比之下,物理復(fù)制更依賴(lài)于確切的塊地址,導(dǎo)致其復(fù)制范圍局限于整個(gè)數(shù)據(jù)庫(kù),且無(wú)法跨平臺(tái)或版本進(jìn)行數(shù)據(jù)流傳輸,因?yàn)槊總€(gè)平臺(tái)或版本的數(shù)據(jù)結(jié)構(gòu)必須完全匹配。

postgresql16中的新增功能: 雙向邏輯復(fù)制,數(shù)據(jù)庫(kù),postgresql,oracle,開(kāi)源,開(kāi)源軟件

圖1

邏輯復(fù)制還引入了理解其雙向?qū)?yīng)關(guān)系所必不可少的兩個(gè)非常重要的元素:發(fā)布者和訂閱者,你可以將它們理解為領(lǐng)導(dǎo)者節(jié)點(diǎn)(發(fā)布者)和跟隨者節(jié)點(diǎn)(訂閱者)的角色。發(fā)布者將收集其最近的更改,并將其作為有序的命令列表發(fā)送到訂閱者。一旦訂閱者接收到這一系列命令,就會(huì)將其應(yīng)用于其數(shù)據(jù)。如果兩個(gè)數(shù)據(jù)庫(kù)最初具有相同的數(shù)據(jù),那么訂閱者將與發(fā)布者保持同步。?

#3?雙向復(fù)制

現(xiàn)在我們了解了什么是邏輯復(fù)制,那么雙向復(fù)制有什么不同之處呢?簡(jiǎn)而言之,雙向邏輯復(fù)制是指復(fù)制中的所有節(jié)點(diǎn)都同時(shí)充當(dāng)發(fā)布者和訂閱者。現(xiàn)在,每個(gè)數(shù)據(jù)庫(kù)都可以處理讀寫(xiě)請(qǐng)求,所有的更改都會(huì)以流式傳輸?shù)姆绞絺鬟f給彼此。這就是雙向的方面,與之前只有單向變化流動(dòng)不同,現(xiàn)在變化在兩個(gè)方向上都進(jìn)行流動(dòng)。?

postgresql16中的新增功能: 雙向邏輯復(fù)制,數(shù)據(jù)庫(kù),postgresql,oracle,開(kāi)源,開(kāi)源軟件

圖2

Postgres 16 新添加的地方是它向 WITH 語(yǔ)句添加了一個(gè)新參數(shù),用于過(guò)濾掉來(lái)自特定節(jié)點(diǎn)的復(fù)制。雙向邏輯復(fù)制使用此參數(shù) WITH(ORIGIN = NONE),這會(huì)過(guò)濾掉所有具有非NONE起源的連接的復(fù)制。從本質(zhì)上講,這只允許復(fù)制新添加的數(shù)據(jù),您或許可以看到為什么會(huì)這樣。如果一個(gè)數(shù)據(jù)庫(kù)插入新數(shù)據(jù)并將其復(fù)制到第二個(gè)數(shù)據(jù)庫(kù),則第二個(gè)數(shù)據(jù)庫(kù)將復(fù)制數(shù)據(jù)并插入該數(shù)據(jù),從而觸發(fā)對(duì)原始數(shù)據(jù)庫(kù)的另一次復(fù)制。我們很快就陷入到無(wú)限復(fù)制的循環(huán)中,這就是為什么需要這個(gè)選項(xiàng)來(lái)保持一切有限的原因。

#4?好處

雙向邏輯復(fù)制的主要優(yōu)勢(shì)在于,它提供了更多的可用性,既可以滿(mǎn)足讀請(qǐng)求,也可以滿(mǎn)足寫(xiě)請(qǐng)求,因?yàn)槲覀冇袃蓚€(gè)主節(jié)點(diǎn)。這對(duì)于許多需要強(qiáng)調(diào)寫(xiě)操作的應(yīng)用程序來(lái)說(shuō)尤其有益。

#5?缺點(diǎn)

雙向邏輯復(fù)制需要一些前提條件才能正常運(yùn)行,因?yàn)樗脑S多缺點(diǎn)都來(lái)自這些特定條件。例如,在設(shè)置復(fù)制時(shí),每個(gè)數(shù)據(jù)庫(kù)中的表必須遵循相同的架構(gòu)、相同的名稱(chēng)和列,否則訂閱服務(wù)器將無(wú)法找到該表。在邏輯復(fù)制可以支持復(fù)制用于創(chuàng)建表的數(shù)據(jù)定義語(yǔ)言 (DDL) 之前,用戶(hù)必須手動(dòng)執(zhí)行此操作以確保一致性。

#6?建立

現(xiàn)在我們了解了雙向邏輯復(fù)制的基礎(chǔ)知識(shí),我們可以深入研究如何在兩個(gè)數(shù)據(jù)庫(kù)之間實(shí)現(xiàn)它。開(kāi)始與設(shè)置常規(guī)邏輯復(fù)制非常相似,但在創(chuàng)建發(fā)布服務(wù)器和訂閱服務(wù)器時(shí)有一個(gè)非常重要的區(qū)別。

首先,我們將創(chuàng)建兩個(gè)主數(shù)據(jù)庫(kù),它們將相互跟隨:

$?initdb?-D?database1
$?initdb?-D?database2

在每個(gè)數(shù)據(jù)庫(kù)的 postgres.conf 文件中,將每個(gè)數(shù)據(jù)庫(kù)的way_level設(shè)置為邏輯,并為每個(gè)數(shù)據(jù)庫(kù)指定一個(gè)唯一的端口號(hào):

postgres.conf 數(shù)據(jù)庫(kù)1
port?=?5432
wal_level?=?logical
postgres.conf 數(shù)據(jù)庫(kù)2
port?=?5433
wal_level?=?logical

>>>啟動(dòng)兩個(gè)數(shù)據(jù)庫(kù):

pg_ctl?-D?database1?-l?database1.log?start
pg_ctl?-D?database2?-l?database2.log?start

>>>為每個(gè)數(shù)據(jù)庫(kù)創(chuàng)建發(fā)布服務(wù)器:

#?CREATE?PUBLICATION?mypub1?FOR?TABLE?mytable;
#?CREATE?PUBLICATION?mypub2?FOR?TABLE?mytable;

>>>為每個(gè)數(shù)據(jù)庫(kù)創(chuàng)建訂閱服務(wù)器:

#?CREATE?SUBSCRIPTION?mysub1?CONNECTION?'host=127.0.0.1?port=5433?user=postgres?dbname=postgres'?PUBLICATION?mypub2?WITH(ORIGIN?=?NONE);

#?CREATE?SUBSCRIPTION?mysub2?CONNECTION?'host=127.0.0.1?port=5432?user=postgres?dbname=postgres'?PUBLICATION?mypub1?WITH(ORIGIN?=?NONE);?

請(qǐng)注意,創(chuàng)建發(fā)布者和訂閱者的順序至關(guān)重要。首先,我們需要?jiǎng)?chuàng)建發(fā)布者,然后才能創(chuàng)建訂閱者。為了更直觀地理解,請(qǐng)參考圖2。每個(gè)組件角落的數(shù)字表示它們的創(chuàng)建順序,這有助于確保復(fù)制過(guò)程的順利進(jìn)行。

現(xiàn)在,當(dāng)任何數(shù)據(jù)插入任一數(shù)據(jù)庫(kù)時(shí),都應(yīng)在兩個(gè)節(jié)點(diǎn)之間進(jìn)行同步復(fù)制。

#7?結(jié)論

在這篇博客中,我們介紹了 PostgreSQL 16 中的新雙向邏輯復(fù)制功能。首先,我們簡(jiǎn)要介紹了邏輯復(fù)制的背景以及用于同步數(shù)據(jù)的發(fā)布者/訂閱者模型。然后,我們討論了雙向邏輯復(fù)制的工作原理以及允許其在不觸發(fā)無(wú)限復(fù)制循環(huán)的情況下運(yùn)行的新參數(shù)。

最后,我們了解了如何在兩個(gè)主PostgreSQL 數(shù)據(jù)庫(kù)之間設(shè)置雙向復(fù)制。通過(guò)支持主節(jié)點(diǎn)之間的同步,增加可用性和數(shù)據(jù)持久性對(duì)于任何數(shù)據(jù)庫(kù)應(yīng)用程序都應(yīng)該是輕而易舉的。

*參考文獻(xiàn):

C, Vigneshwaran. Bi-Directional Replication Using Origin Filtering in PostgreSQL, Fujitsu, 31 Aug. 2023, www.postgresql.fastware.com/blog/bi-directional-replication-using-origin-filtering-in-postgresql.

原文鏈接:

https://www.highgo.ca/2023/12/18/new-in-postgresql-16-bi-directional-logical-replication/文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-799292.html

到了這里,關(guān)于PostgreSQL16中的新增功能:雙向邏輯復(fù)制的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【PostgreSQL-16新特性之類(lèi)型轉(zhuǎn)換測(cè)試功能】

    在PostgreSQL里,“::” 符號(hào)其實(shí)是一個(gè)強(qiáng)制類(lèi)型轉(zhuǎn)換符,作用等同于CAST。 在很多情況下,我們需要將一種數(shù)據(jù)類(lèi)型的值轉(zhuǎn)換為另一種數(shù)據(jù)類(lèi)型。那么我們就可以使用它來(lái)進(jìn)行轉(zhuǎn)換。 \\\"::\\\"的語(yǔ)法格式為: 舉個(gè)例子為: CAST的語(yǔ)法格式為: 舉個(gè)例子為: 除此之外類(lèi)型轉(zhuǎn)換可以使用

    2024年02月12日
    瀏覽(23)
  • 新增PostgreSQL數(shù)據(jù)庫(kù)管理功能,1Panel開(kāi)源面板v1.9.3發(fā)布

    新增PostgreSQL數(shù)據(jù)庫(kù)管理功能,1Panel開(kāi)源面板v1.9.3發(fā)布

    2024年1月15日,現(xiàn)代化、開(kāi)源的Linux服務(wù)器運(yùn)維管理面板1Panel正式發(fā)布v1.9.3版本。 在這一版本中,1Panel新增了PostgreSQL數(shù)據(jù)庫(kù)管理功能,并且支持設(shè)置PHP運(yùn)行環(huán)境擴(kuò)展模版。此外,我們進(jìn)行了30多項(xiàng)功能更新和問(wèn)題修復(fù)。1Panel應(yīng)用商店新增了3款應(yīng)用,并且更新了22款應(yīng)用。感謝社

    2024年01月18日
    瀏覽(61)
  • PostgreSQL 流復(fù)制搭建

    PostgreSQL 流復(fù)制(Streaming Replication)是 9.0 提供的一種新的 WAL 傳遞方法。使用流復(fù)制時(shí),每當(dāng) Primary 節(jié)點(diǎn) WAL 產(chǎn)生,就會(huì)馬上傳遞到 Standby 節(jié)點(diǎn),流復(fù)制提供 異步 和 同步 兩種模式,同步模式可以保障數(shù)據(jù) 0 丟失。 1.1 環(huán)境介紹 主機(jī)名 IP 地址 角色 數(shù)據(jù)目錄 172-16-104-7 172.16.

    2024年02月09日
    瀏覽(14)
  • postgresql 流復(fù)制原理

    postgresql 流復(fù)制原理

    這部分純理論內(nèi)容,結(jié)合配圖和數(shù)據(jù)進(jìn)程了解流復(fù)制的工作邏輯。 PostgreSQL在數(shù)據(jù)目錄下的pg_wal(舊版為pg_xlog)子目錄中維護(hù)了一個(gè)WAL日志文件,該文件用于記錄數(shù)據(jù)庫(kù)文件的每次改變,這種日志文件機(jī)制提供了一種數(shù)據(jù)庫(kù)熱備份的方案,即:在把數(shù)據(jù)庫(kù)使用文件系統(tǒng)的方式備

    2024年01月21日
    瀏覽(21)
  • PostgreSql 邏輯結(jié)構(gòu)

    PostgreSql 邏輯結(jié)構(gòu)

    Database Cluser : 數(shù)據(jù)庫(kù)集簇,一套服務(wù)器上安裝部署完成的一套PostgreSql。在其中可創(chuàng)建數(shù)據(jù)庫(kù)(Database)、用戶(hù)(User)。 User : 數(shù)據(jù)庫(kù)用戶(hù),用來(lái)連接訪問(wèn)數(shù)據(jù)庫(kù),可通過(guò)權(quán)限管理,控制其訪問(wèn)不同的數(shù)據(jù)。 Database : 數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)集簇(Database Cluser)下的邏輯隔離,一個(gè)數(shù)據(jù)

    2024年02月12日
    瀏覽(21)
  • PostgreSQL邏輯管理結(jié)構(gòu)

    PostgreSQL邏輯管理結(jié)構(gòu)

    1.數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)介紹 2.數(shù)據(jù)庫(kù)基本操作 2.1 創(chuàng)建數(shù)據(jù)庫(kù) 參數(shù)說(shuō)明如下。 ·OWNER [=] user_name:用于指定新建的數(shù)據(jù)庫(kù)屬于哪個(gè)用 戶(hù),如果不指定,新建的數(shù)據(jù)庫(kù)就屬于當(dāng)前執(zhí)行命令的用戶(hù)。 ·TEMPLATE [=] template:模板名(從哪個(gè)模板創(chuàng)建新數(shù)據(jù) 庫(kù)),如果不指定,將使用默認(rèn)模

    2024年02月06日
    瀏覽(14)
  • PostgreSQL 16新特性預(yù)覽

    PostgreSQL 全球開(kāi)發(fā)組于 2023-05-25 發(fā)布了 PostgreSQL 16 的第一個(gè) beta 版本,可以下載試用。雖然細(xì)節(jié)可能會(huì)有所改變,但是該版本包含了 PostgreSQL 16 最終正式版中所有新特性的預(yù)覽,讓我們趕緊一睹為快吧! PostgreSQL 16 改進(jìn)了查詢(xún)執(zhí)行時(shí)的性能,支持更多的并行查詢(xún),包括外連接

    2024年02月06日
    瀏覽(19)
  • Postgresql源碼(114)視圖權(quán)限授予邏輯

    Postgresql源碼(114)視圖權(quán)限授予邏輯

    被授權(quán)的對(duì)象在系統(tǒng)表中記錄授權(quán)信息,例如pg_namespace中的nspacl列: pusr1=UC/mingjie的含義: mingjie是賦予者 pusr1是被賦予者 UC是權(quán)限,表示USAGE和CREATE 有時(shí)會(huì)遇到下面場(chǎng)景,訪問(wèn)一個(gè)視圖沒(méi)有權(quán)限: 結(jié)果 查看namespace視圖: 這種情況下,添加兩種權(quán)限都可以訪問(wèn)函數(shù): 這里我

    2024年02月07日
    瀏覽(23)
  • PostgreSQL安裝和開(kāi)啟SSL加密連接【配置單/雙向認(rèn)證】

    PostgreSQL安裝和開(kāi)啟SSL加密連接【配置單/雙向認(rèn)證】

    SSL單向認(rèn)證和雙向認(rèn)證: SSL單向認(rèn)證 :只有一端校驗(yàn)對(duì)端的證書(shū)合法性,通常都是客戶(hù)端來(lái)校驗(yàn)服務(wù)器的合法性。即在一般的單向認(rèn)證中,只要求服務(wù)器端部署了ssl證書(shū)就行,客戶(hù)端可以無(wú)證書(shū),任何用戶(hù)都可以去訪問(wèn)服務(wù)端,服務(wù)端只是提供了身份認(rèn)證。 client: 無(wú)證書(shū)

    2024年02月06日
    瀏覽(23)
  • PostgreSQL實(shí)戰(zhàn)-pg13主從復(fù)制切換測(cè)試

    修改/etc/profile文件, 添加如下內(nèi)容: 清空數(shù)據(jù)表數(shù)據(jù) 主庫(kù)清空數(shù)據(jù)表數(shù)據(jù) 從庫(kù)對(duì)應(yīng)的數(shù)據(jù)表也會(huì)被清空 新增數(shù)據(jù)表數(shù)據(jù) 主庫(kù)數(shù)據(jù)表插入數(shù)據(jù)一行 從庫(kù)數(shù)據(jù)表也會(huì)插入一行 刪除數(shù)據(jù)表數(shù)據(jù)

    2024年02月15日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包