我是mysql新手。
当涉及到故障转移时,哪个奴隶应该被提升为新的主人?
例如,A是master,B和C是slave,A执行与B和C的异步复制。
在某些时候,B从A接收的数据多于C,A崩溃。
如果我们将C推广到新的主人,并将B的主人改为C,那么B会发生什么?它会截断其数据以匹配C?
显然,B是最好的新候选人,但我的问题是,如何确定这一事实?
答案 0 :(得分:2)
从MySQL documentation开始,有两种方法可以设置主从架构。传统方式,使用日志文件复制事务和使用GTID(全局事务标识符)的新版本(5.6+)。
如果您选择使用GTID进行故障转移处理,您将使用mysqlfailover实用程序。该实用程序以数据库管理员定义的三种方式之一处理master的失败:
传统方式要求您实现自己的脚本以进行数据库管理,并且更好地解释here。
答案 1 :(得分:0)
Relay_Master_Log_File
中的Exec_Master_Log_Pos
和SHOW SLAVE STATUS
用于确定最佳奴隶为新主人:更大的价值取胜。
如果没有GTID,我认为我们必须首先将其他奴隶与我们选择的最佳奴隶同步。显而易见的同步源是中继日志。在每个从站上,确定中继日志与最佳从站的差异,下载这些文件并重播SQL语句。一旦所有奴隶赶上来,奴隶就可以CHANGE MASTER TO
成为最好的奴隶。 MASTER_LOG_FILE
和MASTER_LOG_POS
将是最佳奴隶上最后一个binlog的尾部。
使用GTID,非常简单:仅CHANGE MASTER TO
MASTER_AUTO_POSITION=1
。