【IT168 现场报道】2013年4月18-20日,第四届中国数据库技术大会(DTCC 2013)在北京福朋喜来登酒店拉开序幕。在为期三天的会议中,大会将围绕大数据应用、数据架构、数据管理(数据治理)、传统数据库软件等技术领域展开深入探讨,并将邀请一批国内顶尖的技术专家来进行分享。本届大会将在保留数据库软件应用实践这一传统主题的基础上,向大数据、数据结构、数据治理与分析、商业智能等领域进行拓展,以满足于广大从业人士和行业用户的迫切需要。
自2010年以来,国内领先的IT专业网站IT168联合旗下ITPUB、ChinaUnix技术社区已经连续举办了三届数据库技术大会,每届大会超过千人规模,云集了国内技术水平最高的数据架构师、DBA、数据库开发工程师、研发总监、IT经理等,是目前国内最受欢迎的数据库技术盛会。
4月18日下午,在内存数据库分会场上,人人网数据库架构师、高级DBA周彦伟发表了主题为《MySQL Cluster实战初探》的精彩演讲。目前周彦伟负责整个人人网的数据库运维工作,一直在一线负责人人网数据库运维,热衷于大规模数据库管理,数据库调优。
MySQL Cluster在MySQL阵营已经有很悠久的历史了,但相对MySQL的广泛运用来说,它仅仅只是少数人的玩具,在线上的应用非常少,这其中的原因跟它是基于内存从而提高了机器成本有关,也跟在早期版本中它的运维比较困难有关,随着硬件成本的降低,新存储设备的革命以及它自身的改进,大规模的应用已成为可能。本次周彦伟从MySQL Cluster的基本原理和概念入手,重点介绍了MySQL Cluster的用法和运维,以及探索在线上应用的模式。
MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的 Cluster 。通过无共享体系结构,系统能够使用廉价的硬件,而且对软硬件无特殊要求。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。MySQL集群以无可比拟的可扩展性、高可用性和灵活性使得用户能够满足下一代互联网、云及通信服务的数据库挑战。
MySQL Cluster将标准的MySQL服务器与NDB Cluster存储引擎集成了起来。MySQL Cluster由一组计算机构成,每台计算机上均运行着多种进程,包括MySQL服务器,NDB Cluster的数据节点,管理服务器,以及(可能)专门的数据访问程序。所有这些程序一起构成了MySQL Cluster。MySQL Cluster 是MySQL适用于分布式计算环境的高可用、高冗余版本,采用了NDB Cluster 存储引擎(“NDB”是一种“内存中”的存储引擎,它具有可用性高和数据一致性好的特点),允许在1个 Cluster 中运行多个MySQL服务器。它将数据保存到NDB Cluster存储引擎时,表(结构)被保存到了数据节点中,应用程序能够从所有其他MySQL服务器上直接访问这些表。参见下图:
周彦伟指出,要配置MySQL Cluster,最好需要三台机器,下载两个安装包,修改两个配置文件,分别是my.cnf和config.ini。其中my.cnf和config.ini配置截图:
my.cnf 配置界面如下:
config.ini配置界面如下:
初始化ndbd并启动ndbd
• ndb_mgmd –initial
• ndbd –initial
• mysqld_safe –user=mysql &
采用ndb_mgm管理客户端来备份MySQL Cluster,在管理节点执行ndb_mgm即可进入管理命令行。输入start backup备份所有节点,如果后面还跟着对应数据节点的id就只备份对应的数据节点
使用命令ndb_restore进行恢复MySQL Cluster,如图所示:
随着业务的增长,DBA希望在线添加节点,具体步骤为:
• 修改config.ini
• Rolling restart
• Start new data nodes
• Create nodegroup
• Alter online table … reorganize partition
• Optimize table …
从MySQL 5.1 开始,就支持集群复制了,这对于想要构建一个高可用方案的用户来说,无疑是个惊喜。在这种模式下,既有主从的实时备份,又有基于集群的负载均衡。MySQL Cluster replication的配置其实很简单,就是配置好2个独立的集群后,把其中一个的SQL节点作为另一个集群SQL节点的slave即可,如图:
最后在谈及人人网采用MySQL数据库处理性能瓶颈方面,周彦伟表示,解决方法有切分和加机器两种方式。在人人网的数据库业务遇到瓶颈时,DBA团队曾将表进行切分,放在不同的PC服务器中。切分方法主要有两种:垂直切分和水平切分。垂直切分包括按业务直接拆分和按逻辑把大表拆成小表两种方法。水平拆分包括三种类型,ID取模、切分字段根据散列算法和两个维度同时切分。另外,PostgreSQL sequence的全局ID也使人人网受益。更多大会详情,请关注专题http://www.it168.com/redian/dtcc2013/