我正在开发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服务器关闭,我该怎么做才能使章鱼查找我的主数据库?
提前致谢!
答案 0 :(得分:2)
当我在this blog post中读到时,断电或无响应的从站可能会导致应用程序失败,因为Octopus的默认行为是将所有数据写入主站并从Slaves读取所有数据(作为写入主站的数据)而不是复制到所有连接的奴隶)。正如在多个从属环境中的Octopus wiki, "Multiple slaves" section读数所述,使用循环法完成,因此它始终默认从从站检索数据。
同样取自上述博客:作为回退机制,如果没有任何Slave节点可用或数据尚未完全复制到从属,则应直接从Master中读取数据(使用.using(:master)
)。它也可以是一个选项,以应用程序方式缓存更改/结果,以防止从数据库节点重复读取。