Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » MobiLink - 入门 » MobiLink 技术简介 » 了解 MobiLink 同步 » 同步过程

 

如何处理同步失败

MobiLink 同步具有容错能力。例如,如果通信链接在同步过程中失败,远程数据库和统一数据库的状态将保持一致。

在客户端,故障由一个返回代码指示。

同步失败的处理方式依发生时间的不同而异。以下情况采用不同的方式进行处理:

  • 上载中的故障   如果在建立或应用上载时出现故障,远程数据库的状态将与同步开始时的状态完全相同。在服务器端,任何已应用的上载部分将被回退。

  • 上载和下载之间的故障   如果故障在上载完成之后、MobiLink 客户端接收到下载之前发生,客户端将无法确定上载更改是否成功地应用到统一数据库中。上载可能已被全部应用并提交,故障也可能出现在服务器应用整个上载之前。此时 MobiLink 服务器会自动回退统一数据库中的未完成事务。

    MobiLink 客户端保留所有已上载更改的记录,以防备出现必须再次发送这些更改的情况。下一次客户端同步时,它会在创建新的上载之前请求上一个上载的状态。如果没有提交上一个上载,则新的上载将包含自上次上载时起发生的所有更改。

  • 下载中的故障   如果应用下载时远程设备发生故障,则所有已应用的下载部分都将回退,而远程数据库将与下载前保持相同的状态。

    如果正在使用阻塞下载确认,则 MobiLink 服务器也会回退统一数据库中的已下载事务。

    如果正在使用非阻塞下载确认,则下载事务已经提交,但既不调用 nonblocking_download_ack 脚本,也不调用 publication_nonblocking_download_ack 脚本。

    如果不使用下载确认,则服务器端不受下载故障影响。

在所有可能发生故障的情形中,数据都不会丢失。这将由 MobiLink 服务器与 MobiLink 客户端为您进行管理。开发人员或用户不必对保持应用程序中的数据一致性而担忧。