为什么

传统复制和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了

MySQL FailOver(官方自带,free)的更多相关文章

  1. (转)MySQL数据表中带LIKE的字符匹配查询

    MySQL数据表中带LIKE的字符匹配查询 2014年07月15日09:56    百科369 MySQL数据表中带LIKE的字符匹配查询 LIKE关键字可以匹配字符串是否相等. 如果字段的值与指定的 ...

  2. MySQL优化|一分钟带你了解单表优化

    在开始前,分享给大家我看过觉得讲数据库讲的算是很不错的,也在B站拥有百万播放量的教程. 这个MySQL视频是动力节点的老杜讲解,个人也很喜欢老杜的教学风格,老杜真的是从MySQL基础一点点带我入门,基 ...

  3. [转]Android UI:看看Google官方自定义带旋转动画的ImageView-----RotateImageView怎么写(附 图片淡入淡出效果)

    http://blog.csdn.net/yanzi1225627/article/details/22439119 众所周知,想要让ImageView旋转的话,可以用setRotation()让其围 ...

  4. Unity 官方自带的例子笔记 - Space Shooter

    首先 买过一本叫 Unity3D开发的书,开篇第一个例子就是大家经常碰见的打飞机的例子,写完后我觉得不好玩.后来买了一本 Unity 官方例子说明的书,第一个例子也是打飞机,但是写完后发现蛮酷的,首先 ...

  5. Android UI:看看Google官方自定义带旋转动画的ImageView-----RotateImageView怎么写(附 图片淡入淡...)

    众所周知,想要让ImageView旋转的话,可以用setRotation()让其围绕中心点旋转,但这个旋转是不带动画的,也就是旋转屏幕时图片噌的一下就转过去了,看不到旋转的过程,此UI体验不大好,为此 ...

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

    帮客户调试数据库,搭建一测试环境,centos7最小化安装后,在线安装mysql. 步骤: 1. wget -i http://dev.mysql.com/get/mysql57-community- ...

  7. jnhs中国省市县区mysql数据表不带gps坐标

    1.查省 SELECT * FROM china WHERE china.Pid=0 2.查市 SELECT * FROM chinaWHERE china.Pid=330000 3.查区 SELEC ...

  8. mysql截取函数常用方法 即mysql 字符串 截取-- - 最后带上java字符串截取规则比较

    常用的mysql截取函数有:left(), right(), substring(), substring_index() 下面来一一说明一下: 1.左截取left(str, length) 说明:l ...

  9. python 作业 用python实现 mysql查询结果导出带列名

    1 import pandas as pd 2 import numpy as np 3 import matplotlib as mpl 4 import matplotlib.pyplot as ...

随机推荐

  1. 区分虚拟机和machine simulator

    1 虚拟机和machine simulator的不同 虚拟机是让多个操作系统同时共用现有的硬件架构,它不会模拟新的硬件架构.qemu这样的模拟器是模拟新的硬件架构,这个架构和host不同.

  2. 线程安全 对StringBuilder抛出ArrayIndexOutOfBoundsException的探究

    对StringBuilder抛出ArrayIndexOutOfBoundsException的探究 - CSDN博客 https://blog.csdn.net/liu_005/article/det ...

  3. PPAPI与Browser间使用AsyncIPC通信

    採用AsyncIpc这个项目(https://github.com/hicdre/AsyncIpc).来完毕PPAPI Plugin进程与Browser进程的通信. foruok原创.如需转载请关注f ...

  4. phpexcel导出后乱码或者是打不开文件必须修复的问题

    百度了一下找到了解决办法,只要在header前面加上ob_end_clean();这句代码,清除缓冲区,这样就可以了,完美的解决了我的问题

  5. YTU 2456: 评委打分

    2456: 评委打分 时间限制: 1 Sec  内存限制: 128 MB 提交: 283  解决: 52 题目描述  一个歌唱比赛,比赛每次会从观众中随即抽取几名观众给分(观众至少有5个,分数为0~1 ...

  6. linux防火墙过滤规则

    一.linux防火墙基础 防火墙分为硬件防火墙和软件防火墙. 1.概述 linux 防火墙体系主要工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙. 包过滤机制:netfil ...

  7. Spss22安装与破解教程

    Spss22安装与破解教程 Spss22安装与破解教程 1.下载安装包 可以去IBM官网.人大论坛等网站下载,全部文件应包括spss22安装包(含32位及64位)和破解文件,这里提供一个64位的百度网 ...

  8. 哈希表的C实现(二)

    上次大致分析了一下哈希表的链地址法的实现,今天来分析一下另一种解决哈希冲突的做法,即为每个Hash值,建立一个Hash桶(Bucket),桶的容量是固定的,也就是只能处理固定次数的冲突,如104857 ...

  9. codeforces round 421 div2 补题 CF 820 A-E

    A Mister B and Book Reading  O(n)暴力即可 #include<bits/stdc++.h> using namespace std; typedef lon ...

  10. 压缩&&解压

    压缩与解压缩: ############################################################# tar xvf wordpress.tar       ## ...