【问题标题】:Mysql replicate two databasesMysql复制两个数据库
【发布时间】:2018-04-03 10:02:21
【问题描述】:

我有一个在线数据库设置,我在其中进行用户注册并为他们提供进入活动(人群聚集)的通行证,现在在活动中我还必须执行用户注册,情况是活动期间互联网并不总是稳定所以我正在考虑离线设置数据库,我找到了一些关于 mysql 复制的指南,但如果它可能按照我想要的方式进行,则没有得到全貌。

如果我将在我的本地主机上设置数据库并离线注册用户,还会在线进行新注册(在其他服务器上在线托管相同数据库的副本),用户表有一个自动增量索引,这将是一个大问题使用 mysql 复制同步两个数据库,当两个服务器都将记录添加到同一个表时,它将为两个数据库分配相同的索引 id。我可以做些什么来避免这个问题。

【问题讨论】:

  • 改进问题的建议 - 添加上下文。你开始谈论“事件”,好像我们应该知道这意味着什么。只有稍后我们才能猜到您的意思是在某个地方进行某种物理聚会。

标签: mysql


【解决方案1】:

嗯,master-master replication 确实存在,并且可能适合您的目的,但它有一些缺点。

我认为您应该考虑在现场以不同的形式进行注册,然后在您回家时将它们插入您的主数据库。这是一种很常见的做事方式。

如果你真的需要 MySQL 的话,想出一个“合并”工具,它可以根据需要重新创建在异地创建的用户;正如您所指出的,您需要考虑不同的自动增量 ID,但这不一定是实际问题。它只是需要处理。

【讨论】:

  • 重新创建用户的问题是当我合并数据库时它会重新创建ID,当用户注册时,我们必须在他/她的入场卡上打印ID。
  • @user969068:您会在活动中打印 ID,还是稍后再发送?最好只在活动中接受人们的注册请求,稍后在您有适当的办公室访问权限时完成注册。完成后邮寄身份证。无论如何,用户 ID 都不应该像这样自动递增。
  • 出于各种原因,我们希望离线/在线维护两个数据库中的 ID,我们还将有新的注册用户和在线和离线修改其帐户数据的用户。我们有带有 ID 的条形码扫描仪,由于活动期间可能没有互联网连接,情况非常复杂。我们已经安排了 2 个 ADSL 1 4G 但我仍然想确定他们是否有任何可能的解决方案,我只是在这里找到了一些信息,所以试图弄清楚他对 auto_increment_increment= 2 stackoverflow.com/questions/1517687/mysql-writing-to-slave-node 的意思是什么@
  • @user969068:好吧,你根本做不到。如果用户ID具有唯一性和权威性,一次只能在一处生成,那么一次只能在一处创建新用户。就这么简单。或者暂时“移动”您的系统(在活动期间禁用互联网系统并使用您的笔记本电脑系统),或者让您的用户仅请求在活动中注册但稍后满足要求。听起来您使用条码扫描仪使其过于复杂。
  • 你知道这家伙在说什么吗? auto_increment_increment= 2stackoverflow.com/a/16490874/969068
【解决方案2】:

如果您主要关心的是您有 2 个系统需要生成彼此唯一的 id 而无需协调,那么您可以做以下几件事:

  • 使用auto_increment_increment and auto_increment_offset。简单地说,您的 2 台服务器中的 1 台可能使用偶数 ID,而另一台可能使用奇数。
  • 使用不同的密钥,也许是自然密钥(电子邮件地址?)
  • 使用 UUID 之类的东西(或 GUID,如果您在 microsoft 世界中。它们实际上是一回事)。

【讨论】:

    【解决方案3】:

    您可以将数据库从服务器转储到本地终端,如下所示。

    运行命令:mysqldump -h 主机名 -u 用户名 -ppassword 数据库名 > C:\path_to_file

    【讨论】:

    • 这甚至不能回答这个问题。
    猜你喜欢
    • 2019-02-27
    • 2010-12-25
    • 1970-01-01
    • 2012-04-03
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多