PR VPS

Misskeyのデータベースバックアップ方法【初心者でもわかりやすく説明】

2024年9月3日

  1. HOME >
  2. VPS >

Misskeyのデータベースバックアップ方法【初心者でもわかりやすく説明】

2024年9月3日

 

Misskeyの運用に欠かせないデータベースのバックアップ方法について説明します。

 

VPS運用経験者はもちろん、技術を持っていないVPS運用初心者でもわかりやすいツールを用いて、手順も細かく説明しています。ぜひご参考にしてみください。

 

以下について記載しています

  • 手動バックアップ方法
  • 自動バックアップ方法
  • 復元(リストア)方法

 

 

Misskeyのデータベースバックアップ方法

 

当ブログがテスト運用しているMisskeyのインスタンスはXserver VPSを利用しています。

 

Xserver VPSにはプランによっても異なりますが、ディスク容量が50GB~用意されているので、VPSを丸ごとバックアップしてしまっても良いでしょう。

 

ただしこの方法はデータベースを含めたデータ全体をバックアップするので、少し効率が悪いです。

 

そこでネット上のストレージにデータベースだけをバックアップする方法が一般的ですが、利用自体は無料ですがデータを取り戻すときに料金が発生(エグレス料金)するなどのデメリットも。

クラウドフレアR2など便利はありますが、エグレス料金が意外にかかります。

エグレス料金とは

 

ここでは、データベースのバックアップを管理者ご自身のパソコンに抜き出す方法をご紹介します。

 

データをパソコンに抜き出すので、どこへでも保存ができるという利点があります。

 

その手順をこれから説明していきます。

 

Misskeyデータベースバックアップの概要

 

データベースのバックアップはTera Termのみでも可能ですが、わかりやすい操作を実現するためWinSCPも併せて使います。

いくつかコマンドを入力していきますが今回はコマンドの詳しい説明は省略します。

 

Tera Termのインストール方法(直リンク)WinSCPのインストール方法(直リンク)についてはMisskyインスタンスの立て方にて案内しています。

Misskeyサーバーの立て方(インスタンス)Xserver VPSで徹底解説【初心者】

続きを見る

 

Tera Termを起動してMisskeyにログイン

Tera Termを起動し、「ホスト」にVPSパネルに表示されているIPアドレスを入力し、サービスに「SSH」を選びます。最後に「OK」をクリックします。

Tera Termを起動し、「ホスト」にVPSパネルに表示されているIPアドレスを入力し、サービスに「SSH」を選びます。最後に「OK」をクリックします。

 

警告が出ますが「続行」をクリックします。

警告が出ますが「続行」をクリックします。

 

ユーザ名に「root」、パスフレーズに「rootパスワード」を入力し、「OK」をクリックします。

ユーザ名に「root」、パスフレーズに「rootパスワード」を入力し、「OK」をクリックします。

 

コマンドはコピペしてお使いください。コピペするときは、一行ずつコピーして貼り付けてください。

 command
sudo mkdir /var/backup
sudo chmod 777 /var/backup

sudo mkdir /var/backup

 

バックアップディレクトリが作成できました!

 

ここからはいきなり2つに分岐します。やりやすい方を選んでください。

  • 手動でバックアップする場合
  • 定期的にバックアップする場合

 

手動でバックアップする場合

 command
$ sudo -u postgres pg_dumpall | gzip -c > /var/backup/misskey$(date +%Y%m%d%H%M)-backup.gz

 

コマンド実行後、「could not change directory to "/root":権限がありません」と出ますが無視して構いません。

ディレクトリを作成したユーザーとデータベースのバックアップをするためのユーザーが異なるためです。バックアップは完了していますので、進めてください。

 

下記のコマンドでバックアップファイルが作成されていることが確認できます。赤文字部分が作成されたバックアップファイルです。

 command
ls -l /var/backup

 

WinSCPを起動し下記を入力し「ログイン」しましょう。

  • 転送プロトコル:SFTP
  • ホスト名:VPSのIPアドレス
  • ユーザ名:root
  • パスワード:VPS作成時に入力したrootパスワード

WinSCPを起動し下記を入力し「ログイン」しましょう。

 

「不明なサーバーに~~」という警告メッセージが出ますが「はい」をクリックして続行します。以降は出ません。

「不明なサーバーに~~」という警告メッセージが出ますが「はい」をクリックして続行します。以降は出ません。

 

WinSCP(左のウィンドウがパソコン)とVPS(右のウィンドウがXserver VPS)が接続されました。

WinSCP(左のウィンドウがパソコン)とVPS(右のウィンドウがXserver VPS)が接続されました。

 

ディレクトリアイコンをクリックします。

ディレクトリアイコンをクリックします。

 

バックアップディレクトリ「/var/backup」を入力し、OKをクリックします。

バックアップディレクトリ「/var/backup」を入力し、OKをクリックします。

 

バックアップディレクトリに移動し、バックアップファイルが作成されていることを確認できればOKです。

バックアップファイルのアイコンはお使いのPC状況で変わります。アイコンはバックアップやリストア(復元)には全く関係ないので無視してください。

 

バックアップデータベースのファイルはドラッグアンドドロップで移動ができます。保存して置きたい先へ自由に移動してください。画像はデスクトップにデータを移動しています。

 

バックアップしたデータを無事VPS上から移動できましたら、VPS上にあるバックアップファイルは消して問題ありません。

 

VPSのディスク容量は貴重なのでバックアップ後のデータ移動が済みましたら削除してしまいましょう。

 

手動でのデータベースバックアップ手順は終了です。

 

自動で定期的にバックアップする場合

WinSCPを使って、下記のディレクリに移動します。

 command
/etc/cron.d

 

空白部分を右クリックし「新規」「ファイル」とクリックしていきます。

 

ファイル名入力の画面がでますので、「db_backup」と入力します。

 

ファイルの中身が開きますので、下記のコマンドをゴッソリ貼り付けます。3行目の「15 23 * * * 」は下で説明ありますのでご注意ください。

 command
SHELL=/bin/sh
MAILTO=""
15 23 * * * postgres pg_dumpall | gzip -c > /var/backup/misskey$(date +\%Y\%m\%d\%H\%M)-backup.gz
30 23 * * * root find /var/backup -name '*.gz' -mtime +14 -delete

 

数字と*の部分について【「15 23 * * * 」の補足】

「15 23 * * *」には以下の意味があります。

 

「15 23 * * *」は左から「分/時/日/月/曜日」を表しており、*は指定なしとなります。「15 23 * * *」の場合「毎日夜23時15分にバックアップを開始せよ」という意味になります。

 

すべて「*」にしてしまうと1分ごとにバックアップがはじまってしまうので、最低でも「分/時/」は指定してください。

 

曜日の指定も数字を利用します。曜日と数字の関係は以下。

  • 0:日曜日
  • 1:月曜日
  • 2:火曜日
  • 3:水曜日
  • 4:木曜日
  • 5:金曜日
  • 6:土曜日

 

おすすめとしては毎週日曜の深夜2時にバックアップをすると良い感じですね。

 

推奨設定をする場合は「0 2 * * 0」にすればOKです。

 

コマンドの貼り付けが終わりましたら、ファイルを保存します。

 

グレーアウト(灰色)になれば保存完了です。

 

最後に下記のコマンドを一行ずつ実行します。

 command
sudo chmod 644 /etc/cron.d/db_backup
sudo systemctl restart cron

 

 

あとは指定した時刻にバックアップが開始されることを確認しましょう。

 

自動バックアップは古いデータの削除も

自動バックアップの場合、指定した時間にどんどんバックアップを実施していきます。

 

そのため、知らぬうちにバックアップファイルでVPSのディスク容量を圧迫してしまいます。

 

ここでは、バックアップしたデータを定期的に削除していくコマンドの追加を説明します。

 

といってもとても簡単で先ほど作成したファイル(db_backup)に以下の一行を追加するだけです。数字は一例(23時30分に実行を表す)です。

 command
30 23 * * * root find /var/backup -name '*.gz' -mtime +14 -delete

 

「-mtime +14」は14日前に作成したファイルを探し出すコマンド(パラメータ)で「-delete」は削除を意味するパラメータです。

 

追記したコマンドの意味は「2時5分にgzファイルを洗い出し日付が14日前のファイルは削除せよ」という意味になります。

 

14日分もバックアップはいらないと思うのであれば、この数字を小さくしていけばOkです。7日分なら+7とすればOKです。

 command
5 2 * * * root find /var/backup -name '*.gz' -mtime +7 -delete

 

指定した時刻にバックアップが完了していれば自動バックアップ機能は動作しています。

 

また、14日後以降は古いものから削除されていきますので、自動バックアップ開始後は14日後の動作も確認しておくことを忘れずに。

 

以上でデータベースバックアップの手順説明は終わりです。

 

データベースの復元

バックアップしたデータベースの復元方法を説明します。

 

/var/backupディレクトリにバックアップデータベースがない場合は、保存先から/var/backupへ移動しておきます。

 

WinSCPを使ってバックアップファイルを移動した要領で移動しておきましょう。

 

下記のコマンドを1行ずつ実行します。赤文字部分はあなたが取得したバックアップファイル名となりますので、ご注意ください。

 command
cd /var/backup
gzip -c -d misskey202311092327-backup.gz > misskeydb.sql
ls

lsコマンドでmisskey.sqlというファイルが生成されていれば復元準備は完了です。

 

最後に以下のコマンドを実行します。

 command
sudo -u postgres psql -f misskeydb.sql

 

以上で復元が開始されます。

 

Misskeyのデータベースバックアップ方法:まとめ

 

いざという時のためにバックアップはとても重要です。

 

VPS自体を丸々バックアップすることも良いですが、すべてをバックアップすることは少し効率が悪いです。

 

データベースのバックアップを定期的に取っておくことで、少ない容量でデータを保つことができます。

 

手動バックアップ、自動バックアップ、ご自身のやりやすい方法でバックアップを実施してください。

 

 

参考サイト

 

記事の監修・執筆者

ENGI WORKS
ENGI WORKSVPSエンジニア
✅サイト運用者は大手電機メーカー勤務 ✅サーバー系、ネットワーク系の保守・運用・設計・構築・セールスと多岐に渡る経歴を持つ ✅エンジニア歴20年 ✅詳細画像や操作など細部に渡る記事執筆に定評有り ✅VPSのことならどんなことでもご質問ください。✨VPSをひとりでも多くの人に…✨

-VPS
-

5
0
ご質問などお気軽にどうぞ!お待ちしています。x