亚洲乱色熟女一区二区三区丝袜,天堂√中文最新版在线,亚洲精品乱码久久久久久蜜桃图片,香蕉久久久久久av成人,欧美丰满熟妇bbb久久久

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

PostgreSQL 備庫(kù)邏輯復(fù)制!數(shù)據(jù)同步新姿勢(shì)

admin
2025年6月30日 8:18 本文熱度 140

你需要經(jīng)常使用邏輯復(fù)制嗎?你擔(dān)心其給主用數(shù)據(jù)庫(kù)帶來(lái)的壓力嗎?

復(fù)制的背景

總體而言,PostgreSQL 支持兩種主要的復(fù)制類型:流式/物理復(fù)制和邏輯復(fù)制。預(yù)寫(xiě)式日志可以通過(guò)連接流式傳輸整組的物理文件,并將整個(gè)數(shù)據(jù)庫(kù)在磁盤(pán)上進(jìn)行重放。邏輯復(fù)制提供了一種更細(xì)粒度的方法,您可以指定要復(fù)制到遠(yuǎn)程服務(wù)器的單個(gè)數(shù)據(jù)庫(kù)對(duì)象(例如表,甚至特定行)。

PostgreSQL 中的備用服務(wù)器是通過(guò)對(duì)主服務(wù)器進(jìn)行基礎(chǔ)備份,并持續(xù)應(yīng)用在主服務(wù)器上所做的所有更改來(lái)創(chuàng)建的。熱備服務(wù)器是指可以提升為主服務(wù)器的備用服務(wù)器。PostgreSQL 將修改保存在 WAL(預(yù)寫(xiě)日志)記錄中,并將它們從主服務(wù)器復(fù)制到備用服務(wù)器。如果備用服務(wù)器需要表中的行,則配置參數(shù)hot_standby_feeedback可防止表行過(guò)早地從主服務(wù)器中刪除。

從備用數(shù)據(jù)庫(kù)進(jìn)行復(fù)制的示例設(shè)置

假設(shè)我們有三臺(tái)不同的 PostgreSQL 服務(wù)器,用于管理一家全球物流公司的庫(kù)存,其倉(cāng)庫(kù)遍布全球。主服務(wù)器存儲(chǔ)倉(cāng)庫(kù)和庫(kù)存信息,備用服務(wù)器是一臺(tái)物理復(fù)制的高可用服務(wù)器,第三臺(tái)服務(wù)器用于獲取特定的更改以用于分析報(bào)告。

主機(jī)

在主實(shí)例中,您需要具有復(fù)制權(quán)限的用戶。在本例中,我創(chuàng)建了一個(gè)用戶,用于將更改流式傳輸?shù)絺溆脤?shí)例,并創(chuàng)建了另一個(gè)用戶,用于將更改發(fā)布到訂閱實(shí)例。

CREATE ROLE repuser WITH REPLICATION LOGIN ENCRYPTED PASSWORD 'somestrongpassword';
CREATE ROLE pubuser WITH REPLICATION LOGIN ENCRYPTED PASSWORD 'differentstrongpassword';

接下來(lái),創(chuàng)建一個(gè)物理復(fù)制槽,用于將更改從主服務(wù)器復(fù)制到備用服務(wù)器。嚴(yán)格來(lái)說(shuō),這不是必需的,但實(shí)際上確實(shí)需要。如果沒(méi)有物理復(fù)制槽,任何一個(gè)節(jié)點(diǎn)重啟或連接斷開(kāi)都會(huì)中斷復(fù)制過(guò)程:

SELECT pg_create_physical_replication_slot('hot_standby_1');

假定我們只關(guān)心上海倉(cāng)庫(kù)的庫(kù)存,其代碼為SH。在主服務(wù)器上,我們將為inventory表所依賴的表創(chuàng)建一個(gè)發(fā)布inventory_requirements,并創(chuàng)建另一個(gè)名為inventory_sh_pub的發(fā)布:

表:warehouses (倉(cāng)庫(kù))

  • ? 倉(cāng)庫(kù)編號(hào)
  • ? 倉(cāng)庫(kù)名稱
  • ? 國(guó)家/地區(qū) ID
  • ? 容量

表:inventory (庫(kù)存)

  • ? 產(chǎn)品 ID
  • ? 倉(cāng)庫(kù) ID(指向倉(cāng)庫(kù))
  • ? 數(shù)量
CREATE PUBLICATION inventory_requirements_pub
FOR TABLE regions, countries, warehouses, products;

CREATE PUBLICATION inventory_sh_pub
FOR TABLE inventory WHERE (warehouse = 'SH');

GRANT SELECT ON TABLE regions, countries, warehouses, products, inventory
TO pubuser;

