MySQL FailOver(官方自带,free)

为什么

传统复制和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 [email protected] 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:[email protected] --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了

时间: 2024-11-05 22:02:19

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

websocket实战(4) websocket版贪食蛇游戏(tomcat官方自带)

websocket实战(1) 入门 websocket实战(2) 信息处理发送.接收和编码 websocket实战(3) 错误处理及配置管理 通过前面3篇的阐述,相信可以构建一个简单的socket应用了.当然,也会遗漏了许多知识点,相信会在以后分享的实例中捎带说明下. 本文的主要是分析下tomcat官方自带的贪食蛇游戏.为什么选择分析这个项目呢. 贪食蛇游戏规则,人人明白,业务方面不需要过多解释(当然这款websocket版的游戏规则也有一定特色). 游戏设计简单,一个对象足以完成游戏,但不涉及

高级系统架构设计官方教材(带目录),免费拿走

高级系统架构设计官方教材(带目录)下载地址:点此下载以下为目录截图: 高级系统架构设计官方教材(带目录),免费拿走 原文地址:https://www.cnblogs.com/dabear/p/9265995.html

更新CentOS Mysql到官方较新版本[以6.5为例]

需求来源: CentOS: 6.9 x64 自带mysql版本较旧,需要卸载后安装到5.6版本. 1.查看目前mysql 版本 2.如果发现有系统自带mysql,而且比想要装的5.6旧.果断删除 # yum -y remove mysql-libs.x86_64    若有多个依赖文件则依次卸载.当结果显示为Complete!即卸载完毕 3. 查看yum库上的mysql版本信息(CentOS系统需要正常连接网络). 输入:yum list | grep mysql            或 yu

树莓派官方自带gpio中断驱动bcm2708_gpio.c原理分析 linux 中断架构 中断子系统

上一篇记录了树莓派自带的gpio驱动(http://www.cnblogs.com/umbrellary/p/5164148.html),在bcm2708_gpio.c实现gpio驱动的同时其实也实现了中断控制器的驱动,本文记录bcm2708_gpio.c中驱动的实现. 一·bcm2708_gpio_irq_init中断初始化函数建立gpio中断描述表 static void bcm2708_gpio_irq_init(struct bcm2708_gpio *ucb) { unsigned i

mysql: update字段中带select

update字段中带select UPDATE tb_report_type A INNER JOIN (SELECT LEVEL_CODE FROM tb_report_type WHERE id = 'ED894BE001CE4F47A2916287A491B4E1') BSET A.LEVEL_CODE = CONCAT(B.LEVEL_CODE,'-',A.id) WHERE A.PARENT_ID = 'ED894BE001CE4F47A2916287A491B4E1'

MySQL中查看自带的SQL模式

Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9450 Server version: 5.6.24-log MySQL Community Server (GPL) Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a

android官方自带下拉刷新功能

最近想写下拉刷新功能,网上找的第三方框架最著名的pullToRefresh也早在2013年停止维护了,偶然间发现谷歌公司早已推出了自家的下拉刷新功能,位于v4包中,效果请看下图: 使用的就是android.support.v4.widget.SwipeRefreshLayout控件,使用方法也很简单,首先把需要下拉刷新的listView放入SwipeRefreshLayout中,代码如下: xml布局: <android.support.v4.widget.SwipeRefreshLayout

Solr教程--官方自带数据的三个练习及讨论翻译版本

Solr教程 在你开始之前 解压Solr 练习1:索引Techproducts示例数据 在SolrCloud模式下启动Solr 索引技术产品数据 基本搜索 练习1总结 练习2:修改架构和索引影片数据 重新启动Solr 创建一个新的集合 索引样本电影数据 刻面 练习2总结 练习3:索引自己的数据 创建你自己的收藏 索引的想法 更新数据 删除数据 练习3总结 空间查询 包起来 清理 下一步在哪里? 本教程涵盖了Solr的启动和运行,将各种数据源摄入多个集合,并感受Solr管理和搜索界面. 它被组织成

mysql数据库创建删除带横杠的数据库名

mysql> create database d-d; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-d' at line 1 1064报错:该错误一般出现在表名或者字段名设计过程中出现了mysql关键字导致的.问题确定是数据库名字的