亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

PgSQL · 特性分析 · PG主備流復制機制

2024-07-21 02:51:34
字體:
來源:轉載
供稿:網友

PostgreSQL在9.0之后引入了主備流復制機制,通過流復制,備庫不斷的從主庫同步相應的數據,并在備庫apply每個WAL record,這里的流復制每次傳輸單位是WAL日志的record。而PostgreSQL9.0之前提供的方法是主庫寫完一個WAL日志文件后,才把WAL日志文件傳送到備庫,這樣的方式導致主備延遲特別大。同時PostgreSQL9.0之后提供了Hot Standby,備庫在應用WAL record的同時也能夠提供只讀服務,大大提升了用戶體驗。

主備總體結構

PG主備流復制的核心部分由walsender,walreceiver和startup三個進程組成。walsender進程是用來發送WAL日志記錄的,執行順序如下:

PostgresMain()->exec_replication_command()->StartReplication()->WalSndLoop()->XLogSendPhysical()

walreceiver進程是用來接收WAL日志記錄的,執行順序如下:

sigusr1_handler()->StartWalReceiver()->AuxiliaryPRocessMain()->WalReceiverMain()->walrcv_receive()

startup進程是用來apply日志的,執行順序如下:

PostmasterMain()->StartupDataBase()->AuxiliaryProcessMain()->StartupProcessMain()->StartupXLOG()

下圖是PG主備總體框架圖:

PG主備總體框架圖

圖1. PG主備總體框架圖

walsender和walreceiver進程流復制過程

walsender和walreceiver交互主要分為以下幾個步驟:

walreceiver啟動后通過recovery.conf文件中的primary_conninfo參數信息連向主庫,主庫通過連接參數replication=true啟動walsender進程;walreceiver執行identify_system命令,獲取主庫systemid/timeline/xlogpos等信息,執行TIMELINE_HISTORY命令拉取history文件;執行wal_startstreaming開始啟動流復制,通過walrcv_receive獲取WAL日志,期間也會回應主庫發過來的心跳信息(接收位點、flush位點、apply位點),向主庫發送feedback信息(最老的事務id),避免vacuum刪掉備庫正在使用的記錄;執行walrcv_endstreaming結束流復制,等待startup進程更新receiveStart和receiveStartTLI,一旦更新,進入步驟2。PG流復制過程

圖2. PG流復制過程

walreceiver和startup進程

startup進程進入standby模式和apply日志主要過程:

讀取pg_control文件,找到redo位點;讀取recovery.conf,如果配置standby_mode=on則進入standby模式。如果是Hot Standby需要初始化clog、subtrans、事務環境等。初始化redo資源管理器,比如Heap、Heap2、Database、XLOG等。讀取WAL record,如果record不存在需要調用XLogPageRead->WaitForWALToBecomeAvailable->RequestXLogStreaming喚醒walreceiver從walsender獲取WAL record。

對讀取的WAL record進行redo,通過record->xl_rmid信息,調用相應的redo資源管理器進行redo操作。比如heap_redo的XLOG_HEAP_INSERT操作,就是通過record的信息在buffer page中增加一個record:

 MemSet((char *) htup, 0, sizeof(HeapTupleHeaderData)); /* PG73FORMAT: get bitmap [+ padding] [+ oid] + data */ memcpy((char *) htup + offsetof(HeapTupleHeaderData, t_bits), 	   (char *) xlrec + SizeOfHeapInsert + SizeOfHeapHeader, 	   newlen); newlen += offsetof(HeapTupleHeaderData, t_bits); htup->t_infomask2 = xlhdr.t_infomask2; htup->t_infomask = xlhdr.t_infomask; htup->t_hoff = xlhdr.t_hoff; HeapTupleHeaderSetXmin(htup, record->xl_xid); HeapTupleHeaderSetCmin(htup, FirstCommandId); htup->t_ctid = xlrec->target.tid; offnum = PageAddItem(page, (Item) htup, newlen, offnum, true, true); if (offnum == InvalidOffsetNumber) 	elog(PANIC, "heap_insert_redo: failed to add tuple"); freespace = PageGetHeapFreeSpace(page);		/* needed to update FSM below */ PageSetLSN(page, lsn); if (xlrec->flags & XLOG_HEAP_ALL_VISIBLE_CLEARED) 	PageClearAllVisible(page); MarkBufferDirty(buffer);

還有部分redo操作(vacuum產生的record)需要檢查在Hot Standby模式下的查詢沖突,比如某些tuples需要remove,而存在正在執行的query可能讀到這些tuples,這樣就會破壞事務隔離級別。通過函數ResolveRecoveryConflictWithSnapshot檢測沖突,如果發生沖突,那么就把這個query所在的進程kill掉。

檢查一致性,如果一致了,Hot Standby模式可以接受用戶只讀查詢;更新共享內存中XLogCtlData的apply位點和時間線;如果恢復到時間點,時間線或者事務id需要檢查是否恢復到當前目標;回到步驟3,讀取next WAL record。PG rstandby模式和apply日志過程

圖3. PG standby模式和apply日志過程


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91高清视频在线免费观看| 色爱精品视频一区| 亚洲人在线视频| 精品国产精品三级精品av网址| 日韩欧美在线网址| 欧美在线中文字幕| 久国内精品在线| 久久久噜噜噜久久中文字免| 国产91网红主播在线观看| 国产精品久久久久久久久久久久久| 国产精品精品视频| 日韩亚洲欧美中文在线| 日韩在线视频二区| 久久久久久久激情视频| 欧美一区二区视频97| 中文字幕亚洲色图| 亚洲女人初尝黑人巨大| 亚洲国产一区二区三区在线观看| 亚洲精品国精品久久99热一| 92国产精品视频| 久久久中精品2020中文| 色综合久久久久久中文网| 亚洲一区二区三区乱码aⅴ| 97av在线视频| 91亚洲精品久久久久久久久久久久| 国产精品91久久久| 国产精品亚洲美女av网站| 亚洲欧美另类在线观看| 欧美大学生性色视频| 69**夜色精品国产69乱| 日韩av在线免播放器| 欧美亚洲一级片| 国产精品久久久久久超碰| 91在线国产电影| 国产成人av网址| 欧美视频不卡中文| 日韩乱码在线视频| 国产精品激情av在线播放| 亚洲成年人在线| 国产精品久久不能| 精品久久久久国产| 亚洲午夜未删减在线观看| 国产精品久久99久久| 亚洲国产精品美女| 亚洲日本欧美中文幕| 九九九久久久久久| 亚洲va久久久噜噜噜| 日韩网站在线观看| 亚洲精品国产精品乱码不99按摩| 777午夜精品福利在线观看| 2024亚洲男人天堂| 久久久人成影片一区二区三区| 日韩av在线免费观看| 成人在线国产精品| 亚洲日韩中文字幕| 海角国产乱辈乱精品视频| 亚洲激情久久久| 国产精品男人爽免费视频1| 日韩中文av在线| 欧美在线性视频| 亚洲国产精品yw在线观看| 一本大道亚洲视频| 亚洲综合在线播放| 国产精品天天狠天天看| 91精品在线一区| 国产精品一区av| 国产亚洲精品久久久久久777| 日av在线播放中文不卡| 久久久www成人免费精品| 亚洲福利视频二区| 96精品久久久久中文字幕| 亚洲另类xxxx| 国产男人精品视频| 亚洲一区二区日本| 97avcom| 91精品视频在线免费观看| 欧美电影免费观看大全| 国产99久久精品一区二区永久免费| 丝袜美腿精品国产二区| 亚洲午夜精品久久久久久久久久久久| 亚州av一区二区| 亚洲精品久久久久中文字幕欢迎你| 免费91在线视频| 97在线视频观看| 日韩在线激情视频| 91网站在线看| 欧美色视频日本高清在线观看| 国产精品嫩草影院一区二区| 国产视频精品自拍| 中文字幕日韩免费视频| 2019国产精品自在线拍国产不卡| 欧洲精品在线视频| 亚洲精品国产综合久久| 日韩精品免费视频| 日韩中文字幕在线视频播放| 日韩精品中文字幕在线观看| 国产香蕉精品视频一区二区三区| 久久综合国产精品台湾中文娱乐网| 久久影视电视剧免费网站清宫辞电视| 国产精品久久久久7777婷婷| 亚洲色图综合久久| 中文字幕av一区二区三区谷原希美| 欧美日韩aaaa| 亚洲一区二区久久久久久久| 亚洲成在人线av| 亚洲激情成人网| 九九久久国产精品| 久久亚洲成人精品| 77777亚洲午夜久久多人| 欧美视频专区一二在线观看| 69视频在线播放| 欲色天天网综合久久| 在线观看日韩专区| 久久在线精品视频| 午夜精品视频在线| 日本高清久久天堂| 欧美成人午夜免费视在线看片| 欧美亚洲午夜视频在线观看| 91精品国产高清久久久久久| 国产香蕉精品视频一区二区三区| 欧美成人免费va影院高清| 美女999久久久精品视频| 国产精品久久久久久久app| 成人福利在线观看| 久久天堂av综合合色| 57pao成人国产永久免费| 国内精品一区二区三区| 国产精品人成电影| 伊人亚洲福利一区二区三区| 91在线色戒在线| 中文字幕精品一区久久久久| 色偷偷噜噜噜亚洲男人的天堂| 激情av一区二区| 韩剧1988在线观看免费完整版| 久久精品国产一区二区三区| 日韩最新中文字幕电影免费看| 亚洲综合色激情五月| 午夜免费在线观看精品视频| 久久久久久中文字幕| 国产精品免费福利| 欧美大片免费观看在线观看网站推荐| 欧美另类极品videosbestfree| 久久精品99国产精品酒店日本| 日本中文字幕不卡免费| 国产精品网红福利| 欧美视频中文字幕在线| 日本成人激情视频| 成人性生交大片免费看视频直播| 久久色免费在线视频| 成人淫片在线看| 成人在线精品视频| 国产精品影片在线观看| 成人h猎奇视频网站| 国产亚洲成av人片在线观看桃| 青草青草久热精品视频在线观看| 国产精品91在线观看| 国产成人精品网站| 91在线观看免费高清完整版在线观看| 日韩av综合中文字幕| 国外成人免费在线播放| 黑人精品xxx一区一二区| 欧美在线视频免费| 欧美三级xxx| 5252色成人免费视频|