关于在产品环境中使用 MySQL 5.6 GTIDs 的一些问答

Q:在master-master结构中GTID有什么优势?如果有, 它是如何做的?
Q:GTID可以应用到MySQL的ACTIVE ACTIVE MASTER MASTER结构上吗?

A:GTID不会改变MySQL数据复制的本质:比如在配置GTID之后,数据复制同样是异步的;如果向master-master结构上的两个 master写入数据,GTID同样没有写冲突检测机制.GTID的主要优势在于能够很容易的改变数据复制的拓补结构,当连接一个slave节点到新的 master节点时不再需要为了找到正确的binlog的位置而做一些复杂的计算.
在master-master数据复制的结构中可以配置GTID, 相对于基于位置的数据备份,GTID并不没有很多的优势,因为你不会改变数据备份的拓补结构.
GTID同样不推荐在两个master都可接受数据的结构中向两个master都写入数据.


Q:GTIDs在主机:备用主机上运行的好吗?失效备援有多快?

A:是的,GTIDs能够很好的处理这种类型的设置(一个主机一个备机)。GTIDs不提供失效备援,必须使用一个额外的工具才行。失效备援的速度取决于使用的工具。


Q:对于已经建立的MASTER-MASTER/MASTER-SLAVE复制,在GTID设置后,我们需要使用 AUTO POS=1重新建立复制,对吗?

A:是的,使用 MASTER_AUTO_POSITION=1 是需要指出将要使用GTID复制。所以必须运行:STOP SLAVE; CHANGE MASTER TO … MASTER_AUTO_POSITION = 1; START SLAVE;


Q: GTID是怎么处理那些应用的,这些应用拥有来自不同引擎(比如:InnoDB和MyISAM)的数据表?

A: 事务不能同时用于MyISAM和InnoDB表,请参照文档.


Q:在master-slave备份的拓补结构(GTID是可用的)中,如果master节点上的二进制日志被删除,并且使用AUTO_POSITION=1改变了master命令的情况下, slave节点是怎么从master节点上获取数据的?

A: 备份将被中断,并抛出1236错误.


Q: 在slave节点上有什么值表示该节点的数据滞后了?

A: 是用Seconds_Behind_Master表示的.虽然它不是非常可靠.比如你有一个这样的备份序列 A -> B -> C, 在C节点上的Seconds_Behind_Master表示的滞后是相对于B节点,而不是A节点. 


Q: 如果我们设置slave为只读…是否建议删除错误事务?

A是的,建议删除。不过这不阻止用户使用SUPER权限在slave上意外写入。


Q:这些错误事务问题可以用 (active-passive) master-master复制阻止吗?

A:Master-master复制将确保任何事务写入一个服务将自动结束在另一个slave上写入。所以它就像在避免错误事务。不过不建议在两个master上写入,因为你会遇到写冲突。


Q:在MHA上使用GTID有什么实用的优势吗?

A:GTID不提供任何方法执行failover,他们只是简化你怎样重新配置复制。所以使用MHA利用GTID是有意义的。


Q: GUID 和 GTID的区别是什么?什么时候我们必须使用GUID 和 GTID?

A:我不确定我是否正确的理解了这个问题。GTID由源 id 和事务 id 组成。源 id 是master的server_uuid,是当MySQL首次启动时自动生成的 GUID。


Q:怎样检查slave数据库表和记录?我们必须从master到salve数据库同步数据还是自动进行?

A:你可以使用Percona工具包的 pt-table-checksum 和 pt-table-sync。


转自:http://www.oschina.net/translate/using-mysql-5-6-global-transaction-ids-gtids-in-production-qa



你可能感兴趣的:(关于在产品环境中使用 MySQL 5.6 GTIDs 的一些问答)