新书PostgreSQL修炼之道从小工到专家第2版第二版唐成数据库技术Postgr pdf下载pdf下载

新书PostgreSQL修炼之道从小工到专家第2版第二版唐成数据库技术Postgr百度网盘pdf下载

作者:
简介:本篇提供书籍《新书PostgreSQL修炼之道从小工到专家第2版第二版唐成数据库技术Postgr》百度网盘pdf下载
出版社:钰恒店
出版时间:2020-09
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

PostgreSQL中国社区数据库专家、中启乘数科技联合创始人撰写,PostgreSQL数据库领域经典著作升级版
系统讲解PostgreSQL技术内幕,深入分析PostgreSQL特色功能,
包含大量来自实际生产环境的经典案例和经验总结


书名: postgresql修炼之道:从小工到专家(第2版)
图书定价: 129元
作者: 唐成
出版社: 机械工业出版社
出版日期: 2020-09-21
ISBN号: 9787111665038
开本: 16开
页数: 629
版次: 1-1
唐成 著:英文书名:Guide To Expert, The Pragmatic PostgreSQL
本书分为四大部分,分别为准备篇、基础篇、提高篇和配套开源软件及架构篇。准备篇为没有数据库基础的读者准备的,如果读者已经具备了一定的数据库基础,可以跳过其中的一些内容。基础篇介绍了PostgreSQL数据库中的一些基础内容,读者学习完此篇可以完成基本的PostgreSQL数据库的日常操作工作。提高篇讲解了一些更深的内容,如PostgreSQL的一些技术内幕、特色功能、优化等方面的内容,读者仔细阅读此篇以便早日成为PostgreSQL数据库高手。第三方开源软件及架构篇讲解了与PostgreSQL数据库配套使用的一些常用的开源软件及架构设计方面的内容,通过阅读此篇,可以提高读者的眼界和数据库架构设计能力。

