在 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
适配器并编写您自己的连接处理以防出现错误。
我是 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
适配器并编写您自己的连接处理以防出现错误。