精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

PostgreSQL主從復制-邏輯復制

數據庫 PostgreSQL
邏輯復制是基于邏輯解析,其核心原理是邏輯主庫將Publication中表的WAL日志解析成一定格式并發送給邏輯備庫,邏輯備庫Subscription接收到解析后的WAL日志后進行重做,從而實現表數據同步。

1、物理復制及邏輯復制對比

前文做了PostgreSQL物理復制的部署,其有如下主要優點

  • 物理層面完全一致,是主要的復制方式,其類似于Oracle的DG。
  • 延遲低,事務執行過程中產生REDO record,實時的在備庫apply,事務結束時,備庫立馬能見到數據。
  • 物理復制的一致性、可靠性高,不必擔心數據邏輯層面不一致。

但是其又在實際使用的場景中存在一些無法滿足的需求,例如:

  • 無法滿足指定庫或部分表的復制需求。
  • 將多個數據庫實例的數據匯聚到同一個目標庫或將一個庫的數據分發到多個不同的庫。
  • 不同的版本之間的復制。
  • 不同庫名之間的不同步。

對于以上場景,物理復制是無法滿足的,因此邏輯復制應運而生了。

邏輯復制的復制架構圖如下:

圖片來源于《PostgreSQL實戰》

邏輯復制是基于邏輯解析,其核心原理是邏輯主庫將Publication中表的WAL日志解析成一定格式并發送給邏輯備庫,邏輯備庫Subscription接收到解析后的WAL日志后進行重做,從而實現表數據同步。

2、邏輯復制的部署

PS:以下的邏輯從庫可以在新的機器上部署,如在原先的從庫上修改,需停止原實例,并將recovery.conf文件刪除或重命名(如修改為recovery.conf.done)

(1)修改主庫的postgresql.conf

可以基于原先的物理復制的配置文件進行修改,配置邏輯復制主要需調整如下參數

wal_level = logical
max_wal_senders = 10
max_replication_slots = 8

參數簡要說明如下

  • wal_level:設置成logical才支持邏輯復制.
  • max_wal_senders:由于每個訂閱節點和流復制備庫在主庫上都會占用主庫上一個WAL發送進程,因此此參數設置值需大于max_replication_slots參數值加上物理備庫數量。
  • max_replication_slots:設置值需大于訂閱節點的數量。

(2)修改邏輯從庫的postgresql.conf

邏輯從庫的postgresql.conf也可以在物理復制的基礎上修改,與主庫不同的是主要修改如下參數

wal_level = logical
max_replication_slots = 8
max_logical_replication_workers = 8

參數簡要說明:

  • wal_level:設置成logical才支持邏輯復制,邏輯從庫可以視情況設置。
  • max_replication_slots:設置數據庫復制槽數量,應大于訂閱節點的數量。
  • max_logical_replication_workers:設置邏輯復制進程數,應大于訂閱節點的數量,并且給表同步預留一些進程數量,此參數默認值為4。

(3)創建邏輯復制賬號

postgres=# CREATE USER logical_repl REPLICATION LOGIN CONNECTION LIMIT 8 ENCRYPTED PASSWORD 'logical_repl'; 
CREATE ROLE

邏輯復制用戶需要REPLICATION權限即可,可以不需要SUPERUSER權限,之后需要在發布節點上將需要同步的表賦權給logical_repl用戶,使logical_repl賬號具有對這些表的讀權限。

(4)在邏輯主庫上創建庫及表

/** 創建用于邏輯復制的主庫 */ 
[postgres@PG32 data]$ createdb sourcedb
[postgres@PG32 data]$ psql -d sourcedb
psql (11.4)
Type "help" for help.
sourcedb=# create table logical_tb1(id int primary key,name varchar(20));

(5)邏輯從庫上創建庫及表

/** 在邏輯從庫上創建不同的庫 */
[postgres@PG33 data]$ createdb desdb
[postgres@PG33 data]$ psql -d desdb
psql (11.4)
Type "help" for help.
desdb=# create table logical_tb1(id int primary key,name varchar(20));
CREATE TABLE
desdb=#

注:邏輯復制的表結構需要手動在從庫創建

(6)在邏輯主庫上創建發布

/** 在發布主庫上創建發布pub1,注意實在sourcedb庫下執行 */
sourcedb=# CREATE PUBLICATION pub1 FOR TABLE logical_tb1;
CREATE PUBLICATION

如果需發布多張表 則表名間用逗號(,)分割,如果需發布所有庫,則將FOR TABLE 調整為FOR ALL TABLES。

此時可以查看到如下信息。

sourcedb=# SELECT * FROM pg_publication;
pubname | pubowner | puballtables | pubinsert | pubupdate | pubdelete | pubtruncate
---------+----------+--------------+-----------+-----------+-----------+-------------
pub1 | 10 | f | t | t | t | t
(1 row)

字段說明如下:

  • pubname:指發布的名稱。
  • pubowner:指發布的屬主,可以和pg_user視圖的usesysid字段關聯查詢得到屬主具體信息。
  • puballtables:是否發布數據庫中的所有表,t表示發布數據庫中所有已存在的表和以后新建的表。
  • pubinsert:t表示僅發布表上的INSERT操作。
  • pubupdate:t表示僅發布表上的UPDATE操作。
  • pubdelete:t表示僅發布表上的DELETE操作。

(7)在邏輯從庫上創建訂閱

desdb=# CREATE SUBSCRIPTION sub1 CONNECTION 'host=192.168.56.32 port=5432 user=logical_repl dbname=sourcedb password=logical_repl' PUBLICATION pub1;
NOTICE: created replication slot "sub1" on publisher
CREATE SUBSCRIPTION

創建成功后,可以在邏輯主庫上查詢到如下信息:

sourcedb=# SELECT slot_name,plugin,slot_type,database,active,restart_lsn    FROM pg_replication_slots where slot_name='sub1';
slot_name | plugin | slot_type | database | active | restart_lsn
-----------+----------+-----------+----------+--------+-------------
sub1 | pgoutput | logical | sourcedb | t | 0/6022D30
(1 row)

在邏輯從庫上可以查詢到如下信息:

desdb=# SELECT * FROM pg_subscription;
subdbid | subname | subowner | subenabled | subconninfo | subslotname | subsynccommit | subpublications
---------+---------+----------+------------+---------------------------------------------------------------------------------------+-------------+---------------+-----------------
24995 | sub1 | 10 | t | host=192.168.56.32 port=5432 user=logical_repl dbname=sourcedb password=logical_repl | sub1 | off | {pub1}
(1 row)

(8)給復制賬號授權

因為步驟2.3中只創建了復制賬號并未對需要復制的表進行授權,因此,此時邏輯從庫的日志中有如下錯誤

2019-10-10 15:57:21.847 CST [27443] ERROR: could not start initial contents copy for table "public.logical_tb1": ERROR: permission denied for table logical_tb1
2019-10-10 15:57:21.848 CST [24722] LOG: background worker "logical replication worker" (PID 27443) exited with exit code 1

因此 ,現在需要對復制用戶授權。

sourcedb=# GRANT USAGE ON SCHEMA public TO logical_repl;
GRANT
sourcedb=# GRANT SELECT ON logical_tb1 TO logical_repl;
GRANT

授權后,顯示正常。

2019-10-10 16:00:25.959 CST [28204] LOG: logical replication table synchronization worker for subscription "sub1", table "logical_tb1" has started
2019-10-10 16:00:25.967 CST [28204] LOG: logical replication table synchronization worker for subscription "sub1", table "logical_tb1" has finished

(9)測試數據同步

在邏輯主庫插入數據。

/** 在主庫插入數據 */ 
sourcedb=# insert into logical_tb1(id,name) values(1,'a'),(2,'bca');
INSERT 0 2

在邏輯從庫查看結果。

/** 查看數據是否同步完成 */ 
desdb=# select * from logical_tb1;
id | name
----+------
1 | a
2 | bca
(2 rows)

由此可見數據已同步完成。

(10)添加復制所需的表

在邏輯主庫和邏輯從庫均添加一張新表,并添加到發布列表中。

/** 主庫上創建表結構 */ 
sourcedb=# create table logical_tb2(id int primary key ,addr varchar(100));
CREATE TABLE
sourcedb=#
/** 從庫上創建表結構 */
desdb=# create table logical_tb2(id int primary key ,addr varchar(100));
CREATE TABLE
/** 在主庫上給邏輯復制賬號授權 */
sourcedb=# GRANT SELECT ON logical_tb2 TO logical_repl;
GRANT
/** 添加新表至發布列表 */
sourcedb=# ALTER PUBLICATION pub1 ADD TABLE logical_tb2;
ALTER PUBLICATION
/** 在主庫查看發布列表中的表名 */
sourcedb=# SELECT * FROM pg_publication_tables;
pubname | schemaname | tablename
---------+------------+-------------
pub1 | public | logical_tb1
pub1 | public | logical_tb2
(2 rows)

此時已加入一張表進入發布列表中。

此時在主庫寫入數據,查看從庫情況如下:

/** 主庫插入一條記錄 */ 
sourcedb=# insert into logical_tb2(id,addr) values(1,'beijing');
INSERT 0 1
/** 此時在邏輯從庫查看,結果卻沒有數據 */
desdb=# select * from logical_tb2;
id | addr
----+------
(0 rows)

因為還需要在從庫刷新一下訂閱。

/** 此時在從庫刷新訂閱 */ 
desdb=# ALTER SUBSCRIPTION sub1 REFRESH PUBLICATION;
/** 刷新完成后再查數據已經有數據了 */
ALTER SUBSCRIPTION
desdb=# select * from logical_tb2;
id | addr
----+---------
1 | beijing
(1 row)

至此,PostgreSQL的邏輯復制也部署完畢。

3、物理復制與邏輯復制特點和應用場景

PostgreSQL的邏輯復制與物理復制的差異比較突出,在使用中可以根據其特點選擇使用哪種復制方式。

  • 邏輯訂閱,適合于發布端與訂閱端都有讀寫的情況。
  • 邏輯訂閱,更適合于小事務,或者低密度寫(輕度寫)的同步。如果有大事務、高密度寫,邏輯訂閱的延遲相比物理復制更高。
  • 邏輯訂閱,適合于雙向,多向同步。
  • 物理復制,適合于單向同步。
  • 物理復制,適合于任意事務,任意密度寫(重度寫)的同步。
  • 物理復制,適合于HA、容災、讀寫分離。
  • 物理復制,適合于備庫沒有寫,只有讀的場景。
責任編輯:姜華 來源: 今日頭條
相關推薦

2023-03-19 11:53:27

2023-09-24 14:32:15

2023-07-03 08:57:45

Master服務TCP

2024-07-04 08:00:24

2025-02-10 10:55:16

2021-06-08 07:48:27

MySQL主從配置

2024-03-01 18:33:59

MySQL節點數據

2023-12-25 08:02:09

2021-03-19 11:33:42

MySQL數據庫備份

2017-09-05 16:00:49

MySQL主從復制備份

2017-10-11 15:40:20

MySQL主從復制拓撲結構

2022-12-20 08:46:41

MySQL主從復制

2021-05-20 06:49:45

MongoDB高可用數據庫

2025-01-15 15:47:36

2025-03-19 10:00:56

2022-01-10 07:59:14

PostgreSQl 主從流復制歸檔配置

2017-06-23 22:00:13

MySqlsslcentos

2023-04-06 13:15:48

MySQL復制原理應用實踐

2021-01-12 09:03:17

MySQL復制半同步

2020-04-14 16:26:22

MySQL線程同步
點贊
收藏

51CTO技術棧公眾號

男女私大尺度视频| 91久久久久久久久久久久久| 欧美 日本 国产| 亚洲黄色网址| 中文字幕一区二区在线观看| 99久久精品无码一区二区毛片 | 欧在线一二三四区| 在线免费观看黄色av| 国产精品99久久久久久久女警| 亚洲一级在线观看| 久久久com| 一区二区久久精品66国产精品| 午夜国产精品视频| 亚洲天堂精品在线| 国偷自产av一区二区三区麻豆| 亚洲啊v在线| 亚洲欧美日韩精品久久久久| 99精品在线直播| 国产精品视频一区在线观看| 在线精品小视频| 国产小视频国产精品| 69久久精品无码一区二区| 不卡一二三区| 亚洲在线一区二区三区| 亚欧洲精品在线视频免费观看| 午夜精品一区二区三区av| 国产精品欧美激情在线观看| 久久久久久久久免费视频| 97精品电影院| 不卡视频一区| 国产精品熟女久久久久久| 美女视频一区免费观看| 久久99精品久久久久久琪琪| 亚洲a∨无码无在线观看| 欧美freesex8一10精品| 日韩欧美一区二区久久婷婷| 亚洲免费看av| 在线免费av资源| 亚洲国产精品综合小说图片区| 亚洲一区二区三区精品在线观看| 三级无遮挡在线观看| 亚洲国产日本| 久久亚洲一区二区三区四区五区高 | 激情五月激情综合网| 国产精彩精品视频| 五月婷婷亚洲综合| 最新日韩av| 欧美激情一区二区三区成人| 精品一区在线观看视频| 亚洲午夜免费| 欧美精品一卡两卡| 日本不卡一区二区在线观看| 亚洲成人一区在线观看| 国产精品免费视频观看| 欧洲一区二区日韩在线视频观看免费 | 免费在线观看一区二区三区| 国产97色在线|日韩| av大片免费观看| 国产日韩欧美一区| 国语自产精品视频在免费| 特级西西人体wwwww| 美女国产精品久久久| 亚洲国产精品一区二区尤物区| 成人污网站在线观看| 91麻豆国产福利在线观看宅福利| 亚洲人精品午夜| 樱空桃在线播放| 中文字幕在线三区| 亚洲一区视频在线| 久久久999免费视频| 伊人色综合一区二区三区影院视频| 岛国视频午夜一区免费在线观看 | 黄网在线免费看| 亚洲成人动漫av| 欧美 日本 亚洲| 在线看欧美视频| 欧美喷潮久久久xxxxx| 精品综合久久久久| 日韩免费一级| 亚洲黄色av女优在线观看| 久久久久免费精品| 91亚洲天堂| 亚洲综合在线五月| 自慰无码一区二区三区| 欧美大片高清| 欧美精品欧美精品系列| 古装做爰无遮挡三级聊斋艳谭| 99精品中文字幕在线不卡 | 女女互磨互喷水高潮les呻吟| av永久不卡| 久久综合九色九九| 日韩免费观看一区二区| 日韩精品一区第一页| 成人欧美一区二区三区在线湿哒哒 | 国产一区视频观看| 国产专区在线| 亚洲精品乱码久久久久| 国产亚洲天堂网| 自拍偷拍亚洲图片| 亚洲精品国产精品乱码不99按摩 | 日本韩国一区二区三区视频| 亚洲免费在线播放视频| 蜜桃精品wwwmitaows| 另类视频在线观看| 国产又大又粗又爽| 国产福利一区在线观看| 欧美亚洲精品日韩| 麻豆av在线播放| 欧美色图天堂网| 黄色网址在线视频| 一区二区电影在线观看| 国产成人福利网站| 男人天堂网在线视频| 中文字幕视频一区二区三区久| av黄色在线网站| 欧美野外wwwxxx| 欧美在线一二三四区| 亚洲精品乱码久久久久久蜜桃欧美| 欧美精选视频在线观看| 性欧美亚洲xxxx乳在线观看| 国产又粗又长又黄| 国产亚洲精久久久久久| 国产av国片精品| 动漫一区二区三区| 在线午夜精品自拍| 日本视频在线观看免费| 成人激情综合网站| 裸体裸乳免费看| 另类一区二区| 尤物九九久久国产精品的分类| 在线观看亚洲天堂| 成人av免费在线观看| 成人在线免费高清视频| 国产一区二区高清在线| 中文字幕日韩av| 夜夜爽妓女8888视频免费观看| 99久久综合狠狠综合久久| 国产xxxx振车| 亚洲天堂中文字幕在线观看| 欧美成人精品三级在线观看| 国产在成人精品线拍偷自揄拍| 国产午夜亚洲精品不卡| 欧美精品一区二区三区免费播放| 极品束缚调教一区二区网站| 欧美激情在线狂野欧美精品| 精品人妻少妇嫩草av无码专区| ...xxx性欧美| 五月天开心婷婷| 91精品福利| 亚洲伊人第一页| 中日韩高清电影网| 欧美电影精品一区二区| 精品自拍偷拍视频| 国产精品一区免费视频| 91传媒免费视频| 999久久久精品一区二区| 久久99视频精品| 亚洲国产福利视频| 亚洲高清免费观看 | 男人天堂成人在线| 欧美精品一区二区久久| 国产欧美精品日韩精品| 成人影院www在线观看| 日韩一级免费观看| 国产老熟女伦老熟妇露脸| 亚洲第一伊人| 久久国产精品亚洲va麻豆| www.精品| 日韩在线观看免费av| 国产夫妻在线观看| 精品成人久久av| 中文字幕资源在线观看| 91精品综合| 国产精品日韩高清| 国产黄色在线网站| 欧美刺激脚交jootjob| 日韩av一二三区| 久久福利资源站| 大桥未久一区二区| 久久电影在线| 国产精品午夜一区二区欲梦| 影音先锋在线视频| 亚洲欧美日韩综合| 99国产精品欲| 第一福利永久视频精品| 国产91在线播放九色| 成人午夜在线播放| 欧美精品性生活| 国产精品sm| 日本一区视频在线观看| 国产精品成人国产| 欧美精品久久久久久久久久| 国产精品二线| 精品剧情v国产在线观看在线| 免费的毛片视频| 亚洲同性gay激情无套| www.超碰97| 国产精品99久久久| 男女啪啪网站视频| 偷拍一区二区| 成人黄色激情网| 午夜伦理福利在线| 久久色免费在线视频| 日韩电影在线观看完整版| 91精品欧美一区二区三区综合在 | 久久精品人人| 久久免费一级片| 欧美日韩在线播放视频| 国产伦理一区二区三区| 国产精品成人国产| 欧美最近摘花xxxx摘花| 蜜臀av在线| 日韩在线观看成人| 国产精品视频一区二区久久| 亚洲国模精品私拍| 精品人妻无码一区二区三区蜜桃一| 欧美在线免费播放| 九九热在线免费观看| 亚洲男人的天堂av| av黄色免费在线观看| 久久亚洲捆绑美女| 国产精品成人99一区无码| 国内精品在线播放| 国产理论在线播放| 久久精品中文| 亚洲午夜无码av毛片久久| 亚洲私人影院| 日本大胆人体视频| 一级欧洲+日本+国产| 影音先锋欧美资源| 日韩精品一区二区久久| 国产欧美日韩最新| 超碰porn在线| 日韩中文字幕视频在线| 欧美孕妇孕交| 精品一区二区三区四区| 日本高清视频在线| 亚洲国产小视频在线观看| 国精产品一品二品国精品69xx| 91精品免费在线观看| 一区二区三区播放| 欧美日韩小视频| 亚洲天堂网视频| 欧美日韩一区高清| 一级黄色片在线看| 欧美精品99久久久**| 国产又黄又粗又猛又爽| 制服.丝袜.亚洲.另类.中文| 国产又黄又爽视频| 日韩小视频在线观看专区| 精品国产黄色片| 精品国产一区a| 天堂网在线资源| 国产视频自拍一区| 久久久久久青草| 中文亚洲视频在线| 欧美13一16娇小xxxx| 亚洲白虎美女被爆操| 性少妇videosexfreexxx片| 日韩精品一区国产麻豆| 天天干天天舔天天射| 亚洲欧美国产日韩天堂区| 免费国产在线观看| 中文日韩电影网站| 影音先锋男人在线资源| 久久久久一本一区二区青青蜜月| 1024在线看片你懂得| 日本欧美黄网站| 欧美亚洲福利| 波多野结衣一区二区三区在线观看| 精品丝袜久久| 日韩高清dvd| 2023国产精品久久久精品双| 97超碰国产精品| 天堂一区二区在线| 精品国产鲁一鲁一区二区三区| 成人永久看片免费视频天堂| 欧美成人午夜精品免费| 国产精品1区二区.| 中文字幕乱码一区| 国产喷白浆一区二区三区| 老熟妇高潮一区二区三区| 亚洲va欧美va人人爽午夜 | 老司机亚洲精品| 日本精品一区在线| www国产成人| 午夜成人亚洲理伦片在线观看| 亚洲精品国产无天堂网2021| 午夜影院免费在线观看| 欧美精品视频www在线观看| 色窝窝无码一区二区三区成人网站 | 亚洲天堂一区二区三区四区| 久久国产精品视频在线观看| 99视频精品全国免费| 精品成在人线av无码免费看| 久久这里有精品15一区二区三区| 亚洲黄色片免费| 久久日韩粉嫩一区二区三区| 国产免费一区二区三区四区| 欧美色videos| 国内老熟妇对白hdxxxx| 亚洲日本成人网| 高清电影在线免费观看| 国产精品视频一| 首页亚洲中字| 日本高清xxxx| 日本视频一区二区三区| avtt中文字幕| 亚洲天堂网中文字| 中文字幕在线播| 色偷偷久久人人79超碰人人澡| 99精品国产99久久久久久97| 亚洲天堂视频在线观看| 888av在线视频| 91中文字精品一区二区| 成人综合一区| 中国人体摄影一区二区三区| 国产精品一二| 亚洲少妇一区二区三区| 成人免费在线视频观看| 成人免费一级片| 精品无码久久久久久国产| h片视频在线观看| 亚洲一区二区三区乱码aⅴ蜜桃女 亚洲一区二区三区乱码aⅴ | 99高清视频有精品视频| 99精品美女| 性欧美极品xxxx欧美一区二区| 91色视频在线| www.国产色| 亚洲激情电影中文字幕| 国产盗摄在线视频网站| 91精品国产高清久久久久久91裸体 | 日韩av在线免费观看一区| 日本高清成人vr专区| 亚洲一区二区三区在线视频| 999成人网| 日韩一级免费看| 国产在线看一区| 国产精品国产三级国产传播| 欧美视频在线一区| 国产高清视频在线播放| 国产精品极品在线| 欧美h版在线观看| 亚洲自拍的二区三区| 久久国产剧场电影| 麻豆天美蜜桃91| 这里是久久伊人| 日本大胆在线观看| 国产欧美一区二区三区不卡高清| 在线精品在线| 亚洲人人夜夜澡人人爽| 欧美午夜精品久久久久久人妖 | 成人精品毛片| aa视频在线播放| 99re热这里只有精品视频| 久久久久久少妇| 亚洲天堂av图片| 日韩欧美专区| 日日噜噜夜夜狠狠久久丁香五月| 国产激情91久久精品导航| 久久久久黄色片| 在线中文字幕不卡| 成人三级黄色免费网站| 国产美女久久精品| 综合精品一区| 久草视频福利在线| 色先锋资源久久综合| 日本视频在线播放| 国产91色在线|亚洲| 午夜一级在线看亚洲| 亚洲色图 激情小说| 午夜精品成人在线视频| 深夜视频在线免费| 欧美大片在线影院| 国产图片一区| 18视频在线观看娇喘| 国产成人久久精品77777最新版本| 国产精品.www| 亚洲午夜精品视频| 国内精品视频| 国产精品va无码一区二区| 亚洲国产精品激情在线观看| 成人h动漫精品一区二区无码| 91a在线视频| 久久久久国产精品| 三叶草欧洲码在线| 欧美久久久久中文字幕| a在线视频v视频| 一区二区免费电影| a级精品国产片在线观看| 中文字幕在线视频免费| 亚洲另类欧美自拍| 日韩毛片免费看| 国产综合av在线| 中文字幕一区二区三区在线观看| 欧美熟妇乱码在线一区| 国产在线不卡精品| 亚洲综合欧美| 九九热只有精品| 在线成人中文字幕|