企业如何通过vue小程序开发满足高效运营与合规性需求
339
2023-12-25
MySQL GTID复制的优缺点分别是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
GTID(Global Transaction ID)是对于一个已提交事务的编号,并且是一个全局唯一的编号。
GTID实际上是由UUID+TID组成的。其中UUID是一个MySQL实例的唯一标识。TID代表了该实例上已经提交的事务数量,并且随着事务提交单调递增,最初由google实现,官方MySQL在5.6才加入该功能。
GTID是事务提交时创建分配的唯一标识符,所有事务均与GTID一一映射。
GTID的优点:
1.根据GTID可以知道事务最初是在哪个实例上提交的
2.GTID的存在方便了Replication的Failover
GTID的缺点:
1.GTID 模式实例和非GTID模式实例是不能进行复制的,要求非常严格,要么都是GTID,要么都不是
2.gtid_mode 是只读的,要改变状态必须1)关闭实例、2)修改配置文件、3) 重启实例
3.更新非事务引擎表
在同一事务中更新事务表与非事务表将导致多个GTIDs分配给同一事务
GTID的三个限制:
enforce-gtid-consistency=ON时,以下三类语句时不支持的
CREATE TABLE ... SELECT statements
CREATE TEMPORARY TABLE or DROP TEMPORARY TABLE statements inside transactions
Transactions or statements that update both transactional and nontransactional tables. There is an exception that nontransactional DML is allowed in the same transaction or in the same statement as transactional DML, if all nontransactional tables are temporary.
而实际上这个限制没有必要这么严格,
CREATE TABLE ... SELECT statements
对于binlog_format=row, gtid_next=automatic时可以放开限制。
生成的binlog包含两个GTID, 一个是建表语句,一个是包含多个insert的事务。
事务中包含事务表和非事务表
对于gtid_next=automatic时可以放开限制。
生成的binlog包含两个GTID, 一个是所有非事务表的,一个是所有事务表的。
对update多表(包含事务表和非事务表)此时需额外要求binlog_format=row。
关于MySQL GTID复制的优缺点分别是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~