MySQL Galera集群

一、工作原理

概念

Galera是一个MySQL(也支持MariaDB,Percona)的同步多主集群软件。

原理

当客户端读写数据时,可连接任一MySQL实例。对于读操作,从每个节点读取到的数据都是相同的。对于写操作,当数据写入某一节点后,集群会将其同步到其它节点。这种架构不共享任何数据,是一种高冗余架构。

特点

  • 同步复制
  • 真正的multi-master,即所有节点可以同时读写数据库
  • 自动的节点成员控制,失效节点自动被清除
  • 新节点加入数据自动复制
  • 真正的并行复制,行级
  • 用户可以直接连接集群,使用感受上与MySQL完全一致

环境图

二、环境准备

操作系统
 

主机地址
 

主机名
 

CentOS 7.4
 

192.168.252.144
 

galery1
 

CentOS 7.4
 

192.168.252.145
 

galery2
 

CentOS 7.4
 

192.168.252.146
 

galery3
 

所有节点均需配置这些操作!!!!

配置解析


vim /etc/hosts
全部内容
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.252.144 galera1
192.168.252.145 galera2
192.168.252.146 galera3

关闭防火墙

setenforce 0 && systemctl stop firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl disable firewalld

同步时间

修改时区和客户端同步时间

timedatectl set-timezone Asia/Shanghai
ntpdate ntp.aliyun.com

三、安装Galera

安装前检查

1.查询是否有mysql
rpm -qa | grep mysql 
清除mysql
yum -y erase `rpm -qa | grep mysql` 

安装Galery

1.编辑仓库文件
vim  /etc/yum.repos.d/galery.repo

[galera]
name=galera
baseurl=http://releases.galeracluster.com/mysql-wsrep-5.7/centos/7/x86_64/
enabled=1
gpgcheck=0

2.查看安装的软件包
yum list | grep 'galera'
查看中:
galera.x86_64 25.3.12-2.el7 epel
mysql-wsrep-5.7.x86_64 5.7.20-25.13.el7 galera
mysql-wsrep-client-5.7.x86_64 5.7.20-25.13.el7 galera
mysql-wsrep-common-5.7.x86_64 5.7.20-25.13.el7 galera
mysql-wsrep-devel-5.7.x86_64 5.7.20-25.13.el7 galera
mysql-wsrep-libs-5.7.x86_64 5.7.20-25.13.el7 galera
mysql-wsrep-libs-compat-5.7.x86_64 5.7.20-25.13.el7 galera
mysql-wsrep-server-5.7.x86_64 5.7.20-25.13.el7 galera

3.安装
yum install mysql-wsrep-5.7.x86_64 galera rsync -y

4.安装mysql5.7
。。。
5.创建用户
mysql> grant all on *.* to 'syncuser'@'%' identified by '@Syh2025659';
mysql> flush privileges;

四、配置集群

mysql的配置

修改配置文件


galera1配置文件:
vim /etc/my.cnf

server-id=1                     #不同节点需要不同的id
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2

wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera'           #集群名字,自定义但在同一集群的需要名字一致
wsrep_cluster_address='gcomm://'      #所有集群的ip除自己本身外,第一次添加需要带上自己的ip
wsrep_node_name='galera1'             #本节点的名称
wsrep_node_address='192.168.252.144'  #本节点的ip地址
wsrep_sst_auth=syncuser:'@Syh2025659' #本节点的用户名和密码
wsrep_sst_method=rsync           


galera2配置文件:
vim /etc/my.cnf

server-id=2
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2

wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://[集群ip]'
wsrep_node_name='galera2'
wsrep_node_address='192.168.252.145'
wsrep_sst_auth=syncuser:'@Syh2025659'
wsrep_sst_method=rsync

galera3配置文件:
vim /etc/my.cnf

server-id=3
binlog_format=row
innodb_file_per_table=1
innodb_autoinc_lock_mode=2

wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://[集群ip]'
wsrep_node_name='galera3'
wsrep_node_address='192.168.252.146'
wsrep_sst_auth=syncuser:'@Syh2025659'
wsrep_sst_method=rsync

重启测试
systemctl restart mysqld



tips:
1.如果集群不能一次性全部添加启动失败,就一个一个添加。
2.

五、集群测试

netstat -tnpl                       查看两个端口号3306和4567
mysql> show status like 'wsrep%';
+------------------------------+--------------------------------------+
| Variable_name                | Value                                |
+------------------------------+--------------------------------------+
| wsrep_local_state_uuid       | 882c705f-5f84-11ef-8410-92d486c7c82f |
| wsrep_protocol_version       | 7                                    |
| wsrep_last_committed         | 0                                    |
| wsrep_replicated             | 0                                    |
| wsrep_replicated_bytes       | 0                                    |
| wsrep_repl_keys              | 0                                    |
| wsrep_repl_keys_bytes        | 0                                    |
| wsrep_repl_data_bytes        | 0                                    |
| wsrep_repl_other_bytes       | 0                                    |
| wsrep_received               | 2                                    |
| wsrep_received_bytes         | 146                                  |
| wsrep_local_commits          | 0                                    |
| wsrep_local_cert_failures    | 0                                    |
| wsrep_local_replays          | 0                                    |
| wsrep_local_send_queue       | 0                                    |
| wsrep_local_send_queue_max   | 1                                    |
| wsrep_local_send_queue_min   | 0                                    |
| wsrep_local_send_queue_avg   | 0.000000                             |
| wsrep_local_recv_queue       | 0                                    |
| wsrep_local_recv_queue_max   | 2                                    |
| wsrep_local_recv_queue_min   | 0                                    |
| wsrep_local_recv_queue_avg   | 0.500000                             |
| wsrep_local_cached_downto    | 18446744073709551615                 |
| wsrep_flow_control_paused_ns | 0                                    |
| wsrep_flow_control_paused    | 0.000000                             |
| wsrep_flow_control_sent      | 0                                    |
| wsrep_flow_control_recv      | 0                                    |
| wsrep_cert_deps_distance     | 0.000000                             |
| wsrep_apply_oooe             | 0.000000                             |
| wsrep_apply_oool             | 0.000000                             |
| wsrep_apply_window           | 0.000000                             |
| wsrep_commit_oooe            | 0.000000                             |
| wsrep_commit_oool            | 0.000000                             |
| wsrep_commit_window          | 0.000000                             |
| wsrep_local_state            | 4                                    |
| wsrep_local_state_comment    | Synced                               |
| wsrep_cert_index_size        | 0                                    |
| wsrep_causal_reads           | 0                                    |
| wsrep_cert_interval          | 0.000000                             |
| wsrep_incoming_addresses     | 192.168.252.144:3306                 |
| wsrep_evs_delayed            |                                      |
| wsrep_evs_evict_list         |                                      |
| wsrep_evs_repl_latency       | 0/0/0/0/0                            |
| wsrep_evs_state              | OPERATIONAL                          |
| wsrep_gcomm_uuid             | 882b18e9-5f84-11ef-b535-7f3b3c80b2c4 |
| wsrep_cluster_conf_id        | 1                                    |
| wsrep_cluster_size           | 1                                    |
| wsrep_cluster_state_uuid     | 882c705f-5f84-11ef-8410-92d486c7c82f |
| wsrep_cluster_status         | Primary                              |
| wsrep_connected              | ON                                   |
| wsrep_local_bf_aborts        | 0                                    |
| wsrep_local_index            | 0                                    |
| wsrep_provider_name          | Galera                               |
| wsrep_provider_vendor        | Codership Oy <info@codership.com>    |
| wsrep_provider_version       | 3.12(r9921e73)                       |
| wsrep_ready                  | ON                                   |
+------------------------------+--------------------------------------+



2.创建数据库测试看所有节点是否全部同步

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值