日志分类:Database

一直以来实现数据库的零数据丢失都是非常有挑战,尤其是跨可用区的场景下。很多核心系统为了实现这一点都投入了大量的智慧和金钱。Amazon RDS在文档都明确的写到,数据库在多AZ之间的数据是保持同步的(注:同步是指数据写入两边要同时写成功,即使一边不可用,已经提交的事务在另一边一定是成功的)。一直以来,我也很好奇Amazon RDS在哪个层面实现的同步复制。

这个问题原本也是没有太大疑问的,可以推测应该是通过EBS层面的块复制来下。依据有两方面,有一些公开的Amazon RDS一些架构图中可以看到有EBS复制的箭头说明。另外,还有一点,只有通过EBS的复制实现跨可用区数据一致性,才可能在RDS支持的多种数据库,如MySQL、SQL Server、Oracle等,上保持架构上一致。否则,不同数据库类型的高可用和复制架构可能相差很大。

但是,之前很长时间我还是有一个疑问,Amazon RDS复制到底是在数据库逻辑层实现的还是在EBS物理层实现的。

既然有上面的猜测,那为什么产生了这个疑问呢?是因为,在Aurora很多的对外介绍材料(包括论文、架构介绍的slide)中,会放一个MySQL架构来突出Aurora的架构优势。这个图一直让我误以为Amazon RDS使用了数据库的binlog的复制。在了解Aurora的时候大家经常会看到如下架构图作为反面案例(参考):[......]

Read more

PolarDB产品架构与实现

2019-12-1 12:37  |  分类:Database

这是上周在数据技术嘉年华上分享的内容:PolarDB产品架构与实现。(文件约5MB,下载比较慢,请耐心等待,点击下载)[......]

Read more

AWS是云计算领域的“领头羊”,产品和技术创新快速且比较踏实。re:Invent是AWS一年最盛大的线下活动(有个同事比喻,相当于阿里云的“杭州云栖大会”),一般产品的重大更新都会在这列做宣传,一直以来,我对AWS的产品都保持着高度的关注,今年,则直接来到了Las Vegas现场,近距离“观察”。[......]

Read more

实测Aurora Serverless MySQL

2018-08-15 23:15  |  分类:Database,云计算

前几天Aurora Serverless正式GA, 第一时间体验了一下,看看到底怎样。

概述

Lambda的无服务技术是AWS在云产品形态上的一次重大创新,它把云计算最重要的“弹性”能力再向前推了一步。Aurora Serverless MySQL是Serverless技术在数据库上的应用。Aurora Serverless理念非常好,长远来看,对于用户来说,可以根据实际系统压力进行结算,比一次性购买预留实例更加实惠。这是云计算,对于“弹性”概念的又一次升级。

对于云厂商来说,当云的规模足够大时,相比使用预留实例的方式,通过这种系统控制的自动弹性能力,可以极大提高整体的系统利用率。一个简单、极端但是可以说明效果的例子是这样的:如果有两套系统,一套是服务东半球的用户,一套是服务西半球的用户,那么相比给两套系统都预留最大要求容量的资源,这种全自动的弹性可能只需要使用75%或者更少的资源(最低是50%),就可以服务好这两套系统业务。当你服务的业务的高低峰错峰越明显,资源体量越大,那么这种自动弹性的能力带来的效益可能就越大。

那么,我们来看看实际使用中,会带来哪些好处,又或者可能会有哪些“坑”需要小心。[......]

Read more

关于DynamoDB

2018-07-8 23:44  |  分类:Database,云计算

AWS去年的11月份的re:Invent上,AWS发布了DynamoDB Global Table,并且宣称是“first fully-managed multi-master multi-region database in the world”。Global Table可以实现跨多个地区(Region)数据多点写入,多个地区间数据会准实时的同步,用户可以利用这个能力,较为简单的实现全球业务部署和数据访问。一直以来,Dynamo都是Amazon在分布式、数据库领域的重大创新,它曾和Google的BigTable一起开启了一个影响深远的NoSQL时代。在AWS上,Dynamo在和SimpleDB‘合体’(我也不知道用什么词比较合适)后,以产品DynamoDB在云端提供服务。本文将概述AWS上DynamoDB实例的创建、使用、以及一致性问题,具体包括DynamoDB Table、Local/Global Secondary Index、Global Table等。

体验DynamoDB

DynamoDB以Table的方式提供服务,用户在控制台新建一个表,然就可以使用相应语言的API访问它所提供的数据读写服务了。

新建表

这里新建了一个名字为“zhou”的表,包含分区字段uid和分区内排序字段itemid。[......]

Read more

这是我2016年8月,在成都的SDCC大会上分享的关于云时代数据库运维的演变的思考:

1497925835.03
[......]

Read more