#概要
今までは細々と数名でRedmineを使用していたが社内全体でRedmine使用する運びになり、
そのための運用ルールの策定やバックアップルールについて考えることになったのでメモ
#バックアップ方法
・日次でRedmine添付データ(files)、及びデータベースのダンプファイルを取得し
バックアップ用サーバに転送する。
・バックアップデータは世代管理を行う。
・リストア時にはAnsibleにて新たにRedmineサーバを構築し、バックアップデータより復元を行う。
#環境構築
##1. SSHの自動化
rsyncで同期処理をかける際に、パスワード使用せずログインできるよう
公開鍵認証を使用してSSHログインを自動化します。
Redmineサーバでの作業は、postgresユーザで実施
$ssh-keygen -t rsa
Enter file in which to save the key: (鍵の保存先が表示される) # Enterを入力
Enter passphrase (empty for no passphrase): # Enterを入力
same password: # Enterを入力
$scp .ssh/id_rsa.pub ユーザ名@バックアップサーバホスト名:~/.ssh
バックアップ用サーバにて、送られてきた公開鍵の使用設定を行います。
#バックアップ用サーバで実施
$cd ~/.ssh
$mv id_rsa.pub authorized_keys
$chmod 600 authorized_keys
##2. バックアップ用ディレクトリ、シェルスクリプトの作成
シェルスクリプトを作成する前に、mkdirコマンドにて下記のディレクトリを
予め作成しておきます。
・Redmineサーバ
/home/postgres/redmine_backup
(postgresユーザのホームディレクトリにredmine_backup)
・バックアップサーバ
/backup/redmin_backup
次にバックアップを行う為のシェルスクリプトを
Redmineサーバのpostgresユーザホームディレクトリに作成します。
#!/bin/sh
pg_dump -U postgres redmine > ~/redmine_backup/db_`date +%Y%m%d%k%M%S`.dump
tar -cvzf ~/redmine_backup/files_`date +%Y%m%d%k%M%S`.tgz /var/lib/redmine/files
find ~/redmine_backup -name "db_redmine_*" -mtime +30 -exec rm {} \;
find ~/redmine_backup -name "files_*" -mtime +30 -exec rm {} \;
##3. シェルスクリプトの実行
スクリプトに実行権限を付与し、実行
$chmod +x redmine_backup.sh
$./redmine_backup.sh
filesとDBのdumpファイルがバックアップサーバに転送されているはずです
##4. 自動バックアップの設定
最後に、毎日決まった日時に自動でバックアップしてくるように
Redmineサーバにてスクリプトの自動起動設定を行います。
$crontab -e
viが立ち上がったら以下を記載
00 23 * * * /作成したシェルスクリプトまでのパス/redmine_backup.sh
上の記述だと毎日23:00にバックアップを実行する設定になっています。
(cronについてはこちらを参照)
必要に合わせて設定変更してみてください。
以上でバックアップ環境の構築は終了です。
#注意点
Redmineサーバ、バックアップ用サーバ共にrsyncコマンドを使用できるようにする必要がある。
インストールされていない場合はyumコマンドにてインストールを行う。