精品欧美一区二区三区在线观看 _久久久久国色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丨九色丨国产| 日韩精品视频免费看| 免费看av成人| 欧美一区二区三区系列电影| 水蜜桃色314在线观看| 国产九九在线| 国产激情一区二区三区| 高清一区二区三区日本久| 亚洲熟妇一区二区三区| 亚洲一区二区av| 图片区小说区国产精品视频| 无码免费一区二区三区免费播放| 99精品视频免费看| 美女视频一区免费观看| 欧美成人剧情片在线观看| 久久久久久久久免费看无码 | 亚洲国产电影在线观看| 成人久久18免费网站漫画| 人妻 日韩精品 中文字幕| 欧美777四色影| 色噜噜国产精品视频一区二区| 伊人久久久久久久久| 小明成人免费视频一区| 午夜精品一区二区三区免费视频| 亚洲国产精品毛片| 婷婷久久久久久| 国产精品一区二区x88av| 国产精品美女午夜av| 国产又黄又爽又色| 精品999日本| 欧美成人精品一区二区| 肉色超薄丝袜脚交69xx图片| 久久最新网址| 精品视频在线导航| 在线免费看黄色片| 欧美成年网站| 欧美日韩国产高清一区二区三区| 日本一极黄色片| 性国裸体高清亚洲| 亚洲第一成年网| 欧美国产视频一区| 99热国产在线| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲不卡一卡2卡三卡4卡5卡精品| 神马午夜精品95| 国产精品一区一区| 亚洲自拍偷拍一区| 国产日韩在线观看一区| 国模无码大尺度一区二区三区| 国产精品久久久| 激情五月婷婷网| 另类图片国产| 欧洲亚洲妇女av| 久久国产黄色片| 免费在线亚洲| 日本精品视频在线| 欧美啪啪小视频| 久久精品盗摄| 国产精品久久久久99| 9i精品福利一区二区三区| 久久精品主播| 国产精品视频成人| 国产精品伦一区二区三区| 好操啊在线观看免费视频| av欧美精品.com| 激情五月综合色婷婷一区二区| 亚洲国产精品18久久久久久| 国产福利91精品| 国产精品一区二区三区不卡| 日本黄色免费视频| 久久久国产综合精品女国产盗摄| 日韩国产精品一区二区| 秋霞a级毛片在线看| 亚洲日本在线看| 久久www视频| 国产夫妻在线播放| 91久久国产综合久久| 欧美婷婷精品激情| 99视频有精品高清视频| 精品美女一区二区| 大又大又粗又硬又爽少妇毛片| 国产一区二区三区电影在线观看| 丝袜亚洲欧美日韩综合| 男的操女的网站| 亚洲一级黄色| 国产精品第七十二页| 99热这里是精品| 97久久精品人人澡人人爽| 欧洲精品在线一区| 成人黄色网址| 欧美日韩国内自拍| 一起操在线视频| 风间由美性色一区二区三区四区| 亚洲一区二区久久| 日本少妇高清视频| 美女久久网站| 国产a一区二区| 成人性生交大片免费看午夜 | 欧美不卡在线一区二区三区| 成人精品福利| 亚洲国产成人va在线观看天堂| 97在线免费公开视频| 国产精品欧美一区二区三区不卡| 亚洲精品成人av| frxxee中国xxx麻豆hd| 中日韩精品视频在线观看| 日韩久久精品| 午夜精品一区二区三区在线播放 | 国产熟妇久久777777| 欧州一区二区| 韩剧1988免费观看全集| 国产精品毛片一区视频播| 久久综合久久鬼色| 久久久久久久香蕉| 日韩一级视频| 国产一区二区三区在线| 国产成人无码精品| 国产在线视频一区二区| 欧美一区二区三区精美影视| 欧美人与性动交α欧美精品图片| 欧美午夜免费电影| 无码熟妇人妻av| 一区三区视频| 99精品欧美一区二区三区| 91伦理视频在线观看| 欧美日韩免费区域视频在线观看| 四虎1515hh.com| 欧美hd在线| 国产不卡精品视男人的天堂| 手机看片福利在线| 亚洲国产日韩av| 欧美69精品久久久久久不卡| 99久久久久国产精品| 国产激情久久久久| 日韩大胆视频| 精品国产乱码久久久久久天美 | www.久久精品| 欧美a级免费视频| 国产精品亚洲欧美一级在线| 综合网日日天干夜夜久久| 黄色在线免费观看| 成人高清在线| 亚洲视频在线一区观看| 色婷婷成人在线| 欧洲杯半决赛直播| 国产精品欧美风情| 成年人在线视频免费观看| 日本高清视频一区二区| 午夜在线观看一区| 日韩高清电影一区| 日韩精品资源| 免费成人黄色网| 久久精品国产一区二区三区| 91精品在线视频观看| 中文字幕一区视频| 欧美精品 - 色网| 你懂的国产精品永久在线| 91超碰在线电影| www.youjizz.com在线| 亚洲精品videossex少妇| 亚洲久久在线观看| 国产亚洲一区二区三区在线观看| 亚洲一二三区av| 日韩在线观看电影完整版高清免费悬疑悬疑 | 青青草视频成人| 久久狠狠一本精品综合网| 欧美一区二区视频在线| 播放一区二区| 久久视频中文字幕| 内射无码专区久久亚洲| 色综合天天综合网国产成人综合天| 国精产品一区一区三区免费视频| 日韩av电影一区| 手机看片日韩国产| 国产66精品| 国产精品99久久久久久www | 色中色综合影院手机版在线观看| 午夜久久久久久久久久| 黄网站色欧美视频| 国产精品久久久久久久av| 国内成人免费视频| 欧美不卡在线播放| 精品国产成人| 亚洲综合在线播放| 超碰一区二区| www.日韩av.com| 黄色一级大片在线免费看国产一| 色综合久久中文字幕| fc2ppv在线播放| 成人高清视频在线| 制服丝袜综合网| 亚洲东热激情| 一区二区三区av在线| 国产精品自在线拍| 国产精品网址在线| 超碰在线视屏| 久久激情视频免费观看| 深夜福利在线观看直播| 秋霞午夜av一区二区三区| 自拍偷拍99| 欧美电影完整版在线观看| 国产精品亚洲第一区| 999精品网| 久久久精品一区二区三区| 三级av在线播放| 日韩一本二本av| 最近中文字幕在线视频| 亚洲国产毛片aaaaa无费看| 99精品欧美一区二区| 懂色av一区二区三区免费观看| 中文久久久久久| aⅴ色国产欧美| 狠狠噜天天噜日日噜| 日韩欧美视频专区| 欧美精品一区二区三区在线看午夜 | 欧美限制电影| 精品综合在线| 伊人精品综合| 国产中文字幕日韩| 朝桐光一区二区| 欧美性受xxx| 久久香蕉一区| 大胆人体色综合| 99se视频在线观看| 亚洲欧洲日产国码av系列天堂| 亚洲精品视频专区| 欧美一级二级三级乱码| 国产一区二区三区黄片| 欧美影视一区二区三区| 久久久精品视频网站| 无吗不卡中文字幕| 五月天丁香综合久久国产| www.亚洲免费| 国产美女永久免费无遮挡| av不卡在线观看| 动漫美女无遮挡免费| 国产乱码精品一区二区三区av| 91高清国产视频| 久久国产麻豆精品| 久久久久久久片| 久久av在线| 无码人妻精品一区二区三区在线 | 久久久一区二区三区捆绑**| 国产十八熟妇av成人一区| 成人性生交大片免费| 苍井空张开腿实干12次| 国产xxx精品视频大全| 亚洲成人av免费观看| 国产精一品亚洲二区在线视频| 爱爱爱爱免费视频| 经典三级在线一区| 亚洲欧美日韩一二三区| 国产精一区二区三区| 中文字幕18页| 成人av在线看| mm131美女视频| 国产免费成人在线视频| 精品丰满少妇一区二区三区| 国产精品人人做人人爽人人添 | 亚洲黄色性网站| 欧美卡一卡二卡三| 亚洲国产日韩在线一区模特| 日本中文字幕免费观看| 福利视频一区二区| 伊人久久久久久久久久久久| 欧美亚洲一区二区在线| 91精品视频免费在线观看| 日韩亚洲欧美中文三级| 成人免费观看在线视频| 亚洲精品国产拍免费91在线| 欧美一区二区三区少妇| 中文字幕亚洲图片| 国产剧情在线| 国模视频一区二区三区| 中文字幕乱码在线播放| 国产精品视频精品| 秋霞影院一区| 欧美成人免费在线| 日韩毛片视频| 国产aaa免费视频| 日韩国产欧美视频| 亚洲av无码久久精品色欲| 99久久精品国产导航| youjizz亚洲女人| 亚洲一区二区三区中文字幕| aaaaaa毛片| 日韩一区二区高清| 日本视频在线观看一区二区三区| 最近2019中文字幕在线高清| 美足av综合网| 国产精品成人va在线观看| 欧美日韩中出| 欧美日韩国产综合在线| 亚洲综合自拍| 久久美女福利视频| 国内精品写真在线观看| 三上悠亚ssⅰn939无码播放| 亚洲免费在线电影| 国产视频1区2区| 欧美成va人片在线观看| 久草视频在线看| 色综合久久88| 成人国产精品一区二区免费麻豆| 国产日韩欧美一区二区三区四区| 日韩欧美二区| 91黄色小网站| 国产 欧美在线| 免费成人深夜蜜桃视频| 日韩欧美精品免费在线| 性一交一乱一精一晶| 色哟哟网站入口亚洲精品| 综合日韩av| 国产欧美一区二区视频| 欧美在线网址| 国产成年人视频网站| 91丨国产丨九色丨pron| 久久精品视频免费在线观看| 欧洲激情一区二区| 偷拍精品一区二区三区| 欧美精品在线极品| 精品久久在线| 日韩av影视| 免费看的黄色欧美网站| 东京热av一区| 亚洲综合在线第一页| 91国内精品视频| 中文字幕在线成人| 午夜av成人| 欧美一区二区福利| 欧美亚洲一区| 在线观看日韩精品视频| 亚洲图片有声小说| 性做久久久久久久久久| 欧美成人精品h版在线观看| 69堂免费精品视频在线播放| 久久久久久久久久久久久久久久av | 亚洲福利av| 天堂一区二区在线| 精品人妻互换一区二区三区| 欧美日韩国产一区中文午夜| 天天综合在线视频| 2019日本中文字幕| 婷婷精品在线观看| 国产成人无码精品久久久性色| 成人99免费视频| 久久草视频在线| 精品中文字幕久久久久久| 伊人网在线播放| 欧美日韩亚洲在线| 视频一区在线播放| 1024手机在线观看你懂的| 美女一区二区视频| 国产欧美日韩一区| 国产精品啊啊啊| 中文字幕无人区二| 亚洲一级电影视频| 神马午夜一区二区| 日本最新高清不卡中文字幕| 精品国产一区一区二区三亚瑟| 国产精彩免费视频| 国产嫩草影院久久久久| 一区二区三区精| 萌白酱国产一区二区| 加勒比视频一区| 欧美精品第三页| 国产精品久久久99| www.蜜臀av| 亲子乱一区二区三区电影| 国内黄色精品| 激情在线观看视频| 亚洲国产成人va在线观看天堂| 你懂的视频在线观看| 成人av资源在线播放| 国内视频精品| 中文字幕高清视频| 欧美男人的天堂一二区| 免费在线观看的电影网站| 精品亚洲欧美日韩| 蜜臀a∨国产成人精品| 国产高潮国产高潮久久久91| 亚洲成av人乱码色午夜| 中文字幕高清在线播放| 中文字幕99| 99久久精品99国产精品| 天天爱天天做天天爽| 久久久国产视频91| 欧美顶级毛片在线播放| 中文字幕永久视频| 亚洲精品成a人| 国内精品在线视频| 97免费资源站| 日韩在线一区二区| 免费中文字幕在线观看| 亚洲三级黄色在线观看| 欧美一级大片在线视频| 精品www久久久久奶水| 一区二区三区在线视频观看58|