虚拟化平台下MySQL数据库集群的搭建

邢志峰

[摘 要]近年来,虚拟化技术已在企业中得到了广泛应用,越来越多的Web应用程序使用MySQL作为数据的管理和存储,数据库的高可用、数据安全、负载均衡成为了企业关注的重点。本文以河钢集团承钢公司企业内部的虚拟化平台为基础,以开源的Galera Cluster for MySQL为解决方案,搭建一套基于同步复制的多主MySQL集群。其特点是使用简单,没有单点故障,可用性高,能很好地保证业务不断增长时数据的安全性和集群的扩展性。

[关键词]虚拟化;MySQL数据库;集群搭建

doi:10.3969/j.issn.1673 – 0194.2017.12.086

[中图分类号]TP311.1 [文献标识码]A [文章编号]1673-0194(2017)12-0-02

1 虚拟化技术和ESXI的介绍

虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。目前,虚拟化技术越来越成熟,企业为节约成本,只需购买配置较高的服务器安装虚拟操作系统,就能把一台服务器当做多台服务器进行使用,既经济实用,又管理方便。

ESXI是直接运行在裸机上的高性能、高可用性的系统架构,它给多台虚拟机提供CPU、内存、存储、网络资源,Windows平台的PC机可以通过vSphere客户端软件进行远程访问和管理。

ESXI的主要特性如下:

(1)可靠性和安全性,ESXI体系结构基于Linux的控制台操作系统,实现可维护性和基于代理的合作伙伴集成,并直接在核 VMkernel中实现了必备的管理功能,消除了与通用操作系统相关的安全漏洞,提高了安全性和可靠性。

(2)简化部署和配置,新的ESXI体系结构的配置项较少,因此可以极大地简化部署和配置,且更容易保持一致性。

(3)减少管理开销,ESXI体系结构采用基于API的合作伙伴集成模型,因此,不再需要安装和管理第三方管理代理。利用远程命令行脚本编写环境,可以自动执行日常任务。

(4)虚拟机的备份与恢复功能,ESXI提供多种的备份与恢复功能,如快照、克隆、模板的导入和导出等。

(5)物理机、虚拟机的迁移,VMware Converter是一款能将物理电脑系统、VMware其他版本虚拟机镜像,或第三方虚拟机镜像转化为一个虚拟机映像文件的工具,且生成的映像可以在该公司的VMware虚拟机软件中使用。

2 MySQL数据库集群的搭建

2.1 MySQL Galera Cluster 介绍

Galera Cluster是在名为WSRep(集合写入式复制,Write Set Replication)的更通用的API基础之上开发而成的。WSRep API是个独立的开源项目,由Codership发起,它在数据库服务器和数据复制插件之间定义了一个接口。MySQL-WSRep是MySQL的一个补丁,它在数据库服务器中实现了WSRep API接口。安装这个补丁之后,MySQL就可以启动WSRep的插件,Galera是WSRep提供者,实现了同步多主节点数据复制功能,Galera replication特性具有同步复制主备无延迟、支持多主同时读写,保证数据一致性、集群中各节点保存全量数据、节点添加或删除,自动检测和配置、行级别并行复制、不需要写binlog。

2.2 Galera的实现架构

Galera的实现架构,如图1所示。

2.3 安装前的准备

(1)需要至少三台虚拟服务器,建议安装Centos 6,数据库为MySQL 5.5版本,为服务器分配好IP地址。

(2)准备好MySQL with WSRep、Galera等软件安装包。

(3)关闭系统防火墙Selinux和Iptables。

2.4 安装部署

(1)第一个节点的安装及配置,首先关闭系统防火墙,设置MySQL的yum源并安装依赖包。

(2)安装数据及服务组件,建立Cluster使用者,设置远程登录,修改主节点的配置文件,启动集群服务,确认MySQL 3306端口和WSRep的4567端口处于监听状态。

(3)第二个节点安装及配置其他节点,方法与安装第一个节点类似,在修改从节点配置文件时,需要将WSRep_cluster_address的地址指向主节点。

(4)检查各节点运行状态,使用数据库管理工具测试数据库集群功能。

2.5 使用前的注意事项

(1)使用Galera必须要给MySQL-Server打WSRep补丁。可以直接使用官方提供的已经打好补丁的MySQL安装包,如果服务器上已经安装了标准版MySQL,需要先卸载再重新安装。卸载前注意备份数据。

(2)MySQL/Galera集群只支持InnoDB存储引擎。如果数据表使用的是MyISAM,需要转换为InnoDB,否则记录不会在多台复制。可以在备份老数据时,为MySQLdump命令添加skip-create-options参数,这样会去掉表结构的声明信息,再导入集群时自动使用InnoDB引擎。不过这样会将AUTO_INCREMENT一并去掉,已有AUTO_INCREMENT列的表,必须在导入后重新定义。

(3)MySQL 5.5及以下的InnoDB引擎不支持全文索引(FULLTEXT indexes),如果之前使用了MyISAM并建立了全文索引字段,只能安装MySQL 5.6 with WSRep patch。

(4)所有数据表必须要有主键(PRIMARY),如果没有主键可以建一條AUTO_INCREMENT列。

(5)MySQL/Galera集群不支持下面的查询:LOCK/UNLOCK TABLES,不支持下面的系统变量:character_set_server、utf16、utf32及ucs2。

(6)数据库日志不支持保存到表,只能输出到文件(log_output = FILE),不能设置binlog-do-db、binlog-ignore-db。

(7)跟其他集群一样,为了避免节点出现脑裂而破坏数据,建议Galera集群最低添加3个节点。

(8)在高并发的情况下,多主同时写入时可能会发生事务冲突,此时只有一个事务请求会成功,其他的全部失败。可以在写入或更新失败时,自动重试一次,再返回结果。

(9)节点中每个节点的地位是平等的,没有主次,向任何一个节点读写效果都是一样的。实际可以配合VIP/LVS或HA使用,实现高可用性。

(10)如果集群中的机器全部重启,如机房断电,第一台启动的服务器必须以空地址启动。

主要参考文献

[1]王春海.深入学习VMware vSphere 6[M].北京:人民邮电出版社,2016.

[2]张工厂.MySQL技术精粹——架构、高级特性、性能优化与集群实战[M].北京:清华大学出版社,2015.

《虚拟化平台下MySQL数据库集群的搭建》原文作者:邢志峰,该学术论文发表于:中国管理信息化 2017年12期

诗文坊小程序

上一篇:

下一篇: