【Mysql】通过Keepalived搭建mysql双主高可用集群

news2024/9/21 16:25:19

一、环境信息

主机名ip操作系统mysql版本VIP(虚拟ip)
hadoop01192.168.10.200centos7_x865.7192.168.10.253
hadoop03192.168.10.202centos7_x865.7

二、mysql集群搭建

两台节点,如果未部署mysql服务,部署文档请看【Mysql】mysql三种安装方式(二进制、yum、docker)-CSDN博客

三、配置文件修改

hadoop01节点的my.cnf配置,默认情况下MySQL的配置文件是/etc/my.cnf

[mysqld_safe]
pid-file=/data/mysql5.7/logs/mysqld.pid
[mysqld]
basedir=/usr/local/mysql5.7
datadir=/data/mysql5.7/data
socket=/data/mysql5.7/run/mysql.sock
log_error=/data/mysql5.7/logs/alert.log
pid_file=/data/mysql5.7/logs/mysqld.pid


##新增内容如下
#设置server-id,两节点必须不一样
server-id=1
#开启binlog,并指定存储位置
log-bin=/data/mysql5.7/logs/mysql-bin
#中继日志
relay-log =/data/mysql5.7/logs/mysql-relay-bin
#忽略同步的库
replicate-ignore-db = mysql
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema
replicate-ignore-db = sys

hadoop03节点的my.cnf配置

[mysqld_safe]
pid-file=/data/mysql5.7/logs/mysqld.pid
[mysqld]
basedir=/usr/local/mysql5.7
datadir=/data/mysql5.7/data
socket=/data/mysql5.7/run/mysql.sock
log_error=/data/mysql5.7/logs/alert.log
pid_file=/data/mysql5.7/logs/mysqld.pid

##新增内容如下
#设置server-id,两节点必须不一样
server-id=2
#开启binlog
log-bin=/data/mysql5.7/logs/mysql-bin
#中继日志
relay-log=/data/mysql5.7/logs/mysql-relay-bin
#忽略同步的库
replicate-ignore-db = mysql
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema
replicate-ignore-db = sys

四、数据保持一致性

        如果Hadoop01上已经有mysql数据,那么在执行主主互备之前,需要将mysql的数据保持同步,首先在Hadoop01上备份 mysql数据,执行sql命令:FLUSH TABLES WITH READ LOCK; 不要退出这个终端,否则这个锁就失效了。

        在不退出终端的情况下,使用 mysqldump工具来导出数据,再导入宁外一个数据库中。

        重启数据库,使之前配置文件参数生效;

五、主主互备模式配置

1)配置hadoop01主,hadoop02从

#登录hadoop01数据库,创建同步用户
mysql> grant replication slave on *.* to 'cuixiaoqin'@'192.168.10.%' identified by '520_1314';
#刷新权限表
mysql> flush privileges;
#查看hadoop01的master_log_file和master_log_pos
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      454 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)


#登录hadoop02数据库,配置主从,master_log_file和master_log_pos对应hadoop01的master信息
mysql> change master to master_host='192.168.10.200',master_user='cuixiaoqin',master_password='520_1314',master_log_file='mysql-bin.000001',master_log_pos=454;
#开启从
mysql> start slave;
#查看主从状态,Slave_IO_Running和Slave_SQL_Running都为yes代表正常
mysql> show slave status\G

2)配置hadoop02主,hadoop01从

#登录hadoop02数据库,创建同步用户
mysql> grant replication slave on *.* to 'cuixiaoqin'@'192.168.10.%' identified by '520_1314';
#刷新权限表
mysql> flush privileges;
#查看hadoop02的master_log_file和master_log_pos
mysql> show master status;
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      606 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)


#登录hadoop01数据库,配置主从,master_log_file和master_log_pos对应hadoop01的master信息
mysql> change master to master_host='192.168.10.202',master_user='cuixiaoqin',master_password='520_1314',master_log_file='mysql-bin.000001',master_log_pos=606;
#开启从
mysql> start slave;
#查看主从状态,Slave_IO_Running和Slave_SQL_Running都为yes代表正常
mysql> show slave status\G

