Percona Monitoring and Management(PMM)によるMySQLバックアップが便利そう

技術本部 サービスリライアビリティグループ(SRG)の鬼海(@fat47)です。
#SRG(Service Reliability Group)は、主に弊社メディアサービスのインフラ周りを横断的にサポートしており、既存サービスの改善や新規立ち上げ、OSS貢献などを行っているグループです。
本記事は、SRG 内にある DBWG(DBワーキンググループ)が全社内向けに提供しているデータベースに関する資料を公開します。
なにかの役に立てば幸いです。
 

はじめに


MySQLを運用したことのある方ならPercona社の名前は聞いたことがあるかと思います。
MySQLの運用を便利にしてくれるPercona-ToolkitやバックアップツールのXtraBackupなどのツールを開発している会社です。
そんなPerconaがリリースしているPercona Monitoring and Managementというツールのバックアップ管理機能が便利そうだったので触ってみました。
 

Percona Monitoring and Management(PMM)とは


PMMの紹介

Percona Monitoring and Management(PMM)は、Percona社が開発したモニタリングおよび管理ツールです。
MySQLだけではなくPostgreSQLやMongoDBなども管理できます。
クエリ解析やAlertingの機能などもあり非常に多機能な管理ツールとなっています。
 
公式Demoページからどんな管理ツールなのか触って体験することが可能です。
PMMには2016年頃からリリースされている1.xというバージョンと、2019年10月にGAリリースされたPMM2が存在します。
2023年2月現在の最新リリースは2.34.0となっています。
 

バックアップ管理機能

本日はバージョン2.18.0からテクニカルプレビュー機能でリリースされているバックアップ管理機能を試してみます。
MySQLのバックアップ機能は2023年2月現在もテクニカルプレビューのままとなっています。
 
MySQLのバックアップ管理機能のテクニカルプレビューの制限は下記の通りです。
  • 物理バックアップのみ。論理バックアップは非対応
  • 保存先はS3(またはS3互換API対応ストレージ)でローカル上や別サーバに出力不可
 
MongoDBのバックアップ機能については2022年11月リリースの2.32.0にてGAリリースとなっていて、上記の制限はありません。
MongoDBについては後日別の記事で紹介したいと思います。
 

PMMインストール手順


検証環境

ホスト名役割OSMySQL
DB1ソースCentOS 5.78.0.28
DB2レプリカCentOS 5.78.0.28
PMM01PMMサーバCentOS 5.7
 

PMMサーバの構築

公式ドキュメントのDockerをつかった構築方法に従います。
 
【PMM01にて】
Dockerインストール
 
PMM Serverのコンテナ起動まで
 
これで管理コンソールが立ち上がっているのでブラウザから確認可能です。
で先ほど指定したパスワードでログイン可能となります。
 

PMM Clientのインストールとノードの追加

【DB1,DB2にて】
 
管理対象のMySQLサーバにClientをインストールします。
 
PMM clientからMySQL接続できるユーザを作成します。
 
CLIでノード追加します。
 
※GUIからノード追加することもできますが、その場合は作成するMySQLユーザはPMM Serverからアクセスできるようにする必要があります。
GUIからノード追加する場合、左上のメニューの>矢印を押します。
 
[Configuration]→ [Add Instance to PMM]を選択します。
 
MySQLを選択します。
 
接続情報など必要情報を入力してAdd serviceを押します。
 
これでGUI上からノード追加することができます。

バックアップとリストアの実行


PMM Serverのバックアップマネジメント機能を有効にする

MySQLのバックアップ管理機能はテクニカルプレビューなので、別途有効にする必要があります。
左側メニューバーの歯車アイコンを選択→[PMM Settings]
 
[Advanced Settings[→[Backup Management]のボタンを有効化します。
 

PMM バックアップ機能の前提条件

バックアップ管理機能を利用するにはいくつかの前提条件があります。
  • PMM Clientがインストールされている
  • PMM ClientがMySQLに接続するユーザがBACKUP_ADMIN権限を持っている
  • MySQLがsystemdで起動している
  • mysqlユーザ、mysqlグループが存在している
  • データディレクトリが/var/lib/mysql である
  • pmm-agentユーザが/var/lib/mysqlディレクトリの読み書きできるようにする
  • パッケージをインストールして下記コマンドが実行できる
 
すでに先の手順でPMM Clientはインストール済みで、MySQLユーザも必要権限を持った状態になっているので、対応が必要な部分をやっていきます。
 
pmm-agentユーザが/var/lib/mysqlディレクトリの読み書きできるようにします。
 
パッケージをインストールして下記コマンドが実行できるようにします。
 

バックアップの実行

まずはバックアップの置き場所を登録します。
現時点ではS3(または互換API)しか利用できないのでS3を登録します。
※S3のバケットの作成とそのS3にアクセスできるIAMキーの発行をしておいてください。
 
左側メニューのBackupを開き、[Storage Locations]のタブを開いて[Add storage location]
 
続いて表示されるフォームに下記情報を入力します。
Name【わかりやすい名前を入力】
TypeS3
Endpoint 【s3.ap-northeast-1.amazonaws.com】
Bucket【S3に作成したバケット名】
Access Key【使用するIAMのキー】
Secret Key【使用するIAMのシークレットキー】
 
登録が完了したらバックアップをとってみましょう。
左側メニューの[Backup]を開き、[Create Backup]を選択します。
 
必要な情報を入力していきます。
Backup Nameわかりやすいようにホスト名や日付けなどを入力
Service Nameバックアップを取得するサーバを指定
Data modelPhysicalしか現時点(2023/02)では選択できない
Location先ほど作成したS3を選択
入力終わったら[Backup]を押します。
成功するとこのような画面になります。
 
失敗すると下記のような表示なりますが、GUI上からはエラー原因の確認はできないのでバックアップ取得もとのサーバのジャーナルログを確認しましょう。
 

リストアを試す

バックアップ取得後にリストア先のDBに新規でスキーマ作成しておいて、リストア後にちゃんと消えてるか確認します。
 
リストアします。
リストアしたいバックアップリストの右端の…を選択して、[Restore from backup]を選択します。
 
メニューが開くので[Restore]を押します。
Service selectionでSame serviceが選択されていると、バックアップをとったサーバと同一のサーバにリストアします。
Compatible servicesを選択すると、リストア先を選択できるはずなのですが別のサーバを選択肢として表示してくれませんでした。こちらは調査中です。
 
リストア完了すると、Restoresのタブにリストア結果が表示されます。
 
先ほどつくったスキーマが消えているか確認します。
 
無事消えていたのでリストアされていますね。

終わりに


非常に可能性を感じる機能でした。
まだ制約が多いのでより柔軟な設定変更ができるようになってほしいですね。
特にローカルバックアップや別サーバへのバックアップはほしいところです。
MongoDB利用のほうでは実現されているので、MySQLのバックアップ機能がGAリリースになったら改めて触ってみたいと思います。
 
SRG では一緒に働く仲間を募集しています。 ご興味ありましたらぜひこちらからご連絡ください。
 
このエントリーをはてなブックマークに追加