社会焦点

解读华为企业云RDS技术:如何有效减少运维工作量

字号+ 作者: 来源: 2017-05-08

解读华为企业云RDS技术:如何有效减少运维工作量

互联网技术的迅猛发展,手机、平板、智能电视等各种输入终端的普及,让互联网数据呈现出爆炸性的增长。面对海量的数据,如何能以更加稳定、快速的方式存储海量数据,以及从中挖掘出有价值的信息,成为很多企业面临的新课堂。云存储的出现为数据挖掘快速的发展带来了新的机遇。

亚马逊、微软、谷歌、IBM 等巨头纷纷推出了自己的云存储平台,国内华为、腾讯、百度、360 等公司也加紧了在云存储领域的布局。云服务已经被企业列入常规 IT 投资,云数据库服务是非常重要的一部分。

本文将从一个用户的角度历数市场上现有关系型数据库服务的主要功能,探索是否有一些改进的空间以及华为企业云在 RDS(Relational Database Service) 技术上所做的一些选择。

  数据库备份

数据库备份指将数据库系统中的数据加以复制,一旦发生灾难或错误操作时,得以方便而及时地恢复系统的有效数据和正常运作。

数据库备份是用户常用的功能之一,mysqldump/xtrabackup 是最常见的备份方案,同时也是大多数厂商的选择。

Mysqldump 有比较明显的缺陷,无法做增量备份,对于经常需要做备份的用户来说,是无法接受的。Xtrabackup 是 Percona 推出的商业解决方案,同时提供免费版本,基本机制是通过比较 LSN 来做增量拷贝,从机制来看,需要 innodb 事务的支持,对于非 innodb 比如 myisam,则通过 FLUSH TBALES WITH READ LOCAK 来保证数据的一致性,显然,block write 的时间取决于 myisam 表拷贝时间。但是我们可以禁用 myisam 表,这个问题可以跳过。另一方面,xtrabackup 需要运行在 GuestOS 中,读取拷贝生产环境数据目录同时会影响到线上的 IO 的表现。

最后,如果用户想要删除其中一个增量备份,该如何做增量的合并和删除?还是将依赖的增量一并删除?

恐怕对用户来说,这都不是理想的。

有没有既不影响生产环境 IO,又能做增量并且还能独立删除的办法呢?快照或许是一个比较好的选择。

  数据库快照

数据库快照是由客户启动的数据库实例的快照,不仅可以备份单个数据库,还可以备份整个数据库实例。数据库快照可让客户按所需的任意频率在已知状态备份数据库实例,然后随时还原到该特定的状态。数据库快照可以使用 RDS 控制台或 RDS API 创建。数据库快照会一直保存,直到客户使用 RDS 控制台或 RDS API 将其或其所在的实例删除。

  • 急速增量备份 – 快速完成数据备份,避免大数据量备份时间过长。

  • 线上业务轻干扰 – 基于快照的备份过程效率较传统数据库备份方式要高,合理的备份策略,对实例 IO 资源和业务有着非常有限的影响。

  • 数据库实例规格如图 1 所示。

    解读华为企业云RDS技术:如何有效减少运维工作量

    图 1 :实例规格

      数据库引擎

    Innodb、myisam 是最常用的 MySQL 数据库引擎,前者是事务安全的,后者则拥有更高的性能。前文描述到,myisam 无法保证备份点数据的一致性,FLUSH TBALES WITH READ LOCAK 又需要 block write,得不偿失。

    MySQL replication 是做读写分离的基础,分为异步和半同步的方式,前者有对主机性能影响小,但数据有一定延时,后者则相反。两种技术可以满足用户不同场景的需求。关于 Crash safe 的问题,分为 master crash safe 和 slave crash safe。

    MySQL 5.6 版本之前存在一个 bug,即当 sync_binlog=1/innodb-flush-log-at-trx-commit=1 时,会使得 InnoDB 存储引擎的 group commit 失效, 导致性能急剧下降,crash-safe slave 的问题更复杂些,主要 replication 中的 SQL thread 和 IO thread 原子性问题,这里不再累述,MySQL 5.6 版本通过将 relay-info.log 的信息保存在 InnoDB 的事务表中解决了这个问题。

    讲了这么多华为企业云 RDS 技术,下面会从几个方面详解 RDS 究竟是什么。

      深入浅出 RDS

    RDS(Relational Database Service,关系型数据库服务)是一种基于云计算平台的即开即用、稳定可靠、弹性伸缩、便捷管理的在线关系型数据库服务。

    RDS 具有较为完善的性能监控体系和多重安全防护措施,能使企业用户在云中轻松设置、操作和扩展关系型数据库。通过 RDS 控制台,可以执行所有必需任务而无需编程,简化运营流程,减少日常运维工作量,从而能够专注于应用开发和业务发展。

    用户访问 RDS 实例时,需要经过 ECS(Elastic Cloud Server,弹性云服务器),具体关系如图 2 所示。

    解读华为企业云RDS技术:如何有效减少运维工作量

    图 2:访问 RDS

    RDS 是以集群为单位进行组织,一个集群由多个实例构成,集群中包含一个主机,还可能包含一个备机和若干个只读副本,它们一起为业务提供数据库服务。

    RDS 的最小管理单元是实例,一个实例代表了一个独立运行的关系型数据库,实例可进行如下分类:

  • 主实例

  • 备实例

  • 只读副本

  • 用户可以在 RDS 系统中自助创建及管理各种数据库引擎的实例。

      RDS API 使用场景

    RDS 的 OpenAPI 提供针对用户数据库实例的创建、查看、删除等基本操作,以及查询系统支持的 API 版本、数据库引擎及版本、运行环境规格、可用区域等操作。其主要的调用场景如图 3 和图 4 所示。

    解读华为企业云RDS技术:如何有效减少运维工作量

    图 3:使用场景一

    在创建实例之前,需要获取系统支持的数据库引擎及版本,运行环境规格以及可用区域信息。在获取到信息之后,可以将返回结果作为调用参数,执行创建实例操作。

    在实例创建成功后,用户可以对自己所属的实例进行列举、查询详细信息、以及删除操作。

    解读华为企业云RDS技术:如何有效减少运维工作量

    图 4:使用场景二

    数据库实例需要先查询数据库所有参数和参数信息后才能进行设置参数取值和参数恢复默认值。

    数据库实例可以进行扩容和重启,可以将返回的任务号作为调用参数查询异步任务的进展情况。

    转载请注明出处。


    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章