さくらのクラウドのPITRを試す|MariaDBを任意時点に復元する手順

こんにちは、UOZUです。

今回の記事では、データベース(アプライアンス)のPITRについて実際に設定から復元まで試してみようと思います。

目次

PITRとは

一般的なバックアップでは、基本的に「バックアップを取得した時点」へ復元します。そのため、最後のバックアップ取得後に行われた更新内容は、復元対象に含められない場合があります。

PITR(Point-In-Time Recovery:ポイントインタイムリカバリ)を利用すると、復元可能期間内の任意の時点を指定して、その時点の状態にデータベースを復元できます。障害や誤操作が発生した場合でも、直前の状態に近い時点へ戻しやすくなる点が大きなメリットです。

なお、さくらのクラウドのデータベース(アプライアンス)では、PITR実行時に既存のデータベースへ上書き復元するのではなく、新しいDBアプライアンスを作成して復元します。

PITRに必要な前提条件とバックアップの種類

データベース(アプライアンス)でPITRが利用できる条件として、「継続的バックアップ」が少なくとも1つ取得されていることが条件となります。

バックアップ方法PITRデータベースエンジン冗長化レプリケーション時現行データベースへの復元バックアップ先
バックアップ(v1)不可PostgreSQL
MariaDB
問わないマスターのみ可能
継続的バックアップ可能MariaDB 10.11以降のみ不可マスターのみ不可NFSアプライアンスが必須

また「継続的バックアップ」が利用できるデータベースエンジンや設定についても条件があり、データベースエンジンがMariaDB 10.11以降であること、冗長化されていないこと、レプリケーション構成の場合はリードレプリカでは無いことが条件となります。

また継続的バックアップの保存先にNFSアプライアンスが必要となるので、その作成も必要になります。

PITRの準備 – 継続的バックアップ取得設定

では実際にPITRを進めるにあたり、継続的バックアップ取得の為の準備を行います。仮想サーバーを192.168.0.20、NFSアプライアンスを192.168.0.30、データベース(アプライアンス)を192.168.0.40で進めてみようと思います。

想定する構成図

NFS(アプライアンス)の作成

まずはNFS(アプライアンス)の作成を行います。データベース(アプライアンス)と接続を行う予定のスイッチを接続先のスイッチに選び、設定したいローカルIPアドレス、ネットマスク、ゲートウェイを指定していきます。

NFS作成画面

任意の名前を指定したら、+作成ボタンでNFSを作成しましょう。

データベース(アプライアンス)の作成と継続的バックアップの指定

続けてデータベース(アプライアンス)の作成とバックアップ設定を進めます。冗長化はなし、データベースエンジンはMariaDBを選択します。

冗長化とデータベース選択画面

デフォルトユーザ名、パスワードを設定し、IPアドレスなどのネットワーク設定も決めて行きます。

デフォルトユーザ名、ネットワーク設定画面

現時点で「定期バックアップ」には「バックアップしない」「バックアップ(v1)」「継続的バックアップ」が選べる様になっているので、「継続的バックアップ」を選択の上、バックアップ先には作成したNFSアプライアンスを指定します。

NFSアプライアンスの作成時、初期状態でNFSユーザは作成されず、ディレクトリ/exportのみが存在しますので、NFSアプライアンスのIPを192.168.0.30とした際は、バックアップ先にはnfs://192.168.0.30/exportと指定する事で設定が出来ます。

バックアップ設定・指定画面

バックアップ取得間隔も指定し、+作成で作成を完了しましょう。

継続的バックアップの確認とPITRの実行

では継続的バックアップから実際にPITRが実施できるか確認してみます。データベースへの定期的な書き込みをしたいので、仮想サーバー上で時間を書き込むクエリを準備しておきます。

検証用の定期的クエリの準備

検証用データベースuozucron_time_logテーブルに、時刻を5分ごとに書き込む設定をしておきます。

$ vi .my.cnf
[client]
host=192.168.0.40
user=uozu
password=**************
$ mariadb
CREATE DATABASE IF NOT EXISTS uozu;
USE uozu;
CREATE TABLE IF NOT EXISTS cron_time_log (
  id INT AUTO_INCREMENT PRIMARY KEY,
  inserted_at DATETIME NOT NULL
);
exit
$ crontab -e
*/5 * * * * /usr/bin/mysql uozu -e "INSERT INTO cron_time_log (inserted_at) VALUES (NOW());"

テーブルを確認すると、5分毎に時刻が書き込まれている事が確認できます。

$ mariadb
select * from uozu.cron_time_log;
+----+---------------------+
| id | inserted_at         |
+----+---------------------+
|  1 | 2026-07-06 19:09:57 |
|  2 | 2026-07-06 19:14:57 |
|  3 | 2026-07-06 19:19:58 |
|  4 | 2026-07-06 19:24:58 |
+----+---------------------+

バックアップ取得確認とPITRを利用した復元

継続的バックアップが実行されるまで、しばらく待機したうえで、PITRを利用した復元を実施してみます。

継続的バックアップの履歴

復元方法はシンプルです。右下のPITRボタンをクリックすると、新しいデータベース(アプライアンス)の作成画面が出てくるので、復元したい時刻を指定し、作成する新しいデータベース(アプライアンス)のIPアドレスなどを指定したら、+作成ボタンで復元が可能です。

PITR復元時の復元時間指定画面
PITR復元時のネットワーク設定画面

復元は今日の0時、復元するデータベースのIPは192.168.0.50として進めてみます。

復元したデータベースへの接続と状況確認

早速データベースに接続してテーブルの状況を確認してみます。

$ mysql -h 192.168.0.50 -u uozu -p
select * from uozu.cron_time_log order by id desc limit 10;
+----+---------------------+
| id | inserted_at         |
+----+---------------------+
| 59 | 2026-07-09 23:59:58 |
| 58 | 2026-07-09 23:54:58 |
| 57 | 2026-07-09 23:49:58 |
| 56 | 2026-07-09 23:44:57 |
| 55 | 2026-07-09 23:39:57 |
| 54 | 2026-07-09 23:34:58 |
| 53 | 2026-07-09 23:29:58 |
| 52 | 2026-07-09 23:24:57 |
| 51 | 2026-07-09 23:19:57 |
| 50 | 2026-07-09 23:14:58 |
+----+---------------------+

指定した日時のデータで復元が出来ている様ですね!

さいごに

今回は、さくらのクラウドのデータベース(アプライアンス)でPITRを利用する流れを試してみました。

PITRを利用するには、事前にNFSアプライアンスを用意し、データベース側で継続的バックアップを有効にしておく必要があります。通常のバックアップと比べると準備は少し増えますが、任意の時点に近い状態へ復元できるため、誤操作や障害発生時の復旧手段として有用です。

また、PITRでは既存のDBアプライアンスへ直接上書きするのではなく、新しいDBアプライアンスとして復元されるため、復元後のデータ確認や切り戻し判断もしやすいと感じました。

データベースのバックアップ設計を行う際は、通常バックアップだけでなく、PITRの利用も検討してみるとよさそうです。

さいごまでお読みいただき、ありがとうございました!

お問い合わせ

この記事をシェアする
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ネットアシスト運用チーム10年目の運用エンジニア
ベーシック試験 | さくらのクラウド検定
AWS Certified Solutions Architect - Associate

目次