首页 > 数据库 >Mysql主主复制+keepalived

Mysql主主复制+keepalived

时间:2024-06-01 10:57:48浏览次数:34  
标签:主主 mysql keepalived master Mysql 2.2 docker root

 MySQL的主从复制和主主复制可以参考一下两篇文章:

MySQL主从同步-CSDN博客

MySQL主主复制-CSDN博客

master服务器IP192.168.7.67
slave服务器IP192.168.7.71

1、keepalived部署(master和slave服务器都安装)

安装依赖包:

[root@docker mysql]# yum install gcc libnl libnl-devel libnfnetlink libnfnetlink-devel openssl-devel

安装keepalived

[root@docker ~]# wget https://www.keepalived.org/software/keepalived-2.2.8.tar.gz

[root@docker ~]# tar -zxvf keepalived-2.2.8.tar.gz

[root@docker ~]# cd keepalived-2.2.8

[root@docker keepalived-2.2.8]# ./configure --prefix=/data/keepalived

[root@docker keepalived-2.2.8]# make && make install

[root@docker keepalived-2.2.8]# mkdir /etc/keepalived

#配置服务文件
[root@docker keepalived-2.2.8]# cp /data/keepalived/etc/keepalived/keepalived.conf.sample /etc/keepalived/keepalived.conf

[root@docker keepalived-2.2.8]# cp /data/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

[root@docker keepalived-2.2.8]# cp /data/keepalived/sbin/keepalived /usr/sbin/

[root@docker keepalived-2.2.8]# cp keepalived/etc/init.d/keepalived /etc/rc.d/init.d/keepalived

#加入keepalived服务
[root@docker keepalived-2.2.8]# chkconfig --add keepalived

[root@docker keepalived-2.2.8]# chkconfig keepalived on

2、配置master服务器上的keepalived配置

[root@docker keepalived]# cd /etc/keepalived/

[root@docker keepalived]# cp keepalived.conf keepalived.conf.bak

master的keepalived配置:

aglobal_defs {
   router_id LVS_MASTER  #名称标记为master,名字随便取
   vrrp_gna_interval 0
}

vrrp_script check_mysql{
    script "/etc/keepalived/check_mysql.sh" #心跳执行的脚本,检测nginx是否启动
    interval 2                           #(检测脚本执行的间隔,单位是秒)
    rise 1
    fall 1 
}

vrrp_instance VI_1 {
    state MASTER #指定当前节点为master节点,只能有一个master,其余只能是backup
    interface ens33 #绑定此虚拟路由使用的网卡的名称,使用ifconfig或者ip addr查看
    virtual_router_id 99 #指定虚拟路由id,虚拟路由的唯一标识,范围是0-255,mater和backup节点需要指定一样的,相同id为一组
    priority 200 #指定当前结点的优先级,master节点要大于backup节点。
    advert_int 1 #指定发送VRRP通告的间隔,单位是秒
    virtual_ipaddress {
        192.168.7.72 #指定虚拟ip,自己定义的虚拟ip
    }
	
    #添加跟踪(执行脚本)
    track_script{
        check_mysql
    }
}

 check_mysql.sh脚本:

#如果mysql服务挂掉了,就会关闭keepalived的服务,让VIP漂移到其他服务节点
-------------------------------------------------------------------------------------------
#!/bin/bash
counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)
if [ "${counter}" -eq 0 ]; then
	service leepalived stop
fi
#当然,你也可以抢救1次再关闭....
-------------------------------------------------------------------------------------------
##!/bin/bash
#counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)
#if [ "${counter}" -eq 0 ]; then
#    systemctl restart mysql
#    sleep 5;
#    counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)
#    if [ "${counter}" -eq 0 ]; then
#        killall keepalived
#    fi

chmod +x check_mysql.sh        #脚本执行权限

service keepalived start   #启动

3、配置slave服务器上的keepalived配置

slave的keepalived配置:

global_defs {
   router_id LVS_SLAVE  #名称标记为master,名字随便取
   vrrp_gna_interval 0
}

vrrp_script check_mysql{
    script "/etc/keepalived/check_mysql.sh" #心跳执行的脚本,检测nginx是否启动
    interval 2                           #(检测脚本执行的间隔,单位是秒)
    rise 1
    fall 1 
}

vrrp_instance VI_1 {
    state Master #指定当前节点为master节点,只能有一个master,其余只能是backup
    interface ens33 #绑定此虚拟路由使用的网卡的名称,使用ifconfig或者ip addr查看
    virtual_router_id 99 #指定虚拟路由id,虚拟路由的唯一标识,范围是0-255,mater和backup节点需要指定一样的,相同id为一组
    priority 199 #指定当前结点的优先级,master节点要大于backup节点。
    advert_int 1 #指定发送VRRP通告的间隔,单位是秒
    virtual_ipaddress {
        192.168.7.72 #指定虚拟ip,自己定义的虚拟ip
    }
	
    #添加跟踪(执行脚本)
    track_script{
        check_mysql
    }
}

 check_mysql.sh脚本从master传过来;

service keepalived start   #启动

4、验证

通过VIP:192.168.7.72可以连接成功。

停止master的MySQL服务器,查看是否还可以连接成功。

 

可以在slave服务器通过ip a 查看到VIP已经切换过来了。 

 

标签:主主,mysql,keepalived,master,Mysql,2.2,docker,root
From: https://blog.csdn.net/qq_38594061/article/details/139301279

相关文章

  • [转帖]数据库系列之MySQL数据库中内存使用分析
    在实际系统环境中,MySQL实例的内存使用随着业务的增长缓慢增长,有些时候并没有及时的释放。本文简要介绍下MySQL数据库中和内存相关的配置,以及分析内存的实际使用情况,以进行应急和调优处理。1、MySQL内存结构在MySQL中内存的占用主要由两部分组成:全局共享缓存globalbuffer......
  • Springboot计算机毕业设计亚洲杯志愿者管理系统小程序【附源码】开题+论文+mysql+程序
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景:随着各类大型活动的增多,志愿者管理成为了一个日益重要的问题。特别是在亚洲杯这样的国际性赛事中,高效的志愿者管理系统对于保障活动的顺利进行至关重......
  • Springboot计算机毕业设计牙科预约微信小程序【附源码】开题+论文+mysql+程序+部署
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景:随着移动互联网的普及和微信平台的广泛应用,微信小程序已成为连接线上线下的重要桥梁。在医疗健康领域,传统的牙科预约方式往往存在着效率低下、操作繁......
  • windows安装mysql
    1、官网下载:https://dev.mysql.com/downloads/mysql/  2、解压 3、配置环境变量添加mysql安装的bin文件目录的路径 4、配置初始化的my.ini文件的文件解压后的目录并没有的my.ini文件,没关系可以自行创建在安装根目录下添加的my.ini(新建文本文件,将文件类型改为的.ini),......
  • 成为MySQL DBA后,再看ORACLE数据库(四、系统视图)
    在数据库的运维管理中,熟悉数据库系统视图的使用可以帮助我们了解数据库各方面的状态信息。一般数据库的系统视图分为数据字典视图和动态性能视图,数据字典视图用于显示数据库的元数据信息和系统状态信息包括各种数据库对象、用户、角色、权限等;动态性能视图用于显示数据库的性能统......
  • MySQL基础索引知识【索引创建删除 | MyISAM & InnoDB引擎原理认识】
      博客主页:花果山~程序猿-CSDN博客文章分栏:MySQL之旅_花果山~程序猿的博客-CSDN博客关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长!目录 一,索引用处二,磁盘三,mysql与磁盘的基本交互单位四,管理page的数据结构(InnoDB引擎下)单个page多个pa......
  • MYSQL数据库
    创建数据库createdatabasemyDB;删除数据库dropdatabasefirstDB;选择数据库usemyDB;创建表mysql>createtablePEOPLE(->IDintAUTO_INCREMENTPRIMARYKEY,->NAMEvarchar(20)notnull,->PASSWORDtinyint(50)notnull,->AGEintno......
  • mysql查询表基础信息
    --一、查询数据库名称为db_name的所有表 SELECTt.table_catalog,t.table_schema,t.table_name,table_typeFROMinformation_schema.TABLEStwheret.table_schema='db_name'SELECTt.table_catalog,t.table_schema,t.table_name,table_typeFROMinformation_schema.TABLES......
  • 一文搞懂 MySQL 日志
    前言MySQL的日志记录了运行的各种信息,是MySQL事务、性能、数据容灾、异常排查等的基础。本文将介绍MySQL一些关键日志的作用和原理。MySQLInnoDB引擎重要的三个日志:一、binlog1.简介概述binlog记录DDL和DML语句,但不包括SELECT、SHOW 等语句,简单说只......
  • MySQL关联查询
    一、关联查询1、概念在查询数据时,所需要的数据不只在一张表中,可能在两张或多张表中。这个时候,需要同时操作这些表来查询数据,即关联查询。关联查询所涉及到的表与表之间都会存在有关联的字段,如员工表的部门编号和部门表的部门编号。2、笛卡尔积在做关联查询时,数据库会使用某一......