mycat实现mysql读写分离

一. mycat集群+Haproxy+Keepalived

mycat集群+Haproxy+Keepalived+mysql1主2从

环境规划 centos7.9
1主2从,读写分离

名称ip端口
mysql-master192.168.1.2203306
mysql-slave1192.168.1.2213306
mysql-slave2192.168.1.2223306
mycat-1192.168.1.2218066
mycat-2192.168.1.2228066
haproxy-1192.168.1.22118066
haproxy-2192.168.1.22218066
keepalived-1192.168.1.221
keepalived-2192.168.1.222

image.png

1.1 在另一台机器上面部署mycat,

1.2 Keepalived安装

#查看yum可用的keepalived版本
yum list|grep keepalived#在线安装使用yum安装keepalived
yum -y install  keepalived.x86_64#在/etc/keepalived下新建check_haproxy.sh脚本,脚本内容如下
cat > /etc/keepalived/check_haproxy.sh <<-'EOF'
#!/bin/bash
A=`ps -C haproxy --no-header |wc -l`
if [ $A -eq 0 ];then
systemctl start haproxy.service
fi
EOFcat /etc/keepalived/check_haproxy.shchmod + /etc/keepalived/check_haproxy.sh

1.3 修改Keepalived配置文件

cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf-bak#192.168.1.221 节点1配置
vim /etc/keepalived/keepalived.conf
global_defs {router_id NodeA            					 #当前节点名称
}
vrrp_instance VI_1 {state MASTER                         #设置主服务器interface ens160                     #系统的网卡名字(centos6为eth0,centos7位eth33)virtual_router_id 10    haproxy.cfg  #多个保持心跳的keepalived节点要设置同一个router_idpriority 100                         #权重,权重数字越大,权重越大:即表示VIP访问权重最大的advert_int 1authentication {auth_type PASS           #通过PASS认证(密码认证)auth_pass 123456         #多个保持心跳的keepalived节点要设置同一个auth_pass}virtual_ipaddress {     				 #虚拟IP地址,可设置多个192.168.1.67/24       #对外暴露的IP地址,24是网络位数(可省略)}track_script{                    #自定义追踪脚本chk_haproxy              #追踪haproxy}
}
vrrp_script chk_haproxy {       				 #定义的方法名script "/etc/keepalived/check_haproxy.sh"interval 4              				#追踪频率weight 3                        #追踪权重
}#192.168.1.222 节点2配置
vim /etc/keepalived/keepalived.conf
global_defs {router_id NodeB            					 #当前节点名称
}
vrrp_instance VI_1 {state MASTER                         #设置主服务器interface ens160                     #系统的网卡名字(centos6为eth0,centos7位eth33)virtual_router_id 10    haproxy.cfg  #多个保持心跳的keepalived节点要设置同一个router_idpriority 90                         #权重,权重数字越大,权重越大:即表示VIP访问权重最大的advert_int 1authentication {auth_type PASS           #通过PASS认证(密码认证)auth_pass 123456         #多个保持心跳的keepalived节点要设置同一个auth_pass}virtual_ipaddress {     				 #虚拟IP地址,可设置多个192.168.1.67/24       #对外暴露的IP地址,24是网络位数(可省略)}track_script{                    #自定义追踪脚本chk_haproxy              #追踪haproxy}
}
vrrp_script chk_haproxy {       				 #定义的方法名script "/etc/keepalived/check_haproxy.sh"interval 4              				#追踪频率weight 3                        #追踪权重
}#重启
systemctl enable keepalived
systemctl restart keepalived
systemctl status keepalived
ip a |grep 192.168.1.67

1.4 Haproxy安装的安装与配置

#查看yum可用的haproxy版本
yum list|grep haproxy
#在线安装使用yum安装haproxy
yum -y install haproxy.x86_64cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg-bakcd /etc/haproxy/

节点1和节点2 配置修改

vim /etc/haproxy/haproxy.cfggloballog         127.0.0.1 local2chroot      /var/lib/haproxypidfile     /var/run/haproxy.pidmaxconn     4000user        haproxygroup       haproxydaemon# turn on stats unix socketstats socket /var/lib/haproxy/statsdefaultsmode        tcplog         globaloption      tcplogoption      dontlognulloption              http-server-closeoption              redispatchretries     3timeout     http-request    10stimeout     queue                   1mtimeout     connect                 10stimeout     client                  1mtimeout     server                  1mtimeout     http-keep-alive 10stimeout     check                   10smaxconn                                     3000#配置haproxy可连接的地址,与绑定固定的域名
frontend        mysqlbind    0.0.0.0:18066mode    tcplog             globaldefault_backend mysql_server#负载均衡的真实数据库地址
backend         mysql_serverbalance roundrobinserver  mycat1 192.168.1.221:8066 check inter 5s rise 2 fall 3server  mycat2 192.168.1.222:8066 check inter 5s rise 2 fall 3#rise 2是2次正确认为服务器可用,fall 3是3次失败认为服务器不可用#客户端配置
listen  admin_statusmode  httpbind 0.0.0.0:18000option httploglog globalstats enablestats refresh 10sstats hide-versionstats realm Haproxy\ Statisticsstats uri  /admin-statusstats auth  admin:123456stats admin if TRUEsystemctl enable haproxy.service
systemctl restart haproxy.service
systemctl status haproxy.service

启动mycat

cd /mysql/app/mycat/bin#测试启动控制台
./mycat console#启动
./startup_nowrap.sh#查看进程
jps

1.5 测试mysql

# VIP测试
mysql -uroot -p123456 -P18066 -h 192.168.1.67

http://192.168.1.67:18000/admin-status
image.png

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

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

相关文章

Druid连接池工具公式化SQL附踩坑记录

1. 需求 使用Druid连接池工具格式化sql用于回显时候美观展示 2. 代码示例 2.1 依赖 <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.6</version> </dependency> 2.2 ParseUtils…

14、Citrix 云桌面HDX协议之TCP和UDP

目录 一、说明 三、系统要求 四、协议内容解释 五、选择协议 六、晋级教程

【git】解决网络连接问题

ssh: connect to host github.com port 22: Connection timed out $ ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repository. bash: ssh:: command not found bash: fatal:: command not found无效 检查网络&#xf…

Redis集群搭建

为什么要有集群 之前我们已经讲了主从的概念&#xff0c;一主可以多从&#xff0c;如果同时的访问量过大(1000w),主服务肯定就会挂掉&#xff0c;数据服务就挂掉了或者发生自然灾难 大公司都会有很多的服务器(华东地区、华南地区、华中地区、华北地区、西北地区、西南地区、东…

Android Studio读写低频RFID T5557卡源码

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?id675212889085&spma1z10.5-c.w4002-21818769070.13.21166f89nKgnJ7 <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xml…

【Docker】实战多阶段构建 Laravel 镜像

作者主页&#xff1a; 正函数的个人主页 文章收录专栏&#xff1a; Docker 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01; 本节适用于 PHP 开发者阅读。Laravel 基于 8.x 版本&#xff0c;各个版本的文件结构可能会有差异&#xff0c;请根据实际自行修改。 准备 新…

webpack面试题学习

说说你对webpack的理解&#xff1f;解决了什么问题&#xff1f; 说说webpack的构建流程? 说说webpack中常见的Loader&#xff1f;解决了什么问题&#xff1f; 说说webpack中常见的Plugin&#xff1f;解决了什么问题&#xff1f; 说说Loader和Plugin的区别&#xff1f;编写Load…

leetcode 013二维区域和检索---矩阵不可变

给定一个二维矩阵 matrix&#xff0c;以下类型的多个请求&#xff1a; 计算其子矩形范围内元素的总和&#xff0c;该子矩阵的左上角为 (row1, col1) &#xff0c;右下角为 (row2, col2) 。 实现 NumMatrix 类&#xff1a; NumMatrix(int[][] matrix) 给定整数矩阵 matrix 进…

Failed to connect to github.com

链接github超时 hosts文件夹下加上

postgresql安装脚本

需要先设置好yum源 例如&#xff1a;postgresql安装包下载_开源镜像站-阿里云 脚本安装的postqesql版本为12 # 安装 PostgreSQL 12 echo "安装 PostgreSQL 12..." yum install -y postgresql12-server# 初始化数据库 echo "初始化数据库..." /usr/pgsql…

Python使用HTTP代理实现网络请求的自动化

随着网络技术的发展&#xff0c;网络请求成为了许多应用的重要组成部分。然而&#xff0c;手动发送网络请求不仅效率低下&#xff0c;而且容易出错。为了解决这个问题&#xff0c;我们可以使用Python来实现网络请求的自动化。而HTTP代理可以帮助我们更好地控制和管理这些请求。…

【小笔记】时序数据分类算法最新小结

2024.1.15 最近基于时序数据训练分类算法&#xff0c;对其进行了一番了解&#xff0c;主要围绕以下几点&#xff1a; 时序数据算法有哪些细分类&#xff1f;时序数据分类算法经典模型&#xff1f;当下时序分类算法模型强baseline&#xff1f;有没有现成的工具&#xff1f; 1…

二、VTK 最简单的示例代码-创建圆柱体

今天来使用VS2019 CMake 项目 测试VTK 9.0.0 的环境是否配置好 来测试一段简单的代码 // 1.cpp: 定义应用程序的入口点。 //#include <vtkActor.h> #include <vtkCamera.h> #include <vtkCylinderSource.h> #include <vtkNamedColors.h> #include &l…

【FPGA Modsim】序列检测

实验题目&#xff1a; 序列检测器设计 实验目的&#xff1a; 掌握应用数字逻辑设计集成开发环境进行序列检测器设计的方法&#xff1b;掌握时序逻辑电路设计的过程。 实验内容&#xff1a; 1、设计一个序列检测器…

算法训练营Day51(买卖股票总结)

309.最佳买卖股票时机含冷冻期 309. 买卖股票的最佳时机含冷冻期 - 力扣&#xff08;LeetCode&#xff09; dp数组&#xff1a; 模拟状态&#xff1a;买买买 卖 冻卖卖卖 买 卖 dp[i][0] :持有股票 dp[i][1]: 不持有股票&#xff0c;但是之前卖出去的 dp[i][2]: 不持有股票…

springboot3整合knife4j(swagger增强)

springboot升级到3后之前的knife4j配置就要变了一下了 1.导入依赖 <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId> <version>4.1.0</…

Talk|香港中文大学高瑞元:MagicDrive - 基于3D几何控制的自动驾驶街景数据生成

本期为TechBeat人工智能社区第565期线上Talk。 北京时间1月18日(周四)20:00&#xff0c;香港中文大学博士生—高瑞元的Talk已准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “MagicDrive - 基于3D几何控制的自动驾驶街景数据生成”&#xff0c;介绍了他的…

湛江涡轮壳工件实物扫描三维测绘广州抄数公司造型stl转面3d打印

湛江涡轮壳上门实物三维扫描及抄数打印案例&#xff08;CASAIM中科广电&#xff09;&#xff1a; 涡轮壳三维扫描及逆向设计技术是一种基于计算机辅助设计&#xff08;CAD&#xff09;和逆向工程&#xff08;RE&#xff09;的方法&#xff0c;用于对涡轮壳进行精确的三维测量和…

基于小波多普勒变换的回波信号检测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1小波变换基础 4.2 多普勒效应与多普勒变换 4.3 小波多普勒变换 4.4 回波信号检测 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 %回波…

解决打开 json 文件中文乱码的问题

如下图&#xff0c;pycharm 打开是下面的样子 右下角的编码尝试了好久&#xff0c;依然打不开 用代码打开就成功了 import jsonwith open(./Mydata/garbage_classification.json,encodingutf8,moder) as f:data json.load(f) print(data)控制台结果&#xff1a;