バックアップ
同じサーバーを使っている悪い人がいた場合には良くない方法です。
- PostgreSQLのスーパーユーザーが postgres
- Railsを動かしているユーザーが hoge
- プロジェクトの設置場所が ~hoge/rails_root/ とする。
- プロジェクトのデータベース名は hoge_production_db とする。
backup先を作成する。
% cd ~hoge/rails_root % mkdir backup % chmod 777
cronで動かすバックアップ用シェルスクリプトを用意する。postgresql_backup.sh とする。
#!/bin/sh DATE=`/bin/date '+%Y%m%d-%H%M'` LOGDIR='/home/hoge/rails_root/backup/' PREFIX='production_db-' POSTFIX='.sql' DATABASENAME='hoge_publication_db' /usr/bin/pg_dump $DATABASENAME > $LOGDIR$PREFIX$DATE$POSTFIX
シェルスクリプトを設置。
% mv postgresql_backup.sh ~hoge/rails_root/backup % chmod 755 ~hoge/rails_root/backup/postgresql_backup.sh
cronで動かす。
% sudo su # su postgres % crontab -e
たとえば、毎日4時にバックアップするならば以下のように設定する。
0 4 * * * /home/hoge/rails_root/backup/postgresql_backup.sh > /dev/null 2>&1
もし、別サーバーにバックアップ内容をミラーリングしておくならば下記参照。
リストア
データベースごと作り直す。
データベースの作成&読み込み
% sudo su # su postgres % createdb --encoding="utf-8" -T template0 hoge_production_db % psql hoge_production_db # \i /home/hoge/rails_root/backup/production_db-20XXMMDD-HHMM.sql