rails 读写分离

开发环境下实现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: 成功
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值