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

时间:2013-12-10 19:35:51

标签: mysql ruby-on-rails database-replication master-slave octopus

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

我创建了一个Slave数据库并配置了章鱼,如下所示(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)

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

提前致谢!

1 个答案:

答案 0 :(得分:2)

当我在this blog post中读到时,断电或无响应的从站可能会导致应用程序失败,因为Octopus的默认行为是将所有数据写入主站并从Slaves读取所有数据(作为写入主站的数据)而不是复制到所有连接的奴隶)。正如在多个从属环境中的Octopus wiki, "Multiple slaves" section读数所述,使用循环法完成,因此它始终默认从从站检索数据。

同样取自上述博客:作为回退机制,如果没有任何Slave节点可用或数据尚未完全复制到从属,则应直接从Master中读取数据(使用.using(:master))。它也可以是一个选项,以应用程序方式缓存更改/结果,以防止从数据库节点重复读取。