用于考勤系统的MySQL服务器

我正在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集群? (我试着读过,但我不确定是否正确。)

我目前的设置(第一阶段):

  • 每个服务器的本地数据库
  • 操作系统: Slackware
  • 跟踪哪个员工在哪个服务器上的主服务器
  • 一个基于Web的前端,供用户查看他们的历史(根据他们的logging连接到服务器)

主要优点

  • 不用担心networking问题,因为它是本地数据库

主要缺点

  • 用户只能在同一台服务器上签入和签出。 数据库和服务器没有相互连接。
  • 如果用户想要在不同的位置登记,必须将用户添加到每个服务器。 这意味着,如果用户想要到达地点A,则必须首先从地点A检出用户,然后在地点B检入。位置B处的服务器不知道用户之前在A处检入过。

顺便说一句,我已经集中我的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那么复杂/精确。