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 ...
随机推荐
- Hive、Inceptor数据倾斜详解及解决
一.倾斜造成的原因 正常的数据分布理论上都是倾斜的,就是我们所说的20-80原理:80%的财富集中在20%的人手中, 80%的用户只使用20%的功能 , 20%的用户贡献了80%的访问量. 俗话是,一 ...
- 破解FTP登录密码的几种方法
工具 Hydra X-Hydra Medusa Ncrack Patator Metasploit Hydra hydra -L /root/Desktop/user.txt -P /root/Des ...
- Jmeter(一) Jmeter基本使用
1.下载安装 官方网站 https://jmeter.apache.org/download_jmeter.cgi 选择下载即可 2.基本使用 下载解压后,目录如下: 进入到bin目录, 双击jmet ...
- java HttpClientHelper
1 首先配置pom.xml,具体参考我的这篇文章:使用httpclient需要的maven依赖 2 上代码 import java.io.IOException; import java.io.Inp ...
- 打开nginx配置的站点报错500
打开站点报错500的原因 有很多,这里只说明一点:nginx 的fastcgi.conf配置引起的问题 环境说明 1 站点目录结构 wwwroot website public application ...
- C#多线程那点事——信号量(Semaphore)
信号量说简单点就是为了线程同步,或者说是为了限制线程能运行的数量. 那它又是怎么限制线程的数量的哩?是因为它内部有个计数器,比如你想限制最多5个线程运行,那么这个计数器的值就会被设置成5,如果一个线程 ...
- Linux Docker Introduction
Setup on Ubuntu. 前提条件: Docker需要两个重要的安装要求: 它仅适用于64位Linux安装,注意:是64位的Linux系统. 它需要Linux内核版本3.10或更高版本. 要查 ...
- JAVA知识点总结篇(三)
抽象类 使用规则 abstract定义抽象类: abstract定义抽象方法,只有声明,不需要实现: 包含抽象方法的类是抽象类: 抽象类中可以包含普通方法,也可以没有抽象方法: 抽象类不能直接创建,可 ...
- Vivado关联Notepad++
Vivado自带的编辑器非常难看,我习惯用Notepad++,这里记录一下二者的关联. 1.打开Vivado,点击 Tools --- Settings --- Text Editor,右侧选择 Cu ...
- 【题解】Luogu P1357 花园
原题传送门 我们先将花圃断环为链,并将\([1,m]\)复制一份到\([n+1,n+m]\),最后要求\([1,n+m]\)是合法序列且\([1,m]\)与\([n+1,n+m]\)相等的序列的数量即 ...