Mastodon
  • Mastodonの使い方
    • Signing up for an account
    • Setting up your profile
    • Posting toots
    • Using the network features
    • Dealing with unwanted content
    • Promoting yourself and others
    • Set your preferences
    • その他の設定
    • Using Mastodon externally
    • Moving or leaving accounts
  • Mastodonの構築
    • マシンの準備
    • ソースからインストール
    • 環境設定
    • オプションのインストール
      • 全文検索
      • 秘匿サービス
      • シングルサインオン
    • セットアップを完了する
    • 開発者向けコマンドラインを利用する
    • 新しいバージョンへアップグレード
    • サーバのバックアップ
    • 新しいマシンへの移行
    • サーバーのスケールアップ
    • モデレーション
    • トラブルシューティング
  • アプリケーションの開発
    • Getting started with the API
    • Playing with public data
    • Obtaining client app access
    • ログイン
    • ガイドラインとベストプラクティス
    • ライブラリ等
  • コントリビューション
    • 技術的情報
    • 開発環境のセットアップ
    • ソースコードの構造
    • ルーティング
  • スペック
    • ActivityPub
    • WebFinger
    • Security
    • Microformats
    • OAuth
  • REST API
    • OAuthスコープ
  • API一覧
    • apps
      • oauth
    • accounts
      • bookmarks
      • favourites
      • mutes
      • blocks
      • domain_blocks
      • filters
      • reports
      • follow_requests
      • endorsements
      • featured_tags
      • preferences
      • suggestions
    • statuses
      • media
      • polls
      • scheduled_statuses
      • streaming
    • timelines
      • conversations
      • lists
      • markers
    • notifications
      • push
    • search
    • instance
      • trends
      • directory
      • custom_emojis
    • admin
    • proofs
    • oembed
  • APIエンティティ
    • Account
    • Activity
    • Admin::Account
    • Admin::Report
    • Application
    • Attachment
    • Card
    • Context
    • Conversation
    • Emoji
    • Error
    • FeaturedTag
    • Field
    • Filter
    • History
    • IdentityProof
    • Instance
    • List
    • Marker
    • Mention
    • Notification
    • Poll
    • Preferences
    • PushSubscription
    • Relationship
    • Report
    • Results
    • ScheduledStatus
    • Source
    • Status
    • Tag
    • Token

サーバのバックアップ

日常的にバックアップを取る方法。(任意という名の強制)

現実問題として、Mastodonサーバーを日常的に、かつ確実にバックアップを取らないといけません。

概要

バックアップすべきものを重要度順に並べています。

  1. PostgreSQLデータベース
  2. .env.production等の機密ファイル
  3. ユーザーがアップロードしたファイル
  4. Redisデータベース

「失敗」と「その後」

一般に人間が回避することができる障害のタイプは2つあります。

  1. ディスク上のデータ破損などのハードウェアの障害特定のデータの不正な削除など
  2. 人的およびソフトウェアのエラー

このドキュメントでは、1.のみを扱います。

PostgreSQLのデータベースを失ってしまった場合、もうお手上げ状態です。Mastodonは重要なデータのほぼ全てをPostgreSQLデータベースに保存しています。この場合、全てのアカウントや投稿、フォロワー情報なども失われます。

機密ファイルを失ってしまった場合、一部のMastodonの機能が利用不可になります。ユーザーはログアウトされ、2要素認証は利用できなくなり、Web Push APIは機能しなくなります。

ユーザーがアップロードしたファイルを失うということは、アバター、ヘッダー、メディアの添付ファイルが失われるということですが、Mastodon自体は停止しません。

Redisデータベースを失ってもほとんど無害です。回復不能なデータは、Sidekiqキューの内容と、以前に失敗したジョブのスケジュールされた再試行だけです。ホームフィードとリストフィードはRedisに保存されますが、tootctlを使用して再生成できます。

最適なバックアップは、いわゆるオフサイトバックアップ、つまりMastodon自体と同じマシンに保存されていないバックアップです。ホストされているサーバーのハードディスクドライブが爆発した場合、同じハードドライブに保存されているバックアップはあまり役に立ちません。

機密ファイルのバックアップ

アプリケーションの機密ファイルは変更されないため、バックアップが最も簡単です。.env.productionをどこか安全なところに保存してください。

PostgreSQLのバックアップ

PostgreSQLは、停電、ハードディスクドライブの障害、スキーマの移行の失敗によるデータ破損の危険にさらされています。そのため、ときどきpg_dumpまたはpg_dumpallでバックアップを作成することをおすすめします。

高可用性が求められる場合、ホットストリーミングレプリケーションを使用して、常に最新のデータを持つ2番目のPostgreSQLサーバーを用意し、他のサーバーがダウンした場合に切り替えることができます。

ユーザーがアップロードしたファイルのバックアップ

Amazon S3、Google Cloud、Wasabiなどの外部オブジェクトストレージを使用している場合、これらのバックアップについて心配する必要はありません。各企業は、ハードウェア障害の処理に責任を負っています。 ローカルファイルストレージを使用している場合、アップロードされたファイルはデフォルトでpublic/systemに保存されます。この可変ディレクトリのコピーを作成するのはあなた次第です。

Redisのバックアップ

Redisのバックアップは簡単です。Redisは、/var/lib/redis/dump.rdbにバックアップが必要な内容の全てを含んでいます。

最終更新 March 4, 2020 · このページを改善する
他の言語: English

Merch

Tシャツとステッカー(英語)

Mastodonに参加しよう · ブログ · ·

ソースコード · CC BY-SA 4.0 · インプリント