我正在检查Azure sql数据库的Azure数据同步功能,并观察到数据没有正确同步。
场景:我已经创建了一个同步组,它有一个集线器机器[Hub1]和两个数据库,一个在同一个数据中心[DB1],另一个来自其他数据中心[DB2]。
案例:我对DB2的一个表进行了修改,并触发了ran sync来进行数据库同步。在同步之后,当我检查数据库时,我观察到只有Hub1表数据根据DB2被修改,而DB1没有被修改。
当我再次触发数据库同步时,只有DB1根据DB2的变化被修改。
根据我的理解和期望,在一次同步操作中,Hub1和DB1都应该按照DB2中的修改得到修改。
为什么这个数据不匹配的问题?
是的,你遇到的情况是可能的。对于一个hub-2成员同步,它实际上会触发两个对对同步:[Hub1] <-> [DB1]和[Hub1] <-> [DB2]。但是哪一对先同步的顺序是随机的。
所以在您的情况下,大多数情况下[Hub1] <-> [DB1]首先被触发,但发现没有更新,因为[Hub1]和[DB1]之间的数据是相同的。然后触发[Hub1] <-> [DB2]。所以[Hub1]更新了,但[DB1]仍然没有改变。但是,如果您更改[Hub1]上的数据,而不是成员上的数据,则不会发生此问题。
建议在2个成员时设置定时同步或手动同步两次,以保证一致性。
问候,加里。