最近测试了一下mysql+keepalived实现主从自动切换,主从都需要安装keepalived,使用vip漂移实现主从自动切换,这里主要记录的是keepalived的文件配置。

这里mysql搭建的是双主。

环境:

主:192.168.184.128

从:192.168.184.133

vip:192.168.184.132

两台服务器配置的均是BACKUP,主机优先级是100,从机优先级是90.均为非抢占模式nopreempt(只有BACKUP才可以设置为nopreempt),设置非抢占模式后,在原主机恢复并正常启动keepalived后,不会自动切回,若想切回master,只需去掉该节点的nopreempt选项并且将priority改的比其他节点大,然后重新加载配置文件即可(等MASTER切过来之后再将配置文件改回去再reload一下)。

主从配置文件除了优先级priority和virtual_server中的real_server不一样外,其他均一样。

  1. notify_master 是切换为master时执行的脚本,主要用于判断主从是否已同步,并记录下主从切换时的日志位置。
  1. notify_backup 是切换为backup时执行的脚本,主要是修改一些使用于从库的参数。
  1. nofify_stop keepalived服务停掉后执行的脚本,主要是配置一些参数,并判断是否存在写操作。
  1. notify_down /data/mysql/bin/MySQL.sh部分是在mysql 3306端口不通时执行的操作,脚本内容是:
  1. #! /bin/sh
  2. pkill keepalived

keepalived停掉后就会发生主从切换。

主机keepalived.conf
  1. global_defs {
  2. notification_email{
  3. XXXX
  4. }
  5. notification_email_from XXX
  6. smtp_server 127.0.0.1
  7. smtp_connect_timeout
  8. router_id KeepAlive_Mysql
  9. }
  10. vrrp_instance VI_1 {
  11. state BACKUP
  12. nopreempt
  13. interface eth0
  14. virtual_router_id
  15. priority
  16. advert_int
  17. authentication {
  18. auth_type PASS
  19. auth_pass
  20. }
  21. notify_master /home/sh/master.sh
  22. notify_backup /home/sh/backup.sh
  23. nofify_stop /home/sh/stop.sh
  24. smtp_alert
  25. virtual_ipaddress {
  26. 192.168.184.132
  27. }
  28. }
  29. virtual_server 192.168.184.132 {
  30. delay_loop
  31. lb_algo wrr
  32. lb_kind DR
  33. persistence_timeout
  34. protocol TCP
  35. real_server 192.168.184.133 {
  36. weight
  37. notify_down /data/mysql/bin/MySQL.sh
  38. TCP_CHECK {
  39. connect_timeout
  40. nb_get_retry
  41. delay_before_retry
  42. connect_port
  43. }
  44. }
  45. }

从机keepalived.conf

  1. global_defs {
  2. notification_email{
  3. XXXX
  4. }
  5. notification_email_from XXXX
  6. smtp_server 127.0.0.1
  7. smtp_connect_timeout
  8. router_id KeepAlive_Mysql
  9. }
  10. vrrp_instance VI_1 {
  11. state BACKUP
  12. nopreempt
  13. interface eth0
  14. virtual_router_id
  15. priority
  16. advert_int
  17. authentication {
  18. auth_type PASS
  19. auth_pass
  20. }
  21. notify_master /home/sh/master.sh
  22. notify_backup /home/sh/backup.sh
  23. nofify_stop /home/sh/stop.sh
  24. smtp_alert
  25. virtual_ipaddress {
  26. 192.168.184.132
  27. }
  28. }
  29. virtual_server 192.168.184.132 {
  30. delay_loop
  31. lb_algo wrr
  32. lb_kind DR
  33. persistence_timeout
  34. protocol TCP
  35. real_server 192.168.184.128 {
  36. weight
  37. notify_down /data/mysql/bin/MySQL.sh
  38. TCP_CHECK {
  39. connect_timeout
  40. nb_get_retry
  41. delay_before_retry
  42. connect_port
  43. }
  44. }
  45. }

关于keepalived相关参数的说明可参考:

http://outofmemory.cn/wiki/keepalived-configuration

http://www.keepalived.org/documentation.html

