MySQLは高可用性で、MySQLは互いに+keepalivedから使用されます.
一:環境:centos 7.5 MySQL5.7 192.168.3.222 master 192.168.3.158 slave 192.168.3.223 VIP二:まず双主をして以下の操作の2台の機械はすべて2.1をします:まずドメイン名の解析をします:
2.2:MySQL 5をダウンロードする.7
2.3:パスワードの起動と変更
2.4:2台の機器の配置を修正する
2.5:2台の機器を再起動して許可する
三:デュアルマスターが完成して、それからmasterの上で仮想IPをして、ネットカードをバインドします
四:keepalivedをダウンロードし、そのプロファイルを変更する
以下はslaveの構成です
五:2台の機械が修正した後にmysql簡易な状態検出スクリプトを追加する
###vim /etc/hosts ( )
192.168.3.222 master
192.168.3.158 slave
2.2:MySQL 5をダウンロードする.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:2台の機器の配置を修正する
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:2台の機器を再起動して許可する
### 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=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens33
UUID=9f0c5e90-b5e5-44f4-95ce-9f97d19bf880
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.3.223
NETMASK=255.255.255.0
GATEWAY=192.168.3.1
DNS1=8.8.8.8
DNS2=114.114.114.114
3.2
###systemctl restart network
四:keepalivedをダウンロードし、そのプロファイルを変更する
4.1: keepalived
yum -y install keepalived
4.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 keepalived
global_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
}
}
}
五:2台の機械が修正した後に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/null
if [ $? -ne 0 ] ;then
systemctl stop keepalived
fi
### chmod 755 /root/keepalived_check_mysql.sh
keepalived, master IP