热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mariadb集群mysql_MySQL/MariaDB数据库的Galera高可用性集群实战

MySQLMariaDB数据库的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-3)

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架构,当有客户端要写入或者读取数据时,连接哪个实例都是一样的,读到的数据是相同的,写入某一个节点之后,集群自己会将新数据同步到其它节点上面,这种架构不共享任何数据,是一种高冗余架构

a2a78d78ecbe2e34aa1185465708a20d.png

3>.Galera Cluster特点

多主架构:

真正的多点读写的集群,在任何时候读写数据,都是最新的

同步复制:

集群不同节点之间数据同步,没有延迟,在数据库挂掉之后,数据不会丢失

并发复制:

从节点APPLY数据时,支持并行执行,更好的性能

故障切换:

在出现数据库故障时,因支持多点写入,切换容易

热插拔:

在服务期间,如果数据库挂了,只要监控程序发现的够快,不可服务时间就会非常少。在节点故障期间,节点本身对集群的影响非常小

自动节点克隆:

在新增节点,或者停机维护时,增量数据或者基础数据不需要人工手动备份提供,Galera Cluster会自动拉取在线节点数据,最终集群会变为一致

对应用透明:

集群的维护,对应用程序是透明的

4>.Galera Cluster工作过程

9b4aecc1297ee2ba0759e4cd31b84aef.png

二.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=0[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.repo100% 106 42.7KB/s 00:00[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.repo100% 106 46.0KB/s 00:00[root@node101.yinzhengjie.org.cn~]#

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

[root@node101.yinzhengjie.org.cn ~]# yumclean all

Loaded plugins: fastestmirror

Repository'mysql' is missing name in configuration, using idCleaning repos: base extras mysql updates

Cleaning up list of fastest mirrors

[root@node101.yinzhengjie.org.cn~]#

[root@node101.yinzhengjie.org.cn ~]# yum clean all

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

[root@node101.yinzhengjie.org.cn ~]# yumrepolist

Loaded plugins: fastestmirror

Repository'mysql' is missing name in configuration, using idDetermining fastest mirrors*base: mirrors.huaweicloud.com*extras: mirrors.huaweicloud.com*updates: mirrors.huaweicloud.com

base| 3.6 kB 00:00:00extras| 2.9 kB 00:00:00mysql| 2.9 kB 00:00:00updates| 2.9 kB 00:00:00(1/5): extras/7/x86_64/primary_db | 153 kB 00:00:00(2/5): base/7/x86_64/group_gz | 165 kB 00:00:00(3/5): updates/7/x86_64/primary_db | 2.8 MB 00:00:01(4/5): base/7/x86_64/primary_db | 6.0 MB 00:00:01(5/5): mysql/primary_db | 43 kB 00:00:03repoidrepo name status

base/7/x86_64 CentOS-7 - Base 10,097extras/7/x86_64 CentOS-7 - Extras 305mysql mysql34updates/7/x86_64 CentOS-7 - Updates 711repolist:11,147[root@node101.yinzhengjie.org.cn~]#

[root@node101.yinzhengjie.org.cn ~]# yum repolist

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

[root@node101.yinzhengjie.org.cn ~]# grep keepcache /etc/yum.conf

keepcache=0[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=1[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

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

[root@node102.yinzhengjie.org.cn ~]# yum list MariaDB-Galera-server  #安装之前可以查看是否有该安装包

Loaded plugins: fastestmirror

Repository'mysql' is missing name in configuration, using idLoading 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.63-1.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=2#加锁的模式

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集群中发现数据冲突,它们就会踢掉一个不一致的节点,从而保证数据的一致性。



推荐阅读
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • MFC程序连接MySQL成功实现查询功能,但无法实现修改操作——详解查询语句在MySQL中的使用过程
    selectxxx,xxx,xxxfromxxxwherexxxxxx,xxxxxx程序的日常开发中,我们经常会写到各种各样的简单的,复杂的查询sql语 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • mui框架offcanvas侧滑超出部分隐藏无法滚动如何解决
    web前端|js教程off-canvas,部分,超出web前端-js教程mui框架中off-canvas侧滑的一个缺点就是无法出现滚动条,因为它主要用途是设置类似于qq界面的那种格 ... [详细]
  • Linux环境中使用Mysql数据库
    Linux下Mysql数据库MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQLAB公司,目前属于Oracle公司,MySQL被广泛地应用在I ... [详细]
author-avatar
亘古轻柔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有