博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL高可用,MySQL互为主从+keepalived。
阅读量:6858 次
发布时间:2019-06-26

本文共 4355 字,大约阅读时间需要 14 分钟。

一:环境:centos7.5 MySQL5.7

           192.168.3.222 master
           192.168.3.158 slave
           192.168.3.223 VIP
二:首先做出双主来
以下操作两台机器都要做
2.1:首先域名解析:

###vim /etc/hosts (两台都做)192.168.3.222 master192.168.3.158 slave

2.2:下载MySQL5.7

### wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm### rpm -ivh mysql57-community-release-el7-8.noarch.rpm### yum install mysql-server

2.3:启动并修改密码

### systemctl start mysqld### grep pass /var/log/mysqld.log### mysqladmin -u root -p'bJZY,Z0kMdcQ' password 'Cherry`123'     //修改密码

2.4:修改两台机器的配置

修改master上的配置### vim /etc/my.cnf    [mysqld]    log-bin    server-id=1    gtid_mode=ON    enforce_gtid_consistency=1修改slave上的配置### vim /etc/my.cnf    [mysqld]    log-bin    server-id=2    gtid_mode=ON    enforce_gtid_consistency=1

2.5:重启两台机器并进行授权

重启两台机器   ### systemctl restart mysqld进入主数据库得到binlog日志文件名和偏移量   mysql> show master status;在master创建用户   mysql> grant replication slave on *.* to 'iii'@'192.168.3.158' identified by           'Cherry321`';去slave上执行change master to master_host='192.168.3.158',master_user='iii',master_password='Tiger321`',master_port=3306,master_log_file='master-bin.000003',master_log_pos=194;  //master-bin.000003',master_log_pos=194为文件名和偏移量 启动slave   mysql> start slave;在从库查看   mysql>show slave status\G;   //Slave_IO_Running:YES    Slave_SQL_Running:YES为成功

三:双主搭建完成,然后在master上做一下虚拟IP,绑定网卡

3.1:在master上copy一份网卡文件cp /etc/sysconfig/network-scripts/ifcfg-ens33  /etc/sysconfig/network-scripts/ifcfg-ens37配置文件如下TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noNAME=ens33UUID=9f0c5e90-b5e5-44f4-95ce-9f97d19bf880DEVICE=ens33ONBOOT=yesIPADDR=192.168.3.223NETMASK=255.255.255.0GATEWAY=192.168.3.1DNS1=8.8.8.8DNS2=114.114.114.1143.2重启网卡###systemctl restart network

四:下载keepalived,修改其配置文件

4.1:两台机器都下载keepalivedyum -y install keepalived4.2:修改配置文件,修改之前最好先备份一下。。。[root@master keepalived]# vim keepalived.conf! Configuration File for keepalived      //表示注释global_defs {  router_id mysql-1         //表示运行keepalived服务器的标识 }vrrp_instance VI_1 {   state BACKUP                     //指定keepalived的角色,两台配置此处均是backup,这为backup将根据优先级决定主或从   interface ens33    //指定HA检测网络的接口   virtual_router_id 51  //虚拟路由标识,这个标识是一个数字(取值在0~255之间,用来区分多个instance的VRRP组播),同一个vrrp实例使用唯一的标识                                  确保和slave相同,同网内不同集群此项不同,否则发生冲突   priority 100         //用来选举master的,要成为master,该项取值范围是1-255,默认为100,slave设为50   advert_int 1       //发送vrrp包的间隔时间   nopreempt          //不抢占   authentication {       auth_type PASS       auth_pass 1111   }   virtual_ipaddress {               //VIP地址       192.168.3.223   }}virtual_server 192.168.3.223 3306 {      //设置虚拟服务器,需要指定虚拟IP地址和服务端口。   delay_loop 2             //运行情况检查时间,单位为秒   lb_algo rr    //设置后端调度算法   lb_kind DR           persistence_timeout 60   protocol TCP   real_server 192.168.3.222 3306 {    //配置服务节点,需要指定real server的真实IP地址和端口。       weight 3             //配置服务节点的权值,权值大小用数字标识,数字越大,权值越高,设置权值大小为了区分不用性能的服务器       notify_down   /root/keepalived_check_mysql.sh                //检测到realserver的MySQL服务down后执行的脚本位置       TCP_CHECK {            connect_timeout 3                   //连接超时时间            nb_get_retry 3                         //重连次数            delay_before_retry 3                //重连间隔时间            connect_port 3306                 //健康检查端口       }   }}

下面为slave的配置

4.3:slave也修改keepalived的配置[root@slave ~]# vim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {  router_id mysql-2}vrrp_instance VI_1 {   state BACKUP   interface ens33   virtual_router_id 51   priority 50   advert_int 1   authentication {       auth_type PASS       auth_pass 1111   }   virtual_ipaddress {       192.168.3.223   }}virtual_server 192.168.3.223 3306 {   delay_loop 2   lb_algo rr   lb_kind DR   persistence_timeout 60   protocol TCP   real_server 192.168.3.158 3306 {       weight 3       notify_down   /root/keepalived_check_mysql.sh       TCP_CHECK {            connect_timeout 3            nb_get_retry 3            delay_before_retry 3            connect_port 3306       }   }}

五:两台机器修改之后添加mysql简易的状态检测脚本

### vim /root/keepalived_check_mysql.sh#!/bin/bash/usr/bin/mysql -h 192.168.3.222 -uroot -p'Tiger`123' -e "show status;" &>/dev/nullif [ $? -ne 0 ] ;then        systemctl stop keepalivedfi加上可执行权限### chmod 755 /root/keepalived_check_mysql.sh启动keepalived,关闭master  查看IP跳动

转载于:https://blog.51cto.com/14051712/2347796

你可能感兴趣的文章
阿里云专访Redisson作者Rui Gu:构建开源企业级Redis客户端之路
查看>>
读书笔记 effective c++ Item 55 让你自己熟悉Boost
查看>>
【小工匠聊Modbus】08-功能代码01H
查看>>
高可靠性、超大规模、极致性能、灵活部署的阿里云Apsara Block Storage,你pick嘛?...
查看>>
Mealy和moore型状态机的主要区别
查看>>
Linux环境下安装mysql并分配用户权限
查看>>
VR视频创作,想说爱你不容易
查看>>
笨办法学 Python · 续 练习 23:三叉搜索树
查看>>
可穿戴设备不能急于戴上“智能”的高帽子
查看>>
扒一扒政府的专用黑客组织ZooPark
查看>>
Ubuntu下Deb软件包相关安装与卸载
查看>>
互联网转型需要微服务架构
查看>>
Airbus Safran Launchers:选择西门子彻底改革产品生命周期流程
查看>>
文本数据的分分合合
查看>>
无损音乐知识收集2(转)
查看>>
vim 工具(一)
查看>>
MySQL常用命令
查看>>
zabbix snmp监控
查看>>
MySQL单实例重置密码的两种方法
查看>>
一段典型的PHP程序都包含那些内容呢?
查看>>