天天看點

如何把redmine的資料從sqlite導入到mysql

一段時間以來,一直使用redmine+sqlite3來管理項目,但是發現随着管理資料的膨脹,redmine速度越來越慢,懷疑和sqlite的性能有關, 想把資料庫換成mysql, 是以就必須把資料從sqlite3導入到mysql。

實作原理

利用rails的plugin yaml_db 把資料從sqlite導入到yaml格式的檔案裡,然後再把資料從檔案中導入到mysql裡。

具體步驟

1. 安裝yaml_db插件。

// $REDMINE_ROOT 為redmine安裝目錄
cd $REDMINE_ROOT
ruby script/plugin install git://github.com/adamwiggins/yaml_db.git      

2. 把redmine的管理資料從sqlite中導到yaml檔案中, 預設dump檔案是redmine目錄下db/data.yml。

rake db:dump RAILS_ENV=production
      

3. 把redmine資料庫相關配置改成mysql。

  • 安裝mysql相關包。
    gem install mysql      
  • 如果使用mysql5.1以上的版本,上述指令很有可能會出錯。需要下載下傳libmySQL.dll , 并放置到ruby的bin目錄下。
  • 在redmine安裝目錄下,修改檔案

    config/database.yml中production部分。

    production:
      adapter: mysql
      database: redmine
      host: localhost
      username: redmine
      password: my_password      
  • 如果mysql不是用的标準端口3306, 那麼需要在上述配置中加入以下一行。
    port: 3307
          
  • 在mysql中生成所需要的table和使用者。
    create database redmine character set utf8;
    create user 'redmine'@'localhost' identified by 'my_password';
    grant all privileges on redmine.* to 'redmine'@'localhost';
               

4. 把資料從2.生成的檔案db/data.yaml導入到mysql中。

rake db:load RAILS_ENV=production      

5. 重新啟動redmine, 此時背景DB應該就是mysql了, 速度應該比sqlite提高許多。