在Rails应用程序中使用ActiveRecord处理MySQL故障转移(主/从角色切换)

时间:2018-09-25 12:31:13

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

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

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

预先感谢。

1 个答案:

答案 0 :(得分:0)

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

根据博客,您将覆盖ActiveRecord::ConnectionAdapters::ConnectionManagement适配器,并在发生错误时编写自己的连接处理。