首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Rails中建立分布式数据库

问如何在Rails中建立分布式数据库
EN

Stack Overflow用户
提问于 2016-07-07 07:57:48
回答 2查看 733关注 0票数 0

我正在研究一种在Rails应用程序中实现故障转移和对三个数据库进行负载平衡的方法。

下面的代码目前没有问题,但是如果db_1关闭,我的应用程序就会死掉。

我希望使用db_1作为主服务器,使用另外两个db_2和db_3作为故障转移。

此外,我想负载平衡他们,但这是一个不太重要的要求。

config/database.yml

代码语言:javascript
复制
db_1:
  adapter: mysql2
  reconnect: false
  pool: 5
  username: <username>
  password: <password>
  database: database_test
  host: 101.101.101.1

db_2:
  adapter: mysql2
  reconnect: false
  pool: 5
  username: <username>
  password: <password>
  database: database_test
  host: 101.101.101.2

db_3:
  adapter: mysql2
  reconnect: false
  pool: 5
  username: <username>
  password: <password>
  database: database_test
  host: 101.101.101.3

app/models/ext_databases.rb

代码语言:javascript
复制
class ExtDatabases < ActiveRecord::Base
        self.abstract_class = true
        establish_connection :db_1
end

app/models/users.rb

代码语言:javascript
复制
class Users < ExtDatabases
        Users.table_name = "ext_users"
end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-07 15:09:21

应该在MySQL端进行处理。对于MySQL,您有几个选项,如主动-被动(复制)、主从、群集或切分。在google上使用这些关键字查找官方的MySQL文档。每种策略都有各自的优点和缺点,在做出决定之前,你需要了解它们。

票数 1
EN

Stack Overflow用户

发布于 2016-07-13 03:16:50

MySQL已经有了一个自动故障转移工具,它的名字很贴切,名为mysqlfailover

此实用工具允许用户在由主服务器及其从节点组成的复制拓扑上执行复制健康监视和自动故障转移。该实用程序旨在以交互或连续的方式运行,定期刷新健康信息。它的主要任务是监视主服务器的故障,当发生故障时,执行故障转移到可用的最佳从站。该实用程序接受要被视为候选从站的奴隶列表。

当然,这意味着您确实需要设置mysql复制,但从您问题的语气来看,您似乎已经这样做了。

mysqlfailover不是唯一的选择。Percona是一个与mysql完全兼容但独立开发的数据库,它有自己的特点:

https://www.percona.com/doc/percona-xtradb-cluster/5.5/manual/failover.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38240295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档