部署篇 MySQL双机热备+高可用方案

一、什么是双机热备

      双机热备是指两台机器运行、任意时刻只有过一个机器对外提供服务。当提供服务的一台出现故障、另外一个会马上切换提供服务。

二、服务器搭建

   192.168.100.150  192.168.100.111
 **1、安装mysql**   
 
       在服务上安装mysql方案有很多、十分简单、在这里就不作介绍。
  • 2、修改mysql配置文件150
vim /etc/my.cnf #在my.cnf文件的[mysqld]配置区域添加下面内容:
server-id = 1         
log-bin = mysql-bin     
sync_binlog = 1
binlog_checksum = none
binlog_format = mixed
auto-increment-increment = 2     
auto-increment-offset = 1    
slave-skip-errors = all      

#保存配置文件并重启mysql
service mysql restart

#用mysql控制台登录并授权从库可以读取主库的二进制日志
mysql -u root -p
mysql>grant replication slave,replication client on *.* to root@'192.168.100.150' identified by "root";
mysql>flush privileges;

#查看下log bin日志i和pos值位置,并记录File 和Position的值
mysql> show master status;
  • 3、修改mysql配置文件111
vim /etc/my.cnf #在my.cnf文件的[mysqld]配置区域添加下面内容:
server-id = 2        
log-bin = mysql-bin    
sync_binlog = 1
binlog_checksum = none
binlog_format = mixed
auto-increment-increment = 2     
auto-increment-offset = 2    
slave-skip-errors = all

#保存配置文件并重启mysql
service mysql restart

#用mysql控制台登录并授权从库可以读取主库的二进制日志
mysql -u root -p
mysql>grant replication slave,replication client on *.* to root@'192.168.100.111' identified by "root123456";

mysql>flush privileges;
#查看下log bin日志和pos值位置,并记录File 和Position的值
mysql> show master status;
3、配置数据库同步   150同步到111  和 110同步到150、
    mysql> change  master to master_host='192.168.100.150',master_user='root',master_password='root',master_log_file='mysql-        bin.000001',master_log_pos=431;   
   mysql> start slave;
   #查看同步状态,返回字段Slave_IO_Running和 Slave_SQL_Running的值均为“Yes”,表明同步成功!
   mysql> show slave status \G;

4、验证主主互备效果

     往数据库150中插入两条数据后、看看111中是否有数据同步。往111中插入两条数据看150中是否有数据同步过来

如何建立mysql的高可用、keepalived

  配置111为主服务器keepalived 为主
 #配置111服务器为master,/etc/keepalived 目下的keepalived.conf配置文件配置如下:
! Configuration File for keepalived

vrrp_script chk_nginx {
	script "/etc/keepalived/chk_mysql.sh" #检查mysql的脚本
	interval 2 #脚本定时执行的间隔
	weight -20
}

vrrp_instance VI_1 {
    state MASTER
    interface enp0s3  #指定虚拟ip的网卡接口
    mcast_src_ip 192.168.100.150 #修改vrrp组播包的源地址,默认源地址为master的IP
    virtual_router_id 51
    priority 101 #定义优先级,数字越大,优先级越高,在同一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级。这样MASTER故障恢复后,就可以将VIP资源再次抢回来 
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
	chk_nginx
    }
    virtual_ipaddress {
        192.168.100.155 #VIP的地址
    }
}

#更改配置文件后启动或重启keepalived
service keepalived start/service keepalived restart 
3.3配置208服务器keepalived 为辅
#配置208服务器为master,/etc/keepalived 目下的keepalived.conf配置文件配置如下:
! Configuration File for keepalived

vrrp_script chk_nginx {
	script "/etc/keepalived/chk_mysql.sh" #检查mysql的脚本
	interval 2 #脚本定时执行的间隔
	weight -20
}

vrrp_instance VI_1 {
    state BACKUP
    interface enp0s3  #指定虚拟ip的网卡接口
    mcast_src_ip 192.168.100.150 #修改vrrp组播包的源地址,默认源地址为master的IP
    virtual_router_id 51
    priority 100 #定义优先级,数字越大,优先级越高,在同一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级。这样MASTER故障恢复后,就可以将VIP资源再次抢回来 
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
	chk_nginx
    }
    virtual_ipaddress {
        192.168.100.155  #VIP的地址
    }
}

#更改配置文件后启动或重启keepalived
/service keepalived restart 

3.4 chk_mysql.sh 脚本
脚本命令如下:

#!/bin/bash
counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)
if [ "${counter}" -eq 0 ]; then
    /etc/init.d/keepalived stop
Fi

#赋予配置文件和检查脚本权限
cd /etc/keepalived
chmod 755 *

你可能感兴趣的:(运维篇,Mysql)