问题导读:
1.Trove可以满足怎样的应用场景?
2.DBaaS有什么特色?
3.如何创建slave?
随着应用程序迁移到云中,操作数据库的复杂性,在这个新环境变得非常明显。即使你这样做在一个受控的奢侈的数据中心在专用硬件,也很难操作数据库基础结构。云引入了性能的可变性及虚拟化开销,并在底层硬件为最终用户提供了更低级别的控制。在公共云,单个虚拟机实例的可靠性被认为是大大低于在数据中心的专用机器。操作大量的服务器时,观察到的失败更频繁。所有的这些使在云中操作数据库更具挑战性。
Database-as-a-Service通过在操作基础设施时减轻管理员的管理负担去简化对云中的数据库的操作。依靠紧紧结合在底层基础设施和把许多常见操作自动化,DBaaS大大简化了许多这样的活动。然而,失败(failures)可能导致服务中断。因此,至关重要的是,为了使failures对最终用户透明,DBaaS平台解释和处理它们的方式,
Trove实现了这几个方面
第一,trove与OpenSatck基础设施紧密结合,与Nova,Neutron,Swift,Cinder和keystone紧密集成。它把启动一个新的服务器所需的大量的配置和设定都自动化,类似于其他工具如Puppet,Chef和Ansible所做的那样。它还允许网站管理员建立标准配置和使用那些配置可靠地启动服务器。
这个配置支持尤为重要的领域是复制和聚合。没有Trove,用户可能要靠自己手动配置这些特性和管理失效和故障转移。Trove使这些功能自动化,并且这些功能正在被分阶段实施。
Trove中最初被实施的复制(replication)使用了mysql内置的复制(replication)特性,用于MysqL数据储存。后续阶段将此功能扩展到包括聚合和复制所有Trove支持的数据储存。第一个版本的这个特性,用户可以创建一个单独的MySQL实例,然后创建一个从属的实例。创建从属(slave)的行为会建立一个新的与最初的实例同等的复制实例
以下命令说明用户将如何做到这一点。以下的Trove实例运行一个mysql5.5:
- $ trove list
- +--------------------------------------+------+-----------+-------------------+--------+-----------+------+
- | ID | Name | Datastore | Datastore Version | Status | Flavor ID | Size |
- +--------------------------------------+------+-----------+-------------------+--------+-----------+------+
- | d2bd91ef-3d7c-43ae-97a9-f0726c91d322 | m1 | mysql | 5.5 | ACTIVE | 7 | 2
- +--------------------------------------+------+-----------+-------------------+--------+-----------+------+
复制代码
现在将创建第二个(slave)实例引用上面提供的master,如下。
- $ trove create s1 7 --size 2 --slave_of d2bd91ef-3d7c-43ae-97a9-f0726c91d322
- +-------------------+--------------------------------------+
- | Property | Value |
- +-------------------+--------------------------------------+
- | created | 2014-06-13T14:33:27 |
- | datastore | mysql |
- | datastore_version | 5.5 |
- | flavor | 7 |
- | id | 9ffc7b3a-9205-412a-9cd2-521f95755c43 |
- | name | s1 |
- | slaveOf | d2bd91ef-3d7c-43ae-97a9-f0726c91d322 |
- | status | BUILD |
- | updated | 2014-06-13T14:33:27 |
- | volume | 2 |
- +-------------------+--------------------------------------+
复制代码
用户可以现在查看复制的状态对(replicated pair)如下所示。
- $ trove show 9ffc7b3a-9205-412a-9cd2-521f95755c43
- +-------------------+---------------------------------------------+
- | Property | Value |
- +-------------------+---------------------------------------------+
- | created | 2014-06-13T14:33:27 |
- | datastore | mysql |
- | datastore_version | 5.5 |
- | flavor | 7 |
- | id | 9ffc7b3a-9205-412a-9cd2-521f95755c43 |
- | name | s1 |
- | slaveOf | d2bd91ef-3d7c-43ae-97a9-f0726c91d322 |
- | status | ACTIVE |
- | updated | 2014-06-13T14:33:27 |
- | volume | 2 |
- +-------------------+---------------------------------------------+
复制代码
断开一个slave与master的连接,用户将会“分离(detach)”:
- $ trove detach_replication <slave instance>
复制代码
现在你已经了解了Trove的复制特性的基本结构。在下一篇文章中,我们将描述客户端和任务管理器的实现细节。
################################################################
译者:hochikong
本文译自:http://www.mirantis.com/blog/using-openstack-database-trove-replication-and-clustering/
|