MySQLfailover错误一则
由于公司现有主库要转移到新的主库上,所以,我打算利用MySQLfailover工具的故障转移。
1、开发把程序账号转移到新主库上
2、停止现有主库,使之进行故障转移,转移期间会自动锁表,保持数据一致性。
3、查看转移状态,检查是否转移成功
在启动MySQLfailover的时候,报错:
The master and one of the candidates are the same host and port.
大概意思是说主库和候选机使用了相同的端口和host。
检查MySQLfailover源码:
# Parse the master, slaves, and candidates connection parameters
try:
master_val, slaves_val, candidates_val = parse_topology_connections(
opt)
except UtilRplError:
_, e, _ = sys.exc_info()
print("ERROR: {0}".format(e.errmsg))
sys.exit(1)
# Check hostname alias
for slave_val in slaves_val:
if check_hostname_alias(master_val, slave_val):
parser.error("The master and one of the slaves are the same "
"host and port.")
for cand_val in candidates_val:
if check_hostname_alias(master_val, cand_val):
parser.error("The master and one of the candidates are the same "
"host and port.")
这段是报错的代码,可以看到是一段异常捕获代码,这里调用了check_hostname_alias()这个函数。查找开头引用:
from mysql.utilities.common.server import check_hostname_alias
可以看到是引用了server文件里的check_hostname_alias方法。进入common目录下查看:
/usr/lib/python2.6/site-packages/mysql/utilities/common
查看server.py文件:
def check_hostname_alias(server1_vals, server2_vals):
server1_vals[in] connection dictionary for server1
server2_vals[in] connection dictionary for server2
Returns bool - true = server1 and server2 are the same host
"""
server1 = Server({'conn_info': server1_vals})
server2 = Server({'conn_info': server2_vals})
server1_socket = server1_vals.get('unix_socket', None)
server2_socket = server1_vals.get('unix_socket', None)
if server1_socket:
server1.connect()
server1.disconnect()
if server2_socket:
server2.connect()
server2.disconnect()
return (server1.is_alias(server2.host) and
int(server1.port) == int(server2.port))
可以看出,这段代码主要是检查主库和候选机的端口和host,如果相同,则返回一个true。
如果返回true,则会触发到异常捕获代码,从而报错。
可以肯定是因为新主库没有设置Host名称所导致的错误。
这里可以编辑一下check_hostname_alias这个方法,让他返回一个flase就可以了。改成这样:
return (server1.is_alias(server2.host) and
int(server1.port) == int(3333))
然后启动MySQLfailover进程,发现不会报错,正常运行了。
MySQLfailover错误一则的更多相关文章
- 航空概论(历年资料,引之百度文库,PS:未调格式,有点乱)
航空航天尔雅 选择题1. 已经实现了<天方夜谭>中的飞毯设想.—— A——美国2. 地球到月球大约—— C 38 万公里3. 建立了航空史上第一条定期空中路线—— B——德国4. 对于孔明 ...
- Keepalived + MySQLfailover + GTIDs 高可用
架构图 10.1.1.207 mysql master + keepalived 10.1.1.206 mysql slave ( backup master ) + ke ...
- 日期格式代码出现两次的错误 ORA-01810
错误的原因是使用了两次MM . 一.Oracle中使用to_date()时格式化日期需要注意格式码 如:select to_date('2005-01-01 11:11:21','yyyy-MM-dd ...
- ASP.NET Core应用的错误处理[3]:ExceptionHandlerMiddleware中间件如何呈现“定制化错误页面”
DeveloperExceptionPageMiddleware中间件利用呈现出来的错误页面实现抛出异常和当前请求的详细信息以辅助开发人员更好地进行纠错诊断工作,而ExceptionHandlerMi ...
- ASP.NET Core应用的错误处理[2]:DeveloperExceptionPageMiddleware中间件如何呈现“开发者异常页面”
在<ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式>中,我们通过几个简单的实例演示了如何呈现一个错误页面,这些错误页面的呈现分别由三个对应的中间件来完成,接下来我们将 ...
- 实时的.NET程序错误监控产品Exceptionless
Exceptionless可以对ASP.NET, Web API, WebForms, WPF, Console, 和 MVC 应用提供错误监控.上传.报表服务.使用时需要在Exceptionless ...
- 一个粗心的Bug,JSON格式不规范导致AJAX错误
一.事件回放 今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里. 当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json ...
- SQL Server 致程序员(容易忽略的错误)
标签:SQL SERVER/MSSQL/DBA/T-SQL好习惯/数据库/需要注意的地方/程序员/容易犯的错误/遇到的问题 概述 因为每天需要审核程序员发布的SQL语句,所以收集了一些程序员的一些常见 ...
- C# - 值类型、引用类型&走出误区,容易错误的说法
1. 值类型与引用类型小总结 1)对于引用类型的表达式(如一个变量),它的值是一个引用,而非对象. 2)引用就像URL,是允许你访问真实信息的一小片数据. 3)对于值类型的表达式,它的值是实际的数据. ...
随机推荐
- LVS-DR VIP和RIP不同网段的配置方法
http://blog.itpub.net/25723371/viewspace-1446935/
- python异常之EOFError: Ran out of input
出现该问题一般是由于你在以写模式打开文件后未关闭的情况下又去以读模式操作该文件时报的错误 # coding = utf-8 import pickle #定义一个boy类 class boy(): d ...
- python模块之struct
# #********struct模块********# # 1.按照指定格式将Python数据转换为字符串,该字符串为字节流,如网络传输时, # 不能传输int,此时先将int转化为字节流,然后再发 ...
- IIS7文件无法下载问题处理
使用IIS建立了静态站点,内部放置了一些文件供内部局域网下载使用,但deb等文件格式无法下载. 解决办法: 1.在IIS管理器中点击站点,选择右侧的MIME类型. 2.在MIME类型中添加需要下载文件 ...
- 简单了解junit的使用
普通使用: 在没有用测试框架之前,我们要用一个main方法来跑代码,而有了像junit这样的测试框架后,就可以不用次次写个main方法了. 直接上代码,注释里有说明: package com.stuP ...
- 关于@Mapper和@Repository的一点小理解
参考博客:https://blog.csdn.net/lalioCAT/article/details/51803461 如果在接口上@Mapper,然后再在 xml中的namespace指向mapp ...
- POJ - 3020 Antenna Placement 二分图最大匹配
http://poj.org/problem?id=3020 首先注意到,答案的最大值是'*'的个数,也就是相当于我每用一次那个技能,我只套一个'*',是等价的. 所以,每结合一对**,则可以减少一次 ...
- PM2常用命令
安装pm2 npm install -g pm2 1.启动 pm2 start app.js pm2 start app.js --name my-api #my-api为PM2进程名称 pm2 ...
- P1201 [USACO1.1]贪婪的送礼者Greedy Gift Givers
题目描述 对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少.在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那些将收到他的礼物的人.然而,在任何一群朋友中 ...
- CSS Secrets 翻译笔记 01: CSS coding tips
.firDemoButton{ padding: 6px 16px; border: 1px solid #446d88; background: #58a linear-gradient(#77a0 ...