本文共 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