六、配置KeepAlived实现MySQL双主高可用

hadoop01和hadoop03都执行相同操作,keepalived官网Keepalived for Linux

#安装keepalived依赖
[root@hadoop01 ~]# yum install gcc gcc-c++ openssl-devel -y
#离线安装,也可以yum install安装
[root@hadoop01 ~]# wget -c https://keepalived.org/software/keepalived-2.1.5.tar.gz
[root@hadoop01 ~]# tar -xvf keepalived-2.1.5.tar.gz
[root@hadoop03 ~]# mv keepalived-2.1.5 keepalived
[root@hadoop03 ~]# mv keepalived /usr/local/
[root@hadoop01 ~]# cd /usr/local/keepalived
[root@hadoop01 keepalived]# ./configure --prefix=/usr/local/keepalived
[root@hadoop01 keepalived]# make && make install

#编写监控mysql状态脚本
[root@hadoop01 ~]# vi /etc/keepalived/check_mysql.sh
#!/bin/bash
#检查3306端口是否存在
ss -lntup|grep 3306 > /dev/null 2>&1
if [[ $? -eq 0 ]]; then
    exit 0
else
    systemctl stop keepalived
fi
[root@hadoop01 ~]# chmod +x /etc/keepalived/check_mysql.sh

hadoop01的keepalived.conf配置文件设置

[root@hadoop01 keepalived]# mkdir /etc/keepalived
[root@hadoop01 keepalived]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
    #在 keepalived 状态变化时接收通知邮件的地址
    notification_email {
        csdn@126.com
    }
    #邮件的发件人地址
    notification_email_from ops@wangshibo.cn
    #发送通知邮件所使用的 SMTP 服务器地址
    smtp_server 127.0.0.1
    #连接到 SMTP 服务器的超时时间
    smtp_connect_timeout 30
    #为 VRRP 实例指定了一个唯一的标识符
    router_id MYSQL-01
    #启用脚本安全性检查
    enable_script_security
}

#定义了一个 VRRP 脚本 chk_mysql,用于监控脚本的执行状态
vrrp_script chk_mysql {
    #指定了要执行的脚本路径
    script "/etc/keepalived/check_mysql.sh"
    #设定了脚本执行的时间间隔,单位是秒
    interval 2
    #指定用户
    user root
}

#定义了一个 VRRP 实例,VI_1 是这个实例的名称
vrrp_instance VI_1 {
    #设定角色为BACKUP,都是设成BACKUP则以优先级为主要参考
    state BACKUP
    #指定了用于 VRRP 的网络接口
    interface ens33
    #指定了 VRRP 实例的虚拟路由器 ID,这个 ID 在相同的 VRRP 组中必须唯一。
    virtual_router_id 51
    #设定节点的优先级
    priority 101
    #指定了主节点向备份节点广播状态信息的间隔时间,单位秒
    advert_int 1
    #设置认证方式,auth_type PASS 表示使用简单的密码认证,auth_pass 1111 是认证密码
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    #虚拟 IP 地址
    virtual_ipaddress {
        192.168.10.253
    }
    #用于跟踪脚本的状态,chk_mysql 是定义的脚本名称,keepalived 会根据这个脚本的执行结果来决定是否调整状态
    track_script {
        chk_mysql
    }
}

hadoop02的keepalived.conf配置文件设置

[root@hadoop03 ~]# mkdir /etc/keepalived
[root@hadoop03 ~]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
    notification_email {
        csdn@126.com
    }
    notification_email_from ops@wangshibo.cn
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    #设置 VRRP 实例的一个唯一的标识符
    router_id MYSQL-02
    enable_script_security
}

vrrp_script chk_mysql {
    script "/etc/keepalived/check_mysql.sh"
    interval 2
    user root
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    #设置优先级为100
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.10.253
    }
    track_script {
        chk_mysql
    }
}

hadoop01和hadoop02重启keepalived服务

