docker PostgreSQL バックアップをcronで定期的に実行する
- 作成日 2021.07.22
- 更新日 2022.03.04
- docker PostgreSQL
- docker, PostgreSQL
dockerで構築したPostgreSQLを、cronで定期的にバックアップするまでの手順を記述してます。
環境
- OS Rocky Linux release 8.4 (Green Obsidian)
- docker 20.10.7
- PostgreSQL 11.12
バックアップ用のシェルを作成
シェルを作成します。シェル用のディレクトリを作成します。
※ここではrootで作業してます。
mkdir -p /var/postgersBackup/
mkdir -p /var/postgersBackup/back
chmod 777 /var/postgersBackup/
作成したディレクトリに移動して、
cd /var/postgersBackup/
シェルを作成します。
※ここでは「postgresBackup.sh」という名前で作成してます。
nano postgresBackup.sh
シェルの内容は、以下となります。
#!/bin/bash
# バックアップ保存期間
PERIOD='+10'
# 日付フォーマット
DATE=`date '+%Y%m%d-%H%M%S'`
# バックアップ先(同じ階層にすると自身も削除してしまうので注意)
SAVEPATH='/var/postgersBackup/back/'
# プレフィックス文字
PREFIX='postgres-'
# 拡張子
EXT='.sql'
# コンテナ名
CONTENERNAME='コンテナ名'
# バックアップ実行
docker exec $CONTENERNAME pg_dumpall -U postgres > $SAVEPATH$PREFIX$DATE$EXT
# 保存期間が過ぎたらファイルの削除
find $SAVEPATH -type f -daystart -mtime $PERIOD -exec rm {} \;
コンテナ名は、「docker ps」で確認可能です。
docker ps
<出力結果>
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e98361b86c93 postgres:11.12 "docker-entrypoint.s…" 5 days ago Up 5 days 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp postgres
実行権限を付与します。
chmod 755 /var/postgersBackup/postgresBackup.sh
一度、実行してみてバックアップファイルが作成できる確認してみます。
./postgresBackup.sh
cron設定
まずはcronを有効にします。
systemctl enable --now crond
次に「cron.d」を作成します。
nano /etc/cron.d/postgersBack
ここでは、テスト用に1分周期で作成します。
*/1 * * * * root /var/postgersBackup/postgresBackup.sh > /dev/null 2>&1
ログを確認して、実行されているかチェックします。
(root) CMD (/var/postgersBackup/postgresBackup.sh > /dev/null 2>&1)
(root) CMD (/var/postgersBackup/postgresBackup.sh > /dev/null 2>&1)
バックアップも作成されていることを確認します。
cd back
ls
<出力結果>
postgres-20210729-184841.sql
あとは、設定したい実行時間に変更すれば終わりです。
※ここでは、毎日夜中の3時に設定してます。
0 3 * * * root /var/postgersBackup/postgresBackup.sh > /dev/null 2>&1
-
前の記事
Rocky Linux lsコマンドの代替えである「exa」をインストールする 2021.07.22
-
次の記事
TortoiseGit エラー「could not delete reference.」が発生した場合の対処法 2021.07.22
コメントを書く