微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 将主数据库复制到不同的从属

我有一个数据库,它将是由不同学校组成的云服务器.

Dashboard type that has the details of each school. Can edit their information and other data.

现在,这些学校被部署到相应的学校位置,这将是本地服务器.

Dashboard type that can only edit the specific school deployed in the local server. Can edit their information and other data.

现在我想要发生的是,如果发生了变化,将云同步到相应学校的本地服务器.这也适用于本地云服务器.

Note: If you guys ever tried Evernote,that can edit the notes information on whatever device you’re using and still be able to
synchronize when you have internet or manually clicked synchronize.

When the local server doesn’t have internet connection and edited some data in school. Once the internet is up,the data from local and cloud server should be synchronize.

That’s the logic that I’m pursuing to have.

有人会为我开始从哪里开始?我想不出任何适合我的问题的解决方案.

我还想到使用PHP来遍历整个表和对应于当前日期和时间的数据.但我知道那会很糟糕.

编辑:我删除了有关此事的其他SO问题的参考/帖子.

我找到的应用程序挂钩

> Evernote
> Todoist

服务器:

>本地服务器计算机:Windows 10(部署在学校)
>云服务器:可能是一些使用PHPmyadmin的专用主机

不要挑剔,但希望答案是你正在和新手谈论掌握到奴隶数据库的过程.我没有这方面的经验.

当我们习惯这样做时,我们会:

>确保我们要同步的每个表都具有Created的日期时间列;改性; &安培;删除.它们也有一个布尔的isDeleted列(因此,不是物理删除记录,我们会将其标记为true并在查询中忽略它).这意味着我们可以查询自特定时间以来已删除的任何记录,并返回这些已删除ID的数组.
>在每个DB(主服务器和从服务器)中创建一个存储上次成功同步日期时间的表.在master中,这个表存储了多个记录:每个学校1个,但在slave中只需要1个记录 – 最后一次与master同步.

在你的情况下,每个奴隶每隔一段时间就会:

>调用主服务器的Web服务(URL),称为“helloMaster”.它将传递学校名称(或某些特定标识符),他们最后一次成功与主人同步,身份验证详细信息(为了安全),并期望主人回答主人是否有自该日期以来学校的任何更新提供.这里的重点只是寻找主人可用和收听的确认(即互联网仍在运行).
>然后,奴隶会打电话给另一个网络服务,让我们称之为’sendUpdates’.它将再次传入学校名称,上次成功同步,(加上安全认证详细信息)&自上次同步以来,任何添加,更新和删除记录的三个数组.主人只是确认收到.如果确认收据,则从属设备移动到步骤3,否则从属设备将在暂停一段时间后再次尝试步骤1.所以现在Master拥有来自奴隶的更新.注意:如果与其挂起的从属更新存在冲突,则由主服务器决定如何合并任何记录.
>奴隶然后调用web服务,让我们说’getUpdates’.它传递学校名称,安全认证详细信息,&然后,主服务器返回三个数组,用于任何添加,更新和删除的记录,其中奴隶应该应用于其数据库.
>最后,一旦奴隶试图更新其记录,它将通过另一个网络服务通知主人成功/失败,比如’updateStatus’.如果成功,则主服务器将返回一个新的同步日期供从服务器存储(这将与主服务器在其表中存储的日期完全匹配).如果失败则会在主服务器中记录错误,我们会在暂停后返回步骤1.

我遗漏了一些关于错误处理的细节,让所有设备的时间准确(可能涉及不同的时区),以及其他一些零碎,但这就是它的要点.

我可以在考虑更多(或其他人可能编辑我的帖子)之后进行改进.

希望至少有所帮助.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