第1章 关于DBaaS的介绍 1
1.1 什么是DBaaS 1
1.1.1 数据库 2
1.1.2 服务 2
1.1.3 服务类别 2
1.1.4 DBaaS的定义 2
1.2 IT部门面对的数据库挑战 3
1.3 DBaaS的特性 4
1.3.1 管理平面和数据平面 4
1.3.2 租赁 6
1.3.3 服务位置 7
1.3.4 服务vs平台 9
1.4 DBaaS的好处 9
1.4.1 易于提供 9
1.4.2 一致性的配置 10
1.4.3 自动化操作 10
1.4.4 自动缩放 10
1.4.5 提高开发的灵活性 10
1.4.6 更好的资源利用和设计 11
1.4.7 对于提供者或操作者简化角色 11
1.5 其他DBaaS的提供者 11
1.5.1 亚马逊RDS 12
1.5.2 亚马逊Redshift 12
1.5.3 微软Azure SQL Database 12
1.5.4 Google Cloud SQL 12
1.5.5 亚马逊DynamoDB 12
1.6 OpenStack Trove 13
1.7 Trove的一段简要历史 13
1.8 OpenStack Trove中的租约 14
1.9 OpenStack生态系统中的Trove 14
1.10 总结 17
第2章 下载和安装OpenStack Trove 18
2.1 部署一个单节点的开发环境 18
2.1.1 配置Ubuntu环境 18
2.1.2 安装一些基础包 20
2.1.3 确认你的配置 20
2.1.4 给“ubuntu”用户赋予免密码sudo权限 21
2.1.5 使用devstack工具安装OpenStack 22
2.1.6 启用默认的Trove公钥 26
2.1.7 系统认证 27
2.1.8 创建你的第1个Trove数据库实例 28
2.1.9 在devstack中使用Neutron 32
2.1.10 访问Dashboard 35
2.2 在多节点的OpenStack环境中部署Trove 37
2.2.1 前提条件 37
2.2.2 安装必需包 37
2.2.3 创建Trove用户 38
2.2.4 创建Trove操作的数据库 38
2.2.5 在OpenStack中配置Trove 38
2.2.6 配置Trove服务 39
2.2.7 初始化Trove操作的数据库 41
2.2.8 在Keystone中配置Trove Endpoint 42
2.2.9 重启Trove服务 42
2.2.10 下载或构建一个Trove Guest镜像 42
2.2.11 配置数据库类型及其版本 45
2.3 总结 49
第3章 基本的Trove操作 50
3.1 使用curl命令和RESTful服务交互 50
3.1.1 从Keystone中获取Token 51
3.1.2 使用Token和RESTful服务交互 53
3.2 理解应用程序如何与OpenStack服务交互 55
3.3 Trove CLI脚本编程 57
3.4 展示实例列表 59
3.5 启动实例 60
3.6 重启实例 64
3.7 删除实例 65
3.8 配置多个数据库类型 65
3.8.1 配置数据库类型 65
3.8.2 指定默认的数据库类型 69
3.9 创建用户和数据库 70
3.9.1 启用数据库的root用户 70
3.9.2 数据库操作 73
3.9.3 用户操作 76
3.10 总结 81
第4章 概念和架构 82
4.1 Trove基础架构 83
4.2 Trove的概念 85
4.2.1 Trove服务 85
4.2.2 Trove Guest Agent API 88
4.2.3 Trove策略 89
4.2.4 Trove拓展 93
4.2.5 Guest Agent的分类模型和策略 93
4.2.6 Trove Guest镜像 96
4.2.7 Trove消息队列和Trove内部的API 97
4.2.8 Trove基础设施数据库 101
4.2.9 Trove公共API 103
4.3 OpenStack Trove的架构 108
4.4 总结 123
第5章 Trove的高级操作 125
5.1 自定义flavor 125
5.2 Trove的备份和恢复 127
5.3 Trove的复制 133
5.3.1 对复制的支持情况 133
5.3.2 创建一个复制 134
5.3.3 故障切换 140
5.4 Trove集群 147
5.5 配置组 160
5.6 调整实例的大小 172
5.7 终止实例 175
5.8 总结 175
第6章 调试与故障排除 177
6.1 访问Trove guest实例的命令行 177
6.1.1 OpenStack guest镜像 178
6.1.2 Tesora guest镜像 179
6.2 阅读Trove错误日志 180
6.2.1 Trove控制节点的错误日志 180
6.2.2 关于guest实例的错误日志 180
6.2.3 错误日志的一些实例 181
6.3 理解Trove日志级别 186
6.4 在Trove中使用OpenStack分析库 189
6.4.1 在开始和停止位置之间分析代码 191
6.4.2 使用Python结构分析一个代码块 191
6.4.3 使用修饰器分析一个方法 192
6.4.4 使用修饰器分析整个类 192
6.5 总结 197
第7章 构建Trove guest镜像 198
7.1 使用预先构建的Trove guest镜像 198
7.1.1 Trove guest镜像组件 199
7.1.2 注册Trove guest镜像 199
7.2 使用磁盘镜像生成器构建guest镜像 202
7.2.1 安装磁盘镜像生成器 202
7.2.2 磁盘镜像生成器元件 203
7.2.3 使用Trove相关的元件构建guest镜像 205
7.2.4 使用redstack构建guest镜像 209
7.3 磁盘镜像生成器的工作原理 210
7.3.1 元件内的阶段 211
7.3.2 执行顺序 212
7.4 Trove涉及的元件 214
7.5 使用guest agent代码 219
7.5.1 在运行时安装guest agent代码 219
7.5.2 构建时安装guest agent代码 221
7.6 不同的操作系统中的guest镜像 222
7.7 总结 224
第8章 生产环境下Trove的运作 225
8.1 Trove的基础设施配置 225
8.1.1 配置Trove使用专用基础设施 227
8.1.2 AMQP服务器上的安全配置 229
8.1.3 为访问AMQP服务器提供凭证 230
8.2 guest安全 231
8.2.1 在guest实例上使用SSH 231
8.2.2 使用安全组和安全网络 232
8.3 Trove作为其他OpenStack服务的用户端 233
8.3.1 私有OpenStack结构中的消费服务 233
8.3.2 使用隐藏租户和服务租户 234
8.4 总结 238
附录A Trove配置选项 239
A.1 Trove配置文件 239
A.2 Trove配置选项 242
A.3 特定的数据库配置选项 252
A.4 总结 263
附录B Trove命令行接口 264
B.1 命令行接口 264
B.1.1 trove命令 264
B.1.2 trove-manage命令 286
B.2 总结 289
附录C Trove中的API 290
C.1 Trove API服务的end point 290
C.2 API的习惯用法 292
C.3 列出API的版本 293
C.4 实例API 294
C.4.1 列出实例 294
C.4.2 创建实例 295
C.4.3 展示实例 300
C.4.4 实例操作 301
C.4.5 修改实例 305
C.4.6 更新实例 312
C.4.7 删除实例 315
C.4.8 备份列表 316
C.4.9 实例配置列表 319
C.5 数据库类型的API 321
C.5.1 数据库类型列表 321
C.5.2 数据库类型版本列表 324
C.5.3 显示数据库类型版本(通过数据库类型和版本) 325
C.5.4 显示数据库类型版本(通过UUID) 326
C.5.5 数据库类型版本配置项列表 327
C.5.6 显示数据库类型版本配置项 328
C.5.7 数据库类型版本配置项列表 329
C.5.8 显示数据库类型版本配置项 330
C.6 实例类型API 331
C.6.1 实例类型列表 331
C.6.2 显示实例类型 333
C.7 限额API 334
C.8 备份API 335
C.8.1 备份列表 336
C.8.2 显示备份 337
C.8.3 创建备份 338
C.8.4 删除备份 340
C.9 数据库扩展API 341
C.9.1 获取root用户的激活状态 341
C.9.2 启用root 342
C.9.3 数据库列表 343
C.9.4 创建数据库 344
C.9.5 删除数据库 346
C.9.6 创建用户 347
C.9.7 用户列表 349
C.9.8 查看用户的权限 350
C.9.9 删除用户 351
C.9.10 用户访问授权 351
C.9.11 显示用户的访问权限 353
C.9.12 解除用户的访问权限 354
C.10 集群API 355
C.11 集群列表 355
C.11.1 集群详情 357
C.11.2 创建集群 359
C.11.3 集群操作:添加实例 362
C.11.4 删除集群 363
C.12 总结 364