ZRMを使用して、リモートのMySQLサーバをインターネットを通してバックアップする方法

著: Dmitri Joukovski ・ Pavel Pragin

MySQLデータベースはその一貫した高速のパフォーマンス、高い信頼性、操作の簡易性から、世界で最も利用されているオープンソースのデータベースです。MySQLデータベースをどのように使用していようとも、大事な情報が保存されているのなら、データベースアプリケーションに与える影響を最少にしながら、セキュアで整合性のとれたMySQLのバックアップを確実にする必要があります。バックアップソリューションがネットワーク、サーバ、ストレージリソースを最も効率的に使用するようにしてください。

Zmandaリカバリマネージャ(ZRM)はMySQLのためのバックアップとリカバリのソリューションで、柔軟性と堅牢性がありながらも操作が簡単なので業務が楽になります。ZRMの機能についてはこちらをご参照ください

データベースをバックアップするときに第一に考慮することは、バックアップの整合性とユーザやアプリケーションへの影響です。リモートにあるMySQLのバックアップには、さらに以下のことを考慮します:

  • ネットワークの使用量
  • セキュリティ
  • MySQLのデータを異なるホストにもリカバリできる柔軟性
MySQLのデータを異なるホストにもリカバリできる柔軟性は、ユーザがMySQL環境の全権限を持たない場合に、異なるバージョンのMySQLサーバや異なるOSを使用している、異なるマネージド・ホスティング・プロバイダにデータをリカバリするという選択肢を持ちたい時には重要になり得ます。

増分バックアップは、最後に取られた完全バックアップもしくは増分バックアップから変更のあったデータのみが回線を移動するので、バックアップウィンドウやネットワークの使用量が大幅に縮小されます。特定の時点へデータをリカバリするにあたり複数の増分バックアップイメージが必要な時にでも、ZRMで簡単に増分バックアップからデータのリカバリができます。増分バックアップのためにはMySQLのバイナリログを有効にする必要がありますが、MySQLのドキュメントによれば、バイナリログを有効にする結果として 速度が1%以下ですが遅くなります

ロジカルバックアップのバックアップファイルは、データベーススキーマやコンテンツを再構築するためのMySQL文がすべて含まれたテキストファイルなので、リカバリにはより柔軟性があります。ロジカルバックアップは、MySQLクラスタのためのNDBエンジンを除く、すべてのストレージエンジンに実行することができます。ロジカルバックアップの最大の利点はデータベースのリカバリに柔軟性があるということです。MySQLのロジカルバックアップを、異なるアーキテクチャや異なるデータベースにさえリストアすることができます。ロジカルのZRMバックアップイメージの移植性が、ZRMを移植に便利なツールにしています。以下はMySQLデータの移植例です:

  • Solaris上のMySQLからLinux上のMySQLへ
  • 元のストレージエンジンとは異なるストレージエンジンへ
  • 32ビット版のサーバから64ビット版のサーバへ
  • マネージド・ホスティング・プロバイダからデータセンターへ、あるいは異なるMySQLの構成をもつ他のプロバイダへ
当然ながら、このように柔軟なリカバリには短所もあります。ロジカルバックアップからのデータのリストアにはMySQL文をすべて読み込んで再発行しなくてはいけないので長い時間がかかることがあります。他にもロジカルバックアップのサイズが予測しにくいことがあげられます。データのタイプやデータベーススキーマによっては、ロジカルバックアップのサイズがデータベース自体よりも大きくなる可能性があります。解決策のひとつとして、ロジカルバックアップが基本的にテキストファイルであるため、十分な圧縮により対処することができます。

rawバックアップは、バイナリファイルをバックアップして、データベースそのものをコピーします。rawバックアップをロジカルバックアップと比較しての利点は:

  • バックアップは高速で、リカバリはさらに高速です。例えば、4~5 GB程ある同サイズのデータベースでは、rawバックアップはロジカルバックアップよりも5倍高速で、rawバックアップイメージのリカバリはロジカルイメージのリカバリよりも20倍高速です。
  • データベースを単純にコピーしたものであるため、バックアップの正確なサイズが分かります。
  • より優れた拡張性があるので、MySQLデータベースが比較的大きい場合(10~20 GB以上)には重要になり得ます。
rawバックアップのリカバリは、元データと同じOS上で、同じバージョンのMySQLサーバへのみ実行することができます。これは、MySQLのrawバックアップイメージを、異なるマネージド・ホスティング・プロバイダへリカバリができる可能性が低くなるということを意味し、このことをrawバックアップかロジカルバックアップかの選択をする時には考慮するべきです。

rawバックアップでもロジカルバックアップでもウォームバックアップができるので、MySQLサーバをバックアップのためにシャットダウンする必要はありません。しかしバックアップ中のテーブルはすべてロックされるので、ユーザはデータの入力をすることができなくなります。だからこそ、しきい値設定に基づいたバックアップを遅らせることを可能にする、ZRMスケジューリングのプラグインを利用することを考慮すべきです。例えば50人以上のユーザがデータベースにアクセスしている時には、バックアップを1時間遅らせることが可能になります。

MySQLをリモートバックアップするために重要な考慮すべき事のひとつに、ZRMとリモートのMySQLサーバ間をどのような接続方法で確立するのかの判断があります。ZRMはソケットベースの接続とSSHベースの接続にはそれぞれ別のプラグインを提供します。ZRMのアーキテクチャは柔軟なので、ユーザ自身でプラグインを作成することもできます。

名称が示唆するとおり、ソケットコピープラグインは、ZRM と MySQL間をIPベースのネットワークを通して通信させるためのソケットを確立します。ソケットコピープラグインは、MySQLサーバ上でxinetdによるサービスが動作していて、デフォルトのポート25300がオープンになっている必要があります。必要であれば、バックアップ管理者はポート番号を変更することも可能です。ソケットコピープラグインはセキュアではないため、セキュリティが重要ではない時、もしくはZRMとリモートのMySQLサーバ間をVPN接続してあるなど、他の手段でセキュリティが確立している時にのみ利用されるべきです。

SSHコピープラグインは、ZRMとリモートのMySQLサーバ間にセキュアな通信経路を確立します。SSHコピープラグインは、ZRMを使用してバックアップするユーザと、リモートのMySQLサーバ間の認証には、公開鍵暗号を使用します。SSHプラグインは、SSHデーモンが動作していて、standard TCPポート22がオープンになっている必要があります。SSHコピープラグインは、バックアップのセキュリティ確保が重要である時に最適です。SSH接続は、暗号化のためにCPUサイクルを余計に消費するので、ソケット接続でのバックアップと比較するとバックアップのパフォーマンスが低下する可能性があります。

下表は、MySQLのリモートバックアップのために、ソケットコピープラグインかSSHコピープラグインかを選択する場合に考慮することを集約したものです:

リモート接続をするプラグイン

使用するポート

セキュリティ

相対的なパフォーマンス

導入についての注記

 

 SSH コピー

 

 22 (変更不可)

 

 回線を通したバックアップデータの移動には、暗号化と厳しい認証を行います。

 

パフォーマンスは低めで、MySQLサーバのメモリ、CPUリソース、利用できる帯域幅に影響を受けます。

 

バックアップとリカバリ以外の目的ですでにリモートのMySQLサーバへのSSH接続が確立している可能性があります。まだであれば、ZRMとMySQLサーバ間のSSH接続を確立すべきです。

 

 

ソケットコピー

 

25300 (変更可能)

 

回線を通るバックアップデータはセキュアではありません。

 

 パフォーマンスは高めです。

 

MySQLサーバにソフトウェアを追加する必要があります。例えば、ZRM1.1のエンタープライズ版には、MySQL-zrm-enterprise-socket-server-1.1-1.noarch.rpmを使用します。コミュニティ版のための具体的なパッケージについては、ダウンロードページをご参照ください。

さらに技術的な詳細については、登録無料の Zmanda Network からホワイトペーパーによる完全版をダウンロードしてください。いくつかの一般的な状況におけるZRMの使用方法を得ることができます。例えば、SSHコピープラグインを使用することで、回線を通ったり保存をするデータがセキュアになるようにバックアップを実行する方法についての技術的詳細を提供しています:


ssh plugin

加えて、ソケットコピープラグインを使用して、さらに効率的にロジカルバックアップとrawバックアップを実行するための技術的詳細も提供しています。

豊富な機能を備えたZRM for MySQLは、各ユーザ特有のデータ保護ニーズに最適なバックアップ・リカバリの方針を実行するためのツールにすぎません。ZRMは堅牢で操作は簡単ですが、リモートのMySQLサーバの実装や、ユーザ特有のバックアップ・リカバリ要求に合せて、ZRM for MySQLの各操作オプションにおいて、あらゆる長所と短所を考慮するべきです。

リファレンス:
ZRM for MySQL
ZRM for MySQL wiki
Zmanda Forums


Feedback form