一段時間以來,一直使用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提高許多。