データベースリストアの方法をメモしておきます。実行環境はMastodon(kmyblue)ですが、Misskey専用のフォルダー・ユーザー名・起動コマンドに修正すればいけると思います。 詳しい検証はしていないので、行う場合は自己責任でお願います。 ## 大まかな流れ 1. Mastodonをインストール。postgreSQLにログインユーザーとデータベース名をメモ 2. インストール後、Mastodonのプロセスをいったん止める 3. postgresユーザーに切り替えて、所有者がリストア前のユーザーになってるか確認 4. 1で作成したデータベースを削除する 5. 同じユーザー名とデータベース名で作成する 6. データベースをアップロードする 7. mastodonユーザーでログイン、リストアする 8. Mastodonを起動する ## 細かい手順 ### 1.Mastodonのインストール まず、従来の方法でMastodonをインストールします。その時にPostgreSQLに登録する情報をリストア前のユーザー名とデータベース名と同じにします。リストア前のデータベースと違う情報にすると、データをインポートできなくなるので気を付けてください。 #### もしリストア前の情報がわからなかったら…… Mastodonは`.env.production`に書いてあります。Misskeyは`default.yml`だったと思う。 ### 2.Mastodonのプロセスを止める ``` $ systemctl stop mastodon-web mastodon-sidekiq ``` 作業の前に必ず落とすこと。 ### 3.postgresユーザーに切り替えて、データベース名と所有者を確認(省略可) Tera Termでrootユーザーからpostgresユーザーに切り替えます。 ``` $ sudo su - postgres ``` 切り替えたあと、下記のコマンドで念のためデータベース名とユーザー名を確認します。 ``` $ psql -l ``` ### 4.1で作成したデータベースを削除する 下記のコマンドでデータベースに入ります。 ``` $ psql ``` データベースにログイン後、さきほど作ったデータベースを削除します。 ``` $ drop database <データベース名>; ``` ### 5. 同じユーザー名とデータベース名でデータベースを作成する ``` $ CREATE DATABASE <データベース名> OWNER <ユーザー名>; ``` 作り終わったらデータベースユーザーからログアウトし、rootユーザーに戻ります。 ### 6.データベースをアップロードする FTPソフトなどでバックアップしたデータベースをアップロードします。 #### セキュリティrootログインをつぶしてる場合 rootログインをつぶしている場合、アップロードできるディレクトリが限定されています。 対処法としては、FTPにログインできるユーザーの`/home/`ディレクトリにいったんアップロードして、Tera Tarmでrootユーザーでログイン→ファイルを移動させます。 ``` $ mv /home/<ファイルを保管したユーザー名>/<ファイル名> /home/mastodon/ ``` ### 7.Mastodonユーザーでログイン、リストアする mastodonユーザーでログインし、下記のコマンドを入力します。 ``` $ psql -d (リストア先の新データベース名) < (バックアップした旧データベース名) ``` もしリストアできたか不安な場合、root権限に戻ったあとに下記のコマンドを入力して情報を確認します。 ``` $ sudo su - postgres $ psql \c <データベース名> $ \dt ``` この時Calckeyデータベース一覧が出てきてたらリストア成功してるはず。(未確認) ### 8.再起動する NginxとCalckeyを再起動してデータを確認してください。 ## 関連記事 - [[Mastodon・Misskeyのデータベースをバックアップする]] - [[Mastodon・MisskeyのデータベースをS3にバックアップする]] - [[Mastodon・MisskeyのデータベースをR2にバックアップする]] ## 参照サイト - [さくらのVPS、Ubuntu 20.04環境へのMastodon「再構築」の話 — Telmina's notes](https://notes.telmina.com/rebuild-mastodon-server-on-ubuntu-20-at-sakura-vps)