`
丁林.tb
  • 浏览: 790574 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

MySQL 小众参数 report-系列

阅读更多

今天有同事问show variables 中的report_port 是什么意思:"明明端口是设置成3307,为什么这还写着3306"。简单写下。

 

1、作用

在主从环境下,我们可以用show slave status看当前从库连接的主库信息,若反过来,主库要看当前是有哪些从库连着自己呢?

 

2Show slave hosts命令

这个命令在主库执行,命令功能是列出当前连接自己的从库。不过若你现在去试一下,可能会发现返回的是空。

其原因是从库连上来的时候,并没有“报告”自己的位置。尤其是从库本身的端口,与建立主从联系的过程无关。

因此要能够在主库中列出从库位置,只能依靠从库自己连接的时候汇报。

 

3report-系列

Report系列是设置在从库上的,包含四个参数 report-[host|port|user|password]. my.cnf中设置了report-host时,在从库执行start slave的时候,会将report-hostreport-port(默认3306)发给主库,主库记录在全局哈希结构变量 slave_list 中。

 

如果想要连report-userreport-password也显示出来,则需要主库配置参参数show-slave-auth-info

 

4存在的问题

a) 这套参数的似乎很少被使用到,以至于有一个明显的bug:当从库退出或者stop slave时,从主库上的show slave hosts结果仍然能看到它。

翻代码发现在从库线程退出的时候,就没去调退出注册函数(unregister_slave)

 

b) 存在的另外一个问题是,我们知道同一个maser的多个slave之间是允许server-id相同的(虽然这不太规范),而由于这个slave_listhash keyserver-id,所以当出现两个slaveserver-id相同时,后面注册的slave无法显示在masterslave hosts列表中。

 

c)主库直接接收从库的配置结果,并不作检验,甚至于report-port填写的ip不符合规范都能直接列出来。 这样若配置规范还好,配置不规范反倒造成误解。

 

这套参数的用处似乎还未被开发出来,问题也不少,无怪乎官方文档中强调:

If you are not sure, do not use this option.”

如果没列出从库的需求,就无视好了。

==== 补充 ====

同一个master上若有相同id的slave,可能会在从库上报“received end packet from server, apparent master shutdown: ”。

 

 

0
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics