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: 成功

你可能感兴趣的:(mysql,socket,git,Ruby,Rails)