【问题标题】:Handle MySQL Failover(master/slave role switch) with activerecord in rails application在 Rails 应用程序中使用 activerecord 处理 MySQL 故障转移(主/从角色切换)
【发布时间】:2018-09-27 21:20:55
【问题描述】:

我是 Rails 新手,我已经构建了一个使用 activerecord 连接到 MySQL 的应用程序。我已经设置了master 节点的只读副本。问题是当我的slave 变为master 时,我在应用程序中收到以下错误:

MySQL server is running with the --read-only option so it cannot execute this statement

我想这是可以接受的。

但是我的应用程序永远失败并且在我重新启动应用程序之前无法恢复。是否有任何 acitverecord 配置或 MySQL 连接属性可用于从这种情况中恢复?

我在 database.yml 中使用以下配置。

adapter: mysql2
encoding: utf8
url: <'DATABASE_URL'>
pool: 10
database: <'DATABASE_NAME'>
username: <'DATABASE_USER'>
password: <'DATABASE_PASS'>
reconnect: true 

我可以添加任何配置来处理故障转移吗?有什么建议来处理这种情况吗?

提前致谢。

【问题讨论】:

  • 请查看github.com/bdurand/seamless_database_pool,如果您仍有疑问,请返回并提供更多详细信息。
  • @Surya 感谢您的快速回复。我浏览了文档,我从中了解到的是,我可以轻松地将我的读写查询定向到适当的服务器(如果我有任何误解,请纠正我)但我仍然不明白它将如何解决我的问题是当主/从切换角色时,这个库将如何处理它。我在应用程序中创建了连接池,并且在后台切换了主从角色。在这种情况下库到底做了什么?

标签: mysql ruby-on-rails activerecord master-slave


【解决方案1】:

我在this 博客之后解决了这个问题。将其放在这里以供参考,以便遇到问题的任何人都可以使用它。

根据博客,您将覆盖 ActiveRecord::ConnectionAdapters::ConnectionManagement 适配器并编写自己的连接处理以防出现错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多