Rails项目使用YamlDb进行数据库迁移

       最近项目中有个数据库迁移的需求,将现有的SQLite迁移到MySQL。由于是前人遗留的项目,没有建库的SQL,也没有相关文档。同时,还有大量的线上数据也需要迁移。刚接到这个需求时,自己想了几种方案,但是感觉太过繁琐,不够可靠。后来在网上找到YamlDB这个工具,并在模拟环境中进行了测试,发现非常方便、可靠和强大。具体操作如下:


Step 0


1. 安装MySQL

2. 创建数据库

2. sudo gem install mysql

注: 数据库编码一定要和现有项目保持一直,不然就容易出现乱码现象;

Step 1


安装YamlDB,此工具支持Rails 2.x 和 Rails 3.x;

Rails 2.x 安装:

script/plugin install git://github.com/adamwiggins/yaml_db.git
 

Rails 3.x 安装,在Gemfile中添加:

gem 'yaml_db'
 

Step 2


使用YamlDb,备份数据库:

rake db:dump

Step 3


更新数据库配置文件:


将现在有的SQLite配置进行备份: 

cp database.yml config.database.yml.sqlite3

修改数据库配置:

development:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: ** database **
  pool: 5
  username: ** username **
  password: ** password **
  socket: ** /tmp/mysql.sock **

test:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: ** database **
  pool: 5
  username: ** username **
  password: ** password **
  socket: ** /tmp/mysql.sock **

production:
  adapter: mysql
  encoding: utf8
  reconnect: false
  database: ** database **
  pool: 5
  username: ** username **
  password: ** password **
  socket: ** /tmp/mysql.sock **

Step 4


使用YamlDb,创建数据库表

rake db:schema:load

Step 5


使用YamlDb,导入数据

rake db:load

小结:YamlDB不能对数据库的用户、权限、触发器等高级特性进行迁移,只能做数据库的表、数据进行迁移操。

猜你喜欢

转载自happyaxu.iteye.com/blog/1659839
今日推荐