Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 复制的主/从服务器和数据库_Ruby On Rails_Heroku_Database Replication - Fatal编程技术网

Ruby on rails 复制的主/从服务器和数据库

Ruby on rails 复制的主/从服务器和数据库,ruby-on-rails,heroku,database-replication,Ruby On Rails,Heroku,Database Replication,我在heroku的免费层上部署了一个小的Rails应用程序,只有一个API,没有视图来创建书籍,返回书籍的类型,并从数据库中删除所有书籍。看起来有点像这样: A向site.herokuapp.com/add_book?name=harrypotter&genre=fantasy发布请求添加一本书 AGET请求到site.herokuapp.com/find_book?name=harrypotter返回流派 向site.herokuapp.com/reset发送请求将清除所有书籍的数据库 现在我

我在heroku的免费层上部署了一个小的Rails应用程序,只有一个API,没有视图来创建书籍,返回书籍的类型,并从数据库中删除所有书籍。看起来有点像这样:

A
向site.herokuapp.com/add_book?name=harrypotter&genre=fantasy发布请求
添加一本书

A
GET请求到site.herokuapp.com/find_book?name=harrypotter
返回流派

向site.herokuapp.com/reset发送请求将清除所有书籍的数据库

现在我已经在一台服务器上完成了这项工作,我想在三台服务器上复制它,每台服务器都有一个唯一的URL,这样我就可以将我的呼叫发送到这三台服务器中的任何一台,并且它们的所有数据库都包含相同的图书条目

例如,如果我发送

POST request to site1.herokuapp.com/add_book?name=harrypotter&genre=fantasy
然后发一封信

将请求发布到site2.herokuapp.com/add_book?name=littlewomen&genre=fiction

我可以发一封信

GET请求到site3.herokuapp.com/find_book?name=littlewomen

但是,如果我向服务器发送重置调用,则不会重置其他服务器

我发现了一个名为and的两个gem,但看起来它们在同一台服务器上跨数据库复制,而不是在不同的服务器上复制。此外,由于我将要打电话到三个不同的网站,这些宝石会工作吗


在Rails中进行这种类型的数据库/服务器复制的最佳方法是什么?

不确定我是否完全理解您的整个用例。您只是想为不同的API调用跨不同的数据库分配读/写操作吗

如果它是一个小应用程序,为什么不让站点1、站点2和站点3上的所有3个应用程序都连接到同一个数据库实例

以下选项:

  • 主从复制

    在您的情况下,您将有1个主db和2个从db。数据将被读写到主数据库,但将被复制到从数据库。然后,您可以将rails应用程序配置为跨选定数据库进行读取

    您可以使用在从属设备和主设备之间分配写/读操作

    使用复制时,所有写查询将发送到主服务器,而读查询将发送到从服务器

  • MySQL集群

    我还没有使用MySQL集群,但应该很快就会使用它。如果您的需求是在所有数据库之间分配读/写操作,同时在所有节点之间保持数据一致,那么MySQL集群看起来是一个不错的选择。数据分布在数据节点池中。每个MySql服务器都可以访问所有数据节点,因此,当集群中的一个服务器通过插入行来更改数据示例时,集群中的其他MySql服务器可以立即访问和查看这些新数据

    在这里看到更多