新書推薦:
《
我的心理医生是只猫
》
售價:HK$
49.5
《
股权控制战略:如何实现公司控制和有效激励(第2版)
》
售價:HK$
98.8
《
成吉思汗传:看历代帝王将相谋略 修炼安身成事之根本
》
售價:HK$
61.6
《
爱丁堡古罗马史-罗马城的起源和共和国的崛起
》
售價:HK$
76.8
《
人生解忧:佛学入门四十讲
》
售價:HK$
107.8
《
在虚无时代:与马克斯·韦伯共同思考
》
售價:HK$
57.2
《
自然信息图:一目了然的万物奇观
》
售價:HK$
140.8
《
女性史:古代卷(真正意义上的女性大历史)
》
售價:HK$
123.2
|
編輯推薦: |
本书的作者是PostgreSQL的主要开发人员,译者是PostgreSQL中国社区和中国用户会的核心成员。
本书前6章介绍了PostgreSQL基础,后6章由浅入深地介绍了PostgreSQL日常维护技巧、性能分析、备份恢复和重量级的复制技术。
是一本不可多得的管理类书籍。
|
內容簡介: |
本书提供了在线生产环境的PostgreSQL数据库的常见问题和故障快速解答,这些都基于作者作为PostgreSQL数据库培训师、用户和核心开发人员时的经验积累。每个技术都被拆分为小的方法或建议,先给出包含可工作代码的演示解决方案,然后解释这样做的原因及工作原理。
本书意在成为新用户和技术专家的桌面参考手册。
本书涵盖了PostgreSQL 9 所有的新功能。
|
關於作者: |
黄坚2001 年开始从事软件开发工作,拥有超过15 年的计算机软件开发经验,以及大量的电信业务、计费、电商系统的架构和开发经验,并对计算机安全、反向工程等领域有浓厚的兴趣和动手能力。从2011 年开始,积极参与PostgreSQL 数据库在国内的推广。是pgpool-II 中文手册的维护者之一。本书发行的时候,黄坚已经联合朋友创立了研发移动端云平台的湖南红手指信息技术有限公司,并任职CTO。常用网名:洞庭湖的泥鳅和Bambo。
谭峰(francs)PostgreSQL 中国用户会核心组成员,热衷于博客分享技术心得,致力于 PostgreSQL 中文技术推广,曾任杭州斯凯的PostgreSQL DBA 一职,维护超过100 个PostgreSQL 实例,拥有超过六年的PostgreSQL 数据库运维经验。曾和黄坚共同翻译《PostgreSQL 9 Admin Cookbook(第1 版)》,现就职于中国移动通信集团浙江有限公司,从事开源数据库管理和研究工作。个人博客:http:francs3.blog.163.com。
马海庆现任职于广州市财经职业学校信息网络管理中心,一直从事网络以及数据中心的设计及建设工作,熟悉PostgreSQL 数据库的架构设计以及运维。致力于推动PostgreSQL 在教育产业以及智慧校园中的应用。
Simon Riggs 是2ndQuadrant 的CTO,PostgreSQL 社区活跃的代码提交者。作为PostgreSQL 的主要开发人员,他为PostgreSQL 的贡献超过十年时间,期间,他为每个发行版本都设计开发了很多新功能。他擅长的领域包括复制、性能调优、商业智能、管理和安全。在他的领导下,2ndQuadrant 现在已经成为开源PostgreSQL 的领导开发者和PostgreSQL 项目的白金赞助商,并广泛服务于欧美、亚太、中东和非洲地区成百上千的用户。Simon 在很多交流会上都是活跃的发言者,并因在PostgreSQL 功能和复制方面的发言而被广泛知晓。作为多种数据库的开发工程师、架构师、数据分析师和系统设计师,他在近三十年间为遍布欧美的公司提供过服务。
Gianni Ciolli 是2ndQuadrant 意大利分公司的首席咨询师,从2008 年开始就从事开发、咨询和培训工作。他在欧洲和海外的PostgreSQL 峰会中都有发言,他还擅长于函数语言和符号计算(Symbolic Computing)等IT 技能。Gianni 拥有数学博士学位,并在代数几何、理论物理和形式证明理论方面发表过研究报告。他之前在佛罗伦萨大学任教师和研究员。Gianni 在自由软件和开源软件领域工作了近二十年。在2001 到2004 年期间,他是PLUG(Prato Linux User Group)公司的联合创始人和总裁。他曾多次组织意大利的PostgreSQL 交流大会,在2013 年,他获选加入ITPUG(Italian PostgreSQL Users Group)董事会。
Hannu Krosing 是2ndQuadrant 的首席咨询师以及Ambient Sound Investments 的技术顾问。作为Skype 公司的最初数据库架构师,他负责设计了用于复制和扩展技术的SkyTools套件,为PostgreSQL 项目工作和贡献十二余年。
Gabriele Bartolini 是一个资深开源开发人员,2ndQuadrant 首席咨询师, 国际PostgreSQL 社区的活跃成员。Gabriele 拥有佛罗伦萨大学的统计学学位。他擅长于数据挖掘和数据仓库,在澳大利亚和意大利从事过网页流量分析工作。
|
目錄:
|
目录
第1章 迈出第一步...................................................................................................................1
1.1 介绍 ..................................................................................................................................1
1.2 获取PostgreSQL ..............................................................................................................7
1.3 连接到PostgreSQL服务 ..................................................................................................8
1.4 启用网络远程用户访问 ............................................................................................... 11
1.5 使用图形化管理工具 ....................................................................................................12
1.6 使用 psql 查询和脚本工具 ...........................................................................................16
1.7 安全地修改你的密码 ....................................................................................................19
1.8 避免硬编码你的密码 ....................................................................................................20
1.9 使用连接服务文件 ........................................................................................................22
1.10 连接失败故障排除 ......................................................................................................23
第2章 浏览数据库.................................................................................................................25
2.1 介绍 ................................................................................................................................25
2.2 当前服务程序的版本号是多少 ....................................................................................26
2.3 服务程序运行时间是多少? ........................................................................................27
2.4 定位数据库服务的数据文件 ........................................................................................28
2.5 定位数据库服务的日志文件 ........................................................................................31
2.6 定位数据库的系统标识 ................................................................................................33
2.7 列出数据库服务中的数据库 ........................................................................................35
2.8 数据库中有多少张表 ....................................................................................................38
2.9 一个数据库占用了多少磁盘空间 ................................................................................40
2.10 一张表占用了多少磁盘空间 ......................................................................................41
2.11 哪张表是最大的表 ......................................................................................................42
2.12 表里有多少行记录 ......................................................................................................43
2.13 快速估算表里的记录总数 ..........................................................................................44
2.14 列出数据库中的扩展模块 ..........................................................................................48
2.15 理解对象的依赖关系 ..................................................................................................49
第3章 配置............................................................................................................................ 52
3.1 介绍 ................................................................................................................................52
3.2 阅读手册(RTFM) .....................................................................................................53
3.3 规划一个新数据库 ........................................................................................................54
3.4 在程序中更改参数 ........................................................................................................55
3.5 查看当前的配置参数 ....................................................................................................57
3.6 哪些参数为非默认设置 ................................................................................................58
3.7 更新参数文件 ................................................................................................................60
3.8 为特定用户组设置参数 ................................................................................................62
3.9 基本服务配置清单 ........................................................................................................63
3.10 添加一个外部模块到PostgreSQL服务中 ..................................................................64
3.11 使用已安装的模块 ......................................................................................................68
3.12 管理已安装的扩展 ......................................................................................................70
第4章 服务控制.....................................................................................................................74
4.1 介绍 ................................................................................................................................74
4.2 手动启动数据库服务 ....................................................................................................75
4.3 安全快速地停止服务 ....................................................................................................77
4.4 在紧急情况下关闭服务 ................................................................................................77
4.5 重新加载服务配置文件 ................................................................................................78
4.6 快速重启服务 ................................................................................................................80
4.7 阻止新的连接 ................................................................................................................81
4.8 限制每个用户只允许一个会话 ....................................................................................83
4.9 断开用户连接 ................................................................................................................84
4.10 为多租户进行数据库设计 ..........................................................................................86
4.11 使用多个模式(schema) ..........................................................................................87
4.12 单独给用户分配数据库 ..............................................................................................89
4.13 在一个系统上运行多个服务 ......................................................................................90
4.14 配置连接池 ..................................................................................................................92
4.15 在相同的主机和端口上访问多个服务 ......................................................................95
第5章 表和数据.....................................................................................................................98
5.1 介绍 ................................................................................................................................98
5.2 为数据库对象选择恰当的名称 ....................................................................................99
5.3 处理使用双引号括起来的对象名 ..............................................................................100
5.4 确保相同的名称和相同的列定义 ..............................................................................102
5.5 标记和删除重复数据 ..................................................................................................106
5.6 避免出现重复行 .......................................................................................................... 110
5.7 为一组数据找到一个唯一主键 .................................................................................. 115
5.8 生成测试数据 .............................................................................................................. 117
5.9 随机抽样数据 ..............................................................................................................120
5.10 从电子表格导入数据 ................................................................................................122
5.11 从扁平文件导入数据 ................................................................................................124
第6章 安全..........................................................................................................................128
6.1 介绍 ..............................................................................................................................128
6.2 PostgreSQL的超级用户 ..............................................................................................129
6.3 收回用户对表的访问权 ..............................................................................................130
6.4 赋予用户对表的访问权 ..............................................................................................134
6.5 建立一个新用户 ..........................................................................................................135
6.6 临时阻止一个用户的连接 ..........................................................................................137
6.7 删除用户而不删除其数据 ..........................................................................................138
6.8 检查是否所有的用户都是使用安全的密码 ..............................................................139
6.9 将受限的超级用户权限赋予指定用户 ......................................................................140
6.10 审计DDL的改变 ........................................................................................................143
6.11 审计数据的改变 ........................................................................................................145
6.12 总是认清登录的用户 ................................................................................................150
6.13 与LDAP集成 .............................................................................................................152
6.14 使用SSL进行连接 .....................................................................................................153
6.15 使用SSL证书来验证客户端 .....................................................................................155
6.16 映射外部用户为数据库角色 ....................................................................................158
6.17 加密敏感数据 ............................................................................................................159
第7章 数据库管理...............................................................................................................164
7.1 介绍 ..............................................................................................................................164
7.2 编写一个脚本,要么全部执行成功,要么全部执行失败 ......................................165
7.3 编写一个psql脚本,一遇到错误就退出 ...................................................................168
7.4 在多张表上执行多个操作 ..........................................................................................169
7.5 添加删除表上的列 .....................................................................................................174
7.6 更改列的数据类型 ......................................................................................................175
7.7 更改数据类型的定义 ..................................................................................................179
7.8 添加删除模式(schema) .........................................................................................180
7.9 在不同schema之间移动对象 ......................................................................................182
7.10 添加删除表空间 .......................................................................................................183
7.11 在不同表空间之间移动对象 ....................................................................................186
7.12 访问其他PostgreSQL数据库中的对象 ....................................................................189
7.13 访问其他外部数据库中的对象 ................................................................................197
7.14 可更新视图 ................................................................................................................199
7.15 使用物化视图 ............................................................................................................204
第8章 监控和诊断...............................................................................................................207
8.1 介绍 ..............................................................................................................................207
8.2 检查用户是否已经连接上来 ...................................................................................... 211
8.3 检查哪个查询在运行 ..................................................................................................213
8.4 检查哪个查询正在运行或被阻塞 ..............................................................................216
8.5 确定谁阻塞了一个查询 ..............................................................................................217
8.6 杀掉指定会话 ..............................................................................................................219
8.7 探测未决的准备事务 ..................................................................................................221
8.8 确定是否某人在使用某张表 ......................................................................................222
8.9 确定一张表最后被使用的时间 ..................................................................................223
8.10 临时数据使用的磁盘空间 ........................................................................................225
8.11 理解查询变慢的原因 ................................................................................................227
8.12 调查和报告一个缺陷 ................................................................................................230
8.13 生成每日的日志文件错误信息摘要 ........................................................................231
8.14 分析你的查询的实时性能 ........................................................................................234
第9章 常规维护...................................................................................................................236
9.1 介绍 ..............................................................................................................................236
9.2 控制自动数据库维护 ..................................................................................................237
9.3 避免自动冻结和页损坏 ..............................................................................................241
9.4 避免事务重叠 ..............................................................................................................243
9.5 移除过期的准备事务 ..................................................................................................245
9.6 对于大量使用临时表时需要的操作 ..........................................................................247
9.7 识别和修复膨胀的表和索引 ......................................................................................249
9.8 维护索引 ......................................................................................................................253
9.9 添加约束而不检查已有行 ..........................................................................................256
9.10 寻找未使用的索引 ....................................................................................................258
9.11 谨慎删除不必要的索引 ............................................................................................260
9.12 维护规划 ....................................................................................................................261
第10章 性能和并发.............................................................................................................263
10.1 介绍 ............................................................................................................................263
10.2 寻找执行缓慢的SQL语句 ........................................................................................264
10.3 从pg_stat* 视图收集常规统计信息 .........................................................................267
10.4 研究是什么让SQL缓慢 ............................................................................................269
10.5 减少返回的行 ...........................................................................................................273
10.6 简化复杂的SQL ........................................................................................................274
10.7 加速查询的执行,而无须重写 ................................................................................281
10.8 为什么一个查询不使用索引 ....................................................................................284
10.9 强制让一个查询使用一个索引 ................................................................................285
10.10 使用乐观锁 ..............................................................................................................287
10.11 报告性能问题 ..........................................................................................................288
第11章 备份和恢复.............................................................................................................290
11.1 介绍 ............................................................................................................................290
11.2 理解和控制崩溃恢复 ................................................................................................291
11.3 计划备份 ....................................................................................................................293
11.4 对一个数据库进行热逻辑备份 ................................................................................294
11.5 对所有数据库进行热逻辑备份 ................................................................................296
11.6 对一个表空间中的所有表进行热逻辑备份 ............................................................297
11.7 备份数据库对象的定义 ............................................................................................298
11.8 独立的数据库热物理备份 ........................................................................................299
11.9 在线物理备份和持续归档 ........................................................................................302
11.10 恢复所有的数据库 ..................................................................................................305
11.11 恢复到一个时间点 ..................................................................................................308
11.12 恢复一个被删除损坏的表 .....................................................................................310
11.13 恢复一个被删除损坏的表空间 .............................................................................312
11.14 恢复一个被删除损坏的数据库 .............................................................................314
11.15 为备份恢复提速 .....................................................................................................315
11.16 增量差异备份和恢复 .............................................................................................317
11.17 使用Barman进行热物理备份 .................................................................................319
11.18 使用Barman进行恢复 .............................................................................................326
第12章 复制和升级.............................................................................................................330
12.1 介绍 ............................................................................................................................330
12.2 复制最佳实践 ............................................................................................................337
12.3 基于日志文件传送的复制不推荐使用 ............................................................338
12.4 建立流复制 ................................................................................................................341
12.5 建立流复制的安全机制 ............................................................................................346
12.6 热备机及读可扩展性 ................................................................................................347
12.7 管理流复制 ................................................................................................................351
12.8 使用repmgr ................................................................................................................353
12.9 使用复制槽位 ............................................................................................................355
12.10 监控复制 ..................................................................................................................357
12.11 性能和同步复制 ......................................................................................................360
12.12 延迟、暂停和同步复制 ..........................................................................................362
12.13 逻辑复制 ..................................................................................................................364
12.14 双向复制 ..................................................................................................................367
12.15 归档事务日志数据 ..................................................................................................370
12.16 升级小版本 ......................................................................................................371
12.17 主版本原地升级 ......................................................................................................372
12.18 主版本在线升级 ......................................................................................................374
|
內容試閱:
|
译者序
PostgreSQL 的官网有这样一句话The worlds most advanced open source database。从这一点就可以看出PostgreSQL 数据库的底蕴。PostgreSQL 的历史可以追溯到20 世纪70 年代的Ingres 数据库,而其自成一套的MVCC 实现和对SQL 标准的支持,成为了其作为行业领先数据库的坚实基础。PostgreSQL 是一款功能丰富的开源数据库,它支持丰富的数据类型,除了常用的数据类型外,还支持网络地址、数组、JSON、几何类型等,以满足应用程序开发需求。此外,PostgreSQL 还支持局部索引、表达式索引、GISTGIN 索引以及范围索引,支持物化视图、集合查询、窗口函数;最重要的是,PostgreSQL 还支持众多丰富的外部扩展,外部扩展完善了PostgreSQL 的功能,奠定了PostgreSQL 强大的扩展能力基础。
从2009 年开始,我就开始在寻求一些商业数据库的开源数据库替代产品,这时,PostgreSQL 出现在我的视野中。对SQL 标准的支持、性能都满足我们系统的要求,且其非常宽松的许可,非常符合我们的需求。之后,我就喜欢上了这个数据库,并逐渐引导公司和客户将项目向PostgreSQL 迁移。
同期,国内已经有大量公司使用PostgreSQL 数据库作为其主要的业务数据库,其中就包含了谭峰当时所在的杭州斯凯网络。从2011 年首届PostgreSQL 中国用户大会在国内召开,PostgreSQL 在国内的发展势头日渐迅猛。然而,由于PostgreSQL 在国内引入的时机错过了互联网业发展的黄金十年,因此其知名度和普及程度仍旧远远落后于MySQL 开源数据库,同样,中文资料也极度缺乏。但社区的兄弟们努力付出,在何伟平老师翻译的8.1 版本中文手册的基础上,已经完成了9.3 版本的中文手册的翻译,其中,在写序的这几天,9.4 版本的中文手册也刚刚翻译完成。
仅仅手册不足以快速培养出一名熟练的DBA,任何DBA 的成长都经历了反复的磨练和各种血淋淋的教训。然而,《PostgreSQL 9 Administration Cookbook(第2 版)》恰恰是这样一本帮助你快速成长为一名合格DBA 的经典管理类书籍。但是,要想成为合格的DBA,依旧需要你反反复复地动手练习。
PostgreSQL 9 Administration Cookbook(第2版)中文版VI本书是第2 版,第1 版已经由我和谭峰在几年前进行了翻译,但由于种种原因,无法发行。第一版英文版发行的内容主要是针对于PostgreSQL 9.1 版本提供了大量实战案例。第2 版的变动内容主要集中于9.4 引入的针对企业应用方面的改动,大部分在于复制和备份相关的内容。本书前六章介绍了PostgreSQL 数据库基础,后六章由浅入深地介绍了PostgreSQL 日常维护技巧、性能分析、备份恢复和重量级的复制技术。通过此书读者能学习到新的PostgreSQL数据库维护技巧,适合对PostgreSQL 有一定基础,同时想进一步了解PostgreSQL 的工程师,尤其适合于有志于成为PostgreSQL DBA 的朋友,这是一本经典的不可多得的PostgreSQL 管理类书籍。
为社区朋友提供高质量的书籍是我们翻译本书的最大动力。翻译工作是一份非常痛苦的工作,非常考验参与翻译人员的毅力。翻译的过程中我们付出了大量的时间和精力,曾几度想放弃,但为社区提供资料的动力支撑着我们一步步完成此书的翻译。在翻译的过程中,我们尽量参照原文的语序进行翻译,并尽量使用流行的计算机词汇,但某些只能通过意会的原文,我们只能按照我们的理解组织语句。另外,在翻译的过程中,有些单词的翻译,可能随着时间的发展,中文用词会发生变化,甚至有些单词我们直接保留了英文,希望读者能自己去体会其含义。翻译过程中出现错误在所难免,敬请各位读者朋友批评指正。如果发现有翻译错误或者不准确的地方,或者有其他疑问,请发邮件到albeta.huang@gmail.com,我们将尽快给您答复。
|
|