我已经签订了建立期刊服务(Web,Android和iOS)的合同,该期刊服务需要开发在Windows中使用的离线版本,如果可能的话也需要Ubuntu。最终用户的Web界面和移动应用程序当前正在运行来自API网关+ Lambda(节点)+ RDS堆栈上托管的API端点的数据。对于脱机桌面应用程序,我想使用相同的浏览器客户端代码并运行本地服务器作为API端点。这要求我有一个系统来在本地运行MySQL服务器,并有一个同步系统来将更新同步到本地服务器。
为此目的,建议使用什么解决方案来复制MySQL数据库。理想情况下免费。由于我是重新设计项目的设计阶段,我现在对任何建议都持开放态度,包括从MySQL转移。这些数据完全是文本内容,现在约为8GB。它将在未来两年内缓慢扩展至约30GB。
答案 0 :(得分:0)
这是可能的,但并不容易。我已经做了几次变体,包括2个混合使用Linux和Linux的变体。 Windows系统。几个关键步骤:
1 - 将所有系统配置参数 - 目录路径,MySQL凭据,时区,API密钥等 - 放在一个文件中。在顶部引用该文件(例如,每个PHP文件的require_once('serverinfo.php');
。如果你做得对,你将得到的代码除了那个文件,相同多个Linux和Windows系统,只要您在所有安装中使用类似的(例如,5.x)PHP版本。
2 - 转移是一种痛苦,毫无疑问。问题在于,您很可能无法使用任何官方"复制"因为系统不同(而且不是经常连接)。我使用了两种不同的方法,正确的答案取决于客户的要求。如果转移主要是单向的,那么两者都能发挥最佳效果。
a)添加更新时间戳和传输标志(如果有超过2个服务器,则为多个)。无论何时添加或更新记录,都要将时间戳设置为now()和transfer = 1。要传输数据,请选择transfer = 1的位置,并将所有内容放入文本文件(CSV,JSON或您喜欢的任何格式)中,然后将其传输到其他系统(FTP,电子邮件等)或如果您可以在系统之间建立临时连接,则可以使用两个服务器之间的https接口来传输数据" live"。在接收时,第二台服务器检查时间戳以确保数据比您现有的数据更新并更新数据库。如果传输是实时https接口,请将消息发送回第一台服务器,告诉它清除传输标志。如果传输是基于文件的批处理模式,则在发送文件时需要重置传输标志(并希望它传递到另一端)。
b)每次要转移时都转储所有内容。这可以是 mysqldump 或您自己编写的等效文件。这比第一种方法简单得多,但是一旦数据达到一定的大小,通常不能很好地工作 - 而且你可能已经达到了8 GB的数据。