crondを利用したDBのメンテナンス及びバックアップの自動化
Linuxにはcrondというwindowsで言うタスクスケジューラーのような機能がありますので、その機能を使い設定してみましょう。
crondを使ってスケジュールを設定するには、先頭のスペースで区切られた5つの項目に左から分(0-59)、時(0-23)、日(1-31)、月(1-12)、曜日(0-7)の順番で設定をします。(複数設定する場合はカンマ(,)で区切ります)
[例]
毎時0分ごとに実行 | 0 * * * * [コマンド] |
5分おきに実行 | */5 * * * * [コマンド] |
0時から23時まで2時間おきの23分に実行 | 23 0-23/2 * * * [コマンド] |
1月と12月それぞれの1~20日23時に実行 | * 23 1-20 1,12 * [コマンド] |
月曜から土曜まで1分おきに実行 | */1 * * * 0-6 [コマンド] |
PostgreSQL編
バックアップファイルを保存するため/home/postgres/DB_backupsをあらかじめ作成しておきます。
crondの設定をする前にあらかじめDBバックアップ用のスクリプトファイルを作成します。
・[/home/postgres/skyboard_backup.sh]を下記の内容で作成
#!/bin/sh
backupname=’skyboard.’`date +’%Y%m%d’`’.dump’
/usr/bin/pg_dump -f /home/postgres/DB_backups/$backupname masters
※作成日付で世代管理をする必要がなければ$backupnameの代わりにnew.dumpなどの固定ファイル名でも可。この場合はバックアップファイルが増えすぎてディスクフルになる危険性が減ります。
・属性の変更
#chmod 755 /home/postgres/skyboard_backup.sh
・GUI画面からコンソールを起動します。
・ユーザーをpostgresに変更します。
#su – postgres
・crond用の設定ファイルを編集します。(※crontab –rは削除。-lは表示です。)
$crontab –e
※ここから編集に入りますが、crontabコマンドからの編集は癖(Linux標準のviエディタを利用するため)がありますので、気をつけてください。(テンキーとかBSキーが使えない可能性があります。)
・SHIFT+Aキーで入力編集モードに移ります。
・下記の2行を記述してください。
5 2 * * * /usr/bin/psql –c “vacuum;” masters
5 4 * * * /home/postgres/skyboard_backup.sh
・入力が終了したら、escキーを押してコマンドモードに戻ります。
・最後にSHIFTを押しながらzキーを2回押して終了です。
これで毎午前2時5分にDBのメンテナンスが行われ、毎午前4時5分(バックアップの時間を2時5分とか中途半端な時間にするのは時間ぴったりだと他の設定と重なりやすいからという理由です。わざと少しだけずらしてあります。)に/home/postgres/DB_backupsの中にskyboard.年月日.dumpと言う名でバックアップが作成されます。定期的にFTPで手元へ持ってきましょう。
※データベースバックアップファイルは次項で説明するtarコマンドでも圧縮してバックアップにとっていますので、2重にバックアップをとっていることになり、安全性が高くなっています。ただし、あくまでもサーバー上でのバックアップですので、別の場所に移すことを忘れないようにしましょう。
コメント