mysql高可用双主+keepalived

Mysql双主复制

实验拓扑:sql1  192.168.10.1   server id 1 vip 192.168.10.100

Sql2  192.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 [email protected]’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 [email protected]’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 [email protected]’%’ identified by ‘tianyun’; //因为是主主架构,两边服务器数据肯定一致,所以只需要再一台服务器上创建账号就可以了。

Flush privileges;

在客户端电脑分别登录测试一下两台主机服务器,看看是否正常。

安装keepalived

在两台sql服务器上分别安装keepalived软件

Yum -y install kernel-headers kernel-devel  openssl-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”   //脚本位置,这个是我们需要自己去手工写的脚本,位置名字必须和这里的一致

Interval  5   //定义间隔什么时候就去检测一次

}

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”   //脚本位置,这个是我们需要自己去手工写的脚本,位置名字必须和这里的一致

Interval  5   //定义间隔什么时候就去检测一次,时间不要太短,合适就好了

}

Vrrp_instance VI_1{   //定义一个实例

State BACKUP  //这个不能随便写的,是关键字

Interface eth0   //通信心跳接口,最好就是直接用一个网卡互联,不经过任何路由器

Virtual_router_id 51  //两边一致

Priority  50  //优先级

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   keepalived  on //开机运行 keepalived

手工测试以调试模式去执行测试一下效果

Bash -vx /keepalived_msyql.sh

Mysql高可用测试

关闭一台sql逐个测试机就行了

时间: 2024-10-02 10:03:51

mysql高可用双主+keepalived的相关文章

[Mysql高可用]——双主互备+keepalived

实验架构图    实验环境 主机名 操作系统 Mysql版本 keepalived版本 主机IP VIP lyj1(Master/Slave) Red Hat release 6.5 Mysql5.6.31 keepalived-1.2.12 10.0.100.201 10.0.100.220 lyj2(Slave/Master) Red Hat release 6.5 Mysql5.6.31 keepalived-1.2.12 10.0.100.202 构建双主互备 1. 分别修改DB1和DB

基于heartbeat v1配置mysql和httpd的高可用双主模型

一.配置高可用集群的前提:(以两节点的heartbeat为例) ⑴时间必须保持同步 ⑵节点之间必须用名称互相通信 建议使用/etc/hosts,而不要用DNS 集群中使用的主机名为`uname -n`表示的主机名: ⑶ping node(仅偶数节点才需要) ⑷ssh密钥认证进行无障碍通信: 二.heartbeat v1的配置 程序主配置文件:ha.cf 认证密钥:authkeys, 其权限必须为组和其它无权访问: 资源配置文件:haresources /usr/share/doc/heartbe

Nginx+keepalived(高可用双主模式)

Nginx+keepalived(高可用双主模式) tips:前面已经介绍了nginx+keepalived高可用主从模式,今天补充下高可用的双主模式,均可以作为主机使用 server1:192.168.237.128             VIP1:192.168.237.10 server2:192.168.237.129             VIP2:192.168.237.20 vim /etc/keepalived/keepalived.conf //编辑配置文件,增加一段新的v

MySQL高可用基础之keepalived+双主复制【转】

环境:MySQL-VIP:192.168.1.3MySQL-master1:192.168.1.1MySQL-master2:192.168.1.2 OS版本:CentOS release 6.4 (Final) Linux 2.6.32-358.el6.x86_64MySQL版本:5.6.14Keepalived版本:1.2.13 一.MySQL master-master配置 1.修改MySQL配置文件/etc/my.cnf   # Server1配置[mysqld]basedir = /u

【转载】MySQL和Keepalived高可用双主复制

服务器主机IP和虚拟浮动IP配置 RealServer A 192.168.75.133 RealServer B 192.168.75.134 VIP A 192.168.75.110 VIP B 192.168.75.111 安装KeepAlived软件包 [[email protected] ~]# yum install keepalived =========================================================================

keepAlived+nginx实现高可用双主模型LVS

实验目的: 利用keepalived实现高可用反向代理的nginx.以及双主模型的ipvs 实验环境: node1:在nginx做代理时做反向代理节点,在keepalived实现LVS时做Director.VIP1:172.16.18.22 VIP2:172.16.18.23 node2:在nginx做代理时做反向代理节点,在keepalived实现LVS时做Director.VIP1:172.16.18.22 VIP2:172.16.18.23 node3:在nginx做代理时做web服务器.

mysql高可用方案之Keepalived+主主复制

环境规划: node1:    192.168.1.250 node2:    192.168.1.251 vip:      192.168.1.201 数据库:   mysql-5.6.23 1.各节点的网络配置 node1节点: [[email protected] ~]# hostname node1[[email protected] ~]# ip addr1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKN

mysql高可用(主备)

服务器基本环境: 两台centos6.4.iptables  diabled .selinux  disabled 两台的hosts解析 mysql安装(两台相同操作): mysql用户和组 #groupadd mysql #useradd -r -g mysql  mysql mysql的各种使用目录 数据目录挂载点:/data 数据库base目录:/usr/local/mysql 数据库配置文件位置:/etc/my.cnf 数据库数据目录:/data/mysql innodb数据和innod

keepalived高可用双主配置文件

###########################lb01 cat /etc/keepalived/keepalived.conf ! Configuration File for keepalived_lb01 global_defs { #  notification_email { #  [email protected] #  } router_id LB01 } vrrp_script check_lb { script "/server/scripts/check_lb.sh&q