データベースリストアの方法をメモしておきます。実行環境は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)