MySQL Galera Cluster集群搭建

Galera Cluster是由Codership开发的MySQL多主结构集群,这些主节点互为其它节点的从节点。不同于MySQL原生的主从异步复制,Galera采用的是多主同步复制,并针对同步复制过程中,会大概率出现的事务冲突和死锁进行优化,就是复制不基于官方binlog而是Galera复制插件,重写了wsrep api。

需要从galera官网下载重写了wsrep api版本的MySQL,至少需要三个节点,这里用三台CentOS7的虚拟机为例安装。

https://galeracluster.com/downloads/

如果系统已装MySQL或mariadb,需要先卸载掉。CentOS7默认有装mariadb的。

systemctl stop mariadb
rpm -qa |grep mariadb
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64

如果装有mysql也用同样的方法卸载掉。

systemctl stop mysqld
rpm -qa |grep mysql

卸载完后删掉以前的数据和配置文件。

rm -rf /etc/my.cnf.rpmsave;
rm -rf /etc/my.cnf.d/;
rm -rf /var/log/mysqld.log;
rm -rf /var/lib/mysql/;

先安装依赖包

yum -y install socat stunnel

我在centos7上需要依赖这两个包,具体也可以根据后面安装MySQL时提示依赖包在进行安装。

有的包有依赖关系,按下面顺序安装即可。

rpm -ivh mysql-wsrep-common-5.7-5.7.43-25.35.el7.x86_64.rpm;
rpm -ivh mysql-wsrep-libs-5.7-5.7.43-25.35.el7.x86_64.rpm;
rpm -ivh mysql-wsrep-client-5.7-5.7.43-25.35.el7.x86_64.rpm;
rpm -ivh mysql-wsrep-libs-compat-5.7-5.7.43-25.35.el7.x86_64.rpm;
rpm -ivh mysql-wsrep-server-5.7-5.7.43-25.35.el7.x86_64.rpm;
rpm -ivh mysql-wsrep-5.7-5.7.43-25.35.el7.x86_64.rpm;
rpm -ivh mysql-wsrep-devel-5.7-5.7.43-25.35.el7.x86_64.rpm;
rpm -ivh galera-3-25.3.37-1.el7.x86_64.rpm;
systemctl start mysqld

安装完后即可启动服务,需要的话也可以用以下设置开机启动systemctl enable mysqld

2.4 修改root密码

Mysql安装后自动给root生成一个随机密码,保存在/var/log/mysqld.log

输入cat /var/log/mysqld.log | grep password查看

mysql -uroot -p’ pglor5E#XX>6’

进入MySQL管理命令,修改密码策略

set global validate_password_policy=0;
set global validate_password_length=0;
alter user 'root'@'localhost' identified by '123456';

2.5 新建同步用户

由于MySQL默认的root用户只是用来修改本机配置,我们需要新建一个用户用来同步数据。

create user 'vivi'@'%' IDENTIFIED BY '123456';
grant all on *.* to 'vivi'@'%';

2.6 配置galera集群

编辑/etc/my.cnf,三台服务器配置是不同的

server_id=1
binlog_format=row
default_storage_engine=InnoDB
innodb_file_per_table=1
innodb_autoinc_lock_mode=2
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://'
wsrep_node_name='node1'
wsrep_node_address='192.168.79.130'
wsrep_sst_auth=vivi:123456
wsrep_sst_method=rsync
server_id=2
binlog_format=row
default_storage_engine=InnoDB
innodb_file_per_table=1
innodb_autoinc_lock_mode=2
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://'
wsrep_node_name='node2'
wsrep_node_address='192.168.79.146'
wsrep_sst_auth=vivi:123456
wsrep_sst_method=rsync
server_id=3
binlog_format=row
default_storage_engine=InnoDB
innodb_file_per_table=1
innodb_autoinc_lock_mode=2
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://'
wsrep_node_name='node3'
wsrep_node_address='192.168.79.150'
wsrep_sst_auth=vivi:123456
wsrep_sst_method=rsync

server_id每台都不重复

wsrep_cluster_name一个集群用同一个名字

wsrep_node_name每台都不重复

wsrep_node_address本机IP地址

wsrep_sst_auth前面创建的用于同步的用户名和密码

wsrep_cluster_address这个比较重要,服务器1设置为'gcomm://'即可,服务器2和3需等1开启之后,再去设置成除本机之外的另外两台IP地址

服务器2设置为'gcomm:// 192.168.79.130, 192.168.79.150'

服务器3设置为'gcomm:// 192.168.79.130, 192.168.79.146'

2.7 启动集群

启动第一个节点

