我正在用rails 4.0.2测试这个伟大的gem章鱼。
我创建了一个slave db并配置了octopus,如下所示(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

它工作得很好,从从属服务器读写到主服务器,但是如果我的从属服务器关闭,我希望它重定向到主数据库并获取内容,但是经过一段时间的尝试,它会抛出错误:
无法连接到“192.168.1.12”(113)上的MySQL服务器
如果从服务器关闭,我可以做什么让章鱼寻找我的主数据库?
提前谢谢!

最佳答案

当我在this blog post中读取时,断电或无响应的从机可能会导致应用程序失败,因为章鱼的默认行为是将所有数据写入主机,并从从机读取所有数据(因为写入主机的数据比复制到所有连接的从机的数据要多)。如Octopus wiki, "Multiple slaves" section中所述,在多个从机环境中的读取是使用循环机制完成的,因此它总是在默认情况下从从机检索数据。
同样来自上述博客:作为一种回退机制,如果没有可用的从节点或数据尚未完全复制到从节点,则应直接从主节点读取数据(使用.using(:master))。它也可以是一个选项,以便按应用程序的方式缓存更改/结果,以防止重复读取数据库节点。

08-07 15:34