systemctl start keepalived
systemctl status keepalived

 七、验证keepalived虚拟ip地址是否正常

#目前vip在Hadoop01节点

#将hadoop01节点mysql停掉,查看虚拟ip地址是否在hadoop02上

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

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

相关文章

前端自动导入依赖

前言 开发中通常会有很多导入语句&#xff0c;如何确保一些通用的api和hook无需每次手动导入即可使用。 <script setup lang"ts"> import { ref, reactive } from "vue" import { useRoute, useRouter } from "vue-router" import { log…

C++——string类(1)

### string是C中的一种类&#xff0c;在标准库中的&#xff1b;可以直接对字符串进行一系列操作。 string类类型的构造 1、无参构造&#xff1a; string(); 定义string对象的时候不给值&#xff0c;这个string类的对象里面没有字符&#xff1b; #include<iostream> #in…

VsCode中Jupyter找不到内核的问题

问题描述 之前可以选择内核&#xff08;可能要先 “Python: 选择解释器”&#xff0c;也可能不用&#xff09;&#xff0c;并且是自己检测到 conda 环境中的 Python。 但是后来会突然找不到内核&#xff0c;点击选择内核&#xff0c;会在空白下加载很久&#xff0c;无果。 这…

MIPI联盟D-PHYv1.2规范阅读笔记二之物理层接口协议PPI

本文阅读自eetop.cn_mipi_D-PHY_specification_v1-2.pdf Logical PHY-Protocol Interface Description&#xff08;PHY物理层协议接口描述PPI&#xff09; PHY物理层协议接口被用于连接物理层和通信栈与更高层协议栈之间建立联系。 表 31 定义了物理层协议接口&#xff08;P…

day10JS-this的使用规则

1. this情况总结 开启严格模式&#xff1a; "use strict"; //开启严格模式 1.全局&#xff1a;非严格this--->window &#xff0c;严格 this--->window。 2.普通函数执行&#xff1a;函数名() 非严格this-->window &#xff0c;严格 this--->undefined…

全新的大语言模型Grok-2,最新测评!!

埃隆马斯克再次引发轰动&#xff0c;他旗下的xAI公司推出了全新的大语言模型Grok-2&#xff01; 最新的Grok-2测试版已经发布&#xff0c;用户可以在&#x1d54f;平台上体验小版本的Grok-2 mini。 马斯克还通过一种谜语般的方式揭开了困扰大模型社区一个多月的谜团&#xff1a…

C/C++ 包管理器 Conan 安装及使用

文章目录 Github官网文档简介安装 Conan 包管理器Conan 私有存储库创建 profile 文件添加远程存储库依赖包操作命令 Artifactory 私有存储库下载安装包&#xff08;推荐&#xff09;Docker 方式安装 Conan 官方示例 Github https://github.com/conan-io/conan 官网 https://…

零代码上手,工厂数据管理从未如此简单

在当今快节奏的工业环境中&#xff0c;工厂管理者们越来越依赖于数据分析来优化生产流程、提高效率和降低成本。然而&#xff0c;传统的数据分析工具往往复杂难用&#xff0c;且动辄需要高昂的费用&#xff0c;这让很多工厂望而却步。不过最近本人发现了一款非常实用的报表工具…

智能废弃瓶子垃圾箱:城市环境的绿色守护者

随着城市化进程的加速&#xff0c;生活垃圾的处理成为城市管理中的一大挑战。智能废弃瓶子垃圾箱的出现&#xff0c;不仅提高了垃圾回收的效率&#xff0c;还促进了资源的循环利用&#xff0c;成为智慧城市建设的重要组成部分。 目录 技术概述 核心功能 应用场景 环境与社会…

Java数据结构栏目总结

目录 数组与稀疏数组 队列&#xff1a;自己用数组模拟Queue 环形队列&#xff0c;取模【取余】实现. 单链表(LinkList) 双向链表&#xff08;Next 、Pre&#xff09; 单向环形链表 线性结构 数组与稀疏数组 稀疏数组&#xff0c;很多0值&#xff0c;可用于压缩 特点&a…