使用keepalived实现mysql主从复制的自动切换的更多相关文章

  1. Keepalived与MySQL互为主从自动切换配置

    为解决Mysql数据库单点问题,实现两台MySQL数据库互为主备,双向replication.当一Master出现问题,则将Slave切换为Master继续工作. 环境说明 系统版本:CentOS L ...

  2. MYSQL主从复制搭建及切换操作(GTID与传统)

    结构如下: MYSQL主从复制方式有默认的复制方式异步复制,5.5版本之后半同步复制,5.6版本之后新增GTID复制,包括5.7版本的多源复制. MYSQL版本:5.7.20 操作系统版本:linux ...

  3. Nginx+Keepalived主从双机热备+自动切换

    1 安装配置nginx 参考: http://www.cnblogs.com/jager/p/4388202.html 2 安装配置keepalived tar xvf keepalived-1.2. ...

  4. mysql mha 主从自动切换 高可用

    mha(Master High Availability)目前在MySQL多服务器(超过二台),高可用方面是一个相对成熟的解决方案. 一,什么是mha,有什么特性 1. 主服务器的自动监控和故障转移 ...

  5. 利用Keepalived+mysql构建高可用MySQL双主自动切转

    转载:http://www.it300.com/index.php/article-15266.html 关于MySQL-HA,目前有多种解决方案,比如heartbeat.drbd.mmm.共享存储, ...

  6. Nginx+keepalived 脚本安装主从双机热备自动切换解决方案

    Nginx+keepalived 脚本安装主从双机热备自动切换解决方案 2013-07-02 19:24:13 标签:filesnginx keepalived 原创作品,允许转载,转载时请务必以超链 ...

  7. MySQL 主从复制实战解析

    前言:前面几篇文章讲解了在应用层读写分离的配置和使用,这篇文章将来个主从复制的实战解析. 说明:主从复制,读写分离结构图 原理图 主库生成一个线程: Binlog Dump线程 1.此线程运行在主库, ...

  8. mysql主从备份+keepalived自动切换

    数据库这一层需要做到避免单点故障可以是主从备份和主主备份,主主备份可能有性能损耗和数据同步的问题.这里记录下主从备份, mysql进行备份之前确保mysql的版本是一样的,我这里用的都是mysql5. ...

  9. MySQL主从复制与lvs+keepalived单点写入读负载均衡高可用实验【转】

    一.环境Master(主机A):192.168.1.1Slave(主机B) :192.168.1.2  W-VIP(写入)  :192.168.1.3 R-VIP(读取)  :192.168.1.4  ...

随机推荐

  1. s验证数据库中字段值是否重复

    daoImpl: public String isVipCode(String vipcode) { String sql = "from FfzjUserEntity where vip_ ...

  2. [蟒蛇菜谱]Python日志记录最佳实践

    # -*- coding: utf8 -*- import logging # 创建一个logger logger = logging.getLogger('mylogger') logger.set ...

  3. php大力力 [048节] php一点支付开发资料,很散

    https://beecloud.cn/activity/jsbutton/?index=4&t=1441261629019 https://beecloud.cn/download/ php ...

  4. MySQL中的while、repeat、loop循环

    循环一般在存储过程和存储函数中使用频繁,这里只给出最简单的示例 while delimiter $$ create procedure test_while() begin declare sum i ...

  5. JAVAWEB学习总结 HTTPSERVLETRESPONSE对象(二)

    一.HttpServletResponse常见应用--生成验证码 1.1.生成随机图片用作验证码 生成图片主要用到了一个BufferedImage类 步骤: 1. 在内存中创建一张图片 2.得到图片 ...

  6. 盲注----基于布尔的SQL盲注

    构造逻辑判断常用字符串截取函数http://www.cnblogs.com/yyccww/p/6054569.html常用函数left(a,b)  从左侧截取a的前b位right(a,b)  从右侧截 ...

  7. 用递归法判断字符串A中包含多少个字符串B

    string类提供了判断字符串B在字符串A中首次(或最后)出现的Index的方法,但有时候需要判断B在A中出现了多少次. 为此想了一个算法. public static void CountIndex ...

  8. BZOJ 1046 最长不降子序列(nlogn)

    nlogn的做法就是记录了在这之前每个长度的序列的最后一项的位置,这个位置是该长度下最后一个数最小的位置.显然能够达到最优. BZOJ 1046中里要按照字典序输出序列,按照坐标的字典序,那么我萌可以 ...

  9. 关于JAVA中对字符串与数组求长度的问题

    我在学习中发现在求数组或者字符串的长度的时候,用到length的时候,有时候是length,有时候是length(),很是奇怪,于是上API查了一下,发现一些小细节. 首先看看这段代码 public ...

  10. POJ 2976

    http://poj.org/problem?id=2976 01分数规划问题,可以舍掉k组 01分数规划用于解决的经典问题是最优比率生成树 解法见http://www.cnblogs.com/lot ...