keepalived+mysql高可用

news2024/11/27 9:37:30

一.设置mysql同步信息

两节点安装msyql略

#配置节点1

1.配置权限

允许远程访问

mysql -u root -p
grant all on *.* to root@'%' identified by 'Root1212@#' with grant option;
flush privileges;

2.修改my.cnf

#作为主节点配置(节点1)

#作为主节点配置
server-id       = 1                                            #节点ID
log_bin         = mysql-bin.log               #日志
binlog_format   = "ROW"                                    #日志格式
auto_increment_increment = 2                        #自增ID间隔(=节点数,防止ID冲突)
auto_increment_offset  = 1                            #自增ID起始值(节点ID)
#binlog_ignore_db=mysql                                    #不同步的数据库
#binlog_ignore_db=information_schema
#binlog_ignore_db=performance_schema

# 作为从节点配置(节点2),mysql修改my.cnf

server-id       = 2
log_bin         = mysql-bin.log
relay_log       = mysql-relay-bin.log        #中继日志
log_slave_updates = ON                                  #中继日志执行后,变化计入日志
read_only       = 0
binlog_format   = "ROW"
auto_increment_increment = 2
auto_increment_offset  = 2
#binlog_ignore_db=mysql
#binlog_ignore_db=information_schema
#binlog_ignore_db=performance_schema
#replicate_ignore_db=mysql
#replicate_ignore_db=information_schema
#replicate_ignore_db=performance_schema

3.开启同步(节点1)

mysql -P3306 -hxxx.xxx.xxx.xxx -uroot -p密码
CHANGE MASTER TO
       MASTER_HOST='10.10.16.50',
       MASTER_USER='root',
       MASTER_PASSWORD='Rootsql1212@#',
       MASTER_LOG_FILE='mysql-bin.000001',
       MASTER_LOG_POS=2959;

MASTER_HOST='10.10.16.50' 节点2的ip

MASTER_USER='root', 节点2的mysql用户名

MASTER_PASSWORD='密码',节点2的mysql密码

MASTER_LOG_FILE='mysql-bin.000014', 和 MASTER_LOG_POS=453768;;为节点2同步日志位置。

查看节点2的MASTER_LOG_FILE和MASTER_LOG_POS

#登录主节点2,mysql
mysql -P3306 -h10.10.16.50 -uroot -pRootsql1212@#
show master status

节点2配置主从,需要暂停同步stop slave,如果不暂停同步,则无法设置同步信息。

mysql -P3306 -hxx.xx.xx.xx -uroot -p密码

#暂停同步
stop slave;
 
#同步信息设置
CHANGE MASTER TO
       MASTER_HOST='10.10.16.44',
       MASTER_USER='root',
       MASTER_PASSWORD='密码',
       MASTER_LOG_FILE='binlog.000014',
       MASTER_LOG_POS=490354;

 #开启同步
start slave;

MASTER_HOST='10.10.16.44' 节点1的ip

MASTER_USER='root', 节点1的mysql用户名

MASTER_PASSWORD='密码',节点1的mysql密码

MASTER_LOG_FILE=binlog.000014 和 MASTER_LOG_POS=490354;为节点1同步日志位置。

查看节点1的MASTER_LOG_FILE和MASTER_LOG_POS

#登录主节点2,mysql
mysql -P3306 -h10.10.16.40 -uroot -pRootsql1212@#
show master status

#在mysql里面查看同步状态 Slave_IO_Running和Slave_SQL_Running需要均为Yes

show slave status\G;

二.安装keepalived

两节点服务器都安装keepalived

#编译安装

安装依赖

sudo apt install gcc # 安装gcc
sudo apt install make # 安装make
sudo apt install libssl-dev # 安装ssl编译依赖文件
sudo apt install libnfnetlink-dev # 安装libnfnetlink-dev
sudo apt install libnl-3-dev # 安装libnl-3-dev
sudo apt install libnl-genl-3-dev # 安装libnl-genl-3-dev

安装

cd /usr/local
wget https://www.keepalived.org/software/keepalived-2.2.2.tar.gz
tar -zxvf keepalived-2.2.2.tar.gz
mv keepalived-2.2.2 keepalived
cd /usr/local/keepalived
./configure --prefix=/usr/local/keepalived
sudo make && make install

#开启日志

sudo vim /etc/rsyslog.d/50-default.conf

*.=info;*.=notice;*.=warn;\

auth,authpriv.none;\

cron,daemon.none;\

mail,news.none -/var/log/messages

打开日志

sudo service rsyslog restart
#查看日志
tail -f /var/log/messages

复制文件:

sudo mkdir /etc/sysconfig
sudo cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
sudo cp /usr/local/keepalived/sbin/keepalived /sbin/
sudo mkdir /etc/keepalived
sudo cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

配置节点信息

节点1 :

vim /etc/keepalived/keepalived.conf

bal_defs {
   router_id MYSQL_HA  #当前节点名
}
vrrp_instance VI_1 {
    state BACKUP         #两台配置节点均为BACKUP
    interface enahisic2i0       #绑定虚拟IP的网络接口
    virtual_router_id 51 #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组
    priority 101         #节点的优先级,另一台优先级改低一点
    advert_int 1         #组播信息发送间隔,两个节点设置必须一样
    nopreempt            #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置
    authentication {      #设置验证信息,两个节点必须一致
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {   #指定虚拟IP,两个节点设置必须一样
        192.168.1.111
    }
}
virtual_server 192.168.1.111 3306 {   #linux虚拟服务器(LVS)配置
    delay_loop 2     #每个2秒检查一次real_server状态
    lb_algo wrr      #LVS调度算法,rr|wrr|lc|wlc|lblc|sh|dh
    lb_kind DR      #LVS集群模式 ,NAT|DR|TUN
    persistence_timeout 60    #会话保持时间
    protocol TCP    #使用的协议是TCP还是UDP

    real_server 10.10.16.44 3306 {
        weight 3   #权重
        notify_down  /usr/local/bin/mysql.sh    #检测到服务down后执行的脚本
        TCP_CHECK {
            connect_timeout 10   #连接超时时间
            nb_get_retry 3      #重连次数
            delay_before_retry 3 #重连间隔时间
            connect_port 3306    #健康检查端口
        }
    }
}

重启keepalived

systemctl daemon-reload

service keepalived restart

查看虚拟ip

ip addr show enahisic2i0

节点2:

vim /etc/keepalived/keepalived.conf

bal_defs {
   router_id MYSQL_HA  #当前节点名
}
vrrp_instance VI_1 {
    state BACKUP         #两台配置节点均为BACKUP
    interface enahisic2i0       #绑定虚拟IP的网络接口
    virtual_router_id 51 #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组
    priority 100         #节点的优先级,另一台优先级改低一点
    advert_int 1         #组播信息发送间隔,两个节点设置必须一样
    nopreempt            #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置
    authentication {      #设置验证信息,两个节点必须一致
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {   #指定虚拟IP,两个节点设置必须一样
        192.168.1.111
    }
}
virtual_server 192.168.1.111 3306 {   #linux虚拟服务器(LVS)配置
    delay_loop 2     #每个2秒检查一次real_server状态
    lb_algo wrr      #LVS调度算法,rr|wrr|lc|wlc|lblc|sh|dh
    lb_kind DR      #LVS集群模式 ,NAT|DR|TUN
    persistence_timeout 60    #会话保持时间
    protocol TCP    #使用的协议是TCP还是UDP

    real_server 10.10.16.50 3306 {
        weight 3   #权重
        notify_down  /usr/local/bin/mysql.sh    #检测到服务down后执行的脚本
        TCP_CHECK {
            connect_timeout 10   #连接超时时间
            nb_get_retry 3      #重连次数
            delay_before_retry 3 #重连间隔时间
            connect_port 3306    #健康检查端口
        }
    }
}

重启keepalived

systemctl daemon-reload

service keepalived restart

查看虚拟ip

ip addr show enahisic2i0

虚拟ip只存在一个节点上

测试是否成功:

mysql -P3306 -h192.168.1.111 -uroot -pRootsql1212@#

停止其中的一个节点mysql

查看ip是否漂移到另一个节点

ip addr show enahisic2i0

另外mysql是否还可以登录

mysql -P3306 -h192.168.1.111 -uroot -pRootsql1212@#

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

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

相关文章

leetcode刷题 | 关于前缀和题型总结1

leetcode刷题 | 关于前缀和题型总结1 文章目录leetcode刷题 | 关于前缀和题型总结1题目链接和为K的子数组连续数组/0 和 1 个数相同的子数组和大于等于 target 的最短子数组/长度最小的子数组路经总和Ⅲ题目链接 560. 和为 K 的子数组 - 力扣(LeetCode)…

Python-第三天 Python判断语句

Python-第三天 Python判断语句一、 布尔类型和比较运算符1.布尔类型2.比较运算符二、if语句的基本格式1.if 判断语句语法2.案例三、 if else 语句1.语法2.案例四 if elif else语句1.语法五、判断语句的嵌套1.语法六、实战案例一、 布尔类型和比较运算符 1.布尔类型 布尔&…

【学习笔记】Nginx实战

反向代理实战 解压Tomcat两次-Tomcat8081、Tomcat8082两个文件夹Tomcat8081只需要修改http协议端口8081Tomcat8082:(三个都需要改,不然只会启动其中一个)1.修改server的默认端口2.修改http协议的默认端口3.膝盖默认ajp协议的默认端…

面试题: Redis的数据备份

1 RDBRDB全称为Redis Database Backup file ,也被叫做Redis数据快照,简单来说就是将当前的所有数据都记录打哦磁盘中,当redis故障重启时,从磁盘读取快照文件进行数据恢复。连接客户端后,使用save命令进保存&#xff0c…

设置Visual Studio 2022背景图

前言 编写代码时界面舒服,自己喜欢很重要。本篇文章将会介绍VS2022壁纸的一些设置,主题的更改以及如何设计界面。 理想的界面应该是这样的 接下来我们来一步步学习如何将界面设计成这样 一、壁纸插件下载 1.拓展->点击拓展管理 2.右上角搜索backgro…

【shell 编程大全】shell 变量的定义以及使用

shell 变量定义 以及使用从此刻开始跟我一起学习shell 相关知识吧 前情回顾 上一章节【shell 前奏知识】 我们已经学习了很多shell的必备知识,让我们一起来回顾下。 shelll的存放位置如何切换shellshell文件中的注释有哪些查看当前系统的shell类型执行shell的n种方…

ubuntu20.04如何安装nvidia-docker?

文章目录安装步骤导入 NVIDIA GPG 密钥添加 NVIDIA Docker 存储库安装 nvidia-container-toolkit检查nvidia-docker是否安装成功安装步骤 导入 NVIDIA GPG 密钥 curl -s https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -添加 NVIDIA Docker 存储库 dist…

2010-2019年290个地级市经济发展与城市绿化数据

2010-2019年290个地级市经济发展与城市绿化数据 1、时间:2010-2019年 2、来源:城市统计NJ,缺失情况与NJ一致 3、范围:290个地级市 4、指标: 综合经济:地区生产总值、人均地区生产总值、地区生产总值增…

开源的电子邮件客户端Cypht

网友 OOXX 在找好用的 webmail,老苏觉得 Cypht 还不错 什么是 Cypht ? Cypht 是一个简单、轻量级和现代的 Webmail 客户端,它将多个帐户聚合到一个界面中。除了电子邮件帐户,它还支持 Atom/RSS 源。 安装 建数据库 数据库直接用…

MySQL数据库03——数据表的创建、修改和删除

接着上一章的内容,第一章安装好了Mysql和对应的编译器workbench,并且简单的创造了一个数据库college,第二章了解了SQL基础的动词和数据类型。这一章我们学习怎么用这些动词,在这个college库里面创建数据表,并且修改删除…

学习周报-2023-0210

文章目录一 在SUSE11sp3系统中将openssh从6升级到8一 需求二 系统环境三 部署流程1.上传编译安装的软件包2.安装 gcc编译软件3.安装依赖zlib4.安装依赖openssl5.安装openssh二 在CentOS-6.9配置apache服务(3)---虚拟主机配置一 定义二 系统环境三 基于域…

浅解ThreadLocal

我们知道的是synchronized能够解决线程安全中的内存可见性问题(让每个线程读取到的变量一致),而ThreadLocal恰好相反,它是让每个线程都有处理任务过程中不同的值。而我们通过代码发现他确实可以实现这样的功能package executor;/*…

chatgpt注册问题解决. You‘ve made too many phone verification requests.

本来想多注册chagpt几个号,发现注册不了了 错误:You’ve made too many phone verification requests. Please try again later or contact us through our help center at help.openai.com. 或者错误:We’ve detected suspicious behavior…

Java数据结构中二叉树的深度解析及常见OJ题

本篇文章讲述Java数据结构中关于二叉树相关知识及常见的二叉树OJ题做法讲解(包含非递归遍历二叉树) 目录 一、二叉树 1.1二叉树概念 1.2特殊的二叉树 1.3二叉树性质 1.4二叉树基本性质定理题 1.5二叉树遍历基本操作 1.6二叉树遍历的前中后非递归写法 1.7…

聚观早报 | 货拉拉入局跑腿业务;苹果任命首位首席人力资源官

今日要闻:谷歌AI聊天机器人Bard股价大跌7.4%;货拉拉入局跑腿业务;苹果任命首位首席人力资源官;迪士尼宣布裁员 7000 人;家乐福中国 COO 离职 谷歌AI聊天机器人Bard股价大跌 7.4% 2 月 8 日消息,谷歌人工智能…

一篇五分生信临床模型预测文章代码复现——FIgure 9.列线图构建,ROC分析,DCA分析 (四)

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

软件使用【SecureCRT】 SSH连接报错Key exchange failed

目录 一、原因分析 二、解决方法 三、修改文件方法 1、修改ssh_config 2、修改sshd_config 3、重新启动服务 SecureCRT连接服务器时报错,报错信息为: Key exchange failed. No compatible key exchange method. The server supports these methods…

轨迹预测算法vectorNet调研报告

前言 传统的行为预测方法是规则的,基于道路结构的约束生成多个行为假设。最近,很多基于学习的预测方法被提出。他们提出了对于不同行为假设的进行概率解释的好处,但是需要重构一个新的表示来编码地图和轨迹信息。有趣的是,虽然高精…

【论文阅读】TDANet:一种具有自上而下注意力的用于语音分离的高效自编码器架构(ICLR 2023)

TDANet: 一种具有自上而下注意力的用于语音分离的高效自编码器架构 文章目录TDANet: 一种具有自上而下注意力的用于语音分离的高效自编码器架构速览摘要方法PipelineTDANet实验总结速览 下载收录源码机构演示arxivICLR 2023PyTorch清华大学Demo inproceedings{tdanet2023iclr,…

Redis应用场景

redis的五种基本数据类型结构类型结构存储的值结构的读写能力String字符串可以是字符串、整数或浮点数对整个字符串或字符串的一部分进行操作;对整数或浮点数进行自增或自减操作;List列表一个链表,链表上的每个节点都包含一个字符串对链表的两…