前言
篇 准备篇
第1章 PostgreSQL简介 2
1.1 什么是PostgreSQL 2
1.1.1 PostgreSQL的发展历史 2
1.1.2 PostgreSQL数据库的优势 4
1.1.3 PostgreSQL应用现状和发展趋势 5
1.2 PostgreSQL数据库与其他数据库的对比 6
1.2.1 PostgreSQL与MySQL数据库的对比 6
1.2.2 PostgreSQL与Oracle数据库的对比 8
1.3 小结 8
第2章 PostgreSQL的安装与配置 9
2.1 从发行版本安装 9
2.1.1 Red Hat/CentOS下的安装方法 10
2.1.2 Windows下的安装方法 12
2.1.3 从发行版本安装总结 18
2.2 从源码安装 18
2.2.1 编译安装过程简介 18
2.2.2 下载源代码 18
2.2.3 编译及安装 20
2.2.4 PostgreSQL的配置 22
2.2.5 创建数据库实例 23
2.2.6 安装contrib目录下的工具 23
2.2.7 启动和停止数据库 23
2.2.8 编译安装过程中的常见问题及解决方法 24
2.3 PostgreSQL的简单配置 25
2.3.1 pg_hba.conf的配置 26
2.3.2 修改的IP和端口 26
2.3.3 数据库日志相关参数 26
2.3.4 内存参数的设置 27
2.4 PostgreSQL的安装技巧 27
2.4.1 不想把数据库实例创建到“/var/lib/pgsql”目录下 27
2.4.2 如何使用较大的数据块提高I/O性能 29
2.4.3 打开数据块的checksum功能 29
2.5 小结 30
第3章 SQL入门 31
3.1 SQL语句语法简介 31
3.1.1 语句的分类 31
3.1.2 词法结构 31
3.2 DDL语句 32
3.2.1 建表语句 32
3.2.2 删除表语句 34
3.3 DML语句 34
3.3.1 插入语句 34
3.3.2 更新语句 35
3.3.3 删除语句 35
3.4 查询语句 36
3.4.1 单表查询语句 36
3.4.2 过滤条件的查询 36
3.4.3 排序 37
3.4.4 分组查询 38
3.4.5 多表关联查询 38
3.4.6 子查询 40
3.5 其他SQL语句 42
3.5.1 INSERT ... SELECT语句 42
3.5.2 UNION语句 42
3.5.3 TRUNCATE TABLE语句 43
3.6 小结 43
第二篇 基础篇
第4章 psql工具 46
4.1 psql介绍 46
4.2 psql的简单使用 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 执行存储在外部文件中的SQL命令 56
4.3.7 编辑命令 56
4.3.8 输出信息的“\echo”命令 57
4.3.9 其他命令 58
4.4 psql的使用技巧 59
4.4.1 历史命令与补全功能 59
4.4.2 自动提交技巧 59
4.4.3 如何得到psql中快捷命令执行的实际SQL 60
4.5 小结 62
第5章 数据类型 63
5.1 数据类型介绍 63
5.1.1 数据类型的分类 63
5.1.2 数据类型的输入与转换 65
5.2 布尔类型 65
5.2.1 布尔类型介绍 65
5.2.2 布尔类型的操作符 67
5.3 数值类型 68
5.3.1 数值类型介绍 68
5.3.2 整数类型 68
5.3.3 的小数类型 69
5.3.4 浮点数类型 70
5.3.5 序列类型 70
5.3.6 货币类型 70
5.3.7 数学函数和操作符 71
5.4 字符串类型 73
5.4.1 字符串类型介绍 73
5.4.2 字符串函数和操作符 73
5.5 二进制数据类型 76
5.5.1 二进制数据类型介绍 76
5.5.2 二进制数据类型转义表示 76
5.5.3 二进制数据类型的函数 77
5.6 位串类型 78
5.6.1 位串类型介绍 78
5.6.2 位串类型的使用方法 78
5.6.3 位串的操作符及函数 79
5.7 日期/时间类型 80
5.7.1 日期/时间类型介绍 80
5.7.2 日期输入 81
5.7.3 时间输入 82
5.7.4 特殊值 84
5.7.5 函数和操作符列表 84
5.7.6 时间函数 85
5.7.7 extract和date_part函数 89
5.8 枚举类型 90
5.8.1 枚举类型的使用 90
5.8.2 枚举类型说明 91
5.8.3 枚举类型的函数 92
5.9 几何类型 92
5.9.1 几何类型概况 93
5.9.2 几何类型的输入 93
5.9.3 几何类型的操作符 98
5.9.4 几何类型的函数 106
5.10 网络地址类型 107
5.10.1 网络地址类型概况 107
5.10.2 inet与cidr类型 107
5.10.3 macaddr类型 110
5.10.4 网络地址类型的操作符 110
5.10.5 网络地址类型的函数 111
5.11 复合类型 112
5.11.1 复合类型的定义 112
5.11.2 复合类型的输入 113
5.11.3 访问复合类型 114
5.11.4 修改复合类型 114
5.11.5 复合类型的输入输出 115
5.12 xml类型 116
5.12.1 xml类型的输入 116
5.12.2 字符集的问题 117
5.12.3 xml类型函数 118
5.13 JSON类型 124
5.13.1 JSON类型简介 124
5.13.2 JSON类型的输入与输出 125
5.13.3 JSON类型的操作符 126
5.13.4 JSON类型的函数 127
5.13.5 JSON类型的索引 132
5.14 Range类型 136
5.14.1 Range类型简介 136
5.14.2 创建Range类型 138
5.14.3 Range类型的输入与输出 138
5.14.4 Range类型的操作符 141
5.14.5 Range类型的函数 142
5.14.6 Range类型的索引和约束 142
5.15 数组类型 143
5.15.1 数组类型的声明 143
5.15.2 如何输入数组值 144
5.15.3 访问数组 146
5.15.4 修改数组 148
5.15.5 数组的操作符 149
5.15.6 数组的函数 151
5.16 伪类型 153
5.17 其他类型 154
5.17.1 UUID类型 154
5.17.2 pg_lsn 类型 154
5.18 小结 155
第6章 逻辑结构管理 156
6.1 数据库逻辑结构介绍 156
6.2 数据库基本操作 156
6.2.1 创建数据库 156
6.2.2 修改数据库 157
6.2.3 删除数据库 158
6.2.4 常见问题及解答 158
6.3 模式 159
6.3.1 什么是模式 159
6.3.2 模式的使用 159
6.3.3 公共模式 161
6.3.4 模式的搜索路径 161
6.3.5 模式的权限 162
6.3.6 模式的可移植性 162
6.4 表 163
6.4.1 创建表 163
6.4.2 表的存储属性 165
6.4.3 临时表 167
6.4.4 UNLOGGED表 170
6.4.5 默认值 170
6.4.6 约束 171
6.4.7 修改表 175
6.4.8 表继承 179
6.4.9 通过表继承实现分区表 181
6.4.10 声明式分区 186
6.5 触发器 188
6.5.1 创建触发器 189
6.5.2 语句级触发器与行级触发器 190
6.5.3 BEFORE触发器与AFTER触发器 193
6.5.4 删除触发器 194
6.5.5 触发器的行为 194
6.5.6 触发器函数中的特殊变量 195
6.6 事件触发器 196
6.6.1 创建事件触发器 198
6.6.2 修改事件触发器 201
6.7 表空间 201
6.7.1 什么是表空间 201
6.7.2 表空间的使用方法 201
6.8 视图 202
6.8.1 什么是视图 202
6.8.2 创建视图 203
6.8.3 可更新视图 204
6.9 索引 207
6.9.1 索引简介 207
6.9.2 索引的分类 207
6.9.3 创建索引 208
6.9.4 并发创建索引 209
6.9.5 修改索引 211
6.9.6 删除索引 212
6.10 用户及权限管理 213
6.10.1 用户和角色 213
6.10.2 创建用户和角色 213
6.10.3 权限的管理 214
6.10.4 函数和触发器的权限 219
6.10.5 权限的总结 220
6.10.6 权限的示例 220
6.11 事务、并发和锁 220
6.11.1 什么是ACID 221
6.11.2 DDL事务 221
6.11.3 事务的使用方法 221
6.11.4 SAVEPOINT 222
6.11.5 事务隔离级别 224
6.11.6 两阶段提交 225
6.11.7 锁机制 226
6.11.8 死锁及防范 230
6.11.9 表级锁命令LOCK TABLE 230
6.11.10 行级锁命令 231
6.11.11 锁的查看 231
6.12 小结 238
第7章 PostgreSQL的核心架构 239
7.1 进程及内存结构 239
7.1.1 进程和内存架构图 239
7.1.2 主进程Postmaster介绍 240
7.1.3 Logger系统日志进程介绍 241
7.1.4 BgWriter后台写进程介绍 241
7.1.5 WalWriter预写式日志写进程介绍 241
7.1.6 PgArch归档进程 242
7.1.7 AutoVacuum自动清理进程 242
7.1.8 PgStat统计数据收集进程 242
7.1.9 共享内存 242
7.1.10 本地内存 243
7.2 存储结构 243
7.2.1 逻辑存储结构 243
7.2.2 软件目录结构 244
7.2.3 物理存储结构 244
7.2.4 表空间的目录 246
7.3 应用程序访问接口 247
7.3.1 访问接口总体图 247
7.3.2 不同编程语言的PostgreSQL驱动介绍 248
7.4 小结 249
第8章 服务管理 250
8.1 服务的启停及原理 250
8.1.1 服务的启停方法 250
8.1.2 pg_ctl工具 251
8.1.3 信号 255
8.1.4 postgres及单用户模式 255
8.2 服务配置介绍 256
8.2.1 配置参数 256
8.2.2 连接配置项 259
8.2.3 内存配置项 261
8.2.4 预写式日志的配置项 262
8.2.5 错误报告和日志项 264
8.3 访问控制配置文件 268
8.3.1 pg_hba.conf 文件 268
8.3.2 认证方法介绍 269
8.3.3 认证方法实战 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应用示例 278
8.4.5 物理备份 279
8.4.6 使用LVM快照进行热备份 279
8.5 常用的管理命令 282
8.5.1 查看系统信息的常用命令 282
8.5.2 系统维护常用命令 288
8.6 小结 289
第三篇 提高篇
第9章 PostgreSQL执行计划 292
9.1 执行计划的解释 292
9.1.1 EXPLAIN命令 292
9.1.2 EXPLAIN输出结果解释 293
9.1.3 EXPLAIN使用示例 294
9.1.4 全表扫描 297
9.1.5 索引扫描 297
9.1.6 位图扫描 297
9.1.7 条件过滤 298
9.1.8 嵌套循环连接 299
9.1.9 散列连接 299
9.1.10 合并连接 300
9.2 与执行计划相关的配置项 301
9.2.1 ENABLE_*参数 301
9.2.2 COST基准值参数 301
9.2.3 基因查询优化的参数 302
9.2.4 其他执行计划配置项 303
9.3 统计信息的收集 304
9.3.1 统计信息收集器的配置项 304
9.3.2 SQL执行的统计信息输出 304
9.3.3 手动收集统计信息 305
9.4 小结 306
第10章 PostgreSQL中的技术内幕 307
10.1 表中的系统字段 307
10.1.1 oid 308
10.1.2 ctid 310
10.1.3 xmin、xmax、cmin、cmax 311
10.2 多版本并发控制 312
10.2.1 多版本并发控制的原理 312
10.2.2 PostgreSQL中的多版本并发控制 313
10.2.3 PostgreSQL多版本的优劣分析 315
10.3 物理存储结构 315
10.3.1 PostgreSQL中的术语 315
10.3.2 数据块结构 316
10.3.3 Tuple结构 316
10.3.4 数据块空闲空间管理 317
10.3.5 可见性映射表文件 320
10.4 控制文件解密 320
10.4.1 控制文件介绍 320
10.4.2 数据库的标识串解密 321
10.4.3 Checkpoint信息解密 322
10.4.4 与Standby相关的信息 323
10.5 WAL文件解密 324
10.5.1 WAL文件介绍 324
10.5.2 WAL文件名的秘密 324
10.5.3 WAL文件循环复用原理 325
10.6 CommitLog文件与事务ID技术解密 327
10.6.1 CommitLog文件介绍 327
10.6.2 事务ID技术 328
10.7 实例恢复与热备份原理解密 328
10.7.1 实例恢复的原理 328
10.7.2 热备份的原理 329
10.8 一些技术解密 332
10.8.1 Index-Only Scans 332
10.8.2 Heap-Only Tuples 334
10.9 小结 335
第11章 PostgreSQL的特色功能 336
11.1 规则系统 336
11.1.1 SELECT规则 336
11.1.2 更新规则 337
11.1.3 规则和权限 340
11.1.4 规则和命令状态 341
11.1.5 规则与触发器的比较 342
11.2 模式匹配和正则表达式 342
11.2.1 PostgreSQL中的模式匹配和正则表达式 343
11.2.2 传统SQL的LIKE 操作符 343
11.2.3 SIMILAR TO 正则表达式 345
11.2.4 POSIX 正则表达式 346
11.2.5 模式匹配函数 substring 347
11.3 LISTEN与NOTIFY命令 349
11.3.1 LISTEN与NOTIFY的简单示例 349
11.3.2 LISTEN与NOTIFY的相关命令 350
11.3.3 LISTEN与NOTIFY的使用详解 351
11.4 索引的特色 354
11.4.1 表达式上的索引 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 序列的创建 365
11.5.2 序列的使用及相关函数 366
11.5.3 常见问题及解答 368
11.6 咨询锁的使用 370
11.6.1 什么是咨询锁 370
11.6.2 咨询锁的函数及使用 370
11.6.3 常见问题及解答 374
11.7 SQL/MED 374
11.7.1 SQL/MED的介绍 375
11.7.2 外部数据包装器对象 376
11.7.3 外部服务器对象 377
11.7.4 用户映射对象 378
11.7.5 外部表对象 378
11.7.6 file_fdw使用实例 379
11.7.7 postgres_fdw使用实例 382
11.7.8 oracle_fdw使用实例 383
11.7.9 odbc_fdw使用实例 385
11.8 全文检索 385
11.8.1 全文检索介绍 386
11.8.2 全文检索入门 386
11.8.3 使用zhparser做中文全文检索 388
11.9 数组的特色功能 391
11.9.1 数组的应用场景介绍 391
11.9.2 数组的使用技巧 393
11.10 并行查询功能 394
11.10.1 并行查询相关的配置参数 395
11.10.2 支持的并行操作介绍 395
11.11 小结 396
第12章 数据库优化 397
12.1 数据库优化准则和方法 397
12.1.1 数据库优化准则 397
12.1.2 优化方法 398
12.2 硬件知识 398
12.2.1 CPU及服务器体系结构 399
12.2.2 内存 400
12.2.3 硬盘 400
12.3 文件系统及I/O调优 402
12.3.1 文件系统的崩溃恢复 403
12.3.2 Ext2文件系统 403
12.3.3 Ext3文件系统 403
12.3.4 Ext4文件系统 404
12.3.5 XFS文件系统 406
12.3.6 Barriers I/O 406
12.3.7 I/O调优的方法 407
12.3.8 SSD的Trim优化 410
12.4 性能监控 410
12.4.1 数据库性能视图 411
12.4.2 Linux监控工具 414
12.5 数据库配置优化 415
12.5.1 内存配置优化 415
12.5.2 大页内存的配置 418
12.5.3 VACUUM中的优化 419
12.5.4 预写式日志写优化 422
12.5.5 配置的实践 424
12.6 数据库的逻辑结构优化 430
12.6.1 表的优化 430
12.6.2 索引的优化 432
12.7 SQL的优化 436
12.7.1 找出慢的SQL 436
12.7.2 SQL语句的优化技巧 439
12.8 小结 441
第13章 Standby数据库的搭建 442
13.1 Standby数据库原理 442
13.1.1 PITR原理 442
13.1.2 WAL日志归档 443
13.1.3 流复制 444
13.1.4 Standby数据库的运行原理 444
13.1.5 建Standby数据库的步骤 445
13.2 pg_basebackup命令行工具 447
13.2.1 pg_basebackup介绍 447
13.2.2 pg_basebackup的命令行参数 447
13.2.3 pg_basebackup使用示例 449
13.3 异步流复制Hot Standby的示例 450
13.3.1 配置环境 450
13.3.2 主数据库的配置 450
13.3.3 在Standby上生成基础备份 451
13.3.4 启动Standby数据库 452
13.3.5 交换主备库的角色 454
13.3.6 故障切换 455
13.4 同步流复制的Standby数据库 458
13.4.1 同步流复制的架构 458
13.4.2 同步复制的配置 458
13.4.3 配置实例 459
13.5 检查备库及流复制情况 465
13.5.1 检查异步流复制的情况 465
13.5.2 检查同步流复制的情况 466
13.5.3 pg_stat_replication视图详解 467
13.5.4 查看备库的状态 468
13.6 Hot Standby的限制 470
13.6.1 Hot Standby的查询限制 470
13.6.2 Hot Standby的查询冲突处理 473
13.7 恢复配置详解 474
13.7.1 归档恢复配置项 474
13.7.2 Recovery Target配置 475
13.7.3 Standby Server配置 476
13.8 流复制的注意事项 476
13.8.1 min_wal_size参数的配置 476
13.8.2 vacuum_defer_cleanup_age参数的配置 477
13.9 逻辑复制 477
13.9.1 逻辑复制的介绍 477
13.9.2 逻辑复制的发布 478
13.9.3 逻辑复制的订阅 479
13.9.4 逻辑复制的冲突处理 481
13.9.5 逻辑复制的限制 481
13.9.6 逻辑复制的监控与安全 482
13.9.7 逻辑复制的相关配置参数 483
13.9.8 逻辑复制的搭建实践 483
13.10 小结 488
第四篇 架构篇
第14章 PgBouncer 490
14.1 PgBouncer 介绍 490
14.2 PgBouncer的相关概念 491
14.3 PgBouncer的安装方法 491
14.4 PgBouncer的简单使用 491
14.4.1 简单配置方法 492
14.4.2 启动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 小结 500
第15章 Slony-I的使用 501
15.1 Slony-I中的主要概念 501
15.1.1 集群 502
15.1.2 节点 502
15.1.3 复制集合 502
15.1.4 数据原始生产者、数据提供者和数据订阅者 502
15.1.5 Slon守护程序 502
15.1.6 Slonik配置程序 503
15.2 Slony-I复制的一些限制 503
15.3 在Linux下安装和配置Slony-I 503
15.3.1 二进制方式安装Slony-I 503
15.3.2 源码编译安装Slony-I 504
15.3.3 配置Slony-I的基本复制 506
15.3.4 添加和移除表的复制 512
15.3.5 主备切换 513
15.4 小结 514
第16章 Bucardo的使用 515
16.1 Bucardo的相关概念 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 示例环境 520
16.3.2 Bucardo的工作原理 520
16.3.3 bucardo install 521
16.3.4 配置同步 523
16.3.5 Bucardo 常用命令 525
16.4 Bucardo的日常维护 526
16.4.1 Bucardo的触发器日志清理 526
16.4.2 临时停止和启动同步的方法 526
16.4.3 新增表到同步的方法 527
16.4.4 移除某个表或序列的方法 527
16.5 小结 527
第17章 PL/Proxy的使用 528
17.1 PL/Proxy的相关概念 528
17.1.1 什么是PL/Proxy 528
17.1.2 PL/Proxy的特性说明 530
17.2 PL/Proxy的安装及配置 530
17.2.1 编译安装 530
17.2.2 安装规划 531
17.2.3 配置过程 531
17.3 PL/Proxy的集群配置详解 535
17.3.1 Cluster configuration API方式 536
17.3.2 SQL/MED方式配置集群 538
17.4 PL/Proxy语言详解 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 方案架构 541
17.5.3 具体实施步骤 542
17.6 小结 550
第18章 pgpool-II的使用 551
18.1 pgpool-II的相关概念 551
18.1.1 什么是pgpool-II 551
18.1.2 pgpool-II的发展简介 552
18.1.3 pgpool-II的架构 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的配置过程 558
18.3.2 内置复制模式的示例 561
18.3.3 流复制的主备模式示例 564
18.3.4 show命令 566
18.4 pgpool-II高可用配置方法 568
18.4.1 pgpool-II高可用切换及恢复的原理 568
18.4.2 pgpool-II的在线恢复 568
18.4.3 流复制模式中的故障切换 570
18.4.4 pgpool-II的健康检查 571
18.4.5 流复制的主备模式的高可用示例 571
18.4.6 watchdog的配置 576
18.5 小结 582
第19章 Postgres-XC的使用 583
19.1 Postgres-XC的相关概念 583
19.1.1 什么是Postgres-XC 583
19.1.2 Postgres-XC的特点 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目录及程序说明 586
19.3 配置Postgres-XC集群 588
19.3.1 集群规划 588
19.3.2 初始化GTM 588
19.3.3 初始化GTM备库 589
19.3.4 初始化GTM Proxy 589
19.3.5 初始化Coordinators、数据节点 590
19.3.6 启动集群 591
19.3.7 停止集群 592
19.3.8 配置集群节点信息 592
19.4 Postgres-XC的使用 594
19.4.1 建表详解 594
19.4.2 使用限制 600
19.4.3 重新分布数据 601
19.4.4 增加Coordinator节点的方法 602
19.4.5 移除Coordinator节点的方法 603
19.4.6 增加Datanode节点的方法 604
19.4.7 移除Datanode节点的方法 605
19.5 小结 605
第20章 高可用性方案设计 606
20.1 高可用架构基础 606
20.1.1 各种高可用架构介绍 606
20.1.2 服务的可靠性设计 607
20.1.3 数据可靠性设计 607
20.2 基于共享存储的高可用方案 608
20.2.1 SAN存储方案 608
20.2.2 DRBD方案 609
20.3 WAL日志同步或流复制同步方案 609
20.3.1 持续复制归档的Standby方法 609
20.3.2 异步流复制方案 610
20.3.3 同步流复制方案 610
20.4 基于触发器的同步方案 610
20.4.1 基于触发器的同步方案特点 610
20.4.2 基于此方案的同步软件介绍 610
20.5 基于中间件的高可用方案 611
20.5.1 基于中间件的高可用方案的特点 611
20.5.2 基本中间件的开源软件介绍 612
20.6 小结 613
PostgreSQL中国社区数据库专家、中启乘数科技联合创始人撰写,PostgreSQL数据库领域经典著作升级版
系统讲解PostgreSQL技术内幕,深入分析PostgreSQL特色功能,
包含大量来自实际生产环境的经典案例和经验总结
为什么要写这本书
PostgreSQL数据库是功能强大的开源数据库,包含了其他商业或开源数据库的大部分功能,PostgreSQL 10版本之后还添加了很多商业数据库中没有的功能。在本书第1版发行前,PostgreSQL就已获得数个奖项,包括3次获得Linux Journal杂志编辑评选的“数据库奖”(2000年度、2003年度和2004年度),2004年又获得“Linux新媒体数据库系统奖”。此外,PostgreSQL还在2017—2018年连续两年获得了DB-Engines的“年度数据库奖”称号。
笔者很欣慰本书的第1版发行后得到了广大读者的认可。本书致力于全面讲解PostgreSQL数据库的知识。然而由于PostgreSQL的功能和特性非常多,要想全面和完整地讲解PostgreSQL数据库的内容十分困难,而第1版成书匆忙,有些内容讲解得不够深入和完善,同时第1版是基于PostgreSQL 9.4撰写的,自第1版发布之后PostgreSQL已连续发布了9.5、9.6、10、11、12五个版本,增加了很多新的功能,因此笔者决定对第1版进行完善,同时增加对PostgreSQL新版本功能的讲解。
第2版中补充了从9.4版本到当前版本增加的所有新功能。第10章增加了笔者这些年来积累的PostgreSQL数据库技术内幕方面的新内容,如实例恢复与热备份原理解密、控制文件解密、WAL文件解密等在市面上常见书籍中较少能看到的内容。第11章增加了BRIN索引、全文索引和数组等的相关内容。第12章增加了笔者多年来积累的优化PostgreSQL的经验和方法,如使用大页优化数据库、数据库配置的实践以及表、索引、SQL优化等内容。第13章增加了逻辑复制的相关内容。在PostgreSQL 10以上版本中,Standby备库增加了很多新功能,书中做了详细的介绍。同时在PostgreSQL 12版本中Standby的搭建方法发生了较大变化(将recovery.conf的内容合并到了postgresql.conf中),本书也增加了相关讲解。第14~19章讲了一些开源软件,这些开源软件在本书第1版出版后也发布了很多新版本,其中开源软件PgBouncer、Slony-I、 PL/Proxy、Postgres-XC的变化不是很大,本书根据这些软件版本的情况进行了内容更新。但pgpool-II和Bucardo的新版本变化较大,本书介绍pgpool-II的章节增加了watchdog的配置以及更翔实的原理介绍,使读者在学习之后可以更容易地搭建出更可靠、更稳定的pgpool-II集群。Bucardo新版本在配置方法上发生了很大变化,对此本书也进行了详细的讲解。
目前,国内越来越多的公司开始使用PostgreSQL,包括一些金融证劵公司,同时很多知名的数据库也是基于PostgreSQL做的二次开发,而云厂商如腾讯云、华为云、阿里云等都已经全面支持PostgreSQL数据库,欢迎更多的朋友加入学习PostgreSQL数据库的大潮中来。
读者对象
适合阅读本书的读者:
数据库入门者。本书是一本数据库入门书,通过学习本书和相关的数据库知识,对数据库了解不是很深的数据库爱好者也可以成为数据库专家。
不熟悉PostgreSQL数据库的DBA。可以帮助不熟悉PostgreSQL的DBA快速掌握该数据库的相关知识,成长为一名合格的PostgreSQL DBA。
PostgreSQL DBA。熟悉PostgreSQL数据库的DBA也可以在本书中学习到一些更深入的内容,使自身的数据库水平更上一层楼。
开发人员。开发人员可以通过此书快速掌握PostgreSQL数据库方面的知识和技巧,提高开发效率,做出更的软件产品。
如何阅读本书
本书分为四大部分,分别为准备篇、基础篇、提高篇和架构篇。准备篇是为没有数据库基础的读者准备的,如果读者已经具备了一定的数据库基础,可以跳过其中的一些内容。基础篇介绍了PostgreSQL数据库的基础内容,学习完此篇内容的读者可以完成PostgreSQL数据库的基本日常操作工作。提高篇讲解了一些更深入的内容,如PostgreSQL的技术内幕、特色功能、优化等,仔细阅读此篇有助于读者早日成为PostgreSQL数据库高手。架构篇讲解了与PostgreSQL数据库配套使用的常用开源软件及架构设计方面的内容,通过阅读此篇,读者可以开拓眼界并提高数据库架构设计能力。
本书给出了大量的实例,建议读者边阅读此书边按实例进行实际操作,以获得的学习效果。
勘误和支持
由于笔者的水平有限,编写的时间也较仓促,书中难免会有一些疏漏或者不准确的地方,敬请读者朋友批评指正。读者朋友可以将在书中遇到的问题及宝贵意见发送至tangcheng@csudata.com,笔者很期待能够听到你们的真挚反馈。
致谢
首先要感谢国内PostgreSQL数据库爱好者,他们已经整理了大量的关于PostgreSQL的文章,翻译了PostgreSQL官方手册,让笔者可以站在前人的肩膀上学习。大家可以在PostgreSQL的中国官方主页http://www.postgres.cn/v2/document上看到这些成果。
感谢机械工业出版社华章公司的编辑Lisa老师,感谢她在这一年多的时间里始终支持笔者写作,她鼓励并帮助笔者顺利完成了全部书稿。
要感谢笔者的妻子,她一直支持和鼓励笔者,让笔者能坚持把这本书写完。
谨以此书献给热爱PostgreSQL的朋友们。
唐成(osdba)
中国,杭州,2020年6月

^_^:d70bc1daf7a7aa24e313ad38f935a42c