關(guān)于我們
書單推薦
新書推薦
|
PostgreSQL修煉之道:從小工到專家(第2版) 讀者對(duì)象:1. 數(shù)據(jù)庫(kù)入門者。本書是一本入門數(shù)據(jù)庫(kù)的書籍,通過(guò)學(xué)習(xí)本書和相關(guān)的數(shù)據(jù)庫(kù)知識(shí),可以讓一個(gè)對(duì)數(shù)據(jù)庫(kù)了解不是很深的數(shù)據(jù)庫(kù)愛(ài)好者成為數(shù)據(jù)庫(kù)專家。2. 非PostgreSQL數(shù)據(jù)庫(kù)的D
本書分為四大部分,分別為準(zhǔn)備篇、基礎(chǔ)篇、提高篇和配套開源軟件及架構(gòu)篇。準(zhǔn)備篇為沒(méi)有數(shù)據(jù)庫(kù)基礎(chǔ)的讀者準(zhǔn)備的,如果讀者已經(jīng)具備了一定的數(shù)據(jù)庫(kù)基礎(chǔ),可以跳過(guò)其中的一些內(nèi)容。基礎(chǔ)篇介紹了PostgreSQL數(shù)據(jù)庫(kù)中的一些基礎(chǔ)內(nèi)容,讀者學(xué)習(xí)完此篇可以完成基本的PostgreSQL數(shù)據(jù)庫(kù)的日常操作工作。提高篇講解了一些更深的內(nèi)容,如PostgreSQL的一些技術(shù)內(nèi)幕、特色功能、優(yōu)化等方面的內(nèi)容,讀者仔細(xì)閱讀此篇以便早日成為PostgreSQL數(shù)據(jù)庫(kù)高手。第三方開源軟件及架構(gòu)篇講解了與PostgreSQL數(shù)據(jù)庫(kù)配套使用的一些常用的開源軟件及架構(gòu)設(shè)計(jì)方面的內(nèi)容,通過(guò)閱讀此篇,可以提高讀者的眼界和數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)能力。
前言
第一篇 準(zhǔn)備篇 第1章 PostgreSQL簡(jiǎn)介 2 1.1 什么是PostgreSQL 2 1.1.1 PostgreSQL的發(fā)展歷史 2 1.1.2 PostgreSQL數(shù)據(jù)庫(kù)的優(yōu)勢(shì) 4 1.1.3 PostgreSQL應(yīng)用現(xiàn)狀和發(fā)展趨勢(shì) 5 1.2 PostgreSQL數(shù)據(jù)庫(kù)與其他數(shù)據(jù)庫(kù)的對(duì)比 6 1.2.1 PostgreSQL與MySQL數(shù)據(jù)庫(kù)的對(duì)比 6 1.2.2 PostgreSQL與Oracle數(shù)據(jù)庫(kù)的對(duì)比 8 1.3 小結(jié) 8 第2章 PostgreSQL的安裝與配置 9 2.1 從發(fā)行版本安裝 9 2.1.1 Red Hat/CentOS下的安裝方法 10 2.1.2 Windows下的安裝方法 12 2.1.3 從發(fā)行版本安裝總結(jié) 18 2.2 從源碼安裝 18 2.2.1 編譯安裝過(guò)程簡(jiǎn)介 18 2.2.2 下載源代碼 18 2.2.3 編譯及安裝 20 2.2.4 PostgreSQL的配置 22 2.2.5 創(chuàng)建數(shù)據(jù)庫(kù)實(shí)例 23 2.2.6 安裝contrib目錄下的工具 23 2.2.7 啟動(dòng)和停止數(shù)據(jù)庫(kù) 23 2.2.8 編譯安裝過(guò)程中的常見問(wèn)題及解決方法 24 2.3 PostgreSQL的簡(jiǎn)單配置 25 2.3.1 pg_hba.conf的配置 26 2.3.2 修改監(jiān)聽的IP和端口 26 2.3.3 數(shù)據(jù)庫(kù)日志相關(guān)參數(shù) 26 2.3.4 內(nèi)存參數(shù)的設(shè)置 27 2.4 PostgreSQL的安裝技巧 27 2.4.1 不想把數(shù)據(jù)庫(kù)實(shí)例創(chuàng)建到“/var/lib/pgsql”目錄下 27 2.4.2 如何使用較大的數(shù)據(jù)塊提高I/O性能 29 2.4.3 打開數(shù)據(jù)塊的checksum功能 29 2.5 小結(jié) 30 第3章 SQL入門 31 3.1 SQL語(yǔ)句語(yǔ)法簡(jiǎn)介 31 3.1.1 語(yǔ)句的分類 31 3.1.2 詞法結(jié)構(gòu) 31 3.2 DDL語(yǔ)句 32 3.2.1 建表語(yǔ)句 32 3.2.2 刪除表語(yǔ)句 34 3.3 DML語(yǔ)句 34 3.3.1 插入語(yǔ)句 34 3.3.2 更新語(yǔ)句 35 3.3.3 刪除語(yǔ)句 35 3.4 查詢語(yǔ)句 36 3.4.1 單表查詢語(yǔ)句 36 3.4.2 過(guò)濾條件的查詢 36 3.4.3 排序 37 3.4.4 分組查詢 38 3.4.5 多表關(guān)聯(lián)查詢 38 3.4.6 子查詢 40 3.5 其他SQL語(yǔ)句 42 3.5.1 INSERT ... SELECT語(yǔ)句 42 3.5.2 UNION語(yǔ)句 42 3.5.3 TRUNCATE TABLE語(yǔ)句 43 3.6 小結(jié) 43 第二篇 基礎(chǔ)篇 第4章 psql工具 46 4.1 psql介紹 46 4.2 psql的簡(jiǎn)單使用 46 4.3 psql的常用命令 48 4.3.1 “\h”命令 49 4.3.2 “\d”命令 49 4.3.3 指定客戶端字符集的命令 52 4.3.4 格式化輸出的\pset命令 52 4.3.5 “\x”命令 55 4.3.6 執(zhí)行存儲(chǔ)在外部文件中的SQL命令 56 4.3.7 編輯命令 56 4.3.8 輸出信息的“\echo”命令 57 4.3.9 其他命令 58 4.4 psql的使用技巧 59 4.4.1 歷史命令與補(bǔ)全功能 59 4.4.2 自動(dòng)提交技巧 59 4.4.3 如何得到psql中快捷命令執(zhí)行的實(shí)際SQL 60 4.5 小結(jié) 62 第5章 數(shù)據(jù)類型 63 5.1 數(shù)據(jù)類型介紹 63 5.1.1 數(shù)據(jù)類型的分類 63 5.1.2 數(shù)據(jù)類型的輸入與轉(zhuǎn)換 65 5.2 布爾類型 65 5.2.1 布爾類型介紹 65 5.2.2 布爾類型的操作符 67 5.3 數(shù)值類型 68 5.3.1 數(shù)值類型介紹 68 5.3.2 整數(shù)類型 68 5.3.3 精確的小數(shù)類型 69 5.3.4 浮點(diǎn)數(shù)類型 70 5.3.5 序列類型 70 5.3.6 貨幣類型 70 5.3.7 數(shù)學(xué)函數(shù)和操作符 71 5.4 字符串類型 73 5.4.1 字符串類型介紹 73 5.4.2 字符串函數(shù)和操作符 73 5.5 二進(jìn)制數(shù)據(jù)類型 76 5.5.1 二進(jìn)制數(shù)據(jù)類型介紹 76 5.5.2 二進(jìn)制數(shù)據(jù)類型轉(zhuǎn)義表示 76 5.5.3 二進(jìn)制數(shù)據(jù)類型的函數(shù) 77 5.6 位串類型 78 5.6.1 位串類型介紹 78 5.6.2 位串類型的使用方法 78 5.6.3 位串的操作符及函數(shù) 79 5.7 日期/時(shí)間類型 80 5.7.1 日期/時(shí)間類型介紹 80 5.7.2 日期輸入 81 5.7.3 時(shí)間輸入 82 5.7.4 特殊值 84 5.7.5 函數(shù)和操作符列表 84 5.7.6 時(shí)間函數(shù) 85 5.7.7 extract和date_part函數(shù) 89 5.8 枚舉類型 90 5.8.1 枚舉類型的使用 90 5.8.2 枚舉類型說(shuō)明 91 5.8.3 枚舉類型的函數(shù) 92 5.9 幾何類型 92 5.9.1 幾何類型概況 93 5.9.2 幾何類型的輸入 93 5.9.3 幾何類型的操作符 98 5.9.4 幾何類型的函數(shù) 106 5.10 網(wǎng)絡(luò)地址類型 107 5.10.1 網(wǎng)絡(luò)地址類型概況 107 5.10.2 inet與cidr類型 107 5.10.3 macaddr類型 110 5.10.4 網(wǎng)絡(luò)地址類型的操作符 110 5.10.5 網(wǎng)絡(luò)地址類型的函數(shù) 111 5.11 復(fù)合類型 112 5.11.1 復(fù)合類型的定義 112 5.11.2 復(fù)合類型的輸入 113 5.11.3 訪問(wèn)復(fù)合類型 114 5.11.4 修改復(fù)合類型 114 5.11.5 復(fù)合類型的輸入輸出 115 5.12 xml類型 116 5.12.1 xml類型的輸入 116 5.12.2 字符集的問(wèn)題 117 5.12.3 xml類型函數(shù) 118 5.13 JSON類型 124 5.13.1 JSON類型簡(jiǎn)介 124 5.13.2 JSON類型的輸入與輸出 125 5.13.3 JSON類型的操作符 126 5.13.4 JSON類型的函數(shù) 127 5.13.5 JSON類型的索引 132 5.14 Range類型 136 5.14.1 Range類型簡(jiǎn)介 136 5.14.2 創(chuàng)建Range類型 138 5.14.3 Range類型的輸入與輸出 138 5.14.4 Range類型的操作符 141 5.14.5 Range類型的函數(shù) 142 5.14.6 Range類型的索引和約束 142 5.15 數(shù)組類型 143 5.15.1 數(shù)組類型的聲明 143 5.15.2 如何輸入數(shù)組值 144 5.15.3 訪問(wèn)數(shù)組 146 5.15.4 修改數(shù)組 148 5.15.5 數(shù)組的操作符 149 5.15.6 數(shù)組的函數(shù) 151 5.16 偽類型 153 5.17 其他類型 154 5.17.1 UUID類型 154 5.17.2 pg_lsn 類型 154 5.18 小結(jié) 155 第6章 邏輯結(jié)構(gòu)管理 156 6.1 數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)介紹 156 6.2 數(shù)據(jù)庫(kù)基本操作 156 6.2.1 創(chuàng)建數(shù)據(jù)庫(kù) 156 6.2.2 修改數(shù)據(jù)庫(kù) 157 6.2.3 刪除數(shù)據(jù)庫(kù) 158 6.2.4 常見問(wèn)題及解答 158 6.3 模式 159 6.3.1 什么是模式 159 6.3.2 模式的使用 159 6.3.3 公共模式 161 6.3.4 模式的搜索路徑 161 6.3.5 模式的權(quán)限 162 6.3.6 模式的可移植性 162 6.4 表 163 6.4.1 創(chuàng)建表 163 6.4.2 表的存儲(chǔ)屬性 165 6.4.3 臨時(shí)表 167 6.4.4 UNLOGGED表 170 6.4.5 默認(rèn)值 170 6.4.6 約束 171 6.4.7 修改表 175 6.4.8 表繼承 179 6.4.9 通過(guò)表繼承實(shí)現(xiàn)分區(qū)表 181 6.4.10 聲明式分區(qū) 186 6.5 觸發(fā)器 188 6.5.1 創(chuàng)建觸發(fā)器 189 6.5.2 語(yǔ)句級(jí)觸發(fā)器與行級(jí)觸發(fā)器 190 6.5.3 BEFORE觸發(fā)器與AFTER觸發(fā)器 193 6.5.4 刪除觸發(fā)器 194 6.5.5 觸發(fā)器的行為 194 6.5.6 觸發(fā)器函數(shù)中的特殊變量 195 6.6 事件觸發(fā)器 196 6.6.1 創(chuàng)建事件觸發(fā)器 198 6.6.2 修改事件觸發(fā)器 201 6.7 表空間 201 6.7.1 什么是表空間 201 6.7.2 表空間的使用方法 201 6.8 視圖 202 6.8.1 什么是視圖 202 6.8.2 創(chuàng)建視圖 203 6.8.3 可更新視圖 204 6.9 索引 207 6.9.1 索引簡(jiǎn)介 207 6.9.2 索引的分類 207 6.9.3 創(chuàng)建索引 208 6.9.4 并發(fā)創(chuàng)建索引 209 6.9.5 修改索引 211 6.9.6 刪除索引 212 6.10 用戶及權(quán)限管理 213 6.10.1 用戶和角色 213 6.10.2 創(chuàng)建用戶和角色 213 6.10.3 權(quán)限的管理 214 6.10.4 函數(shù)和觸發(fā)器的權(quán)限 219 6.10.5 權(quán)限的總結(jié) 220 6.10.6 權(quán)限的示例 220 6.11 事務(wù)、并發(fā)和鎖 220 6.11.1 什么是ACID 221 6.11.2 DDL事務(wù) 221 6.11.3 事務(wù)的使用方法 221 6.11.4 SAVEPOINT 222 6.11.5 事務(wù)隔離級(jí)別 224 6.11.6 兩階段提交 225 6.11.7 鎖機(jī)制 226 6.11.8 死鎖及防范 230 6.11.9 表級(jí)鎖命令LOCK TABLE 230 6.11.10 行級(jí)鎖命令 231 6.11.11 鎖的查看 231 6.12 小結(jié) 238 第7章 PostgreSQL的核心架構(gòu) 239 7.1 進(jìn)程及內(nèi)存結(jié)構(gòu) 239 7.1.1 進(jìn)程和內(nèi)存架構(gòu)圖 239 7.1.2 主進(jìn)程Postmaster介紹 240 7.1.3 Logger系統(tǒng)日志進(jìn)程介紹 241 7.1.4 BgWriter后臺(tái)寫進(jìn)程介紹 241 7.1.5 WalWriter預(yù)寫式日志寫進(jìn)程介紹 241 7.1.6 PgArch歸檔進(jìn)程 242 7.1.7 AutoVacuum自動(dòng)清理進(jìn)程 242 7.1.8 PgStat統(tǒng)計(jì)數(shù)據(jù)收集進(jìn)程 242 7.1.9 共享內(nèi)存 242 7.1.10 本地內(nèi)存 243 7.2 存儲(chǔ)結(jié)構(gòu) 243 7.2.1 邏輯存儲(chǔ)結(jié)構(gòu) 243 7.2.2 軟件目錄結(jié)構(gòu) 244 7.2.3 物理存儲(chǔ)結(jié)構(gòu) 244 7.2.4 表空間的目錄 246 7.3 應(yīng)用程序訪問(wèn)接口 247 7.3.1 訪問(wèn)接口總體圖 247 7.3.2 不同編程語(yǔ)言的PostgreSQL驅(qū)動(dòng)介紹 248 7.4 小結(jié) 249 第8章 服務(wù)管理 250 8.1 服務(wù)的啟停及原理 250 8.1.1 服務(wù)的啟停方法 250 8.1.2 pg_ctl工具 251 8.1.3 信號(hào) 255 8.1.4 postgres及單用戶模式 255 8.2 服務(wù)配置介紹 256 8.2.1 配置參數(shù) 256 8.2.2 連接配置項(xiàng) 259 8.2.3 內(nèi)存配置項(xiàng) 261 8.2.4 預(yù)寫式日志的配置項(xiàng) 262 8.2.5 錯(cuò)誤報(bào)告和日志項(xiàng) 264 8.3 訪問(wèn)控制配置文件 268 8.3.1 pg_hba.conf 文件 268 8.3.2 認(rèn)證方法介紹 269 8.3.3 認(rèn)證方法實(shí)戰(zhàn) 270 8.4 備份和還原 271 8.4.1 邏輯備份 271 8.4.2 pg_dump命令 272 8.4.3 pg_restore命令 275 8.4.4 pg_dump和pg_restore應(yīng)用示例 278 8.4.5 物理備份 279 8.4.6 使用LVM快照進(jìn)行熱備份 279 8.5 常用的管理命令 282 8.5.1 查看系統(tǒng)信息的常用命令 282 8.5.2 系統(tǒng)維護(hù)常用命令 288 8.6 小結(jié) 289 第三篇 提高篇 第9章 PostgreSQL執(zhí)行計(jì)劃 292 9.1 執(zhí)行計(jì)劃的解釋 292 9.1.1 EXPLAIN命令 292 9.1.2 EXPLAIN輸出結(jié)果解釋 293 9.1.3 EXPLAIN使用示例 294 9.1.4 全表掃描 297 9.1.5 索引掃描 297 9.1.6 位圖掃描 297 9.1.7 條件過(guò)濾 298 9.1.8 嵌套循環(huán)連接 299 9.1.9 散列連接 299 9.1.10 合并連接 300 9.2 與執(zhí)行計(jì)劃相關(guān)的配置項(xiàng) 301 9.2.1 ENABLE_*參數(shù) 301 9.2.2 COST基準(zhǔn)值參數(shù) 301 9.2.3 基因查詢優(yōu)化的參數(shù) 302 9.2.4 其他執(zhí)行計(jì)劃配置項(xiàng) 303 9.3 統(tǒng)計(jì)信息的收集 304 9.3.1 統(tǒng)計(jì)信息收集器的配置項(xiàng) 304 9.3.2 SQL執(zhí)行的統(tǒng)計(jì)信息輸出 304 9.3.3 手動(dòng)收集統(tǒng)計(jì)信息 305 9.4 小結(jié) 306 第10章 PostgreSQL中的技術(shù)內(nèi)幕 307 10.1 表中的系統(tǒng)字段 307 10.1.1 oid 308 10.1.2 ctid 310 10.1.3 xmin、xmax、cmin、cmax 311 10.2 多版本并發(fā)控制 312 10.2.1 多版本并發(fā)控制的原理 312 10.2.2 PostgreSQL中的多版本并發(fā)控制 313 10.2.3 PostgreSQL多版本的優(yōu)劣分析 315 10.3 物理存儲(chǔ)結(jié)構(gòu) 315 10.3.1 PostgreSQL中的術(shù)語(yǔ) 315 10.3.2 數(shù)據(jù)塊結(jié)構(gòu) 316 10.3.3 Tuple結(jié)構(gòu) 316 10.3.4 數(shù)據(jù)塊空閑空間管理 317 10.3.5 可見性映射表文件 320 10.4 控制文件解密 320 10.4.1 控制文件介紹 320 10.4.2 數(shù)據(jù)庫(kù)的唯一標(biāo)識(shí)串解密 321 10.4.3 Checkpoint信息解密 322 10.4.4 與Standby相關(guān)的信息 323 10.5 WAL文件解密 324 10.5.1 WAL文件介紹 324 10.5.2 WAL文件名的秘密 324 10.5.3 WAL文件循環(huán)復(fù)用原理 325 10.6 CommitLog文件與事務(wù)ID技術(shù)解密 327 10.6.1 CommitLog文件介紹 327 10.6.2 事務(wù)ID技術(shù) 328 10.7 實(shí)例恢復(fù)與熱備份原理解密 328 10.7.1 實(shí)例恢復(fù)的原理 328 10.7.2 熱備份的原理 329 10.8 一些技術(shù)解密 332 10.8.1 Index-Only Scans 332 10.8.2 Heap-Only Tuples 334 10.9 小結(jié) 335 第11章 PostgreSQL的特色功能 336 11.1 規(guī)則系統(tǒng) 336 11.1.1 SELECT規(guī)則 336 11.1.2 更新規(guī)則 337 11.1.3 規(guī)則和權(quán)限 340 11.1.4 規(guī)則和命令狀態(tài) 341 11.1.5 規(guī)則與觸發(fā)器的比較 342 11.2 模式匹配和正則表達(dá)式 342 11.2.1 PostgreSQL中的模式匹配和正則表達(dá)式 343 11.2.2 傳統(tǒng)SQL的LIKE 操作符 343 11.2.3 SIMILAR TO 正則表達(dá)式 345 11.2.4 POSIX 正則表達(dá)式 346 11.2.5 模式匹配函數(shù) substring 347 11.3 LISTEN與NOTIFY命令 349 11.3.1 LISTEN與NOTIFY的簡(jiǎn)單示例 349 11.3.2 LISTEN與NOTIFY的相關(guān)命令 350 11.3.3 LISTEN與NOTIFY的使用詳解 351 11.4 索引的特色 354 11.4.1 表達(dá)式上的索引 354 11.4.2 部分索引 355 11.4.3 GiST索引 357 11.4.4 SP-GiST索引 359 11.4.5 GIN索引 360 11.4.6 BRIN索引 362 11.5 序列的使用 365 11.5.1 序列的創(chuàng)建 365 11.5.2 序列的使用及相關(guān)函數(shù) 366 11.5.3 常見問(wèn)題及解答 368 11.6 咨詢鎖的使用 370 11.6.1 什么是咨詢鎖 370 11.6.2 咨詢鎖的函數(shù)及使用 370 11.6.3 常見問(wèn)題及解答 374 11.7 SQL/MED 374 11.7.1 SQL/MED的介紹 375 11.7.2 外部數(shù)據(jù)包裝器對(duì)象 376 11.7.3 外部服務(wù)器對(duì)象 377 11.7.4 用戶映射對(duì)象 378 11.7.5 外部表對(duì)象 378 11.7.6 file_fdw使用實(shí)例 379 11.7.7 postgres_fdw使用實(shí)例 382 11.7.8 oracle_fdw使用實(shí)例 383 11.7.9 odbc_fdw使用實(shí)例 385 11.8 全文檢索 385 11.8.1 全文檢索介紹 386 11.8.2 全文檢索入門 386 11.8.3 使用zhparser做中文全文檢索 388 11.9 數(shù)組的特色功能 391 11.9.1 數(shù)組的應(yīng)用場(chǎng)景介紹 391 11.9.2 數(shù)組的使用技巧 393 11.10 并行查詢功能 394 11.10.1 并行查詢相關(guān)的配置參數(shù) 395 11.10.2 支持的并行操作介紹 395 11.11 小結(jié) 396 第12章 數(shù)據(jù)庫(kù)優(yōu)化 397 12.1 數(shù)據(jù)庫(kù)優(yōu)化準(zhǔn)則和方法 397 12.1.1 數(shù)據(jù)庫(kù)優(yōu)化準(zhǔn)則 397 12.1.2 優(yōu)化方法 398 12.2 硬件知識(shí) 398 12.2.1 CPU及服務(wù)器體系結(jié)構(gòu) 399 12.2.2 內(nèi)存 400 12.2.3 硬盤 400 12.3 文件系統(tǒng)及I/O調(diào)優(yōu) 402 12.3.1 文件系統(tǒng)的崩潰恢復(fù) 403 12.3.2 Ext2文件系統(tǒng) 403 12.3.3 Ext3文件系統(tǒng) 403 12.3.4 Ext4文件系統(tǒng) 404 12.3.5 XFS文件系統(tǒng) 406 12.3.6 Barriers I/O 406 12.3.7 I/O調(diào)優(yōu)的方法 407 12.3.8 SSD的Trim優(yōu)化 410 12.4 性能監(jiān)控 410 12.4.1 數(shù)據(jù)庫(kù)性能視圖 411 12.4.2 Linux監(jiān)控工具 414 12.5 數(shù)據(jù)庫(kù)配置優(yōu)化 415 12.5.1 內(nèi)存配置優(yōu)化 415 12.5.2 大頁(yè)內(nèi)存的配置 418 12.5.3 VACUUM中的優(yōu)化 419 12.5.4 預(yù)寫式日志寫優(yōu)化 422 12.5.5 配置的最佳實(shí)踐 424 12.6 數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)優(yōu)化 430 12.6.1 表的優(yōu)化 430 12.6.2 索引的優(yōu)化 432 12.7 SQL的優(yōu)化 436 12.7.1 找出慢的SQL 436 12.7.2 SQL語(yǔ)句的優(yōu)化技巧 439 12.8 小結(jié) 441 第13章 Standby數(shù)據(jù)庫(kù)的搭建 442 13.1 Standby數(shù)據(jù)庫(kù)原理 442 13.1.1 PITR原理 442 13.1.2 WAL日志歸檔 443 13.1.3 流復(fù)制 444 13.1.4 Standby數(shù)據(jù)庫(kù)的運(yùn)行原理 444 13.1.5 建Standby數(shù)據(jù)庫(kù)的步驟 445 13.2 pg_basebackup命令行工具 447 13.2.1 pg_basebackup介紹 447 13.2.2 pg_basebackup的命令行參數(shù) 447 13.2.3 pg_basebackup使用示例 449 13.3 異步流復(fù)制Hot Standby的示例 450 13.3.1 配置環(huán)境 450 13.3.2 主數(shù)據(jù)庫(kù)的配置 450 13.3.3 在Standby上生成基礎(chǔ)備份 451 13.3.4 啟動(dòng)Standby數(shù)據(jù)庫(kù) 452 13.3.5 交換主備庫(kù)的角色 454 13.3.6 故障切換 455 13.4 同步流復(fù)制的Standby數(shù)據(jù)庫(kù) 458 13.4.1 同步流復(fù)制的架構(gòu) 458 13.4.2 同步復(fù)制的配置 458 13.4.3 配置實(shí)例 459 13.5 檢查備庫(kù)及流復(fù)制情況 465 13.5.1 檢查異步流復(fù)制的情況 465 13.5.2 檢查同步流復(fù)制的情況 466 13.5.3 pg_stat_replication視圖詳解 467 13.5.4 查看備庫(kù)的狀態(tài) 468 13.6 Hot Standby的限制 470 13.6.1 Hot Standby的查詢限制 470 13.6.2 Hot Standby的查詢沖突處理 473 13.7 恢復(fù)配置詳解 474 13.7.1 歸檔恢復(fù)配置項(xiàng) 474 13.7.2 Recovery Target配置 475 13.7.3 Standby Server配置 476 13.8 流復(fù)制的注意事項(xiàng) 476 13.8.1 min_wal_size參數(shù)的配置 476 13.8.2 vacuum_defer_cleanup_age參數(shù)的配置 477 13.9 邏輯復(fù)制 477 13.9.1 邏輯復(fù)制的介紹 477 13.9.2 邏輯復(fù)制的發(fā)布 478 13.9.3 邏輯復(fù)制的訂閱 479 13.9.4 邏輯復(fù)制的沖突處理 481 13.9.5 邏輯復(fù)制的限制 481 13.9.6 邏輯復(fù)制的監(jiān)控與安全 482 13.9.7 邏輯復(fù)制的相關(guān)配置參數(shù) 483 13.9.8 邏輯復(fù)制的搭建實(shí)踐 483 13.10 小結(jié) 488 第四篇 架構(gòu)篇 第14章 PgBouncer 490 14.1 PgBouncer 介紹 490 14.2 PgBouncer的相關(guān)概念 491 14.3 PgBouncer的安裝方法 491 14.4 PgBouncer的簡(jiǎn)單使用 491 14.4.1 簡(jiǎn)單配置方法 492 14.4.2 啟動(dòng)PgBouncer 492 14.4.3 停止PgBouncer 493 14.4.4 查看連接池信息 493 14.5 PgBouncer的配置文件詳解 495 14.5.1 “[databases]”配置 495 14.5.2 “[pgbouncer]”配置 496 14.5.3 用戶密碼文件 499 14.6 小結(jié) 500 第15章 Slony-I的使用 501 15.1 Slony-I中的主要概念 501 15.1.1 集群 502 15.1.2 節(jié)點(diǎn) 502 15.1.3 復(fù)制集合 502 15.1.4 數(shù)據(jù)原始生產(chǎn)者、數(shù)據(jù)提供者和數(shù)據(jù)訂閱者 502 15.1.5 Slon守護(hù)程序 502 15.1.6 Slonik配置程序 503 15.2 Slony-I復(fù)制的一些限制 503 15.3 在Linux下安裝和配置Slony-I 503 15.3.1 二進(jìn)制方式安裝Slony-I 503 15.3.2 源碼編譯安裝Slony-I 504 15.3.3 配置Slony-I的基本復(fù)制 506 15.3.4 添加和移除表的復(fù)制 512 15.3.5 主備切換 513 15.4 小結(jié) 514 第16章 Bucardo的使用 515 16.1 Bucardo的相關(guān)概念 515 16.1.1 Bucardo介紹 515 16.1.2 Bucardo FAQ 515 16.1.3 Bucardo 同步中定義的概念 516 16.2 Bucardo的安裝方法 516 16.2.1 Bucardo的安裝步驟 516 16.2.2 安裝Test-Simple、ExtUtils-MakeMaker、version 517 16.2.3 安裝DBI及DBD::Pg 518 16.2.4 安裝DBIx-Safe 518 16.2.5 安裝Bucardo源碼包 518 16.2.6 使用yum安裝Bucardo 519 16.3 Bucardo同步配置 520 16.3.1 示例環(huán)境 520 16.3.2 Bucardo的工作原理 520 16.3.3 bucardo install 521 16.3.4 配置同步 523 16.3.5 Bucardo 常用命令 525 16.4 Bucardo的日常維護(hù) 526 16.4.1 Bucardo的觸發(fā)器日志清理 526 16.4.2 臨時(shí)停止和啟動(dòng)同步的方法 526 16.4.3 新增表到同步的方法 527 16.4.4 移除某個(gè)表或序列的方法 527 16.5 小結(jié) 527 第17章 PL/Proxy的使用 528 17.1 PL/Proxy的相關(guān)概念 528 17.1.1 什么是PL/Proxy 528 17.1.2 PL/Proxy的特性說(shuō)明 530 17.2 PL/Proxy的安裝及配置 530 17.2.1 編譯安裝 530 17.2.2 安裝規(guī)劃 531 17.2.3 配置過(guò)程 531 17.3 PL/Proxy的集群配置詳解 535 17.3.1 Cluster configuration API方式 536 17.3.2 SQL/MED方式配置集群 538 17.4 PL/Proxy語(yǔ)言詳解 539 17.4.1 CONNECT 539 17.4.2 CLUSTER 539 17.4.3 RUN ON 539 17.4.4 SPLIT 540 17.4.5 TARGET 540 17.5 PL/Proxy的高可用方案 540 17.5.1 方案介紹 540 17.5.2 方案架構(gòu) 541 17.5.3 具體實(shí)施步驟 542 17.6 小結(jié) 550 第18章 pgpool-II的使用 551 18.1 pgpool-II的相關(guān)概念 551 18.1.1 什么是pgpool-II 551 18.1.2 pgpool-II的發(fā)展簡(jiǎn)介 552 18.1.3 pgpool-II的架構(gòu) 552 18.1.4 pgpool-II的工作模式 554 18.1.5 pgpool-II的程序模塊 556 18.2 pgpool-II的安裝方法 556 18.2.1 安裝軟件 556 18.2.2 安裝 pgpool_regclass 557 18.2.3 建立 insert_lock表 557 18.2.4 安裝pgpool_recovery 558 18.3 pgpool-II配置快速入門 558 18.3.1 pgpool-II的配置過(guò)程 558 18.3.2 內(nèi)置復(fù)制模式的示例 561 18.3.3 流復(fù)制的主備模式示例 564 18.3.4 show命令 566 18.4 pgpool-II高可用配置方法 568 18.4.1 pgpool-II高可用切換及恢復(fù)的原理 568 18.4.2 pgpool-II的在線恢復(fù) 568 18.4.3 流復(fù)制模式中的故障切換 570 18.4.4 pgpool-II的健康檢查 571 18.4.5 流復(fù)制的主備模式的高可用示例 571 18.4.6 watchdog的配置 576 18.5 小結(jié) 582 第19章 Postgres-XC的使用 583 19.1 Postgres-XC的相關(guān)概念 583 19.1.1 什么是Postgres-XC 583 19.1.2 Postgres-XC的特點(diǎn) 584 19.1.3 Postgres-XC的性能 584 19.1.4 Postgres-XC的組件 585 19.2 Postgres-XC的安裝 585 19.2.1 源碼安裝方法 585 19.2.2 Postgres-XC目錄及程序說(shuō)明 586 19.3 配置Postgres-XC集群 588 19.3.1 集群規(guī)劃 588 19.3.2 初始化GTM 588 19.3.3 初始化GTM備庫(kù) 589 19.3.4 初始化GTM Proxy 589 19.3.5 初始化Coordinators、數(shù)據(jù)節(jié)點(diǎn) 590 19.3.6 啟動(dòng)集群 591 19.3.7 停止集群 592 19.3.8 配置集群節(jié)點(diǎn)信息 592 19.4 Postgres-XC的使用 594 19.4.1 建表詳解 594 19.4.2 使用限制 600 19.4.3 重新分布數(shù)據(jù) 601 19.4.4 增加Coordinator節(jié)點(diǎn)的方法 602 19.4.5 移除Coordinator節(jié)點(diǎn)的方法 603 19.4.6 增加Datanode節(jié)點(diǎn)的方法 604 19.4.7 移除Datanode節(jié)點(diǎn)的方法 605 19.5 小結(jié) 605 第20章 高可用性方案設(shè)計(jì) 606 20.1 高可用架構(gòu)基礎(chǔ) 606 20.1.1 各種高可用架構(gòu)介紹 606 20.1.2 服務(wù)的可靠性設(shè)計(jì) 607 20.1.3 數(shù)據(jù)可靠性設(shè)計(jì) 607 20.2 基于共享存儲(chǔ)的高可用方案 608 20.2.1 SAN存儲(chǔ)方案 608 20.2.2 DRBD方案 609 20.3 WAL日志同步或流復(fù)制同步方案 609 20.3.1 持續(xù)復(fù)制歸檔的Standby方法 609 20.3.2 異步流復(fù)制方案 610 20.3.3 同步流復(fù)制方案 610 20.4 基于觸發(fā)器的同步方案 610 20.4.1 基于觸發(fā)器的同步方案特點(diǎn) 610 20.4.2 基于此方案的同步軟件介紹 610 20.5 基于中間件的高可用方案 611 20.5.1 基于中間件的高可用方案的特點(diǎn) 611 20.5.2 基本中間件的開源軟件介紹 612 20.6 小結(jié) 613
你還可能感興趣
我要評(píng)論
|