我是mysql新手。
在进行故障转移时,应将哪个从设备提升为新的主设备?
例如,A是主设备,B和C是从设备,A向B和C执行异步复制。
在某个时间点,B从A接收的数据比C多,A崩溃。
如果我们将C提升为新的master,并将B的master更改为C,那么B会发生什么?它会截断它的数据以匹配C?
显然,B是最好的新硕士候选人,但我的问题是,如何确定这一事实?
发布于 2017-06-08 01:12:34
在MySQL documentation中,有两种方法可以设置主从体系结构。传统方式,使用日志文件复制事务,并使用GTID(全局事务标识符)复制新版本(5.6+)。
如果您选择使用GTID进行故障转移处理,您将使用mysqlfailover实用程序。该实用程序以数据库管理员定义的三种方式之一来处理master的故障:
将仅监视数据库,并在发生故障时返回错误。most
传统的方法要求您实现自己的数据库管理脚本,here对此有更好的解释。
发布于 2017-06-11 18:46:52
SHOW SLAVE STATUS中的Relay_Master_Log_File和Exec_Master_Log_Pos用于确定最好的从节点作为新的主节点:取值越大越好。
如果没有GTID,我认为我们必须首先将其他从属与我们选择的最好的从属同步。显而易见的同步源是中继日志。在每个slave上,确定中继日志与最佳slave的差异,下载这些文件并重播SQL语句。一旦所有的奴隶都赶上了,这些奴隶就可以CHANGE MASTER TO最好的奴隶了。MASTER_LOG_FILE和MASTER_LOG_POS将是最好的从服务器上最后一个binlog的尾部。
有了GTID,事情就很简单了:只需要使用MASTER_AUTO_POSITION=1的CHANGE MASTER TO。
https://stackoverflow.com/questions/43960577
复制相似问题