xxxmenger 发表于 2018-12-30 09:29:40

mysql高可用双主+keepalived

Mysql双主复制
  实验拓扑:sql1192.168.10.1   server id 1 vip 192.168.10.100
            Sql2192.168.10.2   server id 2 vip 192.168.10.100
            客户端 192.168.10.3
  
  Sql1配置双主
  主库配置:vim /etc/my.cnf   
  Log-bin=mysql-bin    //打开二进制日志
  Server-id=1   
  Service mysqld start   //重启mysql进程
  登录到mysql控制台
  Mysql> reset master;   //重置日志
  Mysql>grant replication slave,replication client on *.*to rep1@’192.168.10.%’ identified by ‘tianyun’;//为第二台服务器建立复制账号
  Mysql> flush privileges;
  Mysql>change master to master_host=’192.168.10.2’,master_user=’rep1’, master_password=’tianyun’,master_log_file=’mysql-bin.000001’,master_log_pos=0;
  //因为它也是从,所以也需要设置
  Mysql>Start slave;//先不要启动,执行这语句,等待会第二台服务器配置好之后再执行
  
  
  Sql2配置
  主库配置:vim /etc/my.cnf   
  Log-bin=mysql-bin    //打开二进制日志
  Server-id=2   
  Service mysqld start   //重启mysql进程
  登录到mysql控制台
  Mysql> reset master;   //重置日志
  Mysql>grant replication slave,replication client on *.*to rep1@’192.168.10.%’ identified by ‘tianyun’;//为对方主机第一台服务器建立复制账号
  Mysql> flush privileges;
  Mysql>change master to master_host=’192.168.10.1’,master_user=’rep1’, master_password=’tianyun’,master_log_file=’mysql-bin.000001’,master_log_pos=0;
  //因为它也是从,所以也需要设置
  Mysql>Start slave;//先不要启动,执行这语句,等待会第二台服务器配置好之后再执行
  
  
  测试:分别在两台服务器上创建建库建表往表里查一点数据,在对方服务器上看有没有库表数据就能测试出来了。
  
  
  创建一个测试远程连接账号
  Grant all on *.* to admin@’%’ identified by ‘tianyun’; //因为是主主架构,两边服务器数据肯定一致,所以只需要再一台服务器上创建账号就可以了。
  Flush privileges;
  
  在客户端电脑分别登录测试一下两台主机服务器,看看是否正常。
  
  
  
安装keepalived
  在两台sql服务器上分别安装keepalived软件
  Yum -y install kernel-headers kernel-developenssl-devel popt-devel//解决依赖包
  Tar xzf keepalived-1.2.8.tar.gz
  Cd keepalived-1.2.8
  ./configure --prefix=/         //这样配置文件比较短一点,位置随便自定的
  Make && make install
  
Keepalived主/备配置
  Vim /etc/keepalived/keepalived.conf            //sql1上做为高可用的主服务器,当然也可以在sql2上做为主服务器,这里就让sql1做主服务器
  备注:红色部分代码新增的,紫色部分代表修改的
  Lobal_defs{               //用来设置通知发送给那个邮件的
  
  Router_id mysqlA   //这个只是一个标识而已
  Vrrp_script check_mysql{   //定义检测mysql正常语法的脚本
  Script “/keeplived_mysql.sh”   //脚本位置,这个是我们需要自己去手工写的脚本,位置名字必须和这里的一致
  Interval5   //定义间隔什么时候就去检测一次
  }
  
  Vrrp_instance VI_1{   //定义一个实例
  State Master
  Interface eth0   //通信心跳接口,最好就是直接用一个网卡互联,不经过任何路由器
  Virtual_router_id 51//两边一致
  Priority 100//优先级
  Advert_int 1
  Authentication{    //通信方式,两边一致最好
  Auth_type PASS
  Auth_pass tianyun
  
  
  }
  Virtual_ipaddreess {
  192.168.10.100      //vip地址
  }
  
  Track_script {
   Check_mysql    //最关键的一点,检查运行脚本
  }
  }
  
  下面的东西我们不用管它
  保存退出
  
  Rsync -av /etc/keepalived/keeplived.conf 192.168.10.2:/etc/keepalived//直接把配置文件拷贝到备也就是另一台服务器上,然后我们直接修改两个参数即可,就不用我们再怎么设置了
  
  在sql2上配置
  Vim /etc/keepalived/keepalived.conf
  
  Lobal_defs{               //用来设置通知发送给那个邮件的
  
  Router_id mysqlB//这个只是一个标识而已
  Vrrp_script check_mysql{   //定义检测mysql正常语法的脚本
  Script “/keeplived_mysql.sh”   //脚本位置,这个是我们需要自己去手工写的脚本,位置名字必须和这里的一致
  Interval5   //定义间隔什么时候就去检测一次,时间不要太短,合适就好了
  
  }
  
  Vrrp_instance VI_1{   //定义一个实例
  State BACKUP//这个不能随便写的,是关键字
  Interface eth0   //通信心跳接口,最好就是直接用一个网卡互联,不经过任何路由器
  Virtual_router_id 51//两边一致
  Priority50//优先级
  Advert_int 1
  Authentication{    //通信方式,两边一致最好
  Auth_type PASS
  Auth_pass tianyun
  
  
  }
  Virtual_ipaddreess {
  192.168.10.100      //vip地址
  }
  
  Track_script {
   Check_mysql    //最关键的一点,检查运行脚本
  }
  }
  
  保存退出就行了
Mysql状态监测脚本
  两边sql1和sql2配置一模一样
  
  脚本的名字和路径必须要keepalived配置文件里定义的一模一样
  Vim keeplived_mysql.sh
  #!/bin/bash
  /usr/local/mysql/bin/Mysql -e “show status” & >/dev/null   //如果不给全路径,keepalived调用的时候可能会报错
  If [$? -ne 0];//如果不等于0表示mysql不正常
  Then
  Service keepalived stop
  Fi
  
  
  保存退出
  Chmod a+x keeplived_mysql.sh //让脚本让其他用户有运行的权限
  Chkconfig --add keepalived   //将keepalived加入到让service去管理启动它
  Chkconfig   keepalivedon //开机运行 keepalived
  手工测试以调试模式去执行测试一下效果
  Bash -vx /keepalived_msyql.sh
  
Mysql高可用测试
  关闭一台sql逐个测试机就行了
  




页: [1]
查看完整版本: mysql高可用双主+keepalived