在 rails 应用程序中使用 activerecord 处理 MySQL 故障转移(master/slave 角色切换)

Handle MySQL Failover(master/slave role switch) with activerecord in rails application

我是 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 

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

提前致谢。

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

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