> 数据库 > MariaDB >

MariaDB Galera Cluster Startup

1.环境

系统信息 CentOS-6.5-x86_64

服务器节点IP:192.168.1.200 , 192.168.1.201 , 192.168.1.202

2.关闭SELinux

修改/etc/selinux/config 文件

将SELINUX=enforcing改为SELINUX=disabled

重启机器(可以通过/usr/sbin/sestatus -v  查看状态)

3.安装基础软件支撑

1
2
3
yum  -y install tcp_wrappers
wget http://pkgs.repoforge.org/socat/socat-1.7.2.4-1.el6.rf.x86_64.rpm
rpm -iv socat-1.7.2.4-1.el6.rf.x86_64.rpm

4.安装Mariadb Galera Cluster

创建 /etc/yum.repos.d/MariaDB.repo,内容如下

1
2
3
4
5
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.0/centos6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

运行

1
yum install -y MariaDB-Galera-server MariaDB-client galera

安装结束后启动MySQL服务,service mysql start

执行 mysql_secure_installation 进行数据库环境初始化

设置数据库编码为UTF-8,refer to https://gitsea.com/2014/08/05/centos-web-server-init/

5.防火墙设置

在/etc/sysconfig/iptables 增加如下两条

1
2
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 4567 -j ACCEPT

重启防火墙 service iptables restart

 6.配置集群

1
编辑 192.168.1.200的服务器下 /etc/my.cnf.d/server.conf

在 [mariadb-10.0]下面增加如下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
binlog_format=ROW
default-storage-engine=innodb
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1
query_cache_size=0
query_cache_type=0
bind-address=0.0.0.0
 
datadir=/var/lib/mysql
innodb_log_file_size=100M
innodb_file_per_table
innodb_flush_log_at_trx_commit=2
 
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address="gcomm://192.168.1.200,192.168.1.201,192.168.1.202"
wsrep_cluster_name='galera_cluster'
wsrep_node_address='192.168.1.200'
wsrep_node_name='db1'
wsrep_sst_method=rsync
wsrep_sst_auth=root:123456

201 服务器需要修改地方如下

1
2
wsrep_node_address='192.168.1.201'
wsrep_node_name='db2'

202 服务器需要修改地方如下

1
2
wsrep_node_address='192.168.1.202'
wsrep_node_name='db3'

启动192.168.1.200服务器

1
/etc/init.d/mysql start --wsrep-new-cluster

随后启动其他两个mysql服务 service mysql start

登录任意一台服务器节点通过 show status like ‘wsrep%’ 命令可以查看集群状态

te

现在可以在任意一个节点进行数据操作,其他节点会自动进行同步

关于动态增加节点,只需要在/etc/my.cnf.d/server.conf 修改 wsrep_cluster_address=”gcomm://192.168.1.200″ 地址为cluster其中一个节点即可,

然后通过service mysql start 启动服务,会自动增加到集群节点中

注意点:集群是乐观的并发控制,如果有两个事务同时向集群中不同的节点同一行写入并提交,失败的节点将中止,会造成死锁问题

通过设置单点写入多点读取的方式可以解决此问题。下面链接是其中一种解决方案

http://www.severalnines.com/blog/avoiding-deadlocks-galera-set-haproxy-single-node-writes-and-multi-node-reads

目前存在的一些问题可以参考 https://mariadb.com/kb/en/mariadb/documentation/replication-cluster-multi-master/galera/mariadb-galera-cluster-known-limitations/

参考链接:https://mariadb.com/kb/en/mariadb/documentation/replication-cluster-multi-master/galera/getting-started-with-mariadb-galera-cluster/



(责任编辑:IT)