Trove项目作为一个DBaaS(数据库即服务),可以方便地为用户提供关系型和非关系型数据库,并在数据库生命周期内提供各种便捷的管理操作。
本书由Tesora团队的CTO Amrith Kumar和研发副总裁Douglas Shelley联合编写,深入介绍并研究了OpenStack中Trove项目的架构及工作原理。
本书适用于对OpenStack生态圈有所了解,并对数据库和开源事业有兴趣的开发者。
本书由Tesora团队的CTO Amrith Kumar和研发副总裁Douglas Shelley联合编写,深入介绍并研究了OpenStack中Trove项目的架构及工作原理。Trove项目作为一个DBaaS(数据库即服务),可以方便地为用户提供关系型和非关系型数据库,并在数据库生命周期内提供各种便捷的管理操作,例如复制、备份、扩容等。本书首先介绍了Trove的相关概念,以及如何下载并安装Trove;接着以实际操作为示例,讲述了Trove的基础架构和一些典型的操作方法,以及如何调试Trove并进行一系列故障排查;最后介绍了如何构建Trove guest镜像,以及在生产环境中操作Trove时需要注意的事项。本书适用于对OpenStack生态圈有所了解,并对数据库和开源事业有兴趣的开发者。
目录
- 第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 自定义f lavor ………………………………………………………………… 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