Galera_Cluster_Mysql部署
前言
先来了解下它的身世,Galera Cluster是Codership公司开发的一套免费开源的高可用方案
官网为http://galeracluster.com。Galera Cluster即为安装了Galera的Mariadb集群(本文只介绍Mariadb Garela集群)
其本身具有multi-master特性,支持多点写入
Galera Cluster的三个(或多个)节点是对等关系,每个节点均支持写入,集群内部会保证写入数据的一致性与完整性
下面是这个架构的一些特性:
• 真正的多主集群,Active-Active架构;
• 同步复制,没有复制延迟;
• 多线程复制;
• 没有主从切换操作,无需使用虚IP;
• 热备份,单个节点故障期间不会影响数据库业务;
• 支持节点自动加入,无需手动拷贝数据;
• 支持InnoDB存储引擎;
• 对应用程序透明,原生MySQL接口;
• 无需做读写分离;
• 部署使用简单。

安装部署
环境说明
系统:centos7.7 galera1:192.168.191.128 galera2:192.168.191.129 galera3:192.168.191.130
安装操作
1)上传带有galera补丁的数据库包(下载地址,提取码:8888 )
##三台节点同时进行以下操作
[root@galera1 ~]# yum -y install lrzsz vim #工具包
[root@galera1 ~]# mkdir galera
[root@galera1 ~]# cd galera
2)哦噢,对了要把系统默认关于数据库的一切全部卸载
#三台节点同时进行以下操作
[root@galera1 galera]# rpm -qa | grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[root@galera1 galera]# rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps #强制卸载
3)关闭防火墙
##三台节点同时进行以下操作
[root@galera1 galera]# setenforce 0;systemctl stop firewalld
4)上才艺,要安装咯要安装咯!
##三台节点同时进行以下操作
[root@galera1 galera]# yum -y install mysql-wsrep-client-5.7-5.7.31-25.23.el7.x86_64.rpm mysql-wsrep-common-5.7-5.7.31-25.23.el7.x86_64.rpm mysql-wsrep-devel-5.7-5.7.31-25.23.el7.x86_64.rpm mysql-wsrep-libs-5.7-5.7.31-25.23.el7.x86_64.rpm mysql-wsrep-libs-compat-5.7-5.7.31-25.23.el7.x86_64.rpm mysql-wsrep-server-5.7-5.7.31-25.23.el7.x86_64.rpm mysql-wsrep-test-5.7-5.7.31-25.23.el7.x86_64.rpm #先安依赖
[root@galera1 galera]# yum -y install galera-3-25.3.31-1.el7.x86_64.rpm mysql-wsrep-5.7-5.7.31-25.23.el7.x86_64.rpm ##这是有galera补丁的数据库
5)先启动数据库,给节点三兄弟配个集群通信账号(重点哦~)
##三台节点同时进行以下操作
[root@galera1 galera]# systemctl start mysqld
[root@galera1 galera]# systemctl status mysqld #状态running启动成功
[root@galera1 galera]# new=`grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}'`;mysqladmin -p"$new" password "ghy@6666" #设置数据库root的密码
[root@galera1 galera]# mysql -uroot -pghy@6666 #登录数据库
mysql> grant all on *.* to ghy@"%" identified by 'ghy@6666'; #授权创建数据库账户
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges; ##刷新权限
Query OK, 0 rows affected (0.00 sec)
6)修改数据库配置文件,创建galera集群(这个是真的重点哦很容易出错)
###第一台节点先配置
[root@galera1 galera]# vim /etc/my.cnf #最下面添加
server-id=1 #三个节点id不能一样
binlog_format=row
default_storage_engine=InnoDB
innodb_file_per_table=1
innodb_autoinc_lock_mode=2
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so
wsrep_cluster_name='galera' #集群名称
wsrep_cluster_address='gcomm://' #第一个节点配置时暂时不加入ip,表示新创建集群的意思,一但加ip会报配置文件错误。需要在后续集群创建完成加入各个节点后在回来填写ip
wsrep_node_name='galera1' #集群中这个节点的名称不不能与其他节点重复
wsrep_node_address='192.168.191.128'
wsrep_sst_auth=ghy:"ghy@6666"
wsrep_sst_method=rsync #注意没有rsync需要yum下载
[root@galera1 galera]# systemctl restart mysqld ##重启数据库
[root@galera1 galera]# mysql -uroot -pghy@6666
mysql> show status like 'wsrep_incoming%'; #galera集群创建成功目前只有一个节点
+--------------------------+----------------------+
| Variable_name | Value |
+--------------------------+----------------------+
| wsrep_incoming_addresses | 192.168.191.128:3306 |
+--------------------------+----------------------+
1 row in set (0.01 sec)
###第二台节点配置如下
[root@galera2 galera]# vim /etc/my.cnf
server-id=2
binlog_format=row
default_storage_engine=InnoDB
innodb_file_per_table=1
innodb_autoinc_lock_mode=2
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://192.168.191.128,192.168.191.130' ##这里的ip要写第一台节点的ip,作用用于引导此节点加入galera集群。如果空着不写表示新创建集群
wsrep_node_name='galera2'
wsrep_node_address='192.168.191.129'
wsrep_sst_auth=ghy:"ghy@6666"
wsrep_sst_method=rsync
[root@galera2 galera]# systemctl restart mysqld
[root@galera2 galera]# mysql -uroot -pghy@6666
mysql> show status like 'wsrep_incoming%'; ##此时galera集群中已加入此节点
+--------------------------+-------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------+
| wsrep_incoming_addresses | 192.168.191.129:3306,192.168.191.128:3306 |
+--------------------------+-------------------------------------------+
1 row in set (0.01 sec)
###第三台节点配置如下
[root@galera3 galera]# vim /etc/my.cnf
server-id=3
binlog_format=row
default_storage_engine=InnoDB
innodb_file_per_table=1
innodb_autoinc_lock_mode=2
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-3/libgalera_smm.so
wsrep_cluster_name='galera'
wsrep_cluster_address='gcomm://192.168.191.128,192.168.191.129' ##引导地址写前两个节点的ip
wsrep_node_name='galera3'
wsrep_node_address='192.168.191.130'
wsrep_sst_auth=ghy:"ghy@6666"
wsrep_sst_method=rsync
[root@galera3 galera]# systemctl restart mysqld
[root@galera3 galera]# mysql -uroot -pghy@6666
mysql> show status like 'wsrep_incoming%'; ##此时三台节点已加入
+--------------------------+----------------------------------------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------------------------------------+
| wsrep_incoming_addresses | 192.168.191.129:3306,192.168.191.128:3306,192.168.191.130:3306 |
+--------------------------+----------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> show status like '%wsrep%';
+------------------------------+----------------------------------------------------------+
| Variable_name | Value |
+------------------------------+----------------------------------------------------------+
| wsrep_local_state_uuid | e142ca9d-497f-11eb-845a-ee955e84fe5b |
| wsrep_protocol_version | 7 |
| wsrep_last_committed | 47297 |
| wsrep_replicated | 0 |
| wsrep_replicated_bytes | 0 |
| wsrep_repl_keys | 0 |
| wsrep_repl_keys_bytes | 0 |
| wsrep_repl_data_bytes | 0 |
| wsrep_repl_other_bytes | 0 |
| wsrep_received | 216 |
| wsrep_received_bytes | 786352 |
| wsrep_local_commits | 0 |
| wsrep_local_cert_failures | 0 |
| wsrep_local_replays | 0 |
| wsrep_local_send_queue | 0 |
| wsrep_local_send_queue_max | 1 |
| wsrep_local_send_queue_min | 0 |
| wsrep_local_send_queue_avg | 0.000000 |
| wsrep_local_recv_queue | 0 |
| wsrep_local_recv_queue_max | 61 |
| wsrep_local_recv_queue_min | 0 |
| wsrep_local_recv_queue_avg | 8.648148 |
| wsrep_local_cached_downto | 47086 |
| wsrep_flow_control_paused_ns | 1012209 |
| wsrep_flow_control_paused | 0.000010 |
| wsrep_flow_control_sent | 0 |
| wsrep_flow_control_recv | 1 |
| wsrep_cert_deps_distance | 26.429245 |
| wsrep_apply_oooe | 0.000000 |
| wsrep_apply_oool | 0.000000 |
| wsrep_apply_window | 1.000000 |
| wsrep_commit_oooe | 0.000000 |
| wsrep_commit_oool | 0.000000 |
| wsrep_commit_window | 1.000000 |
| wsrep_local_state | 4 |
| wsrep_local_state_comment | Synced |
| wsrep_cert_index_size | 148 |
| wsrep_causal_reads | 0 |
| wsrep_cert_interval | 2.580189 |
| wsrep_incoming_addresses | vm10-11-0-131:3306,vm10-11-0-133:3306,vm10-11-0-132:3306 |
| wsrep_evs_delayed | |
| wsrep_evs_evict_list | |
| wsrep_evs_repl_latency | 0.000684446/0.000684446/0.000684446/0/1 |
| wsrep_evs_state | OPERATIONAL |
| wsrep_gcomm_uuid | 86abfa4d-49b8-11eb-a0d7-b7a96cc64b5d |
| wsrep_cluster_conf_id | 3 |
| wsrep_cluster_size | 3 |
| wsrep_cluster_state_uuid | e142ca9d-497f-11eb-845a-ee955e84fe5b |
| wsrep_cluster_status | Primary |
| wsrep_connected | ON |
| wsrep_local_bf_aborts | 0 |
| wsrep_local_index | 2 |
| wsrep_provider_name | Galera |
| wsrep_provider_vendor | Codership Oy <info@codership.com> |
| wsrep_provider_version | 3.12(r9921e73) |
| wsrep_ready | ON |
+------------------------------+----------------------------------------------------------+
56 rows in set (0.01 sec)
监测状态说明
1. 集群完整性检查:
wsrep_cluster_state_uuid:在集群所有节点的值应该是相同的,有不同值的节点,说明其没有连接入集群.
wsrep_cluster_conf_id:正常情况下所有节点上该值是一样的.如果值不同,说明该节点被临时”分区”了.当节点之间网络连接恢复的时候应该会恢复一样的值.
wsrep_cluster_size:如果这个值跟预期的节点数一致,则所有的集群节点已经连接.
wsrep_cluster_status:集群组成的状态.如果不为”Primary”,说明出现”分区”或是”split-brain”状况.
2. 节点状态检查:
wsrep_ready: 该值为ON,则说明可以接受SQL负载.如果为Off,则需要检查wsrep_connected.
wsrep_connected: 如果该值为Off,且wsrep_ready的值也为Off,则说明该节点没有连接到集群.(可能是wsrep_cluster_address或wsrep_cluster_name等配置错造成的.具体错误需要查看错误日志)
wsrep_local_state_comment:如果wsrep_connected为On,但wsrep_ready为OFF,则可以从该项查看原因.
3. 复制健康检查:
wsrep_flow_control_paused:表示复制停止了多长时间.即表明集群因为Slave延迟而慢的程度.值为0~1,越靠近0越好,值为1表示复制完全停止.可优化wsrep_slave_threads的值来改善.
wsrep_cert_deps_distance:有多少事务可以并行应用处理.wsrep_slave_threads设置的值不应该高出该值太多.
wsrep_flow_control_sent:表示该节点已经停止复制了多少次.
wsrep_local_recv_queue_avg:表示slave事务队列的平均长度.slave瓶颈的预兆.
########最后我们在把三个节点的引导地址配置完全
只改一行,三台节点依次修改,改一台节点需重启一次数据库服务,不能等全部改完一起重启,切记!
[root@galera1 galera]# vim /etc/my.cnf
wsrep_cluster_address='gcomm://192.168.191.129,192.168.191.130,192.168.191.128'
[root@galera1 galera]# systemctl restart mysqld
mysql> show status like 'wsrep_incoming%'; #仍然为三节点
+--------------------------+----------------------------------------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------------------------------------+
| wsrep_incoming_addresses | 192.168.191.129:3306,192.168.191.128:3306,192.168.191.130:3306 |
+--------------------------+----------------------------------------------------------------+
1 row in set (0.35 sec)
7)测试集群
###这里我简单的测试下,实际情况我已测试过多边。此处只做演示
[root@galera1 galera]# mysql -uroot -pghy@6666 #节点1
mysql> create database hya;
Query OK, 1 row affected (0.01 sec)
[root@galera2 galera]# mysql -uroot -pghy@6666 #节点2
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hya |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
[root@galera3 galera]# mysql -uroot -pghy@6666
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hya |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
备注:
--wsrep-new-cluster 在第一台只第一次启动需要加这个参数来启动集群或者拿service mysql start --wsrep-new-cluster命令启动
nohup /usr/sbin/mysqld --wsrep-new-cluster --defaults-file=/data/mysql/dragonclouddb/my.cnf --user=mysql &
pkill mysql
Galera_Cluster_Mysql部署的更多相关文章
- [原]CentOS7.2部署node-mapnik
转载请注明表作者think8848及出处(http://think8848.cnblogs.com) node-mapnik依赖项中要求g++ >= 5, toolchain (>= GL ...
- 使用Visual Studio 2015 开发ASP.NET MVC 5 项目部署到Mono/Jexus
最新的Mono 4.4已经支持运行asp.net mvc5项目,有的同学听了这句话就兴高采烈的拿起Visual Studio 2015创建了一个mvc 5的项目,然后部署到Mono上,浏览下发现一堆错 ...
- 通过Jexus 部署 dotnetcore版本MusicStore 示例程序
ASPNET Music Store application 是一个展示最新的.NET 平台(包括.NET Core/Mono等)上使用MVC 和Entity Framework的示例程序,本文将展示 ...
- 结合Jexus + Kestrel 部署 asp.net core 生产环境
ASP.NET Core 是微软的全新的框架.这一框架的目标 ︰ 跨平台 针对云应用优化 解除 System.Web 的依赖. 获得下面三个方面的优势,你可以把它认为是一个C# 版本的NodeJS: ...
- 4.Windows Server2012 R2里面部署 MVC 的网站
网站部署之~Windows Server | 本地部署:http://www.cnblogs.com/dunitian/p/4822808.html#iis 后期会在博客首发更新:http://dnt ...
- Win10 IIS本地部署MVC网站时不能运行?
异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 部署后出现这个错误: 打开文件目录后发现是可以看见目录的,静态页面也是可以打开的 ...
- 再部署一个 instance 和 Local Network - 每天5分钟玩转 OpenStack(131)
上一节部署了 cirros-vm1 到 first_local_net,今天我们将再部署 cirros-vm2 到同一网络,并创建 second_local_net. 连接第二个 instance 到 ...
- 将 instance 部署到 OVS Local Network - 每天5分钟玩转 OpenStack(130)
上一节创建了 OVS 本地网络 first_local_net,今天我们会部署一个 instance 到该网络并分析网络结构.launch 一个 instance,选择 first_local_net ...
- 从零开始编写自己的C#框架(25)——网站部署
导航 1.关掉访问保护 2.发布网站 3.复制网站到服务器 4.添加新网站 5.设置网站访问权限 6.设置文件夹访问权限 7.控制可更新文件夹执行权限 8.设置“应用程序池”.net版本与模式 9.附 ...
- Oracle安装部署,版本升级,应用补丁快速参考
一.Oracle安装部署 1.1 单机环境 1.2 Oracle RAC环境 1.3 Oracle DataGuard环境 1.4 主机双机 1.5 客户端部署 二.Oracle版本升级 2.1 单机 ...
随机推荐
- brpc linux 下编译构建
brpc 在 linux 下编译构建,比在 mac 下还要更复杂些,mac 下可以走官方说明编译成功,过程中也需要进行一些配置调整. 在 linux 通过 bazel 最终实现了 brpc 编译通过. ...
- k8s pvc扩容
#查看是否支持扩容 $ kubectl get sc ** -o yaml ··· allowVolumeExpansion: true #拥有该字段表示允许动态扩容 ··· #找到需要扩容的pvc ...
- 推荐一款开源一站式SQL审核查询平台!功能强大、安全可靠!
1.前言 在当今这个数据驱动的时代,数据库作为企业核心信息资产的载体,其重要性不言而喻.随着企业业务规模的不断扩大,数据库的数量和种类也日益增多,这对数据库的管理与运维工作提出了前所未有的挑战.在这样 ...
- WSL 使用
WSL 是一个为在 Windows 10 和 Windows Server 2019 以上能够原生运行 Linux 二进制可执行文件(ELF 格式)的兼容层.可以把它当作一个只能用命令行交互的 Lin ...
- 【Python】Selenium自动化测试之滑块拼图验证码图片方法
在项目中有时验证码是滑块拼图形式的,这种验证码该如何完成验证呢? 有以下几个步骤: 目录 第一步:得到验证码图片 第二步:匹配缺口照片在完整照片的位置 第三步:机器模拟人工滑动轨迹 第四步:判断拼图是 ...
- JDK,JRE和JVM的区别和联系
一.JDK,JRE和JVM的区别和联系 JDK JDK:Java Development Kit,是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包. JDK:普通用户只需 ...
- Diffusion系列-预备知识I -(一)
预备知识 范数 范数是一种函数,用来度量向量的大小1.在机器学习.信号处理等领域中,范数常常被用作正则化方法,通过对参数向量的范数进行约束,达到控制模型复杂度.防止过拟合等目的.常见的范数有0范数.1 ...
- iOS 14 UIDatePicker适配问题,使用老的选择器样式
iOS 14 UIDatePicker 在 13.4 新增了2个属性如下 @property (nonatomic, readwrite, assign) UIDatePickerStyle pref ...
- select语句
SELECT语句可以从表中选择数据 SELECT <列名1>,<列名2> as "aaa" FROM <表名>; 查询两列数据SELECT * ...
- Oracle问题:alter update modify 的区别是什么?
首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247486480&idx=1 ...