Rails Octopus Gem - 从站关闭时的主从复制连接行为

Mau*_*aes 6 mysql ruby-on-rails master-slave database-replication octopus

我正在开发Rails 4.0.2测试这个伟大的宝石八达通.

我创建了一个Slave db并配置章鱼如下(config> shards.yml):

octopus:
  environments:
    - development
  replicated: true
  fully_replicated: true 
  verify_connection: true
  development:
    slave1:
      host: 192.168.1.12
      adapter: mysql2
      username: slave_reader
      password: my_password
      database: my_server_development
      reconnect: true
Run Code Online (Sandbox Code Playgroud)

它非常好用,从Slave读取并写入Master,但是如果My Slave服务器关闭,我希望它重定向到Master db并获取内容,但是经过一段时间的尝试,它会抛出错误:

无法连接到'192.168.1.12'上的MySQL服务器(113)

如果Slave服务器关闭,我该怎么做才能使章鱼查找我的Master数据库?

提前致谢!

Sas*_*M78 3

正如我在这篇博客文章中读到的那样,断电或无响应的从属设备可能会导致应用程序故障,因为八达通的默认行为是将所有数据写入主设备并从从设备读取所有数据(因为写入主设备的数据会复制到所有从设备)连接的从站)。正如 Octopus wiki 上所述,在多个从属环境中读取“多个从属”部分 是使用循环完成的,因此它始终默认从从属检索数据。

也摘自上述博客:作为后备机制,.using(:master)如果没有从属节点可用或数据尚未完全复制到从属节点,则应直接从主节点读取数据(使用)。它还可以是按应用程序缓存更改/结果的选项,以防止从数据库节点重复读取。

  • 我还没有使用过它,但 SDP,[无缝数据库池](https://github.com/wbharding/seamless_database_pool),似乎正是您应该研究的。[这篇博文](http://www.williambharding.com/blog/rails/rails-3-slave-database-options-there-are-two/) 将 Octopus 与 SDP 进行了比较,作为底线,您将读到SDP 的创建是因为 Octopus 缺乏故障转移功能。感谢您接受我的回答! (2认同)