MySQL故障转移:如何选择奴隶作为新的主人?
问题描述:
我是mysql新手。MySQL故障转移:如何选择奴隶作为新的主人?
说到故障切换时,应该将哪个从站升级为新的主站?
例如,A是主,B和C是从站,和A确实异步复制到B和C.
在的某个时间点,B从A比C,A崩溃接收更多的数据。
如果我们将C升为新主人,并将B的主人改为C,那么B会发生什么?它截断其数据以匹配C?
显然,B是最好的新主人选,但我的问题是,如何确定这个事实?
答
从MySQL documentation有两种建立主从架构的方法。使用日志文件复制事务的传统方式和使用GTID(全局事务标识符)的新版本(5.6+)。
如果您选择使用GTID进行故障转移处理,您将使用mysqlfailover实用程序。该工具能够掌握的失败在由数据库管理员定义的三种方式之一:
- 自动(默认值):搜索是在首选奴隶的列表中进行成为高手,如果没有可用的另一个从选择。被选中的奴隶首先成为所有其他奴隶的奴隶,并将其他奴隶的所有变化复制到奴隶,这样新的主人将成为最新版本的可能。
- 选:与以上相同,不同之处在于,如果没有从列表中的奴隶都可以返回一个错误,并且完成(无故障转移)
- 失败:没有故障发生mysqlfailover只会监控数据库,并返回,如果一个错误失败发生。
传统的方式要求您实施自己的脚本来进行数据库管理,更好地解释here。
答
Relay_Master_Log_File
和Exec_Master_Log_Pos
in SHOW SLAVE STATUS
用于确定最佳奴隶作为新的主人:更大的胜利。
没有GTID,我认为我们必须首先将其他奴隶与我们选择的最好的奴隶同步。明显的同步源是中继日志。在每个从站上,确定最佳从站的中继日志的差异,下载这些文件并重播SQL语句。一旦所有的奴隶赶上来,奴隶们就可以成为最好的奴隶。 MASTER_LOG_FILE
和MASTER_LOG_POS
将是最佳从站上最后一个binlog的尾部。
随着GTID,它非常简单:只需CHANGE MASTER TO
与MASTER_AUTO_POSITION=1
。
http://stackoverflow.com/questions/14116488/master-slave-configuration归因于 –
问题......这是一个小问题,因为在理解答案之前你需要理解这个问题:你在复制基于二进制日志坐标或全局事务标识符(GTID)? –
@ Michael-sqlbot你能解释一下吗? – kingluo