スマートスタイル TECH BLOG

データベース&クラウド技術情報

Windows環境で Percona XtraBackup を利用する裏技

はじめに

About Percona XtraBackup

上記ページの「Supported operating systems」の項目の通り、Percona XtraBackupは Windows をサポートしていません。Percona XtraBackupはMySQLがインストールされたサーバ上にインストールする必要があるため、Windows版のMySQLを利用している場合は、XtraBackupを利用できません。

そんな中、「Windows版のXtraBackupをリリースしてほしい!」という多くの声に応えてか、Percona Database Performance Blogで、Dockerを活用してWindows環境で Percona XtraBackup を利用する方法が紹介されていました。

Running Percona XtraBackup on Windows … in Docker

本記事では、この裏技について実際に検証を行ってみたいと思います。

検証環境

検証環境は、Dockerを用いて用意します。

What to know before you install

The current version of Docker for Windows runs on 64bit Windows 10 Pro, Enterprise and Education (1607 Anniversary Update, Build 14393 or later). In the future we will support more versions of Windows 10.

上記の通り Docker for Windows の利用には、Windows10 Pro 環境が必要です。幸い、手元のPCが同OSを使っているため、今回はこちらで検証を進めます。

※上記環境が手元にない場合は、VMwareに Windows Server 2016 の無料評価版を利用する方法もあります

Windows 10 の開発環境を取得する

また、MySQLは5.7系の最新版である MySQL 5.7.22 を使用します(2018/05/11時点)。

検証手順

1. MySQLのインストール

MySQLダウンロードページ

上記サイトの “Recommended Download” から「mysql-installer-community-5.7.22.1.msi」をダウンロードし、インストーラを実行します。

※ 右の「Looking for the latest GA version?」のリンクから5.7のページに飛べます

インストーラが起動したら、画面の指示に従ってMySQL Serverをインストールして下さい。インストール対象は MySQL Server のみで構いません。

2. Dcokerのインストール / ファイル共有の設定

手元の Windows 10 マシンに、Docker on Windows をインストールします。

Install Docker for Windows

また、XtraBackupで取得したバックアップデータを保存するため、Dockerの設定でC:ドライブの共有を有効にする必要があります。手順は以下の通りです。

1. タスクバーのDockerアイコンを右クリック
2. 「Setting」を選択し、「Shared Drives」のメニューに進む
3. C:ドライブにチェックを入れ、「Apply」を選択
4. 設定が終わったら Docker アイコンを右クリックし、「Restart」を実行

3. XtraBackup用のDockerイメージを取得

XtraBackup用のDockerイメージを取得します。イメージのパスは「perconalab/percona-xtrabackup」です。

4. Backup用ユーザの作成

MySQLにログインして、XtraBackupが使用するユーザを作成します。

[mysql] mysql> CREATE USER ‘xtrabackup’@’%’ IDENTIFIED by ‘xtrapassword’;
mysql> GRANT RELOAD,PROCESS,LOCK TABLES,REPLICATION CLIENT ON . TO ‘xtrabackup’@’%’;
[/mysql]

※ ユーザのホストは、MySQLが稼働しているPCのIPアドレスを直接指定しても問題ありません

ついでに、簡単なテストデータも作成します。

[mysql] mysql> CREATE DATABASE d1;
mysql> CREATE TABLE d1.t1 (id int auto_increment primary key, col1 text, col2 text);
mysql> INSERT INTO d1.t1(col1, col2) VALUES (‘a’, ‘A’), (‘b’, ‘B’), (‘c’, ‘C’);
[/mysql]

5. XtraBackupの実行

XtraBackupのコンテナを以下のコマンドで起動することでバックアップが取得できます。–hostオプションで指定するIPアドレスはMySQLが稼働しているサーバ(PC)のIPアドレスです。
やっていることとしては、Windows上のフォルダとDockerコンテナ内のディレクトリを -v オプションで繋げることで、コンテナ上で起動するXtraBackupにデータを引き渡しているようです。

※ –innodb-undo-directoryオプションを指定しないと”signal 6″エラーでバックアップが失敗しました

なお、MySQLをインストールした場合のデフォルトのデータディレクトリは「datadir = C:/ProgramData/MySQL/MySQL Server 5.7/Data」になりますが、このようにパスに半角スペースが入ってしまうと上記のdockerコマンドで「docker: invalid reference format: repository name must be lowercase.」が発生してしまいます。
そのため、データディレクトリは「C:/mysqldata/」のように半角スペースは入らないパス(フォルダ)を指定する必要があります。

■ データディレクトリの変更手順

1. my.ini を以下のように編集

2. MySQLを停止(管理者コマンドプロンプトが必要です)

3. 新しいデータディレクトリを作成し、既存のフォルダからファイルを全てコピー

4. MySQLを起動(管理者コマンドプロンプトが必要です)

6. XtraBackupのリストア

バックアップのリストアもXtraBackupを使用することができます。

まず、MySQLを停止します。その後、既存のデータディレクトリを空にします。

–copy-backオプションでバックアップをリストアします。

コピーが完了したら、MySQLを起動して完了です。

おまけ

余談となりますが、MariaDB社が「MariaDB Backup」というXtraBackupによく似たソフトウェアを提供しています。こちらはWindows向けのパッケージも提供されていますので、選択肢の一つとして考えても良いかもしれません。

MariaDB Backup Overview


Percona

 

Return Top