当前位置: 首页 > news >正文

keepalived+mysql高可用

一.设置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 TOMASTER_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 TOMASTER_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         #两台配置节点均为BACKUPinterface enahisic2i0       #绑定虚拟IP的网络接口virtual_router_id 51 #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组priority 101         #节点的优先级,另一台优先级改低一点advert_int 1         #组播信息发送间隔,两个节点设置必须一样nopreempt            #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置authentication {      #设置验证信息,两个节点必须一致auth_type PASSauth_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|dhlb_kind DR      #LVS集群模式 ,NAT|DR|TUNpersistence_timeout 60    #会话保持时间protocol TCP    #使用的协议是TCP还是UDPreal_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         #两台配置节点均为BACKUPinterface enahisic2i0       #绑定虚拟IP的网络接口virtual_router_id 51 #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组priority 100         #节点的优先级,另一台优先级改低一点advert_int 1         #组播信息发送间隔,两个节点设置必须一样nopreempt            #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置authentication {      #设置验证信息,两个节点必须一致auth_type PASSauth_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|dhlb_kind DR      #LVS集群模式 ,NAT|DR|TUNpersistence_timeout 60    #会话保持时间protocol TCP    #使用的协议是TCP还是UDPreal_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.lryc.cn/news/2039.html

相关文章:

  • JAVA工具篇--1 Idea中 Gradle的使用
  • 弄懂自定义 Hooks 不难,改变开发认知有点不习惯
  • Java面向对象基础
  • 基于python下selenium库实现交互式图片保存操作(批量保存浏览器中的图片)
  • 一:Datart的下载、本地运行
  • Docker-compose
  • 经典文献阅读之--PLC-LiSLAM(面,线圆柱SLAM)
  • 计算组合数Cnk即从n个不同数中选出k个不同数共有多少种方法math.comb(n,k)
  • 工厂设计模式
  • IO多路转接 —— poll和epoll
  • 计算机网络整理-问答
  • JS 实现抛物线动画案例
  • CSGO搬砖项目,23年最适合小白的项目!
  • 谈谈会话管理
  • Linux查看JVM FULL GC频率
  • java世界String的那些事
  • 【图像配准】多图配准/不同特征提取算法/匹配器比较测试
  • 2023金三银四季跳槽季,啃完这软件测试面试题,跳槽不就稳稳的了
  • 【C++详解】——vector类
  • uniapp 离线本地打包
  • 初识马尔科夫模型(Markov Model)
  • CentOS7 ifconfig(或 ip addr)命令不显示IP地址
  • 2023/2/10总结
  • 2023最新版!宝塔面板Docker自建Bitwarden密码管理
  • 【Hello Linux】 Linux基础命令
  • 151、【动态规划】leetcode ——2. 01背包问题:二维数组+一维数组(C++版本)
  • 2023-02-09 - 3 Elasticsearch基础操作
  • 云原生系列之使用 prometheus监控MySQL实战
  • 电脑分盘怎么分?分盘详细教程来了,图文教学
  • Element UI框架学习篇(四)