Galera Cluster特点

1、多主架构:真正的多点读写的集群,在任何时候读写数据,都是最新的
2、同步复制:集群不同节点之间数据同步,没有延迟,在数据库挂掉之后,数据不会丢失
3、并发复制:从节点APPLY数据时,支持并行执行,更好的性能
4、故障切换:在出现数据库故障时,因支持多点写入,切换容易
5、热插拔:在服务期间,如果数据库挂了,只要监控程序发现的够快,不可服务时间就会非常少。在节点故障期间,节点本身对集群的影响非常小
6、自动节点克隆:在新增节点,或者停机维护时,增量数据或者基础数据不需要人工手动备份提供,Galera Cluster会自动拉取在线节点数据,最终集群会变为一致
7、对应用透明:集群的维护,对应用程序是透明的

Galera Cluster工作过程

客户端发送更新指令到mysql服务器,服务器回复OK,但客户端有可能以事务方式执行,并没有发送确认指令(commit);当客户端发送commit指令确认后,mysql服务器会把数据库的更新复制到同一个集群的其他节点;集群中的所有节点会对数据库的更新进行校验,检查更新完的数据与数据库中的数据是否冲突,如果不冲突,服务器端会回复OK;如果更新的数据与集群中的任意一个节点数据发生冲突,则都会回复error

实现Galera Cluster集群

至少需要三台机器;并且Galera Cluster也是一个数据库服务,下载Galera Cluster必须卸载服务器现有的mysql数据库服务

master1配置

[root@centos7 ~]# vim /etc/yum.repos.d/base.repo      #编辑yum源仓库
[mysql]
name=mysql
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-10.0.38/yum/centos7-amd64/
gpgcheck=0
enabled=1
[root@centos7 ~]# scp /etc/yum.repos.d/base.repo 192.168.38.37:/etc/yum.repos.d/mysql.repo #发送给另外两个主节点
[root@centos7 ~]# scp /etc/yum.repos.d/base.repo 192.168.38.47:/etc/yum.repos.d/mysql.repo
[root@centos7 ~]# yum install MariaDB-Galera-server -y
[root@centos7 ~]# vim /etc/my.cnf.d/server.cnf #编辑galera配置文件
[galera]
wsrep_provider=/usr/lib64/galera/libgalera_smm.so #启用galera模块
wsrep_cluster_address="gcomm://192.168.38.7,192.168.38.37,192.168.38.47" #指定集群中节点的IP
binlog_format=row #二进制日志格式必须为行
default_storage_engine=InnoDB #存储引擎
innodb_autoinc_lock_mode=2
bind-address=0.0.0.0 #绑定本机的所有IP wsrep_cluster_name='mycluster' #设置集群名
wsrep_node_name='node1' #设置节点名
wsrep_node_address='192.168.38.7' #指定本节点的IP
[root@centos7 ~]# service mysql start --wsrep-new-cluster #第一次启动,三个节点中必须有一个节点添加--wsrep-new-cluster参数启动

master2

[root@localhost ~]# yum install MariaDB-Galera-server -y   #yum源不用配,前面master1主节点已经把yum源和galera配置文件发送到所有节点中
[root@localhost ~]# vim /etc/my.cnf.d/server.cnf
[galera]
wsrep_cluster_name='mycluster' #上面的galera信息不用修改,修改一下本节点的信息
wsrep_node_name='node2'
wsrep_node_address='192.168.38.37'
[root@localhost ~]# service mysql start

master3

[root@localhost ~]# yum install MariaDB-Galera-server -y
[root@localhost ~]# vim /etc/my.cnf.d/server.cnf
[galera]
wsrep_cluster_name='mycluster'
wsrep_node_name='node3'
wsrep_node_address='192.168.38.47'
[root@localhost ~]# service mysql start

在一个主节点更新数据,会同步到这个集群的其他主节点上;但是假如三个主节点同时创建一张db1表,会发现有两个主节点报错,一个主节点成功;这个就是galera cluster的工作特性;最先执行创建表的主节点询问其余主节点数据是否发生冲突,不发生冲突则创建表,一个主节点成功创建了db1表,其余两个主节点创建的时候也回去询问,但是有一主节点已经创建完毕,所以会发生数据冲突,则其余两个主节点都会报错

SHOW VARIABLES LIKE 'wsrep_%';           #可以在mysql中查询集群的相关状态信息
SHOW STATUS LIKE 'wsrep_%';
SHOW STATUS LIKE 'wsrep_cluster_size';

往现有集群中添加一个主节点master4

通过master1,把yum源仓库文件和galera的配置文件都拷贝给master4

[root@localhost ~]# yum install MariaDB-Galera-server -y
[root@localhost ~]# vim /etc/my.cnf.d/server.cnf
[galera]
wsrep_cluster_address="gcomm://192.168.38.7,192.168.38.37,192.168.38.47,192.168.38.57" #把新的节点master4的IP添加上去 wsrep_cluster_name='mycluster'
wsrep_node_name='node4'
wsrep_node_address='192.168.38.57'
[root@localhost ~]# service mysql start

其余所有节点的galera的配置文件都需要添加新的主节点的IP,添加完之后重启服务

[root@localhost ~]# vim /etc/my.cnf.d/server.cnf
wsrep_cluster_address="gcomm://192.168.38.7,192.168.38.37,192.168.38.47,192.168.38.57"
[root@localhost ~]# service mysql restart
[root@localhost ~]# mysql -e 'SHOW STATUS LIKE "wsrep_cluster_size";' #集群中有4个节点
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| wsrep_cluster_size | 4 |
+--------------------+-------+

基于Galera Cluster多主结构的Mysql高可用集群的更多相关文章

  1. Mysql 高可用集群PXC

    PXC是percona公司的percona  xtraDB  cluster,简称PXC.它是基于Galera协议的高可用集群方案.可以实现多个节点间的数据同步复制以及读写,并且可保障数据库的服务高可 ...

  2. MySQL高可用集群方案

    一.Mysql高可用解决方案 方案一:共享存储 一般共享存储采用比较多的是 SAN/NAS 方案. 方案二:操作系统实时数据块复制 这个方案的典型场景是 DRBD,DRBD架构(MySQL+DRBD+ ...

  3. MySQL高可用集群MHA方案

    MySQL高可用集群MHA方案 爱奇艺在用的数据库高可用方案 MHA 是目前比较成熟及流行的 MySQL 高可用解决方案,很多互联网公司正是直接使用或者基于 MHA 的架构进行改造实现 MySQL 的 ...

  4. Mysql高可用集群环境介绍

    MySQL高可用集群环境搭建 01.MySQL高可用环境方案 02.MySQL主从复制原理 03.MySQL主从复制作用 04.在Linux环境上安装MySQL 05.在MySQL集群环境上配置主从复 ...

  5. 部署MYSQL高可用集群

                                                  mysql-day08     部署MYSQL高可用集群 u 集群架构                   ...

  6. heatbeat-gui实现基于nfs的mysql高可用集群

    一.简述HA高可用集群 高可用集群就是当集群中的一个节点发生各种软硬件及人为故障时,集群中的其他节点能够自动接管故障节点的资源并向外提供服务.以实现减少业务中断时间,为用户提供更可靠,更高效的服务. ...

  7. keepalived+MySQL高可用集群

    基于keepalived搭建MySQL的高可用集群   MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Clus ...

  8. corosync+pacemaker and drbd实现mysql高可用集群

    DRBD:Distributed Replicated Block Device 分布式复制块设备,原理图如下 DRBD 有主双架构和双主架构的,当处于主从架构时,这个设备一定只有一个节点是可以读写的 ...

  9. MYSQL高可用集群架构-MHA架构

    1  MHA简介:MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司 ...

随机推荐

  1. 如何使用Swagger为.NET Core 3.0应用添加JWT授权说明文档

    简介 本教程采用WHY-WHAT-HOW黄金圈思维模式编写,黄金圈法则强调的是从WHY为什么学,到WHAT学到什么,再到HOW如何学.从模糊到清晰的学习模式.大家的时间都很宝贵,我们做事前先想清楚为什 ...

  2. CPU爆满后的无助感

    告警 晚七点刚好上地铁,握在手里的手机震动了好几下,根据震动这几下的手感已经判断出这是钉钉在告警了,十有八九就是线上的问题,通过Zabbix监控的一台线上服务器已经五分钟不可达,这应该不会是网络网络问 ...

  3. ThreadLocal小试牛刀

    ThreadLocal中保存的数据只能被当前线程私有,不被其它线程可见 证明 声明一个全局的变量threadLocal,初始值为1,通过3个线程对其进行访问修改设置,理论上threadLocal的最终 ...

  4. Spring MVC(1)Spring MVC的初始化和流程以及SSM的实现

    一.Spring MVC概述 1.Spring MVC 的架构 对于持久层而言,随着软件的发展,迁移数据库的可能性很小,所以在大部分情况下都用不到Hibernate的HQL来满足迁移数据库的要求.与此 ...

  5. 设计模式(二十一)Proxy模式

    在面向对象编程中,“本人”和“代理人”都是对象.如果“本人”对象太忙了,有些工作无法自己亲自完成,就将其交给“代理人”对象负责. 示例程序的类图. 示例程序的时序图.从这个时序图可以看出,直到调用pr ...

  6. TCP UDP基本编程(一)

    tcp udp均可以用来网络通信,在使用之前建议先搜索一下相关网络连接的基本知识,可以更好的理解和使用,tcp建议看下如下文章:https://blog.csdn.net/chuangsun/arti ...

  7. [考试反思]1103csp-s模拟测试99: 美梦

    可能这次考得好的原因就是熬夜颓废到不算太晚?(啪) 但是是真心困. 考前跟akt说:我希望今天考一点那种不用动脑子,就是一直码的题. 然后开门T1一道线段树维护单调栈的板子我就...了 当时调了一上午 ...

  8. Python3获取豆瓣图书标签的前20本热门书籍(一)

    介绍 第一篇主要获取豆瓣的大分类.大分类下的具体分类以及具体分类下的前20本热门书籍,第二篇对获取的数据进行分析. 准备 Python3.6.requests.BeautifulSoup4 演示 代码 ...

  9. js+css3实现多行图片点击(自动)左右无缝轮播特效

    /*效果图*/ HTML:    <div class="scroll">       <div class="picbox">     ...

  10. st表复习笔记

    st表,一种高效的区间最值查询(RMQ)算法.本质其实是一个动态规划. 其实吧,对于看过线性dp的人来说应该不难理解,只是处理有些麻烦.但是本土狗因为-1的问题居然改了许久... 用两个2^i的区间把 ...