gpt4 book ai didi

mysql - Ruby on Rails 和一个复制的 MySQL 实例

转载 作者:行者123 更新时间:2023-11-29 03:25:32 25 4
gpt4 key购买 nike

[免责声明:我戴着我的 devops 帽子,这甚至不是我的全职帽子。我没有 RoR 帽子,我只是尽力而为。]

我有一个在多个数据中心运行的 RoR 应用程序。 MySQL 允许我将数据复制到所有 DC,但只有一个 MySQL 实例是可写的。 (是的,有一些技术可以复制回 master,但我不相信 RoR 维护必要的契约(Contract)来安全地做这件事。也许我错了。)

大多数时候,RoR 从 MySQL 读取,所以如果我可以告诉 RoR 使用本地 MySQL 实例,除非它需要写入一些东西,否则会快得多。

或者我看问题的方式不正确,我可以告诉 MySQL 这就是我的意思。 (事实上​​ ,也许正确的做法是也设置一个 MySQL Proxy 实例并告诉进行读/写分离。)

最佳答案

一种解决方案是为同一个类创建两个不同的连接,一个连接将连接到您的可写数据库,另一个连接到您的可读数据库。

保留您原来的数据库连接类,但随后创建另一个只读类,因此您将定义两个不同的类:

class Example < ActiveRecord::Base
end

class ReadExample < ActiveRecord::Base
establish_connection configurations['read_example'][Rails.env]
end

无论您想在何处进行只读调用,请将“Example”替换为“ReadExample”。

我还没有测试过这个,但我认为它应该可以工作。唯一的危险是将“可读”类放在实际写入的调用上。

关于mysql - Ruby on Rails 和一个复制的 MySQL 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36712747/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com