查看原文
其他

大咖专栏 | Mycat:轻松实现百亿级大表分布式存储与秒级并行查询

2017-03-15 余骏 AWS云计算


大咖专栏

大咖专栏主要刊登亚马逊AWS诸位大咖亲自撰写的Blog,内容涉猎广泛,话题讨论前沿,且与实战紧密相连。我们非常欢迎小伙伴们在评论区留言,与大咖互动交流!


今天为大家撰文的大咖,是我们的AWS解决方案架构师——余骏老师。

余骏

AWS解决方案架构师

余骏,AWS解决方案架构师,负责基于AWS的云计算方案架构的咨询和设计,同时致力于AWS云服务在国内的应用和推广。在加入AWS之前,在思科中国担任系统工程师,负责方案咨询和架构设计,在企业私有云和基础网络方面有丰富经验。

随着移动互联网的兴起和大数据的蓬勃发展,系统的数据量正呈几何倍数增长,系统的压力也越来越大,这时最容易出现的问题就是服务器繁忙。


我们可以通过增加服务器及改造系统来缓解压力,然后采用负载均衡、动静分离、缓存系统来提高系统的吞吐量。然而,当数据量的增长达到一定程度的时候,增加应用服务器并不能明显地提高系统的效率,因为所有压力都会传导到数据库层面,而大多数系统都是用一个数据库来存储和管理系统数据的,因而一个支持高性能、高并发并且易于扩展的数据库系统变的尤为重要。


Amazon RDS是AWS上托管的关系型数据库服务,目前支持业界主流的MySQL、Oracle、SQL Server、PostgreSQL、MariaDB引擎及AWS提供的Aurora,通过多可用区主备及读副本等技术,能够支持绝大部分的应用场景。 


对于更大容量的数据库,可以使用Amazon Aurora。Aurora是一个关系型数据库引擎,结合了高端商用数据库的速度和可用性,同时还具有开源数据库的简单性和成本效益。Amazon Aurora 的设计与 MySQL 5.6 及PostgreSQL 9.6.1兼容,它提供的性能比同一硬件上运行的标准 MySQL 最多高达五倍,比PostgreSQL最多高达二倍。


下表是单个数据库实例能够支持的存储容量大小:

RDS数据库引擎

存储容量

MySQL

6TB

Oracle

6TB

PostgreSQL

6TB

MariaDB

6TB

SQL Server

4TB

Aurora

64TB

不过由于Aurora需要在3个AZ部署,目前并未在所有Region提供,比如中国北京、新加坡、德国法兰克福,同时支持的引擎有限,对于中国区用户及使用其他数据库引擎的用户,不得不考虑其他的解决方案。随着近年来海量数据存储、并行计算、异构数据互联等一系列新技术在市场上不断出现,相信数据库行业的很多从业者都对传统关系型数据库的单点故障及容量问题头疼不已,而数据库分库分表也早已成为解决此类问题的基础。


本文要介绍的Mycat是一款面向企业级应用的开源数据库中间件产品,支持事务、ACID,能够对接Oracle、MySQL、DB2、SQL Server、MongoDB、SequoiaDB等数据库,支持透明的读写分离机制,支持各种MySQL集群,包括标准的主从异步集群、MySQL Galera Cluster多主同步集群等,通过大表水平分片方式支持100亿级大表的分布式存储和秒级的并行查询能力,内建数据库集群故障切换机制,实现自动切换,可满足大部分应用的高可用性要求。

配置步骤

第一步 创建RDS数据库实例

创建一个RDS将会使用的参数组Mycat:

在分库分表的情况下,Mycat可以通过如下几种方式保证自增主键的全局唯一:


1. 本地文件方式

在sequence_conf.properties文件中设置主键的当前值、最小值和最大值。


2. 数据库方式

在其中一个 MySQL 节点中建立一张表,存放 sequence 的名称、当前值、步长等信息,并通过存储过程修改更新信息。


3. 本地时间戳方式


4. 注解方式 


本例使用第二种方式,为了使存储过程能够顺利执行,需要修改参数组的log_bin_trust_function_creators为1。

此外,可以按需设置时区及大小写不敏感:

接着创建两台 RDS MySQL 实例,注意需要在创建的时候选择 Mycat 参数组:

本例使用 MySQL 5.6.34 版本,开启 Multi-AZ 及自动备份功能,并且为每个 MySQL RDS实例创建一个读副本做读写分离:

数据库 endpoint 如下: 

mysql1 

mysql1.cbqbpwftrsrj.rds.cn-north-1.amazonaws.com.cn 


mysql1-read-replica 

mysql1-read-replica.cbqbpwftrsrj.rds.cn-north-1.amazonaws.com.cn 


mysql2 

mysql2.cbqbpwftrsrj.rds.cn-north-1.amazonaws.com.cn 


mysql2-read-replica 

mysql2-read-replica.cbqbpwftrsrj.rds.cn-north-1.amazonaws.com.cn 

在接下来的内容里,我们会介绍:

第二步 安装配置 Mycat

第三步 功能验证

第四步 配置 Mycat 的冗余

第五步 使用 Mycat-web 实现监控(可选) 

……


请感兴趣的小伙伴点击“阅读原文

或扫描/长按识别下方的二维码

阅读完整版文章


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存