设为首页 收藏本站
查看: 932|回复: 0

[经验分享] mysql高可用双主+keepalived

[复制链接]

尚未签到

发表于 2018-12-30 09:29:40 | 显示全部楼层 |阅读模式
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 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-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逐个测试机就行了
  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-657453-1-1.html 上篇帖子: lvs+keepalived构建Director高可用 下篇帖子: keepalived架设简单高可用的nginx的web服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表