DBのバックアップしていますか?一般的に公開されている方法だとS3にアップロードする方法がよくありますが、今回は自分で建てたminioにバックアップします。
まず、DBのバックアップです。今回はmastodonユーザで行います。mastodonユーザのホームフォルダに「.pgpass」というファイルを作ります。
/home/mastodon/.pgpass
127.0.0.1:5432:dbname:user:password
- 127.0.0.1 : postgresが動いているサーバを指定します。普通はそのマシンで動いているから127.0.0.1でいいのかな?
- 5432:postgresのポート番号。
- dbname : バックアップしたいDBの名前を指定します。mastodonの場合、.env.productionファイルに書かれているはずです。
- user : DBにアクセスできるユーザ名を指定します。これも.env.productionの書かれているはずです。
- password : DBにアクセスできるユーザのパスワードを指定します。これも(ry。
このファイルを使ってバックアップするには、今回こうしています。
FILE=backup/mstdn.pgbuckup.`date +%Y%m%d_%H%M%S`.pgbump echo $FILE pg_dump --host=127.0.0.1 --no-password --username=user --no-owner mastodondb > $FILE
実行する前にホームフォルダ配下に「backup」というフォルダを作ります。ここにファイルを格納します。一行目がファイル名の生成部分です。二行目は表示しているだけですね。三行目でバックアップをとります。--hostでpostgresの入っているサーバを指定、--usernameでDBにアクセスできるユーザ名を指定、mastodondbがここではバックアップしたいDBになります。
tar -Jcvf $FILE.tar.xz $FILE
このままだと転送するファイルサイズが大きいので圧縮します。
つぎに、awscliを動かして転送します。awscliはpipで入れています。ホームフォルダに「.aws」というフォルダを作成してその中に「credentials」というファイルを作成します。
/home/mastodon/.aws/credentials
[default] aws_access_key_id=miniouser aws_secret_access_key=miniopassword
- miniouser : minioのユーザ名を指定します。
- miniopassword : minioのアクセスキーを指定します。
awscliはこのように呼び出します。
~/.local/bin/aws --endpoint-url http://127.0.0.1:1234 s3 cp $FILE.tar.xz s3://backup/
endpoint-urlで指定したサーバに保存しにいきます。この場合は、そのサーバのbackupというバケットにアップロードします。
一連の操作をまとめるとこうなります。
/home/mastodon/backup.sh
FILE=backup/mstdn.pgbuckup.`date +%Y%m%d_%H%M%S`.pgbump echo $FILE pg_dump --host=127.0.0.1 --no-password --username=user --no-owner mastodondb > $FILE tar -Jcvf $FILE.tar.xz $FILE ~/.local/bin/aws --endpoint-url http://127.0.0.1:1234 s3 cp $FILE.tar.xz s3://backup/ rm -f backup/*
このようなファイルをcronに登録しておけば、定期的にバックアップが可能になります。
minioをインターネットに公開してアップロードする場合ですが、私はポート番号を変えるのと書き込み専用にしています。書き込み専用にすれば、キーとかが漏れても最悪データをとられないと考えたからです。