Mariadb galera 集群

时间:2023-03-09 03:07:59
Mariadb    galera 集群

Mariadb    galera 集群

    部署galera 多主架构 (galera集群多用于关键性业务,因为galera集群为了数据的一致性,采用的是同步的机制,这就使galera牺牲了一部分性能来换取数据一致性。)

环境准备:三台服务器

master:192.168.206.3

master1:192.168.206.5

master2:192.168.206.6

yum配置

操作系统:CentOS7.3

数据库版本:MariaDB-10.3.7

1>yum配置,(三端数据库信息保持一致)

[mariadb]

name=MariaDB

baseurl=http://mirrors.ustc.edu.cn/mariadb/yum/10.3/centos7-amd64/

gpgkey=http://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB

gpgcheck=1

2>关闭防火墙 

Mariadb    galera 集群

3>三个主机都要互相解析

vim /etc/hosts

Mariadb    galera 集群

4>主节点编辑配置文件

vim /etc/my.cnf.d/server.cnf

Mariadb    galera 集群

在 [ galera ] 下面

wsrep_on=ON  wsrep_provider=/usr/lib64/galera/libgalera_smm.so     #galera的库文件的地址

wsrep_cluster_address="gcomm://192.168.206.3,192.168.206.5,192.168.206.6"   #各节点的ip

wsrep_node_name=node1         #节点主机名  

wsrep_node_address=192.168.206.3 #节点ip

binlog_format=row        #二进制日志设置为行模式  row (安全性最高,性能最低)

default_storage_engine=InnoDB    #使用的默认引擎 innoDB  支持事务

innodb_autoinc_lock_mode=2      #2为性能最好

wsrep_slave_threads=1              #并发线程数

innodb_flush_log_at_trx_commit=0                   #0.log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行。该模式下在

事务提交的时候,不会主动触发写入磁盘的操作,#1:每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去,该  模式为系统默                                                                              认。

#2:每次事务提交时MySQL都会把log buffer的数据写入log file,但是flush(刷到磁盘)操作并不会同

时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作

innodb_buffer_pool_size=120M       #设置缓存池大小

wsrep_sst_method=rsync             #远程同步

wsrep_causal_reads=ON         #避免各个节点的数据不一致,这种情况需要等待全同步复制 将此文件复制到master1、master2,注意要把 wsrep_node_name 和 wsrep_node_address 改成相应                                                                          节点的 hostname 和 ip。

注:graler 集群最好至少三个,两个的话。如果出现网络波动可能会出现脑裂;

三端都需要配置

5>第一次启动需要初始化

&1

mysqld_safe--wsrep_cluster_address=gcomm://192.168.206.3,192.168.206.5,192.168.206.6

Mariadb    galera 集群

这里会hang住 ,等他执行一段时间就好,

&2  执行  /bin/galera_new_cluster

Mariadb    galera 集群

6>另外两端启动数据库

service  mariadb restart

Mariadb    galera 集群

7>查看集群状态(进程和端口)(查看wsrep 状态也可以)

Mariadb    galera 集群

确保 wsrep 端口 :4567  与  mariadb端口: 3306 打开

&show status like ‘wsrep%'

Mariadb    galera 集群

8>测试

&master端

Mariadb    galera 集群

&master1端

Mariadb    galera 集群

&master2端

Mariadb    galera 集群

同步成功!

注: 若三台主机 关机了,再起就起不来了。

执行以下操作

vim /var/lib/mysql/grastate.dat

把safe_to_bootstrap更改为1

# GALERA saved state

version: 2.1 uuid:    a393feef-f639-11e8-9b89-4e75f9b8fb0f

seqno:   -1

safe_to_bootstrap: 1