作为初学者,要想取得进步,成为高手,首先应该了解自己的不足之处.
全部博文(117)
分类: Mysql/postgreSQL
2013-10-23 09:54:37
Multi-Master replication是指在集群中所有的节点都能够写入.如果你写错了数据库位置,也不用担心,它会定时做数据同步.
这是一直盼望的特性.
Percona XtraDB Cluster可以在任意节点写入,并且集群能够保证数据的一致性.写的数据要么在所有节点都提交,要么都不提交.下面用两个节点的示例说明一下(多个节点原理是一样的)
所有的查询都在本地的节点执行,只有在COMMIT的时候需要特殊处理.当COMMIT命令发出时,事务需要在所有节点通过认证.如果认证没有通过,那么客户端会返回一个报错.ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction
认证通过之后,就在本地节点执行.
COMMIT的响应时间由下面几部分组成:
注意 远程节点上执行事务不影响COMMIT的响应时间,因为它发生认证响应之后,并且在后台执行.
这种架构有两个重要的影响 :
COMMIT所描述的行为,还有第二层含义.如果执行的事务写到两个不同的节点上,集群会使用乐观锁(optimistic locking model),这意味着事务在单个查询中不会检查可能存在的锁冲突,但是,在提交阶段,你可能会得到错误响应.因为这是InnoDB的规则,你可能会遇到不兼容的情况.在查询时,经常会出现DEADLOCK和LOCK TIMEOUT的错误响应,而不是在提交时.在COMMIT之后,检查错误代码是一个非常好的方法,但是仍有很多程序不这样做.
如果你想使用Percona XtraDB Cluster在多个节点同时写入的功能,你可能需要处理COMMIT失败之后的返回信息.