2011-10-22 46 views
2

目前我们有一个主mysql服务器,通过3G连接每隔1小时连接100个远程移动设备[车辆] [不是非常可靠:每天在进行同步时断开连接几辆车]。通过.net windows服务工具完成同步。在检查远程mysql状态之后,主机开始执行同步。有时同步有效载荷数据大约是6-8 MB。仅使用非事务性方法为一个表执行同步。在使用最佳实践:mysql远程移动设备通过3G连接同步

MySQL服务器版本为:4.1.22

问题

  1. 是它使同步事务知道只有一个表中获取同步有用吗?或没有增值!

  2. 用mysql语句加载到远程机器的同步数据:

    LOAD DATA LOCAL INFILE

    的文件格式是CSV。我如何以压缩格式发送数据?没有开发驻留在远程设备上的工具。

  3. 在同步域中部署远程应用程序是否是良好的实践或体系结构,它将在发送数据后执行同步,或者它应该由主服务器直接完成?我的意思是,将驻留在远程机器上的工具的开发很难更新或修复,以防出现新的需求。但它可以为同步操作节省大量带宽,并且可以消除在同步正在进行时发生断开连接时由实时主同步引起的错误。所以如果这是建议,那么只有压缩数据将被发送,然后通过使用某种校验和我会验证整个数据发送,否则请求将再次启动。

请分享您的想法和经验。

感谢,

+0

你的问题不清楚。每个客户端都直接与mysql服务器通话,或者每个客户端都使用一种RESTful连接到与mysql会话的后端服务器(可以是任何,php页面,自定义python,C++服务器)。你究竟想要完成什么?您是否主要担心发生的错误(数据未正确通过?)。通过后端RESTful服务器可以消除大部分问题,因为在数据输入到数据库之前,您可以检查数据是否正确...... – g19fanatic

+0

此外,它看起来像服务器正在启动同步,而不是客户端,我会改变这一点,客户端发起W /只是处理数据的服务器...一个更加前瞻性和可扩展的方法。 – g19fanatic

+0

@ g19fanatic目前主mysql通过windows service app [.net,dev in-house]连接到每个客户端mysql。我在第一段中讲过。所以没有使用RESTful后端。关于第二点,是的服务器启动同步。所以你说如果客户端init更加前进!你能否在服务器 - 客户端同步操作的架构标准下证明这一点。 –

回答

1

首先,我会改变方式,以客户inited同步VS服务器inited同步。多对一和多对一的方式将比目前的设置更容易扩展。我上面的评论给出了一些必要的客户端到服务器同步的例子。

其次,打开交易记录条目。没有理由不拥有它。这将保证信息及时输入,并能够提供更多的“元数据”(例如哪些客户端更新速度慢等)。

最后,您可以通过对其进行不同的观察来“增强”该上传。如果您要在服务器端实现一种通过客户端通过POST接收响应的服务,则可以将数据发送到服务器端,而不会出现任何问题。这就像'上传'一个文件到服务器。一旦您的6-8 MB文件被“上传”,它就会被放入数据库。关于这一点的好处是,如果你的服务器是一个APACHE(或者甚至在你的情况下是一个IIS服务器),你可以让每一个客户端在同一时间上传数据,而没有太多问题。在这一点上,通过插件上传到MySQL服务器几乎不需要任何时间,并且您的过程将继续进行而不会出现问题。

这是我处理你的情况的方式......