首页 > 解决方案 > 在 Rails 应用程序中使用 activerecord 处理 MySQL 故障转移(主/从角色切换)

问题描述

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

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

提前致谢。

标签: mysqlruby-on-railsactiverecordmaster-slave

解决方案


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

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


推荐阅读