Trove提供了便捷的图形操作界面,进行数据库创建、管理等,也可以通过命令行方式实现相同的功能。下面通过Trove创建一个数据库实例来讲解Trove的工作流程。
1.创建数据库实例
1)命令行方式,创建一个数据库实例troveabc,并设置数据库用户和密码。
trove create TROVE_INSTANCE_NAME 1---size 10 / --databases troveabc / --users longgeek:password / --datastore_version 5.5 / --datastore mysql / --nic net-id=9cbae051-78c7-4574-968e-2cb9b0f410aa
2)通过图形界面创建一个数据库实例。
创建一个Trove实例,输入实例名字,选择一个Flavor,以及使用的Cinder-volume大小,填入要创建的数据库名、用户名、密码,以及访问限制,完成创建。
通过上面的描述我们可以看出,通过Trove可以很便捷地在云化环境中实现对数据库的自动化创建和管理等。在创建一个数据库实例的过程中,包含了很多隐性的操作,那就看看在创建数据库实例过程中,Trove调用了哪些主键,做了些什么操作。
1)Tove通过OpenStack其他主键的API接口调用了zone、volume、neutron、Security-Group、instance等。
2)admin用户创建的一个共享内网网络,同时也写在了trove.conf中。
3)在创建Trove实例时,分配5G的卷给虚拟机。
4)创建Trove实例时会自动根据datastore_type来指定一个单独的安全组,默认开启了相关数据库服务端口号。
5)给实例添加网络资源浮动IP,可以通过浮动IP连接到数据库。
创建一个数据库实例内容的实现流程
1)启动VM,创建Nova实例。
2)创建数据库实例,执行cloud-init自动扩展根分区、Metadata以及Heat模板中自定义的脚本。
3)重启Tove-guestagent服务,而Trove-guestagent会监听RPC消息队列,Trove-guestagent服务启动后,更新状态为Running,发送RPC消息。
4)Taskmanager收到消息后,发送创建db请求。
5)Trove-guestagent收到请求后创建相应db,最后发送Active状态消息给RPC。
6)Trove-conductor同时收到trove-guestagent Active消息后,去数据库里更新trove instance的状态。