備機(jī)

此時(shí),可以創(chuàng)建備用實(shí)例了。我們將使用pg_basebackup來(lái)初始化備用實(shí)例?;謴?fù)備機(jī)的數(shù)據(jù)目錄后,您需要編輯其中的postgresql.conf,并確保其具有一些參數(shù)(如此處所述):

# Provide feedback to the primary or upstream standby about
# queries currently executing on this standby
hot_standby_feedback = on

# Use the physical replication slot we created previously
primary_slot_name = 'hot_standby_1'

hot_standby = on
archive_mode = on

# If level is changed to below logical, slots will be dropped
wal_level = logical

# standby streams changes from the primary
primary_conn_info = 'host=127.0.0.1 port=5432 user=repuser password=somestrongpassword'

max_wal_senders = 10  # max number of walsender processes
max_replication_slots = 10  # max number of replication slots

# If an upstream standby server is promoted to become the new
# primary, downstream servers will continue to stream from
# the new primary
recovery_target_timeline = 'latest'

連接到該備用服務(wù)器,可以確認(rèn)它處于只讀模式:

SELECT pg_is_in_recovery();
 pg_is_in_recovery
-------------------
 t

此時(shí)我們有:

  • ? 主實(shí)例通過(guò)物理復(fù)制槽同步到一個(gè)備用實(shí)例,并設(shè)置了hot_standby_feedback = on
  • ? 名為inventory_requirements_pubinventory_sh_pub的發(fā)布

備機(jī)上的邏輯副本

現(xiàn)在我們可以登錄用于分析報(bào)告的 PostgreSQL 實(shí)例,訂閱備用數(shù)據(jù)庫(kù)的更改。在 PostgreSQL 16 以前的版本中,該操作會(huì)失敗。

邏輯復(fù)制的一大優(yōu)勢(shì)是,您可以訂閱不同版本的 PostgreSQL 服務(wù)器的變更!這為您在使用不同版本 PostgreSQL 的應(yīng)用程序時(shí)提供了極大的靈活性。

CREATE SUBSCRIPTION inventory_requirements_sub
CONNECTION 'dbname=inventory host=127.0.0.1 port=5434 user=pubuser password=differentstrongpassword'
PUBLICATION inventory_requirements_pub;

CREATE SUBSCRIPTION inventory_sh_sub
CONNECTION 'dbname=inventory host=127.0.0.1 port=5434 user=pubuser password=differentstrongpassword'
PUBLICATION inventory_sh_pub;

如果主服務(wù)器空閑,該操作會(huì)掛起。這是因?yàn)閭溆梅?wù)器正在等待來(lái)自主服務(wù)器的信息。您可以通過(guò)在主服務(wù)器上調(diào)用新函數(shù)pg_log_standby_snapshot(),來(lái)加快創(chuàng)建這些對(duì)象的速度。在本例中,我們會(huì)調(diào)用兩次,因?yàn)槲覀円獎(jiǎng)?chuàng)建兩個(gè)訂閱。

SELECT pg_log_standby_snapshot();
 pg_log_standby_snapshot
-------------------------
 0/23000180

這樣允許副本繼續(xù)運(yùn)行,并生成類似這樣的消息,告訴我們已在備用服務(wù)器上創(chuàng)建了一個(gè)復(fù)制槽。

NOTICE:  created replication slot "inventory_requirements_sub" on publisher
CREATE SUBSCRIPTION

我們可以在備用服務(wù)器上的pg_stat_replication系統(tǒng)視圖中驗(yàn)證這一點(diǎn)。

SELECT pid, application_name, state, sync_state FROM pg_stat_replication;

  pid  |      application_name      |   state   | sync_state
-------+----------------------------+-----------+------------
 23265 | inventory_sh_sub           | streaming | async
 23251 | inventory_requirements_sub | streaming | async
(2 rows)

一旦更改同步到了備用服務(wù)器,它們就會(huì)被同步到下游的報(bào)告服務(wù)器,我們將在那里看到這些更改。請(qǐng)注意,只有SH倉(cāng)庫(kù)的記錄會(huì)被同步過(guò)來(lái)。

SELECT * FROM inventory ORDER BY product_id;
 warehouse | product_id | quantity
-----------+------------+----------
 SH        |         11 |        7
 SH        |         13 |       13
 SH        |         15 |       18
 SH        |         22 |       15
 SH        |         24 |       20

如果需要,我們還可以在這里為不同的區(qū)域和倉(cāng)庫(kù)創(chuàng)建多個(gè)邏輯副本。


閱讀原文:原文鏈接


該文章在 2025/7/1 22:50:17 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved