圖書目錄
第1章 高可用概述 / 1
1.1 什麼是高可用 / 1
1.1.1 概述 / 1
1.1.2 相關指標 / 2
1.2 高可用設計概述 / 3
1.2.1 容災冗餘設計概述 / 3
1.2.2 高可用技術概覽 / 5
第2章 代理和連線池 / 7
2.1 代理和連線池架構 / 7
2.2 通過HAProxy實現代理 / 8
2.2.1 HAProxy概念 / 8
2.2.2 安裝HAProxy / 9
2.2.3 啟動HAProxy / 12
2.3 PgBouncer / 12
2.3.1 安裝PgBouncer / 13
2.3.2 PgBouncer基本配置 / 14
2.3.3 使用PgBouncer / 16
2.3.4 監控PgBouncer / 19
2.3.5 線上配置PgBouncer / 21
2.3.6 增強PgBouncer用戶訪問 / 21
2.4 Odyssey / 24
2.4.1 Odyssey的作用 / 24
2.4.2 安裝Odyssey / 25
2.4.3 配置Odyssey / 25
2.4.4 啟動Odyssey / 26
2.5 虛擬IP位址高可用 / 26
2.5.1 Keepalived實現原理 / 26
2.5.2 安裝Keepalived / 27
2.5.3 HAProxy與PgBouncer部署 / 28
第3章 PostgreSQL流複製 / 33
3.1 流複製概念 / 33
3.2 PostgreSQL流複製歷程 / 33
3.3 流複製基礎——WAL / 35
3.3.1 WAL概念 / 35
3.3.2 WAL日誌檔案 / 35
3.3.3 WAL日誌詳情舉例 / 37
3.4 物理流複製 / 39
3.4.1 物理流複製的原理 / 40
3.4.2 流複製同步級別控制 / 40
3.4.3 物理流複製的特點 / 41
3.4.4 物理流複製的搭建 / 43
3.4.5 物理流複製監控視圖 / 50
3.4.6 主從切換 / 52
3.5 邏輯複製 / 58
3.5.1 邏輯複製的原理 / 58
3.5.2 邏輯複製的特點 / 59
3.5.3 邏輯複製的關鍵步驟 / 60
3.5.4 邏輯複製的角色 / 62
3.5.5 搭建邏輯複製 / 63
3.5.6 邏輯複製監控視圖 / 68
第4章 備份恢復管理 / 72
4.1 備份恢復管理概述 / 72
4.2 原生備份恢復工具 / 72
4.2.1 邏輯備份和恢復 / 72
4.2.2 物理備份和恢復 / 78
4.2.3 增量備份和恢復 / 87
4.3 第三方備份恢復工具之pg_probackup / 96
4.3.1 pg_probackup概述 / 96
4.3.2 pg_probackup的安裝和配置 / 98
4.3.3 使用pg_probackup 備份資料庫 / 99
4.3.4 使用pg_probackup 恢複數據庫 / 102
4.4 第三方備份恢復工具之pgBackRest / 107
4.4.1 pgBackRest概述 / 107
4.4.2 安裝和部署 / 108
4.4.3 使用和管理 / 109
4.5 第三方備份恢復工具之pg_rman / 117
4.5.1 pg_rman概述 / 117
4.5.2 安裝和部署 / 118
4.5.3 使用和管理 / 118
第5章 使用repmgr實現高可用性 / 124
5.1 repmgr介紹 / 124
5.1.1 全棧架構 / 124
5.1.2 repmgr兼容矩陣 / 127
5.1.3 概念介紹 / 127
5.1.4 推薦架構 / 128
5.2 安裝和部署 / 130
5.2.1 環境準備 / 130
5.2.2 yum源安裝 / 132
5.2.3 原始碼安裝 / 133
5.3 集群配置 / 134
5.3.1 配置主庫 / 134
5.3.2 配置克隆從庫 / 138
5.3.3 見證服務 / 140
5.4 服務管理 / 142
5.4.1 手動故障切換 / 142
5.4.2 自動故障轉移 / 146
5.4.3 IP自動漂移 / 149
5.4.4 管理命令說明 / 152
5.5 線上維護和升級 / 153
5.5.1 升級說明 / 153
5.5.2 升級主要版本 / 154
5.5.3 升級次要版本 / 157
第6章 使用Patroni實現高可用性 / 158
6.1 Patroni概述 / 158
6.1.1 Patroni架構及功能 / 158
6.1.2 Patroni REST API / 160
6.1.3 Watchdog支持 / 165
6.1.4 Patroni的安全性 / 166
6.1.5 在Kubernetes下使用Patroni / 167
6.2 相關組件介紹 / 167
6.2.1 Patroni與HAProxy / 167
6.2.2 Patroni與etcd / 168
6.3 安裝和配置 / 169
6.3.1 軟體版本 / 169
6.3.2 環境信息 / 169
6.3.3 安裝和配置etcd / 169
6.3.4 安裝和配置PostgreSQL / 171
6.3.5 安裝和配置Patroni / 174
6.3.6 集群間的級聯複製 / 178
6.3.7 安裝和配置HAProxy / 179
6.4 線上維護和升級 / 181
6.4.1 將獨立版本轉換為Patroni集群 / 181
6.4.2 PostgreSQL版本升級 / 181
6.5 日常操作 / 182
6.5.1 修改PostgreSQL參數 / 183
6.5.2 查看Patroni節點狀態 / 183
6.6 多主機URL客戶端訪問配置 / 184
第7章 多主複製高可用 / 186
7.1 多主節點介紹 / 186
7.2 確定多主節點是否適合當前需求 / 188
7.3 安裝BDR / 190
7.3.1 單BDR節點 / 192
7.3.2 創建一個額外的BDR節點 / 193
7.3.3 在每個節點上測試DDL複製 / 196
7.4 安全使用序列 / 199
7.4.1 使用序列 / 199
7.4.2 分配全局序列 / 201
7.5 為多主節點方法配置HAProxy / 202
7.6 執行託管節點切換 / 205
7.7 提高故障切換速度 / 207
7.8 線上執行重大版本升級 / 209
作者簡介
崔鵬,畢業於哈爾濱工業大學。2020年獲得中國首批PostgreSQL認證專家(PGCM),PostgreSQL官方認證講師,盤古雲課堂特邀金牌講師,榮獲2020年度開源資料庫最佳翻譯獎,Oracle 12c OCP、Oracle 11g OCM、MySQL 5.7 / 8.0 OCP等。海能達通信股份有限公司資料庫技術經理,主導完成公司全部業務線從Oracle、MySQL遷移至PostgreSQL,同時負責高可用架構設計等工作。