MySQL/MariaDB数据库的Galera高可用性集群实战
MySQL/MariaDB数据库的Galera高可用性集群实战
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.Galera Cluster概述
1>.什么是Galera Cluster
集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的高可用方案,目前Galera Cluster有两个版本,分别是Percona Xtradb Cluster及MariaDB Cluster,Galera本身是具有多主特性的,即采用multi-master的集群架构,是一个既稳健,又在数据一致性、完整性及高性能方面有出色表现的高可用解决方案。
Galera Cluster官方文档:
http://galeracluster.com/documentation-webpages/galera-documentation.pdf
http://galeracluster.com/documentation-webpages/index.html
https://mariadb.com/kb/en/mariadb/getting-started-with-mariadb-galera-cluster/ Galera Cluster包括两个组件
Galera replication library (galera-)
WSREP:MySQL extended with the Write Set Replication WSREP复制实现:
PXC:Percona XtraDB Cluster,是Percona对Galera的实现
MariaDB Galera Cluster
官方仓库:https://downloads.mariadb.org/
参考仓库:https://downloads.mariadb.org/mariadb-galera/5.5.63/#file_type=rpm
注意:
这至少需要三个节点且安装的版本是有要求的,即只能安装支持Galera Cluster版本的软件,不要去安装mariadb-server。
2>.Galera Cluster架构
如下图所示:
三个节点组成了一个集群,与普通的主从架构不同,它们都可以作为主节点,三个节点是对等的,称为multi-master架构,当有客户端要写入或者读取数据时,连接哪个实例都是一样的,读到的数据是相同的,写入某一个节点之后,集群自己会将新数据同步到其它节点上面,这种架构不共享任何数据,是一种高冗余架构

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

