Docker-composeで構築したmisskeyサーバーをCloudflareR2にバックアップ&リストアする

Docker-composeで構築したmisskeyサーバーをCloudflareR2にバックアップ&リストアする

Docker-composeで構築したmisskeyサーバーをCloudflareR2にバックアップ&リストアする

これの焼き増し

結論

バックアップ(シェルスクリプト)

#!/bin/bash

SERVICE_NAME="db"

POSTGRES_DB="misskey"
POSTGRES_PASSWORD="postgrespassword"
POSTGRES_USER="postgresuser"

BUCKET_NAME="bucketname"
AWS_USER="awsuser"
YOUR_R2_ID="r2id"

DB_DUMP_FILE=`date "+%Y%m%d"`-misskeybk

docker-compose exec SERVICENAMEpgdumpallUSERVICE_NAME pg_dumpall -U POSTGRES_USER > ../backup/$DB_DUMP_FILE

gzip ../backup/$DB_DUMP_FILE

aws s3 mv ../backup/DBDUMPFILE.gzs3://{DB_DUMP_FILE}.gz s3://{BUCKET_NAME} --profile AWSUSERendpointurlhttps://AWS_USER --endpoint-url https://{YOUR_R2_ID}.r2.cloudflarestorage.com

リストア {DUMP_FILE}はバックアップしたファイル名 他の変数はバックアップのものを読み替えること

BUCKET_NAME="bucketname"

aws s3 cp s3://{BUCKET_NAME}/{DUMP_FILE}.gz ../backup --profile {AWS_USER} --endpoint-url https://{YOUR_R2_ID}.r2.cloudflarestorage.com

# {DUMP_FILE}.gzのあるディレクトリで
gunzip {DUMP_FILE}.gz

# misskey関係のdocker-compose.ymlのあるディレクトリで
docker-compose up -d db

docker-compose exec -T db psql -U POSTGRESUSERdPOSTGRES_USER -d POSTGRES_DB -c 'DROP DATABASE ${POSTGRES_DB};'
docker-compose exec -T db psql -U POSTGRESUSERdPOSTGRES_USER -d POSTGRES_DB -c 'CREATE DATABASE ${POSTGRES_DB};'

# {container_id}を調べる
docker ps

docker cp ../backup/{DUMP_FILE}.db {container_id}:/db.dump
docker-compose exec -T db psql -U POSTGRESUSERdPOSTGRES_USER -d POSTGRES_DB -f /db.dump

rm ../backup/*

説明

バックアップ

前提としてaws-cliをインストールしていること あと適当なtempディレクトリがあること(ここではひとつ上の階層にbackupを置いている) docker-composeで直接postgresにアクセスしてpf_dumpallでデータベースをダンプしてgzipで圧縮してaws-cliでCloudflareR2に作成したbucketにアップロードしています なのでSERVICE_NAMEからPOSTGRES_USERはそれぞれdocker-compose.ymlやdocker.envのものを使うこと DB_DUMP_FILEは一日毎にバックアップを取ることを想定して日付で命名 あとはcronなどで定期的に実行するだけ!

リストア

環境で若干操作が異なると思う 一応動作確認済み🤗

VPSにDockerでMisskeyを立てていろいろあった話 - GirakBlog
2022年6月3日 2022年6月3日 こんにちはきろたです 突然ですが先日 ぎらくMisskey支部 を立てました。もともと立ててたのですがいろいろあって廃墟になってたのをリメイクしたものです。久しぶりに立てたせいでいろいろ忘れてて時間を溶かしたので備忘録といつの日かのために書きます。

上記のような環境でセットアップしたとする

まずCloudflareR2からdumpファイルをダウンロードしてgunzipで解凍、docker-compose up -d dbでmisskey以外のコンテナを起動してからPostgresのdbを一度削除して再構成する docker内にダウンロードしたダンプファイルを導入してpsqlでリストア

ちなみにdocker-composeのときにmisskeyも起動すると接続中とかで怒られるっぽい? あとdbを削除して再構成しないと色々重複してリストアがうまくいかない

参考文献

Postgresqlのデータをバックアップする(docker compose)
Docker Composeで構築したMisskeyサーバーのデータベースをバックアップ&リストアする
VPSにDockerでMisskeyを立てていろいろあった話 - GirakBlog
2022年6月3日 2022年6月3日 こんにちはきろたです 突然ですが先日 ぎらくMisskey支部 を立てました。もともと立ててたのですがいろいろあって廃墟になってたのをリメイクしたものです。久しぶりに立てたせいでいろいろ忘れてて時間を溶かしたので備忘録といつの日かのために書きます。
【Windows/Mac/Linux(Ubuntu)】AWS CLIインストール方法 - Qiita
AWS CLIインストール方法【Windows】インストーラをダウンロードするインストーラAWSCLIV2.msi をダブルクリックして起動Next を押下するI accept the t…
【Windows10】AWS CLIを導入してS3のファイルをダウンロードする。
この記事ではWindows10にてAWS コマンドラインインターフェイス (AWS CLI)をインストールし環境変数やプロファイルを設定した後、実際にS3からファイルをダウンロードする手順を紹介します。記事の流れについては目次を参照していただければと思います。
バックアップとリストア