mysql复制错误:候选slave缺少复制用户

时间:2014-01-08 01:43:40

标签: mysql replication

上下文: 我正在尝试使用一个主服务器和一个服务器来设置mysql复制。我在mysql 5.6中使用了新的GTID方法,以及用于自动故障转移的mysql实用程序。

我可以使用主节点M和从节点S设置复制。

我正在尝试运行一个简单的脚本来向自己展示所有内容都已正确设置。脚本如下:

  1. 设置复制,节点M为主节点,节点S为从属
  2. 确保对M中的表所做的更改反映在S
  3. 关闭M并确保S接管新主人
  4. 对S
  5. 进行一些表格更改
  6. 启动M并将其作为从属设备添加回群集
  7. 确保M赶上S及其更新
  8. 再次使M成为主节点
  9. 我的脚本看起来很成功,直到最后一步。 很大程度上,我遵循这里的步骤:http://www.clusterdb.com/mysql/replication-and-auto-failover-made-easy-with-mysql-utilities

    但是当我运行“mysqlrpladmin --master = root @ S_NODE --new-master = root @ M_NODE --demote-master --discover-slaves-login = root switchover”时,我收到以下错误:

    # Discovering slaves for master at S_NODE
    # Discovering slave at M_NODE
    # Found slave: M_NODE
    # Checking privileges.
    # Performing switchover from master at S_NODE to slave at M_NODE
    # Checking candidate slave prerequisites.
    Candidate slave is missing replication user.
    ERROR: Candidate slave is missing replication user.
    # Errors found. Switchover aborted.
    #
    # Replication Topology Health:
    +-----------------+-------+---------+--------+------------+---------+
    | host            | port  | role    | state  | gtid_mode  | health  |
    +-----------------+-------+---------+--------+------------+---------+ 
    | S_NODE          | 3306  | MASTER  | UP     | ON         | OK      |
    | M_NODE          | 3306  | SLAVE   | UP     | ON         | OK      |
    +-----------------+-------+---------+--------+------------+---------+
    

    我似乎无法找到与该错误消息相关的任何google或stackoverflow页面“Candidate slave缺少复制用户。”

    我相信我在节点S和M上都有一个复制用户,因为它们在我的测试脚本中的某一点充当了奴隶。

    有什么想法?

2 个答案:

答案 0 :(得分:1)

我在测试某些新群集上的故障转移时遇到了同样的问题,并注意到在您按照建议添加--force标志后,切换成功完成创建了用户'replication_user' @'S_NODE'没有任何提示我。

然后我发现我设置的复制用户是'repl'@'specific_subnet_%' - 这与脚本所寻找的不匹配('repl'@'S_NODE'),所以预先没有--force检查失败。

我有另一个我正在测试的集群,所以为了验证我做了以下事情:

  • 运行mysqlrpladmin ... switchover命令而没有--force(它按预期失败)
  • 使用与现有replication_user相同的授权('replication_user'@'S_NODE')和密码创建了'replication_user'@'M_NODE'REPLICATION SLAVE。如果您希望能够使用此脚本在它们之间来回故障,则需要S_NODE和M_NODE主机。
  • 在没有mysqlrpladmin ... switchover
  • 的情况下再次尝试--force

这次它的魅力就像一个魅力!

故事的道德:脚本期望'replication_user'@'new_master'用户存在。 --force标志将为您创建该用户,并且在您第一次使用它之后不需要。

答案 1 :(得分:0)

出于某种原因,添加“--force”标志可以解决问题。上述评论中的更多细节。 如果有人知道为什么会这样,请发表评论。