本文介绍云上灾备和多活的使用注意事项。
创建目标MongoDB实例之前,后台将重启源MongoDB实例,重启过程中后台会将gid加入Oplog中。
说明 如果源实例数据库较大,重启时间将可能达到分钟级。请确认应用程序具备重连机制并在业务低峰期进行操作。
数据一致性说明
- 灾备模式
只有一端写入数据,另外一端作为备份,则不存在一致性问题。
- 多活模式
建议对数据进行类似哈希的处理,不要同时操作同一个数据。主要是由于网络延时,如果两端同时修改同一数据,则可能存在数据一致性问题。
多活模式数据写入场景说明
为方便说明,以下对多活的两侧分别称为X和Y:
- 场景1:
用户在X侧将数据由A改到B,又在Y侧将数据由B改到C。那么在Y侧,第二条修改是否成功取决于同步的时间,假如因为网络延迟等原因造成第一次数据在第二次B修改到C的操作之后来临,那么第二次修改失败。反之,则修改成功。
- 场景2:
用户在X侧将数据由A改到B,然后又在Y侧将数据由A改到C。那么,可能有两种结果:
- Y侧中,第二次修改在第一次修改来临之后操作,那么第二条操作失败。
- Y侧中,第二次修改在第一次修改来临之前操作了。那么此时在X侧数据为B,在Y侧数据为C。然后会互相向对方进行同步,两条同步操作都将失败(双方都不存在A)。