存档

文章标签 ‘mysql’

最近整理了一些关于数据库架构方面的技术专题,并整理成为PPT,准备拿出来和大家一起分享。
为什么要这么做,并不是要为了证明我自己,更不是为了其他什么目的。因为最近一直有一种强烈的执着,想要做成一些事情,在这之前,必须找到很多志同道合的人一起来努力,所以需要先布道。我并不是为了分享而分享,而是希望这些东西能够改变大家对现在一些架构的理解,真正了解我们现在面对的问题和未来的挑战。
蔡学镛说:大多數的工程師並不是「做了五年的系統開發」,而是「做了一年的系統開發,然後重複五次」。我不希望我和周围的同事们都是如此,所以我分享,帮助别人,也帮助我自己。
下面是第一个专题,《数据库高可用架构》,PPT写的很一般,关键看讲的人了。如果哪个部门有兴趣,可以联系我。
数据库高可用架构
View more presentations from freezr.

5 27th, 2010 | Filed under 大话技术

根据CAP理论,一致性(C),可用性(A),分区容错性(P),三者不可兼得,必须有所取舍。而传统数据库保 证了强一致性(ACID模型)和高可用性,所以要想实现一个分布式数据库集群非常困难,这也解释了为什么数据库的扩展能力十分有限。而近年来不断发展壮大 的NoSQL运动,就是通过牺牲强一致性,采用BASE模型,用最终一致性的思想来设计分布式系统,从而使得系统可以达到很高的可用性和扩展性。
但是,对于CAP理论也有一些不同的声音,数据库大师Michael Stonebraker就撰文《Errors in Database Systems, Eventual Consistency, and the CAP Theorem》,表示为了P而牺牲C是不可取的。事实上,数据库系统最大的优势就对一致性的保证,如果我们放弃了一致性,也许NoSQL比数据库更有优势。那么,有没有可能实现一套分布式数据库集群,即保证可用性和一致性,又可以提供很好的扩展能力呢?回答是:有的。
目前,有很多分布式 数据库的产品,但是绝大部分是面向DSS类型的应用,因为相比较OLTP应用,DSS应用更容易做到分布式扩展。Michael Stonebraker提到了一种新型的数据库VoltDB,它的定义是Next-Generation SQL Database for Fast-Scaling OLTP Applications。虽然产品还没有问世,但是从技术资料上来看,它有几个特点:
1.采用Share nothing架构,将物理服务器划分为以CPU core为单位的Virtual node,采用Sharding技术,将数据自动分布到不同的Virtual node,最大限度的利用机器的计算资源;
2.采用内存数据访问技术,类似于内存数据库(In-memory database),区别于传统的数据库(Disk-based database),消除了传统数据库内存管理的开销,而且响应速度非常快;
3.每个Virtual node上的操作是自治的,利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销(比如Latch和Lock);
4.数据同步写多个副本,不存在单点故障,而且消除了传统数据库需要记录redo log的开销。

VoltDB与传统数据库的对比,可以看到VoltDB即支持传统数据库的ACID模型,又提供了类似NoSQL产品很高的扩展能力。

这个产品,让我想到了MySQL cluster,同样是shared-nothing架构,NDB存储引擎也要求将数据存放在内存中,数据根据PK被分布到多个不同的节点上,同一份数据可以保存多个副本,防止单点故障。

MySQL cluster目前的主要问题是性能不佳,但是我认为MySQL cluster的架构是分布式数据库未来的趋势,Oracle收购MySQL后,很多人对MySQL的前途表示担忧,而我作为一个用户,除了可能会收费这件事以外,我一点也不担心MySQL的前景,反而有所期待,因为在数据库领域没有任何一个公司比Oracle更懂数据库,而Oracle也正在大力发展MySQL cluster,MySQL cluster一定会成为分布式数据库领域内最好的解决方案之一。
–EOF–

5 10th, 2010 | Filed under 大话技术
标签: , , ,

本篇文章不得以任何形式转载或发表。

这不是一篇关于Oracle和MySQL技术比较的文章,而是我对Oracle和MySQL甚至 NoSQL产品选择上的一些想法。
我们过去和现在使用了大量的Oracle数据库,几乎我们所有的数据都存放在Oracle数据库里面,我们有高端的小型机,大型存储和全国最牛的DBA团队。这些都让我们引以为傲。
随着业务不断增长,数据量和计算量越来越庞大,我们发现小型机都无法满足我们的需求,除了Oracle我们别无选择,我们被“绑架”了,被IBM,EMC,Oracle绑架了,我们辛辛苦苦赚的血汗钱都交给他们了。
2009年开始,我们引入了MySQL数据库,采用sharding技术,利用PC服务器搭建高可用的数据库集群,极大的降低了我们的成本,并提供了充足的扩展能力,让业务有更大的发展空间。
最近,我们遇到了一些困惑:应用如何选择Oracle还是MySQL?从Oracle迁移到MySQL的意义是什么?Oracle收购SUN之后,MySQL何去何从?
我们的目标不是要用MySQL数据库替代所有的Oracle,事实上,这不现实也不是我们的目标,目前很多应用都依赖于Oracle数据库的特性,相当长的一段时间内,Oracle依然是我们的首选。但是,这并不意味着Oracle是我们唯一的选择,我们选择MySQL和PC服务器来搭建大规模数据库集群,最终的目标是要证明我们具备更换数据库的能力,具备用廉价设备替换小型机的能力,能够用我们自己的软件搭建高可用可扩展的架构。所以说,MySQL只是一个数据库而已,如果某天Oracle将MySQL收费,我们可以换成其他的数据库(比如 PostgreSQL)。我们正在做的事,其中的价值并不能简单的用节省 Oracle license的费用来评估。
阿里巴巴正在研发云计算系统,同样要证明阿里巴巴具备这种能力,这是每一个伟大的公司都要具备的能力。我相信,未来的数据存储肯定不仅仅局限于数据库,数据库和其他NoSQL产品一定会百花齐放。
我们做了大量的努力和尝试,包括Sharding和功能分区,SSD的尝试,MySQL高可用架构,数据同步工具等等,都是为了一个目标:证明的是我们能够设计出一种架构,可以做到用PC server和开源数据库(不仅仅局限于MySQL)来替换高端设备和Oracle,不被设备厂家和Oracle所绑架,将主动权掌握在自己手中。所以,我们不要过分纠结于Oracle和MySQL 在具体性能上的差异,作为一个数据库产品,MySQL无法和Oracle相比,单个PC server的可用性更是无法同小型机相比,但是我们用架构去弥补,整体上达到更高的可用性。
所以,我们不应该单纯用MySQL和Oracle本身的优劣,来评估技术方案,更不能用pc server的可用性和小型机去相比。关键是我们的技术架构能否用廉价的东西搭建出高可用可扩展的系统,这才是我们真正引以为傲的地方。
–EOF–

4 27th, 2010 | Filed under 大话技术
标签: ,

【内容简介】
本书以 MySQL 数据库的基础及维护为切入点,重点介绍了 MySQL 数据库应用系统的性能调优,以及高可用可扩展的架构设计。
全 书共分3篇,基础篇介绍了MySQL软件的基础知识、架构组成、存储引擎、安全管理及基本的备份恢复知识。性能优化篇从影响 MySQL 数据库应用系统性能的因素开始,针对性地对各个影响因素进行调优分析。如 MySQL Schema 设计的技巧,Query 语句的性能优化方式方法及MySQL Server中SQL层和存储引擎层的优化思路。同时还分析了 MySQL 数据库中主要存储引擎的锁定机制。架构设计篇则主要以设计一个高可用可扩展的分布式企业级数据库集群环境为目标,分析介绍了通过 MySQL 实现这一目标的多种架构方式。主要包括可扩展和高可用两部分内容,可扩展部分包括设计原则、Replication 的利用、数据切分、如何使用 Cache 和 Search,以及 NDB Cluster等内容。高可用则主要包括 Dual Master、DRBD、NDB Cluster,以及系统监控等方面。
【作者介绍】
简朝阳,毕业于南京工业大学管理科学与工程学院,管理学学士。擅长MySQL & Oracle数据库应用系统的性能调优与高可用可扩展架构设计,有一定的对Java 和C语言基础。目前就职于阿里巴巴(中国)网络技术有限公司,曾参与过公司多个核心数据库应用系统的设计与实施,目前主要负责 MySQL 数据库应用系统的架构设计与相关维护工作。活跃于 iMySQLer 数据库论坛(http://imysqler.com) 和 MySQL 邮件组(mysqler@googlegroups.com, http://groups.google.com/group/mysqler)。
–EOF–
本书的作者是我的同事,2006年大学毕业后来到Alibaba DBA team,还记得当时DBA没有招聘应届毕业生的计划,但是在校园招聘中,他被评估为“潜力无限”的增值股,所以被破格录用。而我(一个刚刚上路的菜鸟DBA)是他的导师。事实证明,当时的招聘人员的眼光是犀利的,正如他的名字朝阳一样,他成长的速度超过了我们所有人的期望。从最初的Oracle DBA转型到MySQL方向后,迅速成为MySQL领域内的专家。
在这本书之前,中文版的MySQL图书要不是译作,要不就是官方文档的简单翻译,几乎没有自己的思想。而这本书则完全不同,首先它不是一本MySQL的入门书,也不是用命令堆砌的参考书,而是一本深入介绍MySQL原理的故事书。作者通过大量实际的案例,讲述了MySQL数据库优化原理,以及架构设计方面的内容,这些内容都是在实际工作中不断积累的宝贵财富,在其他任何文档中都找不到。
作者从一个应届毕业生到数据库大师,只花了三年时间,在这个过程中,我见证了他的成长,也从他的导师变成了学生(我也开始学MySQL啦)。在他的成长轨迹中,我看到了信念,坚持,行动和态度。对于每一个想成为DBA的年轻人来说,现在就像朝阳那样开始吧。
我们,依然在路上……

6 11th, 2009 | Filed under 一地鸡毛

SUN被收购的传闻一直没断过,昨天终于尘埃落定,Oracle以74亿美金收购SUN。
我们来看看Oracle得到了什么?Sun的硬件产品,Java,Solaris和MySQL数据库。前三个产品对Oracle来说应该是非常有价值的,只有MySQL前景不明。因为Oracle的CEO Larry Ellison有句名言,与对手最好的竞争方式就是收购它。
对MySQL唯一的利好消息是,InnoDB也在Oracle手中,不用再担心存储引擎的问题了。关键是Oracle对MySQL的态度如何?作为一个竞争产品打入冷宫,继续发展走商业化路线,还是保持现在的开源身份,让我们拭目以待吧。
–EOF–The Negotiator release

4 21st, 2009 | Filed under IT江湖
标签: ,

今年的工作就是把自己扔到坑里,然后想办法爬出来。主要有两个很重要的工作,第一个是通过Amoeba实现分布式数据库架构,第二是通过MySQL数据库建立一个廉价的高可用集群。
上周终于迈出了万里长征第一步,将Oracle数据库中最大的一张表进行了水平(数据)拆分,第一期拆分为16张表,存放在一个Oracle数据库中。下一步的目标是逐步切换到MySQL数据库,预计首期为64个MySQL集群(16拆64)。
Amoeba是一个分布式数据库Proxy,由公司架构部门开发(项目创始人陈思儒去了盛大),它同时也是一个开源项目。它可以提供数据拆分,SQL路由,读写分离,负载均衡,故障切换等功能。
Amoeba架构图

解决方案就是利用现有技术搭积木,通过Amoeba和MySQL数据库,我们就可以用建立一个可线性扩展,高可用的数据库集群。
不知道现在做的事是不是属于DA的范畴,反正基本上每天都在折腾Data,而不是折腾Database.
–EOF–

3 31st, 2009 | Filed under 大话技术
1 10th, 2008 | Filed under 大话技术
标签: ,