Mariadb galera集群搭建

环境配置

准备3台服务器

192.168.1.16 mariadb-1.novalocal mariadb-1
192.168.1.19 mariadb-2.novalocal mariadb-2
192.168.1.18 mariadb-3.novalocal mariadb-3

配置repo文件

vim /etc/yum.repos.d/MariaDB.repo

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

yum makecache

禁用防火墙和selinux

如果要使用防火墙添加允许3306、和4567 端口规则。

安装Mariadb和galera cluster(三个节点都执行)

yum install MariaDB-server MariaDB-client galera

启动mariadb

systemctl start mariadb

一些初始化安全配置

/usr/bin/mysql_secure_installation

关闭数据库
systemctl stop mariadb

修改mariadb-1上的/etc/my.cnf.d/server.cnf文件如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[galera]
wsrep_provider = /usr/lib64/galera/libgalera_smm.so
wsrep_cluster_address = "gcomm://192.168.1.16,192.168.1.18,192.168.1.19"
wsrep_node_name = mariadb-1
wsrep_node_address=192.168.1.16
wsrep_on=ON
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
#bind-address=0.0.0.0
wsrep_slave_threads=1
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=122M
wsrep_sst_method=rsync

将此文件复制到mariadb-2、mariadb-3,注意要把 wsrep_node_name 和 wsrep_node_address 改成相应节点的 hostname 和 ip。

启动 MariaDB Galera Cluster 服务

/usr/sbin/mysqld –wsrep-new-cluster –user=root &
–wsrep-new-cluster 这个参数只能在初始化集群使用,且只能在一个节点使用。

观察日志:

[root@node4 ~]# tail -f /var/log/message

1
2
3
150701 19:54:17 [Note] WSREP: wsrep_load(): loading provider library 'none'
150701 19:54:17 [Note] /usr/libexec/mysqld: ready for connections.
Version: '5.5.40-MariaDB-wsrep' socket: '/var/lib/mysql/mysql.sock' port: 3306 MariaDB Server, wsrep_25.11.r4026

出现 ready for connections ,证明我们启动成功

查看是否启用galera插件
连接mariadb,查看是否启用galera插件

目前集群机器数

查看集群状态
show status like ‘wsrep%’;

查看连接的主机

另外两个节点mariadb会自动加入集群
systemctl start mariadb
这时查看galera集群机器数量

已经连接机器的ip

测试
在mariadb-1上创建数据库,创建表,插入数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
MariaDB [(none)]> create database test1;
MariaDB [test1]> insert into test values(1);
Query OK, 1 row affected (0.01 sec)
MariaDB [test1]> insert into test values(2);
Query OK, 1 row affected (0.01 sec)
MariaDB [test1]> insert into test values(3);
Query OK, 1 row affected (0.00 sec)
MariaDB [test1]> insert into test values(4);
Query OK, 1 row affected (0.00 sec)
MariaDB [test1]> insert into test values(5);
Query OK, 1 row affected (0.03 sec)
MariaDB [test1]> insert into test values(6);
Query OK, 1 row affected (0.01 sec)
MariaDB [test1]> insert into test values(7);
Query OK, 1 row affected (0.01 sec)

在另外两台mariadb-2、mariadb-3上可以看见刚刚插入的数据,说明数据同步了。