6

我正在使用正在开发的 Rails 4.0.2 测试这个伟大的 gem Octopus。

我创建了一个 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

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

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

如果从服务器关闭,我该怎么做才能让章鱼寻找我的主数据库?

提前致谢!

4

1 回答 1

3

正如我在这篇博文中所读到的,断电或无响应的从站可能会导致应用程序失败,因为 Octopus 的默认行为是将所有数据写入主站并从从站读取所有数据(因为写入主站的数据比复制到所有连接的奴隶)。如Octopus wiki 所述,在多从属环境中读取“多个从属”部分 是使用循环法完成的,因此默认情况下它总是从从属检索数据。

也取自上述博客:作为一种备用机制,.using(:master)如果没有任何 Slave 节点可用或数据尚未完全复制到从属节点,您应该直接(使用)从 Master 读取数据。也可以选择缓存应用程序的更改/结果,以防止从数据库节点重复读取。

于 2014-03-05T07:31:31.110 回答