我正在build立一个考勤系统。 大约有20个人使用MIFARE 1K卡办理入住和退房手续。 它将使用MySQL作为数据库。 系统在用户首次login时显示“#ID IN:800AM”,用户登出时显示“#ID OUT:400PM”。 为了这个工作,所有的数据库都需要一直同步 。
例如,如果用户A去了位置#1来登记,但是到了用户想要返回的时间,则位置#1的服务器closures了,用户需要去位置#2或最近的服务器去检查出。 由于用户已经签入,位置#2的服务器应显示“#ID OUT:400PM”而不是“#ID IN:400PM”
那么,我应该用什么来确保这个想法起作用呢? 我主要关心的是networking(其他部门pipe理它),这是非常不可预测的。 它只是喜欢随时要下去。
更新
大声笑,我没有意识到我的问题不清楚。 当我指出这一点时,我只是注意到了,对此感到遗憾。
我真正的问题是, 我怎么能configuration我的MySQL相互同步(20台服务器)? MySQL集群? (我试着读过,但我不确定是否正确。)
我目前的设置(第一阶段):
主要优点
主要缺点
顺便说一句,我已经集中我的NTP到本地服务器。 关于networking,我们只是说, 我没有权力进行修改,以便networking更好 。 networking一次不会影响所有20台服务器,通常只有几台服务器每周数次。
如果还有什么你想要我回答,请问。
我想你在问:我怎么能有自动故障转移的多主数据库。 如果这不是你的问题,那么请澄清。 如果这是你的问题,然后阅读。
事实上,我写了一个Web应用程序,除了不使用Mifare 1K卡,它使用简单的条形码卡(它被称为LATRIX,可从sourceforge,我希望这不是太多插入) 。
这里的主要问题是,如果你的networking连接到运行前端的实际计算机时,你就有点塞了。 你当然可以运行一个本地数据库,并实现一些同步机制回到主数据库,但只要同步不工作(由于没有networking),你没有机会得到这个权利。
因此,首先要做的是确保您拥有可靠的networking连接。 没有这个,你总是会奋斗。 LATRIX不使用本地数据库或多主数据库,只是检查与数据库服务器的networking连接是否正常工作。 如果没有,前端terminal变为被动(即用户不能检查我们),因为我找不到一个合适的解决scheme,不可用的networking连接。
它只是喜欢随时要下去
当一些聪明的人devise互联网时,就是要提供一个强大的通讯媒体,即使在全面的核战争中也能继续运作。 虽然这可能会在ebay上引起一些狙击招标的问题,但是很多历史性的应用程序协议仍然非常有效。
你已经提供了很多关于你的系统打算做什么的信息,但是你没有提出任何具体的问题。 假设你问的是如何保持时钟同步,那么最好的方法是使用networking时间协议 (NTP)。 请注意,几乎每个应用程序都读取操作系统时钟以获取时间(但这不一定与硬件时钟相同)。 虽然我们可能住在不同的时区,但所有的使用时间都是一样的。 上面的链接给你介绍它是如何工作的。 有互联网上的免费服务器列表 – 或者你可以自己运行(大多数GPS设备提供非常准确的时钟数据)。
你没有提到你正在运行的操作系统。
顺便说一句,如果你仍然使用基于微软的操作系统,那么你可以使用'净时间\服务器/设置'从另一台SMB机器设置时间 – 但这不像NTP那么复杂/精确。