在 AMD GPUs 上进行图分析使用 Gunrock

Graph analytics on AMD GPUs using Gunrock — ROCm Blogs 图和图分析是可以帮助我们理解复杂数据和关系的相关概念。在这种背景下&#xff0c;图是一种数学模型&#xff0c;用于表示实体&#xff08;称为节点或顶点&#xff09;及其连接&#xff08;称为边或链接&#xff09;…

【CTF Web】BUUCTF BUU BRUTE 1 Writeup(弱口令+暴力破解+字典攻击)

BUU BRUTE 1 1 点击启动靶机。 解法 随便输个用户名。 试试 admin。 用 burp 抓包。 生成四位数字的字典。 导入字典到 burp。 添加载荷位置。 开始爆破。破解完成&#xff0c;密码&#xff1a;6490。取得 flag。 注意 如果破解得慢的话&#xff0c;记得要续期靶机。不然靶机…

算法工程师秋招面试问题总结

大模型分布式训练并行 一般有 tensor parallelism、pipeline parallelism、data parallelism 几种并行方式,分别在模型的层内、模型的层间、训练数据三个维度上对 GPU 进行划分。三个并行度乘起来,就是这个训练任务总的 GPU 数量。 1.数据并行 数据并行是最常见的并行形式…

2024.8.27 作业

1> 提示并输入一个字符串&#xff0c;统计该字符串中字母个数、数字个数、空格个数、其他字符的个数 #include <iostream>using namespace std;int main() {string s;cout << "请输入字符串>>>";getline(cin,s);int letter0,digit0,blank0,…

git 复制提交到另外分支上

查看提交id 在原分支上查看要复制的id git log切换目标分支 将刚才复制的id&#xff0c;在这个目标分支上执行复制命令 git cherry-pick <commit-id>其中是要复制的提交的提交ID 效果 新分支上未复制的提交&#xff1a; 新分支上已复制的提交&#xff1a;

PTA - C语言国庆题集2

目录 7-21 打妖怪7-22 统计连续高温的最大天数7-23 唱歌比赛打分7-24 找最长的字符串7-25 算龙脉7-26 DNA鉴定7-28 T9键盘7-31 单链表的创建&#xff0c;遍历与销毁7-36 有多少位是7&#xff1f;7-37 选择排序7-38 翻转单词顺序7-39 求因子和最大的数&#xff08;结构体排序&am…

min(n,k)*min(m,k)

今天看那场一题都没写出来的div12&#xff0c;发现我想了那么久的A题&#xff0c;别人用几行代码就搞出来了。。。&#xff0c;现在感觉这道题和状压dp好像。。。 这道题用到了切比雪夫距离。。。

2024114读书笔记|《漱玉词》—— 绛绡缕薄冰肌莹,雪腻酥香,满院东风,海棠铺绣,梨花飞雪

2024114读书笔记|《漱玉词》—— 绛绡缕薄冰肌莹&#xff0c;雪腻酥香&#xff0c;满院东风&#xff0c;海棠铺绣&#xff0c;梨花飞雪 《漱玉词》李清照&#xff0c;观之入微&#xff0c;是惆怅亦是欢乐&#xff0c;不费力就可以读完的小诗词&#xff0c;插图不错。 知否的主…

Spring理论知识(Ⅱ)——Spring核心容器模块

Spring的组成 Spring由20个核心依赖组成&#xff0c;这20个核心依赖可以分为6个核心模块 本篇文章着重描述Spring核心容器模块&#xff0c;其中包含了spring-beans&#xff0c;spring-core&#xff0c;spring-context&#xff0c;spring-expression-language&#xff08;…

摄像头设备问题如何检测

摄像头等智能设备的在线状态通常被视为其运作正常的表现。但在日常监控使用中&#xff0c;由于使用空间、网络环境、产品年限等原因&#xff0c;设备掉线、视频流无法正常获取、监控画面异常&#xff08;如花屏&#xff09;&#xff0c;以及存储介质&#xff08;如SD卡&#xf…