互联网技术的迅猛发展,手机、平板、智能电视等各类输入终端的普及,让互联网数据呈现出爆炸性的增加。面对海量的数据,如何能以更加稳定、快速的方式存储海量数据,以及从中挖掘出有价值的信息,成为不少企业面临的新课堂。html
云存储的出现为数据挖掘快速发展带来了新的机遇。亚马逊、微软、谷歌、IBM 等巨头纷纷推出了本身的云存储平台,国内华为、腾讯、百度、360等公司也加紧了在云存储领域的布局。云服务已经被企业列入常规IT投资,云数据库服务是很是重要的一部分。mysql
本文将从一个用户的角度历数市场上现有关系型数据库服务的主要功能,探索是否有一些改进的空间以及华为企业云在RDS(Relational Database Service) 技术上所作的一些选择。sql
数据库备份数据库
数据库备份指将数据库系统中的数据加以复制,一旦发生灾难或错误操做时,得以方便而及时地恢复系统的有效数据和正常运做。编程
数据库备份是用户经常使用的功能之一,mysqldump/xtrabackup 是最多见的备份方案,同时也是大多数厂商的选择。安全
Mysqldump 有比较明显的缺陷,没法作增量备份,对于常常须要作备份的用户来讲,是没法接受的。Xtrabackup 是 Percona 推出的商业解决方案,同时提供免费版本,基本机制是经过比较LSN来作增量拷贝。从机制来看,须要innodb 事务的支持,对于非innodb 好比 myisam,则经过FLUSH TBALES WITH READ LOCAK来保证数据的一致性,显然,blockwrite 的时间取决于 myisam 表拷贝时间。可是咱们能够禁用myisam表,这个问题能够跳过。另外一方面,xtrabackup 须要运行在 GuestOS中,读取拷贝生产环境数据目录同时会影响到线上的 IO 表现。服务器
若是用户想要删除其中一个增量备份,该如何作增量的合并和删除?仍是将依赖的增量一并删除?运维
对用户来讲,恐怕这都不是理想的。异步
有没有既不影响生产环境IO,又能作增量而且还能独立删除的办法呢?布局
事实上,华为云数据库备份是由客户启动的数据库实例的备份,不只能够备份单个数据库,还能够备份整个数据库实例。数据库备份可以让客户按所需的任意频率在已知状态备份数据库实例,而后随时还原到该特定的状态。数据库备份可使用RDS 控制台或 RDS API 建立,备份会一直保存,直到客户使用 RDS 控制台或 RDS API 将其或其所在的实例删除。
· 急速增量备份 – 快速完成数据备份,避免大数据量备份时间过长。
· 线上业务轻干扰 – 基于备份的备份过程效率较传统数据库备份方式要高,合理的备份策略,对实例IO资源和业务有着很是有限的影响。
数据库实例规格如图1所示:
图1
数据库引擎
Innodb、myisam 是最经常使用的 MySQL 数据库引擎,前者是事务安全的,后者则拥有更高的性能。前文描述到,myisam没法保证备份点数据的一致性,FLUSH TBALES WITH READ LOCAK 又须要 block write,得不偿失。
MySQLreplication 是作读写分离的基础,分为异步和半同步的方式,前者有对主机性能影响小,但数据有必定延时,后者则相反。两种技术能够知足用户不一样场景的需求。关于Crashsafe 的问题,分为 master crash safe 和slavecrash 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所示:
图2
RDS 的最小管理单元是实例,一个实例表明了一个独立运行的关系型数据库,实例可进行以下分类:
- 主实例
- 备实例
- 只读实例
用户能够在RDS 系统中自助建立及管理各类数据库引擎的实例。
RDS API 使用场景
RDS 的 OpenAPI 提供针对用户数据库实例的建立、查看、删除等基本操做,以及查询系统支持的API 版本、数据库引擎及版本、运行环境规格、可用区域等操做。其主要的调用场景如图3和图4所示。
图3
在建立实例以前,须要获取系统支持的数据库引擎及版本,运行环境规格以及可用区域信息。
在获取到信息以后,能够将返回结果做为调用参数,执行建立实例操做。
在实例建立成功后,用户能够对本身所属的实例进行列举、查询详细信息、以及删除操做。
图4
数据库实例须要先查询数据库全部参数和参数信息后才能进行设置参数取值和参数恢复默认值。
数据库实例能够进行扩容和重启,能够将返回的任务号做为调用参数查询异步任务的进展状况。
数据库解决方案对比
数据库的解决通常可经过自建数据库、数据库on云服务器、RDS等,咱们来经过图5所示的详细对比了解其优劣势:
图5
RDS 背后汇集了华为的 DBA团队专门负责运维,数据库内核开发团队负责改进数据库,将不少须要 DBA 平常运维的工做逐渐归入实现产品化。使用的客户能够从不少底层的任务中解放出来。
RDS 数据库实例的生命周期包括建立、修改、重启、备份和还原以及删除等,具体如图6所示。
图6
完整的RDS须要提供哪些服务
接下来将以华为企业云 RDS 为例,来讲明做为一个完整的RDS产品,至少须要可以提供哪些服务。
结合在数据库技术领域的发展趋势,完整的RDS 产品或可从如下几点特性着手研发:兼容多版本 MySQL、多种实例类型知足多场景需求、数据库管理便利灵活、指标监控便于运行情况了解、性能调优知足业务须要等。
以华为企业云 RDS 为研究模板和例子,其服务特性可从如下几点来看:
1. 安全。RDS 包括多种安全策略保护数据库和用户隐私,例如:VPC、子网、安全组等。
2. 性能监控。RDS 能支撑监控数据库实例及数据库引擎的关键性能指标,包括计算/内存/存储容量使用率、I/O 活动、数据库链接数、QPS/TPS、缓冲池、读/写活动等。
3. 数据迁移。登陆RDS 管理控制台,便可在“数据迁移”页面,提供数据迁移流程。
4. 高可用。RDS会将主数据库实例数据复制到一个备用数据库实例中,一旦主数据库实例发生故障致使不可用,便可在很短期内切换到备用数据库实例上。
5. 弹性伸缩。包括水平伸缩和垂直伸缩,例如可增删只读实例(每一个数据库最多有5个只读实例)、数据库实例存储空间扩容等。
6. 备份与恢复。RDS 既支持自动备份以及建立备份,又能支持恢复到某个备份文件点。
7. 日志管理。可查询数据库“错误日志”和“慢查询日志”,为数据库调优提供参考。
8. 参数配置。数据库管理员能够根据监控和日志等信息,对数据库引擎参数进行自定义设置,从而优化数据库。
结语
华为企业云 RDS 能够解决当前各种电子商务网站、社区网站、移动 APP 以及游戏类应用数据库搭建、管理以及维护的高成本及复杂性问题,使用户能够将更多的精力聚焦到应用和业务等核心层面,节约硬件成本和软件等成本,实现按需付费。
华为企业云 RDS 支持主从热备、读写分离,且提供了备份、恢复、监控等方面的全套解决方案,从而解决数据库运维上的问题。
点击这里,了解更多华为云数据库