返回顶部
首页 > 资讯 > 数据库 >利用Galera Cluster解决主主复制单点问题
  • 768
分享到

利用Galera Cluster解决主主复制单点问题

2024-04-02 19:04:59 768人浏览 泡泡鱼
摘要

Galera Cluster 关于Galera Cluster   Galera Cluster:集成了Galera插件的Mysql集群,是一种新型的,数据不共享的,高度冗余的高可用方案,目前Galera

Galera Cluster

关于Galera Cluster

  Galera Cluster:集成了Galera插件Mysql集群,是一种新型的,数据不共享的,高度冗余的高可用方案,目前Galera Cluster有两个版本,分别是Percona Xtradb Cluster及MariaDB Cluster,Galera本身是具有多主特性的,即采用multi-master的集群架构,是一个既稳健,又在数据一致性、完整性及高性能方面有出色表现的高可用解决方案

Galera Cluster特点

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

Galera Cluster工作过程

利用Galera Cluster解决主主复制单点问题

Galera Cluster场景模拟

利用Galera Cluster解决主主复制单点问题

  三个节点组成了一个集群,与普通的主从架构不同,它们都可以作为主节点,三个节点是对等的,称为multi-master架构,当有客户端要写入或者读取数据时,连接哪个实例都是一样的,读到的数据是相同的,写入某一个节点之后,集群自己会将新数据同步到其它节点上面,这种架构不共享任何数据,是一种高冗余架构

IP地址分配

主机 IP地址 类型
Centos7.6 192.168.36.101 Master
CentOS7.6 192.168.36.103 Master
CentOS7.6 192.168.36.104 Master

创建Galera源

[root@CentOS7 ~]#cd /etc/yum.repos.d/
[root@CentOS7 yum.repos.d]#vim galera.repo
[galera]
name=galera
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-5.5.64/yum/centos7-amd64/
gpGCheck=0

将Galera源scp至其余两个节点

[root@CentOS7 yum.repos.d]#scp galera.repo 192.168.36.104:/etc/yum.repos.d/
root@192.168.36.104's passWord:
galera.repo                                                          100%  119     3.6KB/s   00:00
[root@CentOS7 yum.repos.d]#scp galera.repo 192.168.36.103:/etc/yum.repos.d/
root@192.168.36.103's password:
galera.repo                                                          100%  119    40.2KB/s   00:00

安装MariaDB-Galera-server

[root@CentOS7 ~]#yum install MariaDB-Galera-server

修改Galera配置文件

[root@CentOS7 ~]#vim /etc/my.cnf.d/server.cnf
[galera]
# Mandatory settings
wsrep_provider=/usr/lib64/galera/libgalera_smm.so       # 模块库文件所在路径
wsrep_cluster_address="gcomm://192.168.36.101,192.168.36.103,192.168.36.104"        # 集群IP地址
binlog_fORMat=row       # 基于行语句
#default_storage_engine=InnoDB
#innodb_autoinc_lock_mode=2
#bind-address=0.0.0.0

将Galera配置文件同步到所有机器上

[root@CentOS7 ~]#scp /etc/my.cnf.d/server.cnf 192.168.36.103:/etc/my.cnf.d/
root@192.168.36.103's password:
server.cnf                                                           100% 1111    92.4KB/s   00:00
[root@CentOS7 ~]#scp /etc/my.cnf.d/server.cnf 192.168.36.104:/etc/my.cnf.d/
root@192.168.36.104's password:
server.cnf                                                           100% 1111    42.0KB/s   00:00

启动服务:要求先启动一个,初始化集群,然后再启用其余节点(--wsrep-new-cluster启动一个新的集群节点)

[root@CentOS7 ~]#service mysql start --wsrep-new-cluster
Starting MariaDB.190511 10:53:55 mysqld_safe Logging to '/var/lib/mysql/CentOS7.magedu36.com.err'.
190511 10:53:55 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
...... SUCCESS!

[root@CentOS7-1 ~]#service mysql start
Starting MariaDB.190510 10:54:29 mysqld_safe Logging to '/var/lib/mysql/CentOS7-1.err'.
190510 10:54:29 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
...SST in progress, setting sleep higher.. SUCCESS!

[root@CentOS7-2 ~]#service mysql start
Starting MariaDB.190510 10:54:37 mysqld_safe Logging to '/var/lib/mysql/CentOS7-2.err'.
190510 10:54:37 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
...SST in progress, setting sleep higher.... SUCCESS!
此时已经实现多主复制

安全初始化

[root@CentOS7 ~]#mysql_secure_installation
/usr/bin/mysql_secure_installation: line 393: find_mysql_client: command not found
....
Set root password? [Y/n]
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!

Remove anonymous users? [Y/n]
 ... Success!

Disallow root login remotely? [Y/n]
 ... Success!

Remove test database and access to it? [Y/n]
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reload privilege tables now? [Y/n]
 ... Success!

Thanks for using MariaDB!

同时创建表,模仿冲突案例

利用Galera Cluster解决主主复制单点问题

成功解决冲突问题

MySQL压力测试

简介

  Mysqlslap:来自于mariadb包,测试的过程默认生成一个mysqlslap的schema,生成测试表t1,查询和插入测试数据,mysqlslap库自动生成,如果已经存在则先删除。用--only-print来打印实际的测试过程,整个测试完成后不会在数据库中留下痕迹

使用格式

mysqlslap [options]

常用参数

  --auto-generate-sql, -a 自动生成测试表和数据,表示用mysqlslap工具自己生成的SQL脚本来测试并发压力
  --auto-generate-sql-load-type=type 测试语句的类型。代表要测试的环境是读操作还是写操作还是两者混合的。取值包括:read,key,write,update和mixed(默认)
  --auto-generate-sql-add-auto-increment 代表对生成的表自动添加auto_increment列,从5.1.18版本开始支持
  --number-char-cols=N, -x N 自动生成的测试表中包含多少个字符类型的列,默认1
  --number-int-cols=N, -y N 自动生成的测试表中包含多少个数字类型的列,默认1
  --number-of-queries=N 总的测试查询次数(并发客户数×每客户查询次数)
  --query=name,-q 使用自定义脚本执行测试,例如可以调用自定义的存储过程或者sql语句来执行测试
  --create-schema 代表自定义的测试库名称,测试的schema
  --commint=N 多少条DML后提交一次
  --compress, -C 如服务器和客户端都支持压缩,则压缩信息
  --concurrency=N, -c N 表示并发量,即模拟多少个客户端同时执行select。可指定多个值,以逗号或者--delimiter参数指定值做为分隔符如:--concurrency=100,200,500
  --engine=engine_name, -e engine_name 代表要测试的引擎,可以有多个,用分隔符隔开。例如:--engines=myisam,innodb
  --iterations=N, -i N 测试执行的迭代次数,代表要在不同并发环境下,各自运行测试多少次
  --only-print 只打印测试语句而不实际执行。
  --detach=N 执行N条语句后断开重连
  --debug-info, -T 打印内存和CPU的相关信息

mysqlslap示例

  单线程测试

mysqlslap -a -uroot -pmagedu

  多线程测试。使用–concurrency来模拟并发连接

mysqlslap -a -c 100 -uroot -pmagedu

  迭代测试。用于需要多次执行测试得到平均值

mysqlslap -a -i 10 -uroot -pmagedu
mysqlslap ---auto-generate-sql-add-autoincrement -a
mysqlslap -a --auto-generate-sql-load-type=read
mysqlslap -a --auto-generate-secondary-indexes=3
mysqlslap -a --auto-generate-sql-write-number=1000
mysqlslap --create-schema world -q "select count(*) from City”
mysqlslap -a -e innodb -uroot -pmagedu
mysqlslap -a --number-of-queries=10 -uroot -pmagedu

  测试同时不同的存储引擎的性能进行对比

mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --engine=myisam,innodb --debug-info -uroot -pmagedu

  执行一次测试,分别50和100个并发,执行1000次总查询

mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --debuginfo -uroot -pmagedu

  50和100个并发分别得到一次测试结果(Benchmark),并发数越多,执行完所有查询的时间越长。为了准确起见,可以多迭代测试几次

mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --debug-info -uroot -pmagedu
您可能感兴趣的文档:

--结束END--

本文标题: 利用Galera Cluster解决主主复制单点问题

本文链接: https://lsjlt.com/news/43637.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 利用Galera Cluster解决主主复制单点问题
    Galera Cluster 关于Galera Cluster   Galera Cluster:集成了Galera插件的MySQL集群,是一种新型的,数据不共享的,高度冗余的高可用方案,目前Galera...
    99+
    2024-04-02
  • MySQL主从复制虽好,能完美解决数据库单点问题吗?
      一、单个数据库服务器的缺点 数据库服务器存在单点问题; 数据库服务器资源无法满足增长的读写请求; 高峰时数据库连接数经常超过上限。   二、如何解决单点问题 增加额外的数据库服务器,组建数据库...
    99+
    2020-09-08
    MySQL主从复制虽好,能完美解决数据库单点问题吗?
  • 怎么解决mysql主从复制报错问题
    这篇文章主要介绍“怎么解决mysql主从复制报错问题”,在日常操作中,相信很多人在怎么解决mysql主从复制报错问题问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么解决my...
    99+
    2024-04-02
  • Redis主从复制问题和扩容问题的解决思路
    一、解决主从复制问题 当使用Redis作为存储引擎的时候,并且使用Redis读写分离,从机作为读的情况,从机宕机或者和主机断开连接都需要重新连接主机,重新连接主机都会触发全量的主从复制,这时候主机会生成内存...
    99+
    2022-06-04
    主从 思路 Redis
  • mysql 主从复制存在问题及解决方法
    主从形式 mysql主从复制 灵活一主一从主主复制一主多从---扩展系统读取的性能,因为读是在从库读取的;多主一从---5.7开始支持联级复制---  用途及条件 m...
    99+
    2024-04-02
  • 解决MySQL主从复制不一致问题的主要几个方法
    下面讲讲关于解决MySQL主从复制不一致问题的主要几个方法,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完解决MySQL主从复制不一致问题的主要几个方法这篇文章你一定会有所受益。...
    99+
    2024-04-02
  • MySQL高可用解决方案演进:从主从复制到InnoDB Cluster架构
    目录 前言 1. 主从复制 主从复制的基本配置示例: 2. 主从复制的限制 3. InnoDB Cluster架构 InnoDB Cluster配置步骤示例: 4. InnoDB Cluster的优势 总结 ⭐️ 好书推荐 前言 前...
    99+
    2024-01-21
    mysql 架构 数据库
  • MySQL主从复制的常见问题和有效解决方案
    下面讲讲关于MySQL主从复制的常见问题和有效解决方案,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完MySQL主从复制的常见问题和有效解决方案这篇文章你一定会有所受益。 一...
    99+
    2024-04-02
  • 如何解决mysql主从复制中产生了锁的问题
    这篇文章给大家分享的是有关如何解决mysql主从复制中产生了锁的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一套主主复制的mysql库产生了死锁,导致主从同步出现问题, ...
    99+
    2024-04-02
  • 实例解读:MySQL并行复制如何解决特定的主从问题?
    并行复制存世已多年,但是在实际应用场景中的使用并不常见。这次很幸运,我们刚好遇到一个客户,主的写入工作量非常大,但是从难以跟上,在这种情况下,我建议它使用并行从属线程。 那么,如何衡量并行复制是否在客...
    99+
    2024-04-02
  • Kylin主要用于解决什么问题
    Kylin主要用于解决大数据查询和分析的问题。它是一个开源的分布式分析引擎,可以快速计算大规模数据集的多维度聚合数据,支持复杂的查询...
    99+
    2024-03-06
    Kylin
  • 教你彻底解决MySQL 5.7 主从复制的延迟问题方法
    本文主要给大家简单讲讲彻底解决MySQL 5.7 主从复制的延迟问题方法,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望彻底解决MySQL 5.7 主从复制的...
    99+
    2024-04-02
  • 怎么解决mysql MGR无法连接主节点的问题
    这篇文章主要讲解了“怎么解决mysql MGR无法连接主节点的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决mysql MGR无法连接主节点的问...
    99+
    2024-04-02
  • 如何解决vue点击控制单个样式的问题
    这篇文章给大家分享的是有关如何解决vue点击控制单个样式的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。既然是控制单个样式,我们的html里面的内容一定是v-for=&quo...
    99+
    2024-04-02
  • 如何利用Brainstorm框架解决复杂问题
    使用Brainstorm框架解决复杂问题的步骤如下: 定义问题:明确问题的核心,并确保所有团队成员对问题的理解一致。 收集信...
    99+
    2024-03-08
    Brainstorm
  • 如何理解MySQL主从复制中关于AUTO_INCREMENT的奇怪问题
    今天就跟大家聊聊有关如何理解MySQL主从复制中关于AUTO_INCREMENT的奇怪问题,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 ...
    99+
    2024-04-02
  • 如何解决ElementUI导航栏重复点菜单报错问题
    目录ElementUI 导航栏重复点菜单报错ElementUI 菜单导航重定向报错处理ElementUI 导航栏重复点菜单报错 在使用ElementUI中的导航时,默认情况下如果重复...
    99+
    2022-11-13
    ElementUI导航栏 重复点菜单报错 ElementUI重复点菜单
  • jsp虚拟主机租用怎么解决乱码问题
    jsp虚拟主机租用解决乱码问题的方法:1、POST提交表单是乱码,修改tomcat的配制文件或自己写编码转换程序;2、数据库中本来就...
    99+
    2023-02-10
    jsp虚拟主机租用 虚拟主机
  • 利用 VUE 单文件组件解决常见开发问题
    Vue.js 的单文件组件 (SFC) 是一个强大的工具,它可以使 Web 开发更有效率、更易维护。通过将模板、脚本和样式封装在一个文件中,SFC 使开发人员能够从一个中心位置管理他们的组件。本文将探讨如何利用 SFC 来解决常见的开发问...
    99+
    2024-04-02
  • 笔记本电脑中如何解决主板BIOS经常复位问题
    这篇文章主要为大家展示了“笔记本电脑中如何解决主板BIOS经常复位问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“笔记本电脑中如何解决主板BIOS经常复位问题”这篇文章吧。检查跳线主板上都设计...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作