MySQL多主模型Galera Cluster

Galera Cluster for MySQL是一套基于同步复制的多主MySQL集群解决方案,使用简单,没有单点故障,可用性高,能很好保证业务不断增长时数据的安全和随时的扩展。

Galera多主模型的主要特点:

基于同步复制

多主服务器的拓扑结构`

可以在任意节点上进行读写

自动剔除故障节点

自动加入新节点

真正行级别的并发复制

客户端连接跟操作单台MySQL数据库的体验一致

安装Galera的时候的注意事项

Galera集群是基于wsrep协议进行的,所以不需要提前配置MySQL异步复制。

不能同时安装MariaDB-Server和Galera-Server。

使用Galera多主模型至少需要至少三个节点。
因为安装Galera-server的时候会替换掉mariadb-server
三个节点是为了要使用投票功能仲裁出master

实验拓扑结构

MySQL多主模型Galera Cluster


Galera.jpg

主机名主机地址
node1   192.168.2.201  
node2   192.168.2.202  
node3   192.168.2.203  
node4   192.168.2.204  

本文使用的系统版本为CentOS7.1
注意:本文关闭了selinux,以及iptables。

安装配置Galera

默认的EPEL源是不提供Galera-Server组件的。
而在MariaDB的官网中有提供Galera的二进制包或者yum源。
MariaDB官方地址

NameRelease DateRelease Status
5.5.53   2016-10-20   Stable  

我们可以看到5版本的Galera最近的更新是在2016年的10月。

(1)配置yum源
官方提供写好的repo文件,因此我们创建一个/etc/yum.repos.d/mariadb.repo文件。
内容如下:

[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/5.5/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1

(2)使用yum安装
虽然会解决依赖关系,一般会安装如下几个包。
假如不配置MariaDB的软件源,EPEL源只会提供galera这一个包

yum install MariaDB-client MariaDB-shared MariaDB-common MariaDB-Galera-server galera rsync socat

(3)查看galera提供的库文件的所在路径。(配置文件需要)

[root@bc ~]# rpm -ql galera|grep so /usr/lib64/galera/libgalera_smm.so

(4)给4个节点中编辑配置文件

vim /etc/my.cnf.d/server.cnf [galera] # Mandatory settings wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_address="gcomm://192.168.2.201,192.168.2.202,192.168.2.203,192.168.2.204" wsrep_cluster_name="mycluster" wsrep_node_name="bc.com" wsrep_node_address="192.168.2.201" binlog_format=row default_storage_engine=InnoDB innodb_autoinc_lock_mode=2 bind-address=0.0.0.0

相比于MariaDB-Server的配置文件,主要配置并不在my.cnf。
配置文件"/etc/my.cnf.d/server.cnf"中有很多注释信息,打开这几项
安装之后MariaDB-Galera-Server就会多了这一个配置文件。并非什么都没有。不用复制粘贴

(5)首次启动时,需要初始化集群,在其中一个节点上执行如下命令:

service mysql start --wsrep-new-cluster --wsrep-cluster-address='gcomm://' &

注意:这里是一个难点(其实是有个坑)。
因为官方的安装指南演示中的启动命令是

service mysql start --wsrep-new-cluster

但是在这里很容易出错,所以一定要注意!!!
由于Galera节点有一个特点就是初始化节点假如初始化失败,其他节点都会启动失败。
也就是说,其他节点无法加入到这个集群中的时候就会显示启动失败。
安装配置和道理都看了这么久结果服务启动不起来,是很受挫折的。

(6)而后正常启动其它节点即可。以node2为例。

[root@node2 ~]# service mysql start Starting MySQL.161209 01:09:59 mysqld_safe Logging to '/var/lib/mysql/node2.bc.com.err'. .... SUCCESS!

(7)登入数据库查看

[root@bc ~]# mysql -p Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 5 Server version: 5.5.53-MariaDB-wsrep MariaDB Server, wsrep_25.14.r9949137 Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6cf975cca1e0fe8d5d8cdec704b731b7.html