mysql+Galera+haproxy高可用

news2024/12/26 21:00:43
  • 文件下载地址
  • 环境准备

1.1准备三台服务器

服务器名称

Ip

描述

Node0

xxx.xxx.xxx.xxx

Node1

xxx.xxx.xxx.xxx

Node2

xxx.xxx.xxx.xxx

1.3 安装依赖包

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

setenforce 0

yum -y install lsof net-tools perl socat openssl openssl-devel boost-devel make zlib zlib-devel gcc libaio -y

yum install libncurses* -y

yum -y install rsync jemalloc -y

1.4 同步时间

修改时区

timedatectl set-timezone Asia/Shanghai

修改配置文件

vi /etc/chrony.conf

增加

server 10.184.11.106 iburst

注意:ip换成自己的时间服务器

 

重启服务

systemctl restart chronyd

  • 安装mysql

2.1 安装mysql rpm包

rpm -ivh compat-openssl10-1.0.2o-3.el8.x86_64.rpm

rpm -ivh mysql-wsrep-common-5.7-5.7.41-25.33.el7.x86_64.rpm

rpm -ivh mysql-wsrep-libs-5.7-5.7.41-25.33.el7.x86_64.rpm

rpm -ivh mysql-wsrep-client-5.7-5.7.41-25.33.el7.x86_64.rpm --force --nodeps

rpm -ivh mysql-wsrep-libs-compat-5.7-5.7.41-25.33.el7.x86_64.rpm

rpm -ivh mysql-wsrep-server-5.7-5.7.41-25.33.el7.x86_64.rpm --force --nodeps

rpm -ivh mysql-wsrep-5.7-5.7.41-25.33.el7.x86_64.rpm

rpm -ivh mysql-wsrep-devel-5.7-5.7.41-25.33.el7.x86_64.rpm

rpm -ivh galera-3-25.3.37-1.el7.x86_64.rpm  --force --nodeps

2.2配置集群

注:node0的wsrep_cluster_address 在node1和node2启动之后修改成和node1一样的,并且重启。

systemctl restart mysqld

注:每个节点的wsrep_node_addresswsrep_node_name 不一样

2.2.1 node0

修改 /etc/my.cnf

max_connections=2000

wsrep-provider=/usr/lib64/galera-3/libgalera_smm.so   # wsrep提供者,我的是在这个目录下

wsrep_cluster_name='mysql_cluster'  #集群的名字,必须是统一的

wsrep_cluster_address=gcomm://  #集群中的其他节点地址

wsrep_node_name = node0              #该节点的名称

wsrep_node_address='192.168.119.128' #该节点的地址

wsrep_sst_method=rsync    # 集群使用rsync同步方式

wsrep_sst_auth=lgx:666666 # 集群同步的用户名密码

 

执行命令

/usr/bin/mysqld_bootstrap

2.2.2 Node1

修改/etc/my.cnf

max_connections=2000

wsrep-provider=/usr/lib64/galera-3/libgalera_smm.so   # wsrep提供者,我的是在这个目录下

wsrep_cluster_name='mysql_cluster'  #集群的名字,必须是统一的

wsrep_cluster_address=gcomm://192.168.119.128,192.168.119.129,192.168.119.130  #集群中的其他节点地址

wsrep_node_name = node1              #该节点的名称

wsrep_node_address='192.168.119.128' #该节点的地址

wsrep_sst_method=rsync    # 集群使用rsync同步方式

wsrep_sst_auth=lgx:666666 # 集群同步的用户名密码

执行命令:

systemctl start mysqld

2.2.3 Node2

修改/etc/my.cnf

max_connections=1000

wsrep-provider=/usr/lib64/galera-3/libgalera_smm.so   # wsrep提供者,我的是在这个目录下

wsrep_cluster_name='mysql_cluster'  #集群的名字,必须是统一的

wsrep_cluster_address=gcomm://192.168.119.128,192.168.119.129,192.168.119.130  #集群中的其他节点地址

wsrep_node_name = node2              #该节点的名称

wsrep_node_address='192.168.119.128' #该节点的地址

wsrep_sst_method=rsync    # 集群使用rsync同步方式

wsrep_sst_auth=lgx:666666 # 集群同步的用户名密码

执行命令:

systemctl start mysqld

三 验证集群

3.1通过日志查看密码(node0)

grep -i 'temporary password' /var/log/mysqld.log

3.2修改密码(node0)

登录mysql

mysql -uroot -p

set password for root@localhost=password('A11_p@ssW0rd');

3.3修改root的访问权限(node0,node1,node2)

mysql -u root -p password

mysql>use mysql;

mysql>update user set host = '%' where user = 'root';

mysql>flush privileges;

3.4验证集群:

show status like 'wsrep_local_state_comment';

show status like 'wsrep_cluster_size';

 

3.5 创建数据库

在node0执行创建数据库命令:

create database test;

在node1和node2上分别执行查询数据库的命令,可以看到数据库已经同步过来了。

show databases;

四 haproxy高可用

4.1 在node0上安装haproxy

yum install haproxy -y

4.2 修改/etc/haproxy/haproxy.cfg文件

frontend main

    bind 0.0.0.0:33060

    #acl url_static       path_beg       -i /static /images /javascript /stylesheets

    #acl url_static       path_end       -i .jpg .gif .png .css .js

    mode                 tcp

    #use_backend static          if url_static

    default_backend             mysqls

backend mysqls

    mode tcp

    balance     roundrobin

    option      tcp-check

    server      node0   10.10.12.75:3306 check

    server      node1   10.10.12.71:3306 check

    server      node2   10.10.12.70:3306 check

4.3重启haproxy

Systemctl restart haproxy

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/583209.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Axure教程—堆积面积图

本文将教大家如何用AXURE制作堆积面积图 一、效果介绍 如图: 预览地址:https://d4nsae.axshare.com 下载地址:https://download.csdn.net/download/weixin_43516258/87838160 二、功能介绍 简单填写中继器内容即可动态显示值 样式颜色等可…

热榜!阿里出品2023版Java架构师面试指南,涵盖Java所有核心技能

最近很多粉丝朋友私信我说:熬过了去年的寒冬却没熬过现在的内卷;打开Boss直拒一排已读不回,回的基本都是外包,薪资还给的不高,对技术水平要求也远超从前;感觉Java一个初中级岗位有上千人同时竞争&#xff0…

sqlmap的使用详细讲解

一、sqlmap介绍 简介:是一个自动化的sql注入工具,主要功能扫描、发现并利用给定的 url的sql注入漏洞,内置了很多插件 sqlmap支持的数据库: MySQL、oracle、sql-server、DB2.... 注意:sqlmap只用来检测和sq…

用户需求调研的6大注意事项

1、调研目标要清晰具体 调研目标需明确、清晰、具体,只有这样,才能确保在样本选择和问卷设置时,具有明确的目标性和针对性。 2、调研用户精细化梳理 由于用户间存在个体差异,如果只是随机选取部分用户作为调研样本的话&#xff0c…

Tcl-9. string 命令

字符串是 Tcl 中的基本数据类型,所以有大量的字符串操作命令。一个比较重要的问题就是 模式匹配,通过模式匹配将字符串与指定的模式(格式)相匹配来进行字符串的比较、搜索等 操作。下面string 命令提供了一些简单的模式匹配机制。…

MSP432学习笔记9:定时器A-----捕获

今日得以继续我的MSP432电赛速通之旅~~~ 目录 基础知识: 相关库函数: 一般配置步骤: 首先定义一个初始化函数: 1.复用引脚: 2.配置连续计数结构体: 3.初始化定时器连续计数: 4.配置捕获结构体: 5.初始化定时器为捕获: …

缺少vcruntime140.dll如何修复?电脑小白也能学会修复vcruntime140.dll教程

Vcruntime140.dll是一个用于微软的Visual C软件的动态链接库文件,DLL的全称是动态连接库(Dynamic Link Library),它是许多不同软件中所共用的文件类型。这个文件被广泛用作其他软件的依赖库(dependency)。每当您尝试运行一个应用程…

大体量数据迁移成难题,亚马逊云科技如何让迁移能效两不误

逼真的人物设定,精美的主题布局,沉浸式的互动体验,交互式的多元场景……一系列虚拟与现实高度契合又相互映射的设定,成就了“元宇宙”游戏世界的无穷魅力。GVERSE开发的Blockman Go平台就是有着相当大体量的UGC(用户生…

优秀的开源测试工具和框架推荐:精选十大神器!

目录 引言 Katalon Studio Selenium Appium JMeter SOAP UI Robot Framework Watir JUnit Robotium Citrus 结语 引言 你是一位测试从业者,时刻关注着最新的测试工具和框架。但在众多的选择面前,你是否感到困惑和无从下手? 别担…

Android音视频开发1:Android Studio安装

1.JDK安装,至少安装JAVA 1.7 对比项目 Android iOS 开发语言 Java Objective-c,Swift 系统开放性 Android源代码开放,开放性更好 封闭操作系统,开放性较差 系统安全性 源代码开放,安全性较差 封闭操作系统&…

电力电子课设|数控产生PWM波|使用51单片机输出占空比可调PWM波(按钮控制、数码管显示)速成教程

我们学校电气专业开始做电力电子的课设了,小组选了一项制作硬件电路的任务,里面有要求采用数控方式实现DC-DC电压变换的输出电压调节,数控在电路中的体现就是用单片机输出可调占空比的PWM作用于IRF520模块,实现电压的变化&#xf…

chatgpt赋能python:Python不等于0:为什么Python成为SEO的热门选择?

Python不等于0:为什么Python成为SEO的热门选择? 如果你正在寻找一门适合SEO的编程语言,Python可能就是你的不二选择。Python在SEO行业越来越流行,因为它具有许多与SEO相关的功能和特点。通过本文,我们将会介绍Python为…

Flutter调优--深入探究MediaQuery引起界面Rebuild的原因及解决办法 | 京东云技术团队

前言 我们可以通过MediaQuery.of(context)方法获取到一些设备和系统的相关信息,比如状态栏的高度、当前是否是黑暗模式等等,使用起来相当方便,但是也要注意可能引起的页面rebuild问题。本文会介绍一个典型的例子,并深入源码来探讨…

chatgpt赋能python:用Python下载MP3的方法

用Python下载MP3的方法 如果你想从互联网上下载MP3,那么你可以使用Python来实现这个任务。在本文中,我们将介绍如何用Python编写程序来下载MP3,同时还将分享一些有用的工具和资源。 Python中使用的库 要下载MP3,你需要使用Pyth…

接口测试简介以及接口测试用例设计思路

接口测试简介 1.什么是接口 接口就是内部模块对模块,外部系统对其他服务提供的一种可调用或者连接的能力的标准,就好比usb接口,他是系统向外接提供的一种用于物理数据传输的一个接口,当然仅仅是一个接口是不能进行传输的&#x…

如何快速入门高性能计算?五个实用学习建议分享

高性能计算 (High-Performance Computing,HPC)是指通过计算机技术实现高速运算,对大规模科学计算、数据分析、复杂制造等领域的研究与应用提供支撑。目前,HPC已经广泛应用于医学、天文、材料科学、地球科学、气象科学、…

【cmake 学习】cmake判断当前所处系统(CMAKE_SYSTEM_NAME)

目录 1、使用内置变量判断 2、使用变量 CMAKE_SYSTEM_NAME 判断 1、使用内置变量判断 cmake 内置了许多用于表示系统的变量,如 UNIX、WIN32、LINUX、IOS等。假设当前系统为Linux系统,那么 LINUX 变量的值为 1。 更多变量可以参考:cmake-v…

最近距离 | EXCEL中批量查找与原点最近距离的目标点

一 需求 企业送餐、物流、通勤、选址等经常会遇到这样的需求,仓储地是固定的,客户下单后由于客户的地址具有随机性,需按照地理位置分布结合仓储位置进行分析,按距离近及远合理分配仓储,以便节省配送成本。 本文就以这…

深度学习AI编译器-MLIR简介

1、什么是MLIR MLIR:Multi-Level Intermediate Representation 多级中间表达 LLVM下的子项目编译器基础框架统一IR格式,提高通用性和可复用性自带Tensor类型,目前主要用于深度学习领域 中间表达 IR(Intermediate Representatio…

Day55【动态规划】392.判断子序列、115.不同的子序列

392.判断子序列 力扣题目链接/文章讲解 视频讲解 本题目可以用双指针法来做 class Solution { public:bool isSubsequence(string s, string t) {// pointer to s, pointer to tint ps 0, pt 0; for (pt 0; pt < t.size(); pt) { // 遍历t&#xff0c;在t中按顺序寻找…