启动第一个节点以前,其节点的配置文件里面,不能配置其它节点的ip,即 wsrep_cluster_address=gcomm:// 这样就行了,否则会导致启动报错。待集群启动后,再修改它的配置文件,把其他节点的ip补充上去。

启动第一个节点,该命令会启动本机的 mysqld 服务,命令只在集群第一个节点启动时使用,因为该脚本中带有一个参数:–wsrep-new-cluster,代表新建集群。

/usr/bin/mysqld_bootstrap

启动其它节点

先配置其他节点的wsrep_cluster_address,确保节点1开启之后,再去设置成除本机之外的另外两台IP地址

服务器2设置为'gcomm:// 192.168.79.130, 192.168.79.150'

服务器3设置为'gcomm:// 192.168.79.130, 192.168.79.146'

逐个启动其它节点的服务。

systemctl restart mysqld

2.8 查看集群状态

mysql -uroot -p123456

登录MySQL

show status like 'wsrep%';

wsrep_local_state_comment Synced已同步

wsrep_cluster_size 3 集群服务器数量3

说明启动成功

2.9 数据同步验证

create database test1;
show databases;

然后在节点2和3查看

show databases;

结果一致。

继续在节点2操作

use test1;
create table t1(a int);
insert into t1 values(1);

然后在节点1和3查看

select * from test1.t1;

数据一致。

Enjoy it!

文章目录前言一、 Mysql 安装1、资源准备2、依赖库安装3、卸载CentOS 7默认安装的mariadb4、安装 mysql -wsrep5、安装scons6、安装 mysql -community7、安装 galera 8、建立对应的目录、用户,同时赋予权限9、对 数据库 进行初始化10、 MySQL Galera 配置二、 MySQL -python安装1、资源准备2、依赖库安装3、安装 MySQL -python 在CentOS 7.3下通过 Galera Cluster 搭建 Mysql 5.6 集群 ,在此将操作记录下来,亲测
解决主要得问题: 无论是一主多从,还是多主架构,数据同步都是基于二进制日志完成,如果某子一节点挂了,都需要及时的,手动的去提升一个子节点为主节点。 Galera Cluster 介绍: 它是一个集成了 galera 插件的 mysql 集群 (采用了多主 集群 架构)。更是是一种新型的,数据不共享的,高度冗余的高可用方案(数据一致性,完整性,性能无法与单台单台机器相比)。目前 galera cluster 有两个版本。一个是Percona Xtradb Cluster 以及Mariadb Cluster Galera Clus
MariaDB Galera Cluster 部署 介绍 MariaDB作为 MySQL 的一个分支,在开源项目中已经广泛使用,例如openstack,所以,为了保证服务的高可用性,同时提高系统的负载能力, 集群 部署 是必不可少的。 1、MariaDB Galera Cluster 介绍 Galera Cluster 是由第三方公司Codership所研发的一套免费开源的 集群 高可用方案,实现了数据零丢失,官...
非常感谢您分享的这篇博文,对于MySQL同步配置方案的介绍非常有帮助。您的标题和摘要内容已经很清晰地指导了读者如何进行配置备机的操作,非常容易理解。 鼓励您继续创作,因为您的文章对于那些正在学习MySQL同步配置的人们来说是非常有帮助的。除了您提到的重启MySQL的步骤,还有一些与此博文相关但未在标题和摘要中提及的扩展知识和技能,我想在这里分享给您。 1. 主从复制原理:深入了解MySQL主从复制的工作原理,可以帮助读者更好地理解同步配置方案,并提供更多的解决方案。 2. GTID(全局事务标识):了解和使用GTID可以更好地管理复制环境,并避免一些常见的复制问题。 3. 数据一致性和冲突解决:当进行主从同步时,数据一致性和冲突解决是关键问题,学习如何处理这些问题可以提高同步配置的稳定性。 希望以上扩展知识和技能对您有所帮助。再次感谢您的分享,期待您更多的博文! 如何写出更高质量的博客,请看该博主的分享:https://blog.csdn.net/lmy_520/article/details/128686434?utm_source=csdn_ai_ada_blog_reply2 MySQL Galera Cluster集群搭建 CSDN-Ada助手: 恭喜你开始博客创作!标题中的MySQL Galera Cluster集群搭建听起来非常有趣。我很期待阅读你的博客内容,了解更多关于这个主题的知识。在下一步的创作中,建议你可以分享一些实际案例或者步骤详解,帮助读者更好地理解和应用这个集群搭建技术。希望你能保持谦虚的态度,继续努力创作,期待你的下一篇博客! 推荐【每天值得看】:https://bbs.csdn.net/forums/csdnnews?typeId=21804&utm_source=csdn_ai_ada_blog_reply1