S 3へのPostgresバックアップ


この記事では、Postgresデータベースをアマゾン環境にバックアップする簡単な方法について説明します.

s 3 cmdをインストールする
S 3 CMDはAWS S 3のデータを管理するためのコマンドラインユーティリティです.
Debianの/Ubuntu用
apt-get install s3cmd
RedHatについて
yum install s3cmd
OSX用
brew install s3cmd
--configureオプションを使用してアマゾンのアクセスID&秘密キーを設定します.データ転送だけでなく、httpsの暗号化を有効にします.
s3cmd --configure

データベースのバックアップ
pg_dump -v --format=c -h localhost -U YOUR_USER YOUR_DB > backup.dump

S 3を押す
s3cmd put backup.dump s3://YOUR_BUCKET_NAME --encrypt

プロセスを自動化する
ルートディレクトリに新しいbashファイルを作成します.
#!/usr/bin/env bash

DB_NAME=$1
DB_USER=$2
DB_PASS=$3

BUCKET_NAME=<YOUR_NAME_HERE>

TIMESTAMP=$(date +%F_%T | tr ':' '-')
TEMP_FILE=$(mktemp tmp.XXXXXXXXXX)
S3_FILE="s3://$BUCKET_NAME/backup-$TIMESTAMP"

PGPASSWORD=$DB_PASS pg_dump -Fc --no-acl -h localhost -U $DB_USER $DB_NAME > $TEMP_FILE
s3cmd put $TEMP_FILE $S3_FILE --encrypt
rm "$TEMP_FILE"
ファイルのパーミッションをchmod +xを使用して実行可能に変更し、ファイルをテストします.
./FILE_NAME.sh DATABASE_NAME USER_NAME DATABASE_PASSWORD
以前に設定したS 3にバックアップをアップロードしてください.

cronジョブに接続する
crontab -e
毎晩日曜日にスクリプトを実行するためにファイルを編集します.
0 0 * * 0 /home/ubuntu/FILE_NAME.sh DATABASE_NAME USER_NAME DATABASE_PASSWORD
ファイルを保存し、/var/log/syslogファイルでcronログをチェックします.