本文非原创,在踩了无数坑后整理的可以正常搭建集群的方法。
本人在实验Galera Cluster6.7时,mysql-wsrep-test-5.7-5.7.23-25.15.el7.x86_64.rpm无法成功安装,提示需要mysql-wsrep-server-5.7-5.7.23-25.15.el7.x86_64.rpm的依赖,实际上mysql-wsrep-server是成功安装了的,不知道你们有没有遇见这种情况。
Galera Cluster5.7 for mysql (CnetOs7) https://blog.csdn.net/l42606525/article/details/84881234
安装环境:
centOs7
Galera Cluster5.6(MySql5.6)
下载galeracluster
下载地址http://galeracluster.com/downloads/
使用 (yum install -y 包名)命令进行安装。
安装顺序:
1.mysql-wsrep-client-5.6-5.6.41-25.23.el7.x86_64.rpm
2.mysql-wsrep-devel-5.6-5.6.41-25.23.el7.x86_64.rpm
3.mysql-wsrep-server-5.6-5.6.41-25.23.el7.x86_64.rpm
4.mysql-wsrep-shared-5.6-5.6.41-25.23.el7.x86_64.rpm
5.mysql-wsrep-5.6-5.6.41-25.23.el7.x86_64.rpm
6.mysql-wsrep-test-5.6-5.6.41-25.23.el7.x86_64.rpm
7.galera-3-25.3.24-2.el7.x86_64.rpm
安装完成后mysql 首次启动
1)使用命令:service mysql start --skip-grant-tables 开启mysql服务,也就是使用safe模式启动,登录的时候不用输入密码
2)使用命令: mysql 登录
3)修改root用户密码
mysql> use mysql;
mysql> update user set password=“密码” where USER=“root”
mysql> quit
4)重新设置密码并开放远程登录授权
使用命令: service mysql restart
重启mysql服务,使用创建的用户名和密码登录.
再次进入的时候修改密码: SET PASSWORD=PASSWORD(“密码”)
给对应需要访问MySQL的用户名和密码进行授权,如果没有授权,是无法远程连接MySQL的
授权无端口限制的用户登录mysql数据库(生产上开放端口):
GRANT ALL PRIVILEGES ON . TO ‘用户名’@’%’ IDENTIFIED BY ‘密码’ WITH GRANT OPTION;
5)去掉Postfix,这个可能跟MySQL配置有冲突: yum remove postfix -y
6)关闭防火墙(生产上可开放端口):
setenforce 0 && systemctl stop firewalld
修改配置文件:
1)拷贝wsrep.cnf 文件(/usr/share/doc/mysql-wsrep-server) 到 /etc/my.cnf.d/下
cp /usr/share/doc/mysql-wsrep-server-5.6-5.6.41/wsrep.cnf /etc/my.cnf.d/
2)修改my.cnf
vim /etc/my.cnf,注释掉其他的,增加:!includedir /etc/my.cnf.d/
3)修改wsrep.cnf
vi /etc/my.cnf.d/wsrep.cnf
修改项:
#MySQL服务器的ID,必须是唯一的
server-id=101
#galera集群的名字,必须是统一的
wsrep_cluster_name=my_galera_cluster
#wsrep提供者,必须配置
wsrep-provider=/usr/lib64/galera-3/libgalera_smm.so (.so文件的路径在哪,就配置成哪)
#wsrep节点的ID,必须是唯一的
wsrep_node_name = node1
#集群中的节点地址,可以使用主机名或IP
wsrep_cluster_address=gcomm:// 192.168.79.139:4567, 192.168.79.141:4567, 192.168.79.142:4567
#指定wsrep启动端口号
wsrep_provider_options=‘gmcast.listen_addr=tcp://192.168.79.139:4567’
#本机节点地址,可以使用主机名或IP
wsrep_node_address=‘192.168.79.139’
wsrep_node_incoming_address=‘192.168.79.139’
#一个逗号分割的节点串作为状态转移源,比如wsrep_sst_donor=node5,node3,如果node5可用,用node5,不可用node3,如果node3不可用,最后的逗号表明让提供商自己选择一个最优的。
wsrep_sst_donor=‘node1,node2,node3,’
#线程数量。参考设置:1.CPU内核数*2以上;2.其它写节点连接总数的1/4.
wsrep_slave_threads=16
#操作数据库的用户名密码(最好能和mysql数据库的用户名密码一致)
wsrep_sst_auth=root:123456
其余配置暂不用修改,有需要配置的,最好了解清楚以后修改.
启动集群:
1)集群第一个节点启动
service mysql start --wsrep-new-cluster
查看集群状态:show status like ‘wsrep%’;
可以查看一下4567端口是否开放,其他节点接入的时候需要。
2)其他节点启动
service mysql start --wsrep-cluster-address=‘gcomm://192.168.79.139:4567’;
注意gcomm://后的地址是前一个启动成功的节点地址。
配置方式遵循,1节点指向0节点地址,2节点指向1节点地址,以此类推.
集群重启:
&emsp在集群停止之后重启时,先在每个几点上使用mysqld_safe --wsrep-recover查看节点的Recovered position的值,选择值最大的一个作为第一个几点启动,如果启动失败,则在将作为第一个启动节点的服务器上编辑grastate.dat文件(可以使用find命令查找位置),将safe_to_bootstrap的值设为1,使用service mysql start --wsrep-new-cluster命令启动该节点,其他节点启动与以前一致。
集群测试:
1)在节点139上创建database:create database clustertest;
在节点141和节点142上查看创建状态
2)在节点139的数据库clustertest上创建表:create table myCluster;
在节点141和节点142上查看创建状态
3)在节点139的表中插入数据:
INSERT INTO myCluster VALUES(‘1’,‘1.0’,‘node139’,‘node139’);
在节点141和节点142上查看
4)使用java代码插入10W条数据
在插入过程中停掉一个节点,一段时间后再启动,数据自动同步,无丢失数据。
整个插入过程数据实时同步,无延迟。