本地运行Web应用程序

我已经签约build立了一个日志服务(Web,Android和iOS),这个服务需要开发一个在Windows中使用的离线版本,如果可能的话,Ubuntu也是如此。 最终用户的Web界面和移动应用程序当前正在运行来自API网关+ Lambda(Node)+ RDS堆栈上承载的API端点的数据。 对于离线桌面应用程序,我想使用相同的浏览器客户端代码,并运行本地服务器作为API端点。 这就要求我有一个系统来在本地运行MySQL服务器,并有一个同步系统来将更新同步到本地服务器。

为了复制MySQL DB,build议使用什么解决scheme。 理想情况下免费。 由于我是重新devise项目的devise阶段,目前我正在接受任何types的build议,包括从MySQL转移。 数据完全是文本内容,现在大约8GB。 在接下来的两年里它将会慢慢扩大到30GB左右。

这是可能的,但并不容易。 我已经做了几次这样的变种,其中包括2个Linux和Windows系统的混合。 几个关键步骤:

1 – 将所有系统configuration参数 – 目录path,MySQL凭据,时区,API密钥等 – 放在一个文件中。 在每个PHP文件的顶部引用该文件(例如, require_once('serverinfo.php'); 。如果你做得对,你将得到的代码除了一个文件外,对于多个Linux和Windows系统,只要您在所有安装中使用类似的(例如5.x)PHP版本。

2 – 转移是一个痛苦,毫无疑问。 问题在于,由于不同的(而不是连续的)系统,你很可能不能使用任何官方的“复制”。 我使用了两种不同的方法,正确的答案取决于客户的要求。 如果转移主要是单向的,那么两者都是最好的。

a)添加一个更新时间戳和一个传输标志(如果有两个以上的服务器,则为多个)。 每当添加或更新logging时,都将时间戳设置为now()并且transfer = 1。 要传输数据,请select传输= 1的位置,并将所有内容都放入文本文件(CSV,JSON或您喜欢的任何格式)中,然后将其传输到其他系统(FTP,电子邮件等), 或者如果可以系统可以使用两台服务器之间的https接口来传输数据“live”。 接收时,第二台服务器检查时间戳,确保数据比已有的更新,并更新数据库。 如果传输是一个实时的https接口,发送消息回到第一台服务器,告诉它清除传输标志。 如果传输是基于文件的批处理模式,则传输标志需要在文件发送时重置(并希望传输到另一侧)。

b)每次你想转移的时候转储一切。 这可以是mysqldump或您自己写的一个等价物。 这比第一种方法简单得多,但一旦数据达到一定的大小,通常不会工作得很好,而且在这一点上可能已经有了8 GB的数据。