为什么

传统复制和GTIDs切换的缺点

当replication故障出现之后,最头疼是replication架构的调整

一旦master down了,就需要配置某一台slave作为master

slave上开启二进制日志文件,写操作配置成新的slave。

如果架构是MSS,新的relay提升为master,后面的slave都需要change master to host,binlog-file,postion。还得保证数据的一致性,所以所要花费的时间很长

GTIDs只需要change master to new_host,但是在每台机器都要执行

所以我们使用mysql自带的fail-over,并且提供它提供python API。后期可以整合到自动运维平台中去

下载与安装软件

MySQL Utilities https://dev.mysql.com/downloads/utilities/

##maintaining and administering MySQL servers

Connector/Python https://dev.mysql.com/downloads/connector/python/

## a standardized database driver for Python platforms and development

yum install mysql-connector-python-2.1.3-1.el6.x86_64.rpm mysql-utilities-1.5.6-1.el6.noarch.rpm -y

服务搭建:

环境准备

monitor     server1     192.168.88.121        ##监控最好有独立的服务器

master     server2     192.168.88.122

slave     server3     192.168.88.123

slave     server4     192.168.88.124

监控机需要连接到MS上,获取运行状态

授权: 基本的:super, replication,slave,reload,

有些时候,当多个程序运行mysql failover,##监控避免单点

create,insert,drop,select (--force否则failed,一旦出错就会停止复制)

grant create,insert,drop,select,super,replication slave,reload on *.* to repm@192.168.88.121 identified by '123' with grant option;

检测授权是否成功

show grants for 'repm'@'192.168.88.121'

在monitor测试mysql -urepmon -predhat -h 192.168.88.122

配置文件

##删除skip-slave-start

+++增加配置

#add fail-over

report-host=自己IP                 ##向监控端报告自己的IP

master-info-repository=table            ##将主机信息保存在表中

relay-log-info-repository=table        ##将中继信息保存在表中

+++

将相应的replication配置的缓存文件保存到数据表中,一般的情况下,slave它的master的相关信息以及复制当前的信息保存在master.info和relay-log.info,用处:在重新启动mysqld,mysql将自动启动slave,而主机的信息和复制的信息就通过这两个文件中的信息来获取

如果想自动化监控复制和切换,故障出现,就得重新指定master和binlog,position,如果保存在文件中的话,可能监控端需要相关的权限操作文件,所以可以在mysql的表中,这样修改的,也可以实时生效

注意:如果把master和relay-info保存在mysql的表,mysql锁创建的表是Myisam表,但是官方建议使用Innodb存储引擎,5.6之后呢默认时innodb,避免Myisam的自动修复功能

修改完成重启mysqld。

注意下mysql数据库中slave_master_info slave_relay_log_info两张表

启动监控端:

mysqlfailover --master=repmon:redhat@192.168.88.122 --discover-slaves-login=repmon:redhat

--master指定M,后接"用户名:密码@host"

--discover-slaves-login自动发现slave。后接连接slave的用户名和密码

--log=file.log        ##指定日志

--failover-mode    ##auto(default,没有slave可选就退出),elect(在制定的slave选取),fail(用于监控,没有failover)

#####

GTID Executed Set

c09756b8-a7e7-11e5-9468-000c29df5442:1-24

WARNING: Errant transaction(s) found on slave(s).

Replication Health Status

+-----------------+-------+---------+--------+------------+---------+

| host | port | role | state | gtid_mode | health |

+-----------------+-------+---------+--------+------------+---------+

| 192.168.88.122 | 3306 | MASTER | UP | ON | OK |

| 192.168.88.123 | 3306 | SLAVE | UP | ON | OK |

| 192.168.88.124 | 3306 | SLAVE | UP | ON | OK |

+-----------------+-------+---------+--------+------------+---------+

#####

现在测试功能

停掉master,看slave是否接管master,并调整架构

/etc/init.d/mysqld stop

下面是monitor上的调整信息

Failed to reconnect to the master after 3 attemps.

Failover starting in 'auto' mode...

# Candidate slave 192.168.88.123:3306 will become the new master.

# Checking slaves status (before failover).

# Preparing candidate for failover.

# Creating replication user if it does not exist.

# ERROR: ERROR: Cannot grant replication slave to replication user.

# Stopping slaves.

# Performing STOP on all slaves.

# Switching slaves to new master.

# Disconnecting new master as slave.

# Starting slaves.

# Performing START on all slaves.

# Checking slaves for errors.

# Failover complete.

# Discovering slaves for master at 192.168.88.123:3306

######新的架构

b89f9be8-a8af-11e5-9980-000c29ccacd8:1-2 [...]

Transactions executed on the servers:

+-----------------+-------+---------+--------+------------+---------+

| host | port | role | state | gtid_mode | health |

+-----------------+-------+---------+--------+------------+---------+

| 192.168.88.123 | 3306 | MASTER | UP | ON | OK |

| 192.168.88.124 | 3306 | SLAVE | UP | ON | OK |

+-----------------+-------+---------+--------+------------+---------+

####

在新的master(server3)上测试插入之后数据时候同步

但是当原来的master(server2) 恢复会正常的时候,mysql failover是不能够自动发现,并调整为原来的架构的。

所以要把master添加到集群,只能手动的调整

> change master to

> master_host='192.168.88.123',

> master_user='rep',

> master_password='redhat',

> master_auto_position=1;

此时监控端又可以检测到server2了

转载于:https://www.cnblogs.com/wxl-dede/p/5076097.html

MySQL FailOver(官方自带,free)相关推荐

  1. 基于Springboot+mysql手机商城(带后台管理系统)

    项目描述 Springboot+mysql手机商城(带后台管理系统) 运行环境 jdk8+mysql+IntelliJ IDEA+maven 项目技术 springboot+mysql+mybatis ...

  2. adc 接收cube_官方的stm32cube软件教程实例ADC操作代码(官方自带的,可以无视

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 官方的stm32cube软件教程实例ADC操作代码(官方自带的,可以无视),看不懂怎么用的可以等本贴吧更新图片教程,现在就是凑帖子数量,完成转职的,请谅解 ...

  3. 如何使用 MySQL 安装后自带的帮助文档

    文章目录 一.查询帮助文档 二.MySQL 相关资源网址 一.查询帮助文档 输入命令 ? contents 或者 help contents 来显示所有可供查询的分类: mysql> ? con ...

  4. Jmeter3.1官方自带的HTML图形测试报告 + 汉化

    Jmeter3.1官方自带的HTML图形测试报告 + 汉化 Jmeter3.0开始就有这个新特性了,详情见官网 http://jmeter.apache.org/usermanual/generati ...

  5. centos7在线yum安装mysql时官方镜像下载过慢的解决方案

    centos7在线yum安装mysql时官方镜像下载过慢的解决方案 参考文章: (1)centos7在线yum安装mysql时官方镜像下载过慢的解决方案 (2)https://www.cnblogs. ...

  6. OPENCV3.0 单目摄像头标定(使用官方自带的标定图片)

    OPENCV3.0 单目摄像头标定(使用官方自带的标定图片) 转载于:https://blog.csdn.net/zc850463390zc/article/details/48946855 // o ...

  7. convert for mysql_DBConvert for MySQL PostgreSQL下载|DBConvert for MySQL PostgreSQL官方下载-太平洋下载中心...

    DBConvert for MySQL & PostgreSQL是其它工具频道下深受用户喜爱的软件,太平洋下载中心提供DBConvert for MySQL & PostgreSQL官 ...

  8. tomcat websock html5,websocket实战(4) websocket版贪食蛇游戏(tomcat官方自带)

    通过前面3篇的阐述,相信可以构建一个简单的socket应用了.当然,也会遗漏了许多知识点,相信会在以后分享的实例中捎带说明下. 本文的主要是分析下tomcat官方自带的贪食蛇游戏.为什么选择分析这个项 ...

  9. mysql插入表情_向MySQL数据库中插入带emoji表情符的数据时报错

    问题:向MySQL数据库中插入带emoji表情符的数据时报错 原因:utf8字符集不支持emoji表情符,需要改为utf8mb4字符集(utf8mb4是MySQL在5.5.3之后增加的,实际开发中建议 ...

最新文章

  1. mongodb java项目 源码_spring项目整合mongodb进行开发
  2. Photoshop五步制作水晶按钮
  3. ffmpeg 压缩视频
  4. UNABLE to load uWSGI plugin: ./python_plugin.so: cannot open shared object file: No such file or dir
  5. mybatis查询如何返回ListMap类型数据
  6. java缓存同步_浅谈JSON的数据交换、缓存问题和同步问题
  7. 随输入动态改变ui_深入详解 Jetpack Compose | 优化 UI 构建
  8. 多种语言签名代码实现
  9. 词法分析 有穷自动机
  10. 常见数据分析误区有哪些
  11. matlab批量储存变量_Matlab批量赋值
  12. python获取淘宝服务器的毫秒级时间
  13. 时域离散随机信号的统计特性
  14. http,https,spdy,http2等协议的主要区别详解
  15. matlab栅格化处理,栅格化处理方法和栅格图像处理器的制造方法
  16. ajax 报错 Content-Type is not allowed by Access-Control-Allow-Headers in preflight respon
  17. java jxl 写 excel文件_Java使用jxl包写Excel文件适合列宽实现
  18. 支付宝官方支付接口申请配置教程(如何开通支付宝支付接口)
  19. 那些坚持买彩票想中500万的人,都是一些什么心态?分析一下
  20. nginx 基本使用

热门文章

  1. java 存储变量_如何在Java 8中将方法存储在变量中?
  2. 兼容性测试需要注意的测试点
  3. 最终,我还是放弃了字节50W开发offer,选择了测试开发……
  4. c语言编程中如何对其,C语言内存对齐详解(3)
  5. php 月份查询生日_PHP----------php根据生日(时间戳)计算星座
  6. 关于QT中对窗口中某个widget建类
  7. K-means 聚类算法的图像区域分割
  8. 知识图谱组队学习Task01——知识图谱介绍
  9. win10无法修改mac地址_路由器无线MAC地址过滤如何设置
  10. tb文件 vivado_Vivado FPGA设计基础操作流程:Vivado的基本使用