Redmine 的完整备份与恢复
备份
- Bitnami 的 Redmine 是自包含的,可以简单地进行全备份。操作如下:
- 进入备份数据存放的目录:
```bash
cd /your/folder ``` - 停止所有服务: ```bash sudo /opt/bitnami/ctlscript.sh stop ``` - 创建备份文件: ```bash sudo tar -pczvf application-backup.tar.gz /opt/bitnami ``` - 重启所有服务: ```bash sudo /opt/bitnami/ctlscript.sh start ``` - 将备份文件 `application-backup.tar.gz` 存放到安全的地方。
恢复
- Bitnami 的 Redmine 是自包含的,只需解压备份文件即可。操作如下:
- 进入备份数据存放的目录:
```bash
cd /your/folder ``` - 停止所有服务: ```bash sudo /opt/bitnami/ctlscript.sh stop ``` - 重命名原目录并存储: ```bash sudo mv /opt/bitnami /opt/bitnamiBackup ``` - 解压备份文件到原目录: ```bash sudo tar -pxzvf application-backup.tar.gz -C / ``` - 启动所有服务: ```bash sudo /opt/bitnami/ctlscript.sh start ``` * **重要提示**: - 恢复时,请确保文件和目录的原始权限保持不变。 - 例如,如果最初是以 `root` 用户安装的,请确保恢复的文件归 `root` 所有。
数据库备份与恢复
- 数据库备份:
- 如果只想备份数据库数据,可以使用 `mysqldump` 工具创建备份文件:
```bash
mysqldump -u root -p database_name > backup.sql ``` - 此操作耗时取决于数据大小。 - `database_name` 是你要备份的数据库名称。例如,Redmine 的数据库名称可能是 `bitnami_redmine`。
- 数据库恢复:
- 如果有数据库备份文件,可以执行以下命令恢复:
```bash
mysql -u root -p database_name < backup.sql ``` - 如果数据库架构不存在,请先执行以下步骤: ```bash mysql -u root -p mysql> create database database_name; mysql> grant all privileges on database_name.* to 'bitnami'@'localhost' identified by 'BITNAMI_USER_PASSWORD'; mysql> flush privileges; mysql> exit; mysql -u root -p database_name < backup.sql ```
- 注意:
- 上述步骤仅备份数据库状态。
- 其他需要备份的文件包括应用程序上传的文件,这些文件通常存储在应用程序目录中。
Redmine 升级
- 强烈建议在升级前创建备份。
- 有两种升级方式:
1. 升级整个堆栈(包括 PHP、Ruby、MySQL、Apache 等):
- 参考 [如何升级完整堆栈并迁移数据](https://docs.bitnami.com/)。
2. 仅升级应用程序代码:
- 以下是仅升级 Redmine 应用程序的步骤。
- 升级步骤:
- 启动新的 Redmine 实例或从 [Bitnami](http://bitnami.com/stack/redmine) 下载最新安装程序。
- 将数据库备份复制到新服务器。
- 停止所有服务并仅启动 MySQL:
```bash
sudo /opt/bitnami/ctlscript.sh stop sudo /opt/bitnami/ctlscript.sh start mysql ``` - 删除旧数据库并创建新数据库: ```bash mysql -u root -p mysql> drop database bitnami_redmine; mysql> create database bitnami_redmine; mysql> grant all privileges on bitnami_redmine.* to 'bn_redmine'@'localhost' identified by 'DATABASE_PASSWORD'; ``` - 恢复数据库: ```bash mysql -u root -p bitnami_redmine < backup.sql ``` - 编辑 Redmine 配置文件以更新数据库用户密码: ```yaml production: adapter: mysql2 database: bitnami_redmine host: localhost username: bn_redmine password: "DATABASE_PASSWORD" encoding: utf8 ``` - 迁移数据库到最新版本: ```bash cd /opt/bitnami/apps/redmine/htdocs ruby bin/rake db:migrate RAILS_ENV=production ``` - **故障排除**: - 如果出现表已存在的错误,删除表并重新运行迁移命令: ```bash mysql -u root -p mysql> use bitnami_redmine; mysql> drop table changeset_parents; ```
- 复制文件和插件:
- 将旧安装中的 `/opt/bitnami/apps/redmine/htdocs/files` 文件夹复制到新安装中。
- 如果旧版本安装了插件,将 `vendor/plugins` 目录中的文件夹复制到新安装的 `plugins` 文件夹中。
- 检查插件是否支持新版本,并运行以下命令:
```bash
ruby bin/rake redmine:plugins RAILS_ENV="production" ```
- 清理缓存和会话:
```bash
ruby bin/rake tmp:cache:clear ruby bin/rake tmp:sessions:clear ```
- 重启服务:
```bash
sudo /opt/bitnami/ctlscript.sh restart ```
- 故障排除:
- 如果从 1.x 版本升级并遇到创建问题时出现错误:
```plaintext
MysqlStatement::Error Value for field `value` cannot be NULL INSERT INTO custom_value ... ``` 请到管理面板中编辑并重新保存自定义值。