二.Galera Cluster部署实战
1>.配置yum源
[root@node101.yinzhengjie.org.cn ~]# vim /etc/yum.repos.d/mysql.repo
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# cat /etc/yum.repos.d/mysql.repo
[mysql]
baseurl=http://ftp.hosteurope.de/mirror/archive.mariadb.org//mariadb-5.5.63/yum/centos7-amd64/
gpgcheck=
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# scp /etc/yum.repos.d/mysql.repo 172.30.1.102:/etc/yum.repos.d/
mysql.repo % .7KB/s :
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# scp /etc/yum.repos.d/mysql.repo 172.30.1.103:/etc/yum.repos.d/
mysql.repo % .0KB/s :
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# yum clean all
Loaded plugins: fastestmirror
Repository 'mysql' is missing name in configuration, using id
Cleaning repos: base extras mysql updates
Cleaning up list of fastest mirrors
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# yum clean all
[root@node101.yinzhengjie.org.cn ~]# yum repolist
Loaded plugins: fastestmirror
Repository 'mysql' is missing name in configuration, using id
Determining fastest mirrors
* base: mirrors.huaweicloud.com
* extras: mirrors.huaweicloud.com
* updates: mirrors.huaweicloud.com
base | 3.6 kB ::
extras | 2.9 kB ::
mysql | 2.9 kB ::
updates | 2.9 kB ::
(/): extras//x86_64/primary_db | kB ::
(/): base//x86_64/group_gz | kB ::
(/): updates//x86_64/primary_db | 2.8 MB ::
(/): base//x86_64/primary_db | 6.0 MB ::
(/): mysql/primary_db | kB ::
repo id repo name status
base//x86_64 CentOS- - Base ,
extras//x86_64 CentOS- - Extras
mysql mysql
updates//x86_64 CentOS- - Updates
repolist: ,
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# yum repolist
[root@node101.yinzhengjie.org.cn ~]# grep keepcache /etc/yum.conf
keepcache=
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# sed -i 's#keepcache=0#keepcache=1#' /etc/yum.conf
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# grep keepcache /etc/yum.conf
keepcache=
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]#
[root@node101.yinzhengjie.org.cn ~]# sed -i 's#keepcache=0#keepcache=1#' /etc/yum.conf
[root@node102.yinzhengjie.org.cn ~]# yum list MariaDB-Galera-server #安装之前可以查看是否有该安装包
Loaded plugins: fastestmirror
Repository 'mysql' is missing name in configuration, using id
Loading mirror speeds from cached hostfile
* base: mirror.jdcloud.com
* extras: mirror.jdcloud.com
* updates: mirror.jdcloud.com
Available Packages
MariaDB-Galera-server.x86_64 5.5.-.el7.centos mysql
[root@node102.yinzhengjie.org.cn ~]#
[root@node102.yinzhengjie.org.cn ~]# yum list MariaDB-Galera-server #安装之前可以查看是否有该安装包
2>.安装MariaDB-Galera-server
[root@node102.yinzhengjie.org.cn ~]# yum -y install MariaDB-Galera-server
3>.编辑配置文件
vim /etc/my.cnf.d/server.cnf
[galera]
wsrep_provider = /usr/lib64/galera/libgalera_smm.so #指定的提供文件路径
wsrep_cluster_address="gcomm://172.30.1.101,172.30.1.102,172.30.1.103" #指定集群地址
binlog_format=row #二进制文件格式
default_storage_engine=InnoDB #指定默认的存储引擎
innodb_autoinc_lock_mode= #加锁的模式
bind-address=0.0.0.0 #绑定当前服务器的所有可用地址 下面配置可选项:
wsrep_cluster_name = ‘mycluster‘ #默认名称为my_wsrep_cluster
wsrep_node_name = 'node1' #当前节点名称
wsrep_node_address = ‘192.168.8.7’ #当前节点的IP地址
4>.首次启动时,需要初始化集群,在其中一个节点上执行命令
/etc/init.d/mysql start --wsrep-new-cluster
5>.而后正常启动其它节点
service mysql start
6>.查看集群中相关系统变量和状态变量
SHOW VARIABLES LIKE 'wsrep_%‘;
SHOW STATUS LIKE 'wsrep_%‘;
SHOW STATUS LIKE 'wsrep_cluster_size‘;
7>.MariaDB-Galera-server注意事项
在数据量比较大的环境中,使用MariaDB-Galera-server要慎重啊,我们知道它是在所有数据库上都能更改,可能会面临数据冲突的问题。 一旦在MariaDB-Galera-server集群中发现数据冲突,它们就会踢掉一个不一致的节点,从而保证数据的一致性。
MySQL/MariaDB数据库的Galera高可用性集群实战的更多相关文章
- MySQL/MariaDB数据库的MHA实现高可用实战
MySQL/MariaDB数据库的MHA实现高可用实战 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL高可用常见的解决方案 1>.Multi-Master ...
- MySQL/MariaDB数据库的mysqldump工具备份还原实战
MySQL/MariaDB数据库的mysqldump工具备份还原实战 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.mysqldump概述 1>.逻辑备份工具 mysq ...
- mariadb数据库(4)集群
[主从架构]确保主从的两个数据库一致. um配置 [mariadb] name=MariaDB baseurl=http://mirrors.ustc.edu.cn/mariadb/yum/10.3/ ...
- 【原】基于 HAproxy 1.6.3 Keeplived 在 Centos 7 中实现mysql mariadb galera cluster 集群分发读写 —— 上篇
前言 有一段时间没有写blogs,乘着周末开始整理下haproxy + keeplived 实现 mysql mariadb galera cluster 集群访问环境的搭建工作. 本文集中讲hapr ...
- Centos 7 下 Mysql 5.7 Galera Cluster 集群部署
一.介绍 传统架构的使用,一直被人们所诟病,因为MySQL的主从模式,天生的不能完全保证数据一致,很多大公司会花很大人力物力去解决这个问题,而效果却一般,可以说,只能是通过牺牲性能,来获得数据一致性 ...
- MariaDB Galera Cluster集群搭建
MariaDB Galera Cluster是什么? Galera Cluster是由第三方公司Codership所研发的一套免费开源的集群高可用方案,实现了数据零丢失,官网地址为http://g ...
- MySQL/MariaDB数据库的主从复制
MySQL/MariaDB数据库的主从复制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL复制概述 1>.传统扩展方式 垂直扩展(也叫向上扩展,Sacle ...
- 一次galera cluster集群故障节点无法启动问题排查
现象 环境: Server version: 10.0.25-MariaDB-wsrep MariaDB Server, wsrep_25.13.raf7f02e 配置文件: [root@node-2 ...
- HA(High available)-Keepalived高可用性集群(双机热备)单点实验-菜鸟入门级
HA(High available)-Keepalived高可用性集群 Keepalived 是一个基于VRRP虚拟路由冗余协议来实现的WEB 服务高可用方案,虚拟路由冗余协议 (Virtual ...
随机推荐
- SQL Server PARTITION FUNCTION(分区)
分区并不影响Linq,sql查询 在MSSQL中,选中目标表,右键-存储-创建分区 根据提示完成分区,存储成sql 这里展示如何根据Id的数据范围分区 在执行前,可能需要设置日志文件大小为" ...
- CentOS7.5 使用 kubeadm 安装配置 Kubernetes1.12(四)
在之前的文章,我们已经演示了yum 和二进制方式的安装方式,本文我们将用官方推荐的kubeadm来进行安装部署. kubeadm是 Kubernetes 官方提供的用于快速安装Kubernetes集群 ...
- Java序列化的方式。
0.前言 本文主要对几种常见Java序列化方式进行实现.包括Java原生以流的方法进行的序列化.Json序列化.FastJson序列化.Protobuff序列化. 1.Java原生序列化 Java原生 ...
- 通过excel表格分析学生成绩
题目要求: 分析文件’课程成绩.xlsx’,至少要完成内容:分析1)每年不同班级平均成绩情况.2)不同年份总体平均成绩情况.3)不同性别学生成绩情况,并分别用合适的图表展示出三个内容的分析结果. 废话 ...
- 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用
一般来说,删除节点可分为两个步骤: 首先找到需要删除的节点: 如果找到了,删除它. 说明: 要求算法时间复杂度为 O(h),h 为树的高度. 示例: root = [5,3,6,2,4,null,7] ...
- 有些CCS工程中为什么会有两个CMD文件?
这里的CCS就是TI公司的Code Composer Studio 集成开发环境,所以这篇随笔也就是关于TI公司DSP开发过程中对于刚入门同学的一个常见问题了. 那作为一个初学者,对于CCS工程中的c ...
- java网站架构演变过程
网站架构演变过程. .传统架构.传统的SSH架构,分为三层架构web控制层.业务逻辑层.数据库访问层..传统架构也就是单点应用,就是大家在刚开始初学JavaEE技术的时候SSH架构或者SSM架构,业务 ...
- head first c# -- 第七章 (接口与抽象类)
接口的作用: 例子:有鸡,鸭,牛,羊4个类,还有farmer类: farmer.feed(obj obj) { obj.eat() } // 没有接口: farmer.feedChicken(Chic ...
- UI单据按钮点击事件校验
一.按钮点击前事务处理<BeforeEventProcess> public override void BeforeEventProcess(IPart part, string eve ...
- [cf 1245 F] Daniel and Spring Cleaning
题意: 求区间$[l,r]$内有多少有序数对$(a,b)$满足$a+b=a\bigoplus b$. $l,r\leq 10^9$. 题解: 有用的就一句话: 求区间内一元组可以一维容斥,同理求二元组 ...