mysql主主复制 keepalive

目的:

在一个Mysql挂掉之后,能自动连接到另一个一模一样的数据库上

介质下载

1.mysql5.6   https://download.csdn.net/download/qq_35653822/11172509

2.keepalive  https://download.csdn.net/download/qq_35653822/11192115

一.主主复制

需要三个IP

master1  

master2

VIP

其中vip也是虚拟ip  我得做法是ping mater1到master2之间随便一个没有ping通的ip(这个正常要和公司的网络人员联系)

1.1修改配置文件

1.1.1修改master1的etc下my.cnf配置文件

[mysqld]下添加

server-id=1
log-bin=/usr/local/mysql/data/mysql1-bin
relay_log=/usr/local/mysql/data/relay-log
auto-increment-increment = 2
auto-increment-offset = 1

1.1.2修改master2的etc下my.cnf配置文件

[mysqld]下添加

server-id=2
log-bin=/usr/local/mysql/data/mysql2-bin
relay_log=/usr/local/mysql/data/relay-log
auto-increment-increment = 2
auto-increment-offset = 2

改完配置文件后重启mysql 

1)service mysql stop  

2)service mysql start

1.2给对方授权

主主复制就是互为对方的主

1.2.1 master1给master2授权

1)先用root登录

mysql -uroot -ppasswprd

2)授权

  GRANT ALL PRIVILEGES ON *.* TO 'username'@'ip' IDENTIFIED BY 'password' WITH GRANT OPTION;  

或者

GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO username@ip IDENTIFIED BY 'password';
 3)刷新

FLUSH   PRIVILEGES; 

4)查看master1的配置

分别是日志名和pos

5)在master2上链接master1

若slave已经开启 先执行stop slave

上边五个箭头都是对方的    分别对应master1的ip master1给master2授权的用户名密码  master1的日志名和master1的position

6)start slave;

7)查看状态

SHOW SLAVE STATUS\G

都为yes时 配置成功

1.2.2 同样的方式  master2给master1赋权 在master2重复一遍1.2.1

到此 主主复制完成

二.配置网络环境

编辑两台机器的  /etc/sysconfig/network-scripts/ifcfg-eth1或/etc/sysconfig/network-scripts/ifcfg-eth0

下边#说明  先不要加

配置如下

master1

DEVICE=eth0 #网卡  可以看ip addr show出现的是eth0还是eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=172.21.1.80 #这台机器的ip
NETMASK=255.255.255.0
GATEWAY=172.21.1.1
IPV6INIT=no
USERCTL=no

master2

DEVICE=eth0  #网卡  可以看ip addr show出现的是eth0还是eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=172.21.1.85 #这台机器的ip
NETMASK=255.255.255.0
GATEWAY=172.21.1.1
IPV6INIT=no
USERCTL=no

三.安装keepalive

除了两个数据库ip之外,还需要keepalive的虚拟ip 也叫vip 他的作用就是监控两个数据库  master1挂了就去Master2  master2挂了就去master1

两台机器都要安装keepalive

1)解压 tar -zxvf keepalived-1.1.17.tar.gz

2)cd keepalived-1.1.17

3)make && make install

4)拷贝配置文件并创建配置问文件目录

cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/

cp /usr/local/sbin/keepalived /usr/sbin/

cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/

mkdir /etc/keepalived

5)master1的Keepalive配置文件(#后为解释说明 不要加 没有说明标示默认)

! Configuration File for keepalived

global_defs {

   notification_email {

 [email protected] #邮箱

   }

   notification_email_from [email protected] #邮箱

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id mysql65 #两台机器不能相同

}

vrrp_script check_run {

    script "/opt/mysql_check.sh" #在mysql挂了后执行杀死keepalive进程的脚本

    interval 1

    wegiht 2

}

vrrp_instance VI_1 {

    state backup #两台都设置为从

    interface eth1 #网关 可通过ip addr show

    virtual_router_id 80 #两台机器一致

    priority 100 #优先级

nopreempt #两台机器都是非抢占模式

    advert_int 1

    authentication {

        auth_type PASS 

        auth_pass 1111 #两台机器密码一致

    }

    virtual_ipaddress {

 172.88.8.86 #VIP 

    }

    track_script {

         check_run #监听函数

     }

}

virtual_server 172.88.8.86 3306 {#虚拟ip和端口

    delay_loop 2

    lb_algo rr

    lb_kind DR

    persistence_timeout 30

    protocol TCP

    real_server 127.0.0.1 3306 {#本机ip

        weight 2

notify_down /opt/mysql_check.sh

         TCP_CHECK {

      connect_timeout 3        #连接超时时间

      nb_get_retry 3            #重连次数

      delay_before_retry 3      #重连间隔时间

      connect_port 3306        #健康检查端口

        }

    }

 }

6)mysql_check.sh 放在opt下

/opt/mysql/bin/mysql是Mysql路径

#!/bin/bash

#MYSQL_HOST=172.21.1.229

#MYSQL_USER=root

#MYSQL_PASSWORD=123456

 

/opt/mysql/bin/mysql -h 127.0.0.1 -u root -p123456 -e "show status;" >/dev/null 2>&1

#$mysqlclient --host=$host --port=$port --user=$user --password=$password  -e "show databases;" > /dev/null 2>&1

if [ $? == 0 ]

then

    echo " $host mysql login successfully "

    exit 0

else

    #echo " $host mysql login faild"

    /etc/init.d/keepalived stop

    exit 2

fi

四.启停keepalive

1)启动keepalived

service keepalived start

2)停止keepalived

service keepalived stop

五.把mysql和keepalived添加到开机自启

1)chkconfig --add mysqld

2)chkconfig --level 345 mysqld on

3)chkconfig --add keepalived

4)chkconfig --level 345 keepalived on

六.验证

1)在一台数据库上进行添加表,数据等操作,另一台数据库会有同样的效果

2)执行ip addr show 观察VIP是否同时出现在两台服务器  若只出现在一台服务器则验证成功  否则失败

3)执行service mysqld stop 停止Mysql服务 执行service keepalived status查看keepalived是否运行 若停止运行则正常  若还在运行则失败

4)停掉mysql或者keepalived后,通过navicat访问vip的Mysql,不能链接则失败

5)停掉一台mysql或者keepalive后,执行ip addr show看vip在哪台服务器,再把关闭的服务器启动,如果vip没有漂移回去则成功,如果漂移回去则失败

6)查看是否添加到开机自启

chkconfig --list mysqld

chkconfig --list keepalived

发布了50 篇原创文章 · 获赞 2 · 访问量 9427

猜你喜欢

转载自blog.csdn.net/qq_35653822/article/details/90256871