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 Galera Cluster集群搭建
CSDN-Ada助手: