原创 PostgreSQL備機checkpoint
數據庫異常關閉時,數據庫關閉時來不及或者沒機會做checkpoint,則需要從上一個一致性檢查的開始恢復。 PostgreSQL備機checkpoint是不能產生checkpoint WAL的,因爲如果寫這樣類型的checkpo
原创 PostgreSQL邏輯備份pg_dump使用及其原理解析
一、原理分析 1、循環調用getopt_long解析命令行參數,將參數保存到static DumpOptions dopt;中2、判斷參數是否相容,不相容則退出: options -s/--schema-only and -a/--
原创 PostgreSQL邏輯備份恢復--pg_dump導出及psql導入案例
數據庫導入導出是最常用的功能之一。PostgreSQL的備份工具可以使用pg_dump及pg_dumpall。可以通過pg_dump --help獲取其使用方法。這裏不對其做過多介紹。主要介紹在使用pg_dump及恢復過程中遇到的一個問題。
原创 PostgreSQL用戶密碼如何通過md5加密存儲,是否加了salt
一、PG用戶的密碼如何通過md5加密,並且是否加了salt?本文將從源碼角度跟蹤分析。 PG用戶通過md5加密時,加了salt,而這個salt是用戶名字符串。 二、源碼分析 CreateRole: shadow_pass = enc
原创 PostgreSQL如何刪除不使用的xlog文件
一、問題經常會在複製的時候遇到這樣的問題,需要複製的xlog文件找不到了。那麼xlog文件什麼時候刪除?又會刪除多少保留多少個xlog文件?都有哪些xlog文件需要保留?本文將從原理上對這些問題進行解讀。 二、原理每次checkpoint後
原创 PostgreSQL構建流複製拉取日誌的起始位置在哪裏
WaitForWALToBecomeAvailable: if (!InArchiveRecovery) currentSource = XLOG_FROM_PG_WAL; else if (currentS
原创 PostgreSQL啓動恢復期間,恢復到的時間線的確定
1、啓動恢復時,確定恢復到的時間線recoveryTargetTLI 1)歸檔恢復點比checkpoint中記錄的時間線大,那麼選擇歸檔恢復點作爲目標時間線 2)否則,checkpoint記錄中的時間線作爲目標時間線StartupXLOG-
原创 PostgreSQL checkpoint--shutdown
PostgreSQL在shutdown時會進行checkpoint。其流程如下。 1、在主進程中,會首先註冊一個信號處理函數reaper,用於向checkpoint等子進程發送信號。向checkpoint進程發送SIGUSR2信號 Post
原创 PostgreSQL pg_ctl start超時分析
一、問題pg_ctl start啓動時報錯退出:pg_ctl:server did not start in time。超時時間是多少?從什麼時候到哪個階段算超時? 二、分析:該信息打印位置,從後面代碼段do_start函數中可以看出1、p
原创 PostgreSQL server端接收連接後fork進程
main->PostmasterMain->ServerLoop: for(;;){ ... //會阻塞在這,監視文件描述符的變化 selres = select(nSockets, &rmask, NULL, NULL, &
原创 死鎖案例二
1、環境說明MySQL5.6.33,隔離級別是RR。表結構及數據:Create table t1(id int not null primary key auto_increment,c1 int,c2 int,c3 int, unique
原创 PostgreSQL狀態變遷
typedef enum DBState { DB_STARTUP = 0, DB_SHUTDOWNED, DB_SHUTDOWNED_IN_RECOVERY, DB_SHUTDOWNING, DB_IN_CRASH_RECOVE
原创 PostgreSQL pg_rewind原理
一、背景常見的高可用架構中,如果master掛了且有數據沒有同步到備,高可用系統會提升備爲主對外服務。對於老主有可能再以備的身份加入集羣時,可能搭建流複製關係失敗。可以用pg_rewind工具使主備的數據一致。 二、pg_rewind原理三
原创 死鎖案例三
1、環境說明MySQL5.6.33,隔離級別是RR。表結構及數據:create table t2 ( id int primary key auto_increment , c1 int , c2 int , key (c1