目录

IS

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` 存放到安全的地方。

恢复

```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` 所有。

数据库备份与恢复

```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 等):

  1. 参考 [如何升级完整堆栈并迁移数据](https://docs.bitnami.com/)。

2. 仅升级应用程序代码

  1. 以下是仅升级 Redmine 应用程序的步骤。

```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;
      ```

```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
  ```

```plaintext

    MysqlStatement::Error Value for field `value` cannot be NULL INSERT INTO custom_value ...
    ```
    请到管理面板中编辑并重新保存自定义值。