开发环境下实现rails的读写分离:
首先: 一定要保证主从数据库的完全相同,这是以下的前提。
实现功能: select操作在slave数据库操作,而非select(insert、update、delete)操作在master数据库操作。
1: 安装masochism和master_slave_adapter插件
ruby script/plugin install git://github.com/technoweenie/masochism.git
ruby script/plugin install git://github.com/mauricio/master_slave_adapter.git
插件介绍:
masochism 作用: 实现读写分离(注意:其实无法实现读写分离)
master_slave_adapter作用: 弥补masochism的不能实现分离的问题
2: 进入config/environments/development.rb
1》 打开缓存(production环境下缓存默认打开)
config.action_controller.perform_caching = true
2》 通过ActiveReload将读写分离操作分开
config.after_initialize do
ActiveReload::ConnectionProxy.setup!
end
注意: 如果是production模式下进行数据库读写分离,则如下:
config.after_initialize do
if Rails.env.production?
ActiveReload::ConnectionProxy::setup!
end
end
3: 配置database.yml(以一个实例的方式描述database.yml的配置)
development:
host: 192.168.0.129
adapter: master_slave
master_slave_adapter: mysql
database: readwrite1
username: zhidu
password: zhidu
socket: /var/run/mysqld/mysqld.sock
master:
database: readwrite1
username: zcy
password: 1234
host: 192.168.0.130
adapter: mysql
配置介绍(只介绍其中一部分,例如encoding、reconnect等没有介绍,如果需要,请自己查找吧,顺便说一句,有一些有默认值的不需要配置):
database(development): slave数据库名称
username: 用户名称
password: 用户密码
socket: 指定mysqld.sock的位置
adapter: 必须指定master_slave
master_slave_adapter: 指定真正的适配器(mysql)
host: slave数据库的地址
master: 主数据库的设置
disable_connection_test: this will disable the connection test before use,can possibly improve the performance but you could also hit stale connections, default is false
eager_load_connections: connections are lazy loaded by default, you can load gem eagerly setting this to true
4: 成功
首先: 一定要保证主从数据库的完全相同,这是以下的前提。
实现功能: select操作在slave数据库操作,而非select(insert、update、delete)操作在master数据库操作。
1: 安装masochism和master_slave_adapter插件
ruby script/plugin install git://github.com/technoweenie/masochism.git
ruby script/plugin install git://github.com/mauricio/master_slave_adapter.git
插件介绍:
masochism 作用: 实现读写分离(注意:其实无法实现读写分离)
master_slave_adapter作用: 弥补masochism的不能实现分离的问题
2: 进入config/environments/development.rb
1》 打开缓存(production环境下缓存默认打开)
config.action_controller.perform_caching = true
2》 通过ActiveReload将读写分离操作分开
config.after_initialize do
ActiveReload::ConnectionProxy.setup!
end
注意: 如果是production模式下进行数据库读写分离,则如下:
config.after_initialize do
if Rails.env.production?
ActiveReload::ConnectionProxy::setup!
end
end
3: 配置database.yml(以一个实例的方式描述database.yml的配置)
development:
host: 192.168.0.129
adapter: master_slave
master_slave_adapter: mysql
database: readwrite1
username: zhidu
password: zhidu
socket: /var/run/mysqld/mysqld.sock
master:
database: readwrite1
username: zcy
password: 1234
host: 192.168.0.130
adapter: mysql
配置介绍(只介绍其中一部分,例如encoding、reconnect等没有介绍,如果需要,请自己查找吧,顺便说一句,有一些有默认值的不需要配置):
database(development): slave数据库名称
username: 用户名称
password: 用户密码
socket: 指定mysqld.sock的位置
adapter: 必须指定master_slave
master_slave_adapter: 指定真正的适配器(mysql)
host: slave数据库的地址
master: 主数据库的设置
disable_connection_test: this will disable the connection test before use,can possibly improve the performance but you could also hit stale connections, default is false
eager_load_connections: connections are lazy loaded by default, you can load gem eagerly setting this to true
4: 成功
发表评论
-
rails console 记录命令历史
2020-03-20 10:53 3571: 打开文件: vim ~/.irbrc,添加如下内容: ... -
mysql dyld: Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
2019-12-16 16:43 440今天一连串的神操作导致连接mysql一直报错,dyld: Li ... -
ruby gsub和sub 的特殊使用
2019-04-04 19:53 1049gsub和sub使用 常用的使 ... -
rails离线环境搭建相关命令
2018-12-17 09:35 4571:下载yum包: 环境搭建需要安装很多包,可以使用 yumd ... -
rails离线环境搭建相关命令
2018-12-17 09:35 4841:下载yum包: 环境搭建需要安装很多包,可以使用 yumd ... -
rails5 belongs_to 默认不能为空,报错must exist
2017-04-29 16:37 4871: 在config/application.rb设置 con ... -
随笔知识
2014-08-07 21:11 1836show-source: 查看方法在文件中的位置,show-s ... -
rails 中 group 按照一定的规则返回数据
2012-11-03 19:20 973has_many :user_resumes, class_n ... -
项目 经验
2012-10-10 15:53 01: user = User.first; user. ... -
数组使用will_paginate
2012-03-30 11:58 1439有的时候,在开发的过程中需要对模型数组进行分页,此时我们可以如 ... -
我的rails 编程规范
2012-01-16 15:19 9021: 属性中时间要已at结尾,例如created_at, ... -
html_safe
2012-01-12 13:56 1439html_safe: 可以保证(> < &am ... -
同时分页查找没有关联关系的多个表
2011-12-30 14:41 1292supplyinfos和seekinginfos两个表 需求: ... -
send_file ie下文件名乱码问题解决
2011-10-28 17:50 2479使用rails的send_file 实现下载功能时,type指 ... -
counter_cache的使用
2011-10-08 11:55 2738有点惭愧,做rails也2年了,竟然不会用co ... -
has_many 关联关系表单 提交
2011-04-18 17:16 1160class Author has_many :books ... -
belongs_to 多级关联关系
2011-04-12 14:18 1134有一种情况,是这样的c属于b,b属于a,但是我们有时候想建立c ... -
rails 根据异常显示特定的错误页面
2011-03-27 20:50 1179rescue_from 异常, :with => :a ... -
rails 笔记
2011-03-27 20:49 1748启动项目: ruby script/se ... -
rails 发送电子邮件(ActionMailer)
2011-03-27 20:49 36391: 复制以下配置邮件 ...
相关推荐
该库不支持Rails标准数据库管理/迁移功能。 因为,没有假定使用multidb。 使用推荐的。 用于着色数据库 分片对象是User类。 user片数据库(3节点)。 分片配置config/shards.yml development: # Rails.env user...
3. 数据库复制与读写分离:数据库是Web应用的核心组件,一个高可用的rails应用需要确保数据库的稳定性和性能。数据库的高可用可以通过主从复制、读写分离等方式实现,常见的工具有MySQL的MHA、MariaDB的Galera等。 ...
总的来说,Nginx的负载均衡能力与MySQL的主从同步和读写分离相结合,能构建出高可用、高性能的Web服务架构。这不仅提高了系统的稳定性和抗压能力,也为大数据量、高并发的业务场景提供了有效的解决方案。
- **读写分离**:针对数据库读写频率高的问题,通过读写分离和主从复制技术来降低单台数据库的压力。 - **优势**:可以灵活地调整从机数量,以适应不断变化的业务需求。 - **劣势**:架构变得更加复杂,维护难度...
此时可以通过实施读写分离和主从复制来减轻单台数据库服务器的压力。这种方法的优点是可以灵活地增加从数据库的数量来应对读取压力,但同时也带来了架构复杂度的提升以及维护难度的增加。 #### 集群时代的到来 ...
可以使用缓存技术、数据库索引优化、读写分离等方式提升系统响应速度。 5. **可扩展性**:设计时要考虑系统的横向扩展能力,以适应租户数量的增长。例如,通过负载均衡和集群部署来处理高并发访问。 6. **升级与...
3. **Read/Write分离**:实现读写分离,提高系统性能。 4. **Elasticsearch集成**:可以与Elasticsearch搜索引擎配合,实现全文搜索。 5. **Scoping(作用域)**:定义分片的作用域,方便在代码中切换和操作不同的分...
然而,随着应用程序的增长,单一数据库服务器可能无法满足高并发和读写分离的需求。这时,引入主从数据库集群就显得尤为重要,而Seamless_database_pool gem就是为了实现这一目标。 Seamless_database_pool 是一个...
3. 模型执行相应的业务逻辑,可能涉及到数据的读写,然后返回处理结果给控制器。 4. 控制器根据模型返回的数据,决定调用哪个视图进行数据展示。 5. 视图使用模型提供的数据渲染出页面,并返回给用户浏览器显示。 ...
Rails中的MVC架构模式(模型-视图-控制器)将业务逻辑、用户界面和数据访问分离开来,使代码结构清晰。此外,测试驱动开发(TDD)在Ruby社区中十分流行,Ruby提供了Rspec等测试框架,鼓励开发者编写高质量的代码。 ...
12. **性能和可扩展性**:随着用户数量的增长,系统需要能够处理高并发请求,可能需要采用缓存策略、负载均衡、数据库读写分离等技术来保证性能。 13. **持续集成/持续部署(CI/CD)**:自动化测试、构建和部署流程...
随着Web应用的成长和用户量的增加,还需要考虑到应用的扩展性,这通常涉及到数据库的读写分离、分片(Sharding)和复制(Replication)等。 值得一提的是,开发中还应考虑到安全性问题,如用户认证、授权、数据加密...
这个模式的主要目标是将业务逻辑、用户界面和数据访问分离开来,以提高代码的可维护性和可扩展性。Ruby语言是 MVC 架构的一个常见实现平台,例如著名的 Rails 框架就是Ruby的MVC实现。 标题"摩托车_MVC"可能是指一...
首先,我们来看标题中的"将复杂的SQL查询refactor成model形式",这是为了将数据库操作与业务逻辑分离,使代码更加模块化。在Rails中,模型(Model)通常是用于处理数据存储和检索的对象,它们代表数据库中的表,并...
在IT行业中,MVC(Model-View-Controller)架构模式是一种广泛应用于Web开发的设计模式,它将应用程序的逻辑分为三个主要部分,以实现良好的代码组织和职责分离。本篇文章将深入探讨 MVC 模式在 Web 开发中的应用,...
6. RESTful API支持:方便构建和消费API,实现前后端分离。 二、HTML框架的选择 1. Django:Python语言的强力后盾,拥有丰富的功能和优秀的文档,适合大型项目。 2. Flask:轻量级的Python框架,易于上手,适用于...
这包括合理规划数据模型、选择合适的索引策略、考虑读写分离和分布式存储等。 4. **API设计**:后端与前端的通信主要通过API接口,良好的API设计应遵循RESTful原则,保证接口清晰、简洁且易于理解。同时,需要考虑...
开发者提到他们计划在未来的版本中采用 Rails,Rails 是 Ruby on Rails 的简称,是一个基于 Ruby 语言的开源 web 应用框架,以其 MVC(模型-视图-控制器)架构和“约定优于配置”的理念著称。这表明项目可能会有多个...
Sails.js的设计灵感来源于Ruby on Rails,旨在简化前后端分离的Web应用开发。其特点包括: 1. 自动化的API:Sails.js 提供了一种快速构建RESTful API的方式,可以通过配置文件轻松定义路由和模型。 2. 数据驱动的...