MYSQL双主双从,使用Keepalived双机热备+LVS高可用群集
MYSQL双主双从,使用Keepalived双机热备+LVS高可用群集
文档只记录Keepalived+LVS+mysql主从,不包含检验,如需检验,请自行添加web服务器
一、IP规划
服务器 | IP | 备注 |
---|---|---|
master1 | 192.168.100.131 | master2的从 |
master2 | 192.168.100.132 | master1的从 |
slave1 | 192.168.100.134 | master1的从 |
slave2 | 192.168.100.135 | master2的从 |
KI1 | 192.168.100.137 | 主 |
KI2 | 192.168.100.138 | 从 |
虚拟ip | 192.168.100.200 | 热备ip |
二、具体配置
1.master1
配置ip:192.168.100.131
关闭防护墙,selinux
# 关闭防火墙
systemctl stop firewalld# 关闭selinux
setenforce 0
下载mariadb
yum -y install mariadb mariadb-server
编辑mariadb配置文件
vi /etc/my.cnf
添加以下内容
# 标识(0-65535范围)
server-id=1# 日志文件名称前缀
log-bin=mysql-bin# 排除不复制的库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys# 配置中继日志名称
relay-log=mysql-relay-bin# 配置排除的库
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys# 编码格
init-connect='SET NAMES UTF8'
skip-character-set-client-handshake
character-set-server=utf8# 开启联等备份
log_slave_updates=1
修改完成重启服务
# 重启服务
systemctl restart mariadb# 配置mysql密码,123456
mysql_secure_installation
授权
# 进入mysql
mysql -uroot -p123456# 创建用户
create user "backup"@"%" identified by '123456';# 授权
grant replication slave on *.* to "backup"@"%" identified by "123456";
grant all privileges on *.* to 'root'@'%' identified by '123456';# 刷新权限
flush privileges;# 查询Log_file,log_pos
show master status;
+------------------+----------+--------------+-------------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+-------------------------------------------------+
| mysql-bin.000003 | 1947 | | mysql,information_schema,performance_schema,sys |
+------------------+----------+--------------+-------------------------------------------------+
1 row in set (0.00 sec)# 从库连接主库,MASTER_LOG_FILE与MASTER_LOG_POS的值由主库信息获得
change master to
MASTER_HOST='192.168.100.132',
MASTER_USER='backup',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=1947;# 开启复制
start slave;# 查看slave状态,Slave_IO_Running,Slave_SQL_Running的状态要为Yes
show slave status \G;
2.master2
配置ip:192.168.100.132
关闭防护墙,selinux
# 关闭防火墙
systemctl stop firewalld# 关闭selinux
setenforce 0
下载mariadb
yum -y install mariadb mariadb-server
编辑mariadb配置文件
vi /etc/my.cnf
添加以下内容
# 标识(0-65535范围)
server-id=2# 日志文件名称前缀
log-bin=mysql-bin# 排除不复制的库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys# 配置中继日志名称
relay-log=mysql-relay-bin# 配置排除的库
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys# 编码格
init-connect='SET NAMES UTF8'
skip-character-set-client-handshake
character-set-server=utf8# 开启联等备份
log_slave_updates=1
修改完成重启服务
# 重启服务
systemctl restart mariadb# 配置mysql密码,123456
mysql_secure_installation
授权
# 进入mysql
mysql -uroot -p123456# 创建用户
create user "backup"@"%" identified by '123456';# 授权
grant replication slave on *.* to "backup"@"%" identified by "123456";
grant all privileges on *.* to 'root'@'%' identified by '123456';# 刷新权限
flush privileges;# 查询Log_file,log_pos
show master status;
+------------------+----------+--------------+-------------------------------------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+-------------------------------------------------+
| mysql-bin.000003 | 1947 | | mysql,information_schema,performance_schema,sys |
+------------------+----------+--------------+-------------------------------------------------+
1 row in set (0.00 sec)# 从库连接主库,MASTER_LOG_FILE与MASTER_LOG_POS的值由主库信息获得
change master to
MASTER_HOST='192.168.100.134',
MASTER_USER='backup',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000004',
MASTER_LOG_POS=1947;# 开启复制
start slave;# 查看slave状态,Slave_IO_Running,Slave_SQL_Running的状态要为Yes
show slave status \G;
3.slave1
配置ip:192.168.100.134
关闭防护墙,selinux
# 关闭防火墙
systemctl stop firewalld# 关闭selinux
setenforce 0
下载mariadb
yum -y install mariadb mariadb-server
编辑mariadb配置文件
vi /etc/my.cnf
添加以下内容
# 标识(0-65535范围)
server-id=3# 配置中继日志名称
relay-log=mysql-relay-bin# 配置排除的库
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys# 编码格式
init-connect='SET NAMES UTF8'
skip-character-set-client-handshake
character-set-server=utf8
修改完成重启服务
# 重启服务
systemctl restart mariadb# 配置mysql密码,123456
mysql_secure_installation
授权
# 连接数据库
mysql -uroot -p123456# 授权
grant all privileges on *.* to "root"@"%" identified by "123456"; # 刷新权限
flush privileges;# 从库连接主库,MASTER_LOG_FILE与MASTER_LOG_POS的值由主库信息获得
change master to
MASTER_HOST='192.168.100.131',
MASTER_USER='backup',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=1947;# 开启复制
start slave;# 查看slave状态,Slave_IO_Running,Slave_SQL_Running的状态要为Yes
show slave status \G;
4.slave2
配置ip:192.168.100.135
关闭防护墙,selinux
# 关闭防火墙
systemctl stop firewalld# 关闭selinux
setenforce 0
下载mariadb
yum -y install mariadb mariadb-server
编辑mariadb配置文件
vi /etc/my.cnf
添加以下内容
# 标识(0-65535范围)
server-id=4# 配置中继日志名称
relay-log=mysql-relay-bin# 配置排除的库
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys# 编码格
init-connect='SET NAMES UTF8'
skip-character-set-client-handshake
character-set-server=utf8
修改完成重启服务
# 重启服务
systemctl restart mariadb# 配置mysql密码,123456
mysql_secure_installation
授权
# 连接数据库
mysql -uroot -p123456# 授权
grant all privileges on *.* to "root"@"%" identified by "123456"; # 刷新权限
flush privileges;# 从库连接主库,MASTER_LOG_FILE与MASTER_LOG_POS的值由主库信息获得
change master to
MASTER_HOST='192.168.100.132',
MASTER_USER='backup',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=1947;# 开启复制
start slave;# 查看slave状态,Slave_IO_Running,Slave_SQL_Running的状态要为Yes
show slave status \G;
5.KI1
配置ip:192.168.100.137
关闭防护墙,selinux
# 关闭防火墙
systemctl stop firewalld# 关闭selinux
setenforce 0
下载keepalived和ipvsadm
yum -y install keepalived ipvsadm
备份默认配置文件
cp -p /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
删除原有文件,创建新内容
# 删除原有文件
rm -rf /etc/keepalived/keepalived.conf # 创建新文件
vi /etc/keepalived/keepalived.conf
添加以下内容
! Configuration File for keepalived# 配置双机热备(主)
lobal_defs {router_id 1
}
vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 1priority 120advert_int 1authentication {auth_type PASSauth_pass 123456}virtual_ipaddress {192.168.100.200}
}# 虚拟服务器ip及mysql地址
virtual_server 192.168.100.200 3306 {delay_loop 15lb_algo rrlb_kind DRprotocol TCPreal_server 192.168.100.131 3306 {weight 1TCP_CHECK {connect_port 3306connect_timeout 3nb_get_retry 3delay_before_retry 4}}real_server 192.168.100.132 3306 {weight 1TCP_CHECK {connect_port 3306connect_timeout 3nb_get_retry 3delay_before_retry 4}}
}
启动keepalived
systemctl start keepalived
服务模块
# 加载系统内核的服务模块
modprobe ip_vs# 查看运行状态
lsmod | grep ip_vs
查看规则
ipvsadm -l
下载net网络工具
yum -y install net-tools
查看网卡信息
# 停用物理网卡
ifconfig ens33 down# 启动物理网卡(如在连接工具上,需到虚拟机上启动)
ifconfig ens33 up# 查看网卡信息(在ens33网卡下是否有ip:192.168.100.200)
ip a
虚拟网卡
# 添加虚拟网卡(回环地址)
cat >> /etc/sysconfig/network-scripts/ifcfg-lo:0 << EOF
DEVICE=lo:0
IPADDR=192.168.100.200
NETMASK=255.255.255.255
ONBOOT=yes
EOF# 重启网络
systemctl restart network# 查看是否有虚拟ip
ip a
写入路由指向
# 添加路由信息
route add -host 192.168.100.200 dev lo:0
6.KI2
配置ip:192.168.100.138
关闭防护墙,selinux
# 关闭防火墙
systemctl stop firewalld# 关闭selinux
setenforce 0
下载keepalived和ipvsadm
yum -y install keepalived ipvsadm
备份默认配置文件
cp -p /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
添加以下内容
! Configuration File for keepalived# 配置双机热备(备)
lobal_defs {router_id 2
}
vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 1priority 100advert_int 1authentication {auth_type PASSauth_pass 123456}virtual_ipaddress {192.168.100.200}
}# 虚拟服务器ip及mysql地址
virtual_server 192.168.100.200 3306 {delay_loop 15lb_algo rrlb_kind DRprotocol TCPreal_server 192.168.100.131 3306 {weight 1TCP_CHECK {connect_port 3306connect_timeout 3nb_get_retry 3delay_before_retry 4}}real_server 192.168.100.132 3306 {weight 1TCP_CHECK {connect_port 3306connect_timeout 3nb_get_retry 3delay_before_retry 4}}
}
启动keepalived
systemctl start keepalived
服务模块
# 加载系统内核的服务模块
modprobe ip_vs# 查看运行状态
lsmod | grep ip_vs
查看规则
ipvsadm -l
下载net网络工具
yum -y install net-tools
查看网卡信息
# 停用物理网卡
ifconfig ens33 down# 启动物理网卡(如在连接工具上,需到虚拟机上启动)
ifconfig ens33 up# 查看网卡信息(在ens33网卡下是否有ip:192.168.100.200)
ip a
虚拟网卡
# 添加虚拟网卡(回环地址)
cat >> /etc/sysconfig/network-scripts/ifcfg-lo:0 << EOF
DEVICE=lo:0
IPADDR=192.168.100.200
NETMASK=255.255.255.255
ONBOOT=yes
EOF# 重启网络
systemctl restart network# 查看是否有虚拟ip
ip a
写入路由指向
# 添加路由信息
route add -host 192.168.100.200 dev lo:0
三、检验
可自行添加一台web服务器,连接虚拟ip,开启KI1或KI2的防火墙进行检测
或者,开启KI1的防火墙,查看ip是否跳转到KI2上
相关文章:
MYSQL双主双从,使用Keepalived双机热备+LVS高可用群集
MYSQL双主双从,使用Keepalived双机热备LVS高可用群集 文档只记录KeepalivedLVSmysql主从,不包含检验,如需检验,请自行添加web服务器 一、IP规划 服务器IP备注master1192.168.100.131master2的从master2192.168.100.132maste…...

9.计算机视觉—目标检测
目录 1.物体检测边缘框目标检测数据集总结边缘框代码实现2.锚框:目标检测的一种方法IoU—交并比赋予锚框标号使用非极大值抑制(NMS)输出总结代码实现1.物体检测 边缘框 一个边缘框可以通过四个数字定义 (左上x,左上y),(右下x,右下y)(左上x,左上y,宽,高)(中间x,中间y…...

构造函数深入理解
目录 构造函数构造函数体赋值初始化列表初始化列表格式初始化列表的意义以及注意点const修饰的成员变量初始化对象成员具体初始化的地方缺省值存在的意义例子1例子2 初始化与赋值引用成员变量的初始化注意点1注意点2我的疑惑 自定义类型成员初始化例子1例子2例子3例子4 初始化列…...

Rocky Linux 9 快速安装docker 教程
前述 CentOS 7系统将于2024年06月30日停止维护服务。CentOS官方不再提供CentOS 及后续版本,不再支持新的软件和补丁更新。CentOS用户现有业务随时面临宕机和安全风险,并无法确保及时恢复。由于 CentOS Stream 相对不稳定,刚好在寻找平替系统…...
go语言并发编程1-Gouroutine
参考文档:www.topgoer.com 使用方法 直接包装成函数,go关键字触发即可 注意事项 1 main方法结束后,main方法内启动的子协程会立即结束,无论是否执行完毕; 启动多个groutine 使用sync包的WaitGroup来控制…...
Sylar服务器框架——Http模块
1、http.h 定义了HttpMethod和HttpStatus /* Request Methods */ #define HTTP_METHOD_MAP(XX) \XX(0, DELETE, DELETE) \XX(1, GET, GET) \XX(2, HEAD, HEAD) \XX(3, POST, POST) \XX(4, PUT, …...

7km远距离WiFi实时图传模块,无人机海上无线传输方案,飞睿智能WiFi MESH自组网技术
在浩瀚无垠的海洋上,无人机正在开启一场前所未有的技术创新。它们不再只是天空的舞者,更是海洋的守望者,为我们带来前所未有的视野和数据。而这一切的背后,都离不开一项创新性的技术——飞睿智能远距离WiFi实时图传模块与无线Mesh…...

2024年上半年网络工程师下午真题及答案解析
试题一(20分) 某高校网络拓扑如下图所示,两校区核心(CORE-1、CORE-2),出口防火墙(NGFW-1、NGFW-2)通过校区间光缆互联,配置OSPF实现全校路由收敛,两校区相距40km。两校区默认由本地…...

Jmeter下载、安装及配置
1 Jmeter介绍 Jmeter是进行负载测试的工具,可以在任何支持Java虚拟机环境的平台上运行,比如Windows、Linux、Mac。 Jmeter模拟一组用户向目标服务器发送请求,并统计目标服务器的性能信息,比如CPU、memory usage。 2 Jmeter下载 …...

掌握高效实用的VS调试技巧
🔥 个人主页:大耳朵土土垚 1.编程常见的错误 1.1编译型错误 编程编译型错误是指在编译代码时发现的错误。编译器在编译过程中会检查代码是否符合语法规范和语义要求,如果发现错误会产生编译错误。 直接看错误提示信息(双击&#…...

实验2 字符及字符串输入输出与分支程序设计实验
字符及字符串输入输出 从键盘输入两个一位十进制数,计算这两个数之和,并将结果在屏幕上显示出来。 分支程序设计 从键盘输入一字符,判断该字符是小写字母、大写字母、数字或者其他字符。若输入为小写字母,显示“You Input a Lo…...

docker容器间网络仿真工具-pumba
docker-tc&pumba docker-tc:docker-tc项目仓库 pumba:pumba项目仓库 这两个项目理论上都可以实现对容器间的网络环境进行各种模拟干预,包括延迟,丢包,带宽限制等。 但是我在实际使用时,发现docker-tc这个工具在进行网络进行模…...
A36 STM32_HAL库函数 之PCD通用驱动 -- B -- 所有函数的介绍及使用
A36 STM32_HAL库函数 之PCD通用驱动 -- B -- 所有函数的介绍及使用 1 该驱动函数预览1.11 HAL_PCD_SOFCallback1.12 HAL_PCD_ResetCallback1.13 HAL_PCD_SuspendCallback1.14 HAL_PCD_ResumeCallback1.15 HAL_PCD_ISOOUTIncompleteCallback1.16 HAL_PCD_ISOINIncompleteCallbac…...
vue2 + element三级菜单实现模板
需求: 需要一个含有三级菜单的结构模板,用于业务快速开发。 解决: sidebar.vue <template><el-menu :default-active"defaultActive" class"el-menu-vertical-demo" active-text-color"#ffd04b"&…...

vue H5页面video 视频流自动播放, 解决ios不能自动播放问题
视频组件 <videostyle"width: 100%; height: 100%;object-fit: fill"class"player"refplayer_big_boxcontrolspreloadautoplay //自动播放muted //是否静音playsinline"true"x5-playsinline""webkit-playsinline"tru…...

自闭症儿童:探索症状背后的多彩内心世界
在星启帆自闭症康复中心,我们每天与一群独特而珍贵的孩子相遇——他们,是自闭症谱系障碍的患儿。自闭症,这一复杂的神经发育障碍,以其多样化的症状表现,为每个孩子的生活轨迹绘上了不同的色彩。 自闭症孩子的症状各异…...

在Centos7上安装PostgreSQL16的详细步骤
文章目录 环境一、准备二、postgresql下载方法一:wget下载方法二:下载压缩包解压 三、创建用户组、用户四、创建数据主目录五、配置环境变量六、initdb初使化数据库七、配置服务八、设置开机自启动九、设置防火墙十、启动数据库服务 环境 CPU: 4 核心或以…...

MySQL 图形化界面
填完信息之后,圆圈处可以验证是否可以连接数据库 展示所有数据库(因为有的可能连上,却没有数据库显示)...

【人工智能】GPT-5的即将到来:从高中生进化到,,,博士生?
GPT-5的即将到来:从高中生进化到,博士生? 随着近月GPT-4o的出世,OpenAI也在进行一系列的采访和介绍接下来的展望和目标。 在6月22日的采访中,美国达特茅斯工程学院公布了OpenAI首席技术官米拉穆拉蒂的访谈内容。穆拉蒂确认&#…...

【收录率高丨投稿范围广 | 往届均已EI检索】第四届光学与通信技术国际学术会议(ICOCT 2024,8月9-11)
欢迎参加第四届光学与通信技术国际学术会议(ICOCT 2024),该会议将于2024年8月9-11日在南京举办。自2021年首次会议以来,ICOCT已经发展成为光学和通信领域较有影响力的国际会议之一,聚焦最前沿的技术进展与未来发展趋势…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...

【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...