BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 董咚锵 关注 0 他的粉丝 发布于 2017年5月6日. 估计阅读时间: 11 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

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

数据库引擎

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

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

  • 主实例
  • 备实例
  • 只读副本

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

RDS API 使用场景

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

在创建实例之前,需要获取系统支持的数据库引擎及版本,运行环境规格以及可用区域信息。

在获取到信息之后,可以将返回结果作为调用参数,执行创建实例操作。

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

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

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

RDS API 涉及的数据模型

在RDS的Web界面中,考虑到面向用户的易用性,将用户的数据库实例组织成集群的形式进行展现,通常一个MySQL集群中可以包含一个主实例、一个HA备实例以及若干个只读副本,或者只包含一个主实例和若干个只读副本,不包含备实例,其中只读副本不超过5个。如图5所示为API数据模型。

在RDS的OpenAPI中,考虑到与OpenStack Trove的兼容,对外只以实例级别提供服务,与Web界面上的集群组织方式的对应关系为:

在创建实例时会默认创建出一个集群,并将创建出的实例显示在此集群下。

在列举实例时会将此用户所属的所有实例以列表方式给出,不会体现出集群到实例的层次关系。

删除只读副本与界面功能相同,都是指定实例进行删除;删除主备实例时会同时将实例所属的集群一同删除,但前提条件是必须将集群下属的只读副本提前删除。

数据库解决方案对比

数据库的解决一般可通过自建数据库、数据库on云服务器、RDS等,我们来通过图6所示的详细对比了解其优劣势:

RDS背后聚集了华为的DBA团队专门负责运维,数据库内核开发团队负责改进数据库,将很多需要DBA日常运维的工作逐渐纳入实现产品化。使用的客户可以从很多底层的任务中解放出来。

RDS 数据库实例的生命周期包括创建、修改、重启、备份和还原以及删除等,具体如图7所示。

完整的RDS需要提供哪些服务

接下来将以华为企业云RDS为例,来说明作为一个完整的RDS产品,至少需要能够提供哪些服务。

结合在数据库技术领域的发展趋势,完整的RDS产品或可从以下几点特性着手研发:兼容多版本MySQL、多种实例类型满足多场景需求、数据库管理便利灵活、指标监控便于运行状况了解、性能调优满足业务需要等。

以华为企业云RDS为研究模板和例子,其服务特性可从以下几点来看:

一是安全,RDS包括多种安全策略保护数据库和用户隐私,例如:VPC、子网、安全组等。

二是性能监控,RDS能支撑监控数据库实例及数据库引擎的关键性能指标,包括计算/内存/存储容量使用率、I/O活动、数据库连接数、QPS/TPS、缓冲池、读/写活动等。

三是数据迁移,登录RDS管理控制台,即可在“数据迁移”页面,提供数据迁移流程。

四是高可用,RDS会将主数据库实例数据复制到一个备用数据库实例中,一旦主数据库实例发生故障导致不可用,即可在很短时间内切换到备用数据库实例上。

五是弹性伸缩,包括水平伸缩和垂直伸缩,例如可增删只读副本(每个数据库集群最多有5个只读副本)、数据库实例存储空间扩容等。

六是备份与恢复,RDS既支持自动备份以及创建快照,又能支持恢复到某个备份文件点。

七是日志管理,可查询数据库“错误日志”和“慢查询日志”,为数据库调优提供参考。

八是参数配置,数据库管理员可以根据监控和日志等信息,对数据库引擎参数进行自定义设置,从而优化数据库。

结语

华为企业云RDS可以解决当前各类电子商务网站、社区网站、移动APP以及游戏类应用数据库搭建、管理以及维护的高成本及复杂性问题,使用户可以将更多的精力聚焦到应用和业务等核心层面,节约硬件成本和软件等成本,实现按需付费。

华为企业云RDS支持主从热备、读写分离,且提供了备份、恢复、监控等方面的全套解决方案,从而解决数据库运维上的问题。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT