最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PostgreSQL實現(xiàn)數(shù)據(jù)表跨庫同步的四種方案

 更新時間:2026年05月17日 14:39:11   作者:雷工筆記  
文章詳細介紹了四種用于實現(xiàn)PostgreSQL數(shù)據(jù)庫表數(shù)據(jù)變化實時或定時同步到另一個獨立PG庫的方法,包括觸發(fā)器+外部表、邏輯復制、Debezium+Kafka和pg_dump定時任務,針對不同場景和需求,推薦了最適合的方案,并詳細闡述了各自的優(yōu)點、適用場景、配置方法和使用注意事項

要實現(xiàn)一個 PG 庫的表數(shù)據(jù)變化(增刪改),實時 / 定時同步到另一個獨立 PG 庫,豆老師給整理了生產(chǎn)環(huán)境最常用、最穩(wěn)定的 4 種方案。

一、最簡單:觸發(fā)器 + 外部表(dblink/foreign table)

適合小數(shù)據(jù)量、單表同步、實時性要求高的場景,無需額外組件,純 PG 原生實現(xiàn)。

實現(xiàn)原理

1、源庫表創(chuàng)建觸發(fā)器,數(shù)據(jù)增刪改時觸發(fā)

2、觸發(fā)器調(diào)用函數(shù),通過 dblink 連接目標庫

3、自動執(zhí)行同步 SQL,實時寫入目標庫

核心步驟

1、源庫安裝擴展

-- 源庫執(zhí)行

CREATE EXTENSION IF NOT EXISTS dblink;

2、創(chuàng)建同步函數(shù)(源庫)

CREATE OR REPLACE FUNCTION sync_table_func()

RETURNS TRIGGER AS $$

BEGIN

? -- 連接目標庫:替換為你的目標庫信息

? PERFORM dblink_connect(

? ? 'dbname=目標庫名 host=目標IP port=5432 user=賬號 password=密碼'

? );

-- INSERT 同步

? IF (TG_OP = 'INSERT') THEN

? ? PERFORM dblink_exec(

? ? ? 'INSERT INTO 目標表名 VALUES ($1.*)', NEW

? ? );

? -- UPDATE 同步

? ELSIF (TG_OP = 'UPDATE') THEN

? ? PERFORM dblink_exec(

? ? ? 'UPDATE 目標表名 SET 字段1=$1,字段2=$2 WHERE id=$3',

? ? ? NEW.字段1, NEW.字段2, OLD.id

? ? );

? -- DELETE 同步

? ELSIF (TG_OP = 'DELETE') THEN

? ? PERFORM dblink_exec(

? ? ? 'DELETE FROM 目標表名 WHERE id=$1', OLD.id

? ? );

? END IF;

PERFORM dblink_disconnect();

? RETURN COALESCE(NEW, OLD);

END;

$$ LANGUAGE plpgsql;

3、綁定觸發(fā)器到源表

CREATE TRIGGER trigger_sync_table

AFTER INSERT OR UPDATE OR DELETE ON 源表名

FOR EACH ROW EXECUTE FUNCTION sync_table_func();

優(yōu)點

①純 PG 原生,零部署、零學習成本

②實時同步,延遲極低

③單表配置快速

缺點

①大并發(fā)、大數(shù)據(jù)量會影響源庫性能

②目標庫不可用時,源庫會報錯

③不適合批量操作、分表同步

二、最常用:邏輯復制(Logical Replication)

PG 10+ 原生自帶,生產(chǎn)標準方案,適合實時同步、多表、大數(shù)據(jù)量。

核心優(yōu)勢

①不影響源庫性能

②目標庫斷開重連后自動續(xù)傳,不丟數(shù)據(jù)

③支持整庫 / 多表 / 指定表同步

④官方支持,穩(wěn)定可靠

最簡配置(3 步)

1、源庫配置(postgresql.conf)

wal_level = logical? # 必須修改
max_replication_slots = 10
max_wal_senders = 10

重啟 PG 生效。

2、源庫創(chuàng)建發(fā)布端

-- 創(chuàng)建發(fā)布(同步指定表)

CREATE PUBLICATION pub_target FOR TABLE 表1, 表2;

-- 授權復制權限

ALTER ROLE 賬號 REPLICATION;

3、目標庫創(chuàng)建訂閱端

sql

-- 創(chuàng)建訂閱,自動同步數(shù)據(jù)

CREATE SUBSCRIPTION sub_source

CONNECTION 'host=源IP port=5432 dbname=源庫 user=賬號 password=密碼'

PUBLICATION pub_target;

? 完成:源表任何變化都會實時同步到目標庫。

三、企業(yè)級:Debezium + Kafka(CDC 方案)

適合高并發(fā)、分布式、多系統(tǒng)訂閱同一份數(shù)據(jù)的場景(微服務架構)。

原理

①Debezium 監(jiān)聽 PG WAL 日志

②把數(shù)據(jù)變化發(fā)送到 Kafka

③目標庫 / 其他系統(tǒng)消費消息同步

優(yōu)點

①完全解耦,不影響業(yè)務庫

②支持多目標同步

③可回溯數(shù)據(jù)變更歷史

④大數(shù)據(jù)架構標配

缺點

①部署復雜(需要 Kafka、Debezium)

②小項目沒必要

四、定時同步:pg_dump + cron /pg_clogSync

適合非實時、每天 / 每小時同步、對延遲不敏感的場景。

方案 1:定時全量同步(簡單)

源庫導出

pg_dump -h 源IP -U 用戶 -d 庫 -t 表 -F c -f dumpfile

目標庫恢復

pg_restore -h 目標IP -U 用戶 -d 庫 -t 表 dumpfile

配合 Linux crontab 定時執(zhí)行。

方案 2:增量同步(pg_clogSync)

只同步變化的數(shù)據(jù),效率高,適合大表。

方案選擇建議

場景

推薦方案

難度

單表、小數(shù)據(jù)、實時

觸發(fā)器 + dblink

?

多表、生產(chǎn)、實時

邏輯復制(首選)

??

微服務、多系統(tǒng)同步

Debezium + Kafka

????

非實時、定時同步

pg_dump 定時任務

??

最推薦:邏輯復制(生產(chǎn) 90% 場景用它)

優(yōu)點碾壓其他方案:

①官方原生、穩(wěn)定

②實時、不丟數(shù)據(jù)

③對源庫幾乎無性能損耗

④配置 5 分鐘搞定

四、總結

1、新手 / 小項目:直接用 觸發(fā)器 + dblink,最快上線

2、生產(chǎn)環(huán)境:優(yōu)先 邏輯復制,穩(wěn)定、高效、零侵入

3、分布式架構:用 Debezium CDC

4、非實時同步:用 定時 pg_dump

以上就是PostgreSQL實現(xiàn)數(shù)據(jù)表跨庫同步的四種方案的詳細內(nèi)容,更多關于PostgreSQL數(shù)據(jù)表跨庫同步的資料請關注腳本之家其它相關文章!

相關文章

  • PostgreSQL中的日期/時間函數(shù)詳解

    PostgreSQL中的日期/時間函數(shù)詳解

    這篇文章主要給大家介紹了關于PostgreSQL中日期/時間函數(shù)的相關資料,文章通過實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-01-01
  • postgresql 修改字段長度的操作

    postgresql 修改字段長度的操作

    這篇文章主要介紹了postgresql 修改字段長度的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Linux 上 定時備份postgresql 數(shù)據(jù)庫的方法

    Linux 上 定時備份postgresql 數(shù)據(jù)庫的方法

    這篇文章主要介紹了Linux 上 定時備份postgresql 數(shù)據(jù)庫的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • postgresql的now()與Oracle的sysdate區(qū)別說明

    postgresql的now()與Oracle的sysdate區(qū)別說明

    這篇文章主要介紹了postgresql的now()與Oracle的sysdate區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • PostgreSQL創(chuàng)建觸發(fā)器的實現(xiàn)示例

    PostgreSQL創(chuàng)建觸發(fā)器的實現(xiàn)示例

    PostgreSQL的觸發(fā)器Trigger是一類特殊的數(shù)據(jù)庫對象,本文主要介紹了PostgreSQL創(chuàng)建觸發(fā)器的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-06-06
  • PostgreSQL創(chuàng)建新用戶所遇見的權限問題以及解決辦法

    PostgreSQL創(chuàng)建新用戶所遇見的權限問題以及解決辦法

    這篇文章主要給大家介紹了關于PostgreSQL創(chuàng)建新用戶所遇見的權限問題以及解決辦法, 在PostgreSQL中創(chuàng)建一個新用戶非常簡單,但可能會遇到權限問題,需要的朋友可以參考下
    2023-09-09
  • PostgreSQL 邏輯復制 配置操作

    PostgreSQL 邏輯復制 配置操作

    這篇文章主要介紹了PostgreSQL 邏輯復制 配置操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Visual Studio Code(VS Code)查詢PostgreSQL拓展安裝教程圖解

    Visual Studio Code(VS Code)查詢PostgreSQL拓展安裝教程圖解

    這篇文章主要介紹了Visual Studio Code(VS Code)查詢PostgreSQL拓展安裝教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • PostgreSQL中使用dblink實現(xiàn)跨庫查詢的方法

    PostgreSQL中使用dblink實現(xiàn)跨庫查詢的方法

    這篇文章主要介紹了PostgreSQL中使用dblink實現(xiàn)跨庫查詢的方法,需要的朋友可以參考下
    2017-05-05
  • PostgreSQL中的NULL處理實現(xiàn)

    PostgreSQL中的NULL處理實現(xiàn)

    PostgreSQL中的NULL值處理功能豐富,可以幫助開發(fā)者更好地管理和查詢數(shù)據(jù),合理地使用NULL值可以提高查詢效率,下面就來詳細的介紹一下NULL的處理,感興趣的可以了解一下
    2026-03-03

最新評論

寻乌县| 怀安县| 三穗县| 友谊县| 博爱县| 庆阳市| 天峻县| 宁南县| 余庆县| 江山市| 来凤县| 高安市| 安丘市| 万年县| 海阳市| 类乌齐县| 右玉县| 新河县| 高要市| 临夏市| 沙坪坝区| 景德镇市| 遵化市| 重庆市| 康平县| 从江县| 土默特左旗| 开封县| 平利县| 什邡市| 古丈县| 静宁县| 莱西市| 福州市| 竹溪县| 利川市| 永春县| 海林市| 长丰县| 泌阳县| 蚌埠市|