サポートと今すぐチャット
サポートとのチャット

NetVault Plug-in for MySQL 12.0 - ユーザー・ガイド

NetVault Backup Plug-in for MySQL- はじめに プラグインのインストールと削除 プラグインの設定 データのバックアップ データのリストア MySQLレプリケーションの使用 フェイルオーバー・クラスタ環境でのプラグインの使用 トラブルシューティング

データのバックアップ:概要

バックアップを完了する前に、以下のトピックの情報を確認します。

MySQL Standard/Communityオプションを使用する予定の場合は、以下のガイドラインと詳細を確認してください。

ハイフンなどの特殊文字を含むデータベースが環境内に存在する場合、以下の制限事項に注意する必要があります。

データベース名にハイフンが含まれると、MyISAMバックアップ方法がバージョン4.2で導入されたMysqldumpオプションに設定されている場合、MyISAMテーブルがバックアップされます。この場合、バックアップおよびリストアのパフォーマンスにマイナスとなる影響を及ぼす場合があります。
MyISAMバックアップ方法にデフォルトの[テーブル・ファイルのロック&コピー]オプションを使用し、データベース名にハイフンが使用されていると、MyISAMテーブルはバックアップされません。これは、本プラグインがMySQLコマンドを迂回し、直接テーブル・ファイルのコピーを試行するためです。本プラグインは、テーブル・ファイルが特定できないことを示すエラー・メッセージを出力し、バックアップ・ジョブがセーブセットを作成することなく失敗します。
Mysqldumpオプションを使用したがパフォーマンスが最適でないなど、何らかの理由でオリジナルの動作を維持して[テーブル・ファイルのロック&コピー]オプションを使用する場合、本プラグイン設定ファイル「nvmysql.cfg」のValidateDatabaseDirectoryパラメータを以下のように手動で「TRUE」に設定することができます。
その後、新規動作を適用しようと決めた場合、「nvmysql.cfg」ファイルでこのパラメータを「FALSE」に変更するか削除することができます。
MIXEDバイナリ・ログ形式の使用

MIXEDバイナリ・ログ形式を使用する場合、MySQLではUSEステートメントの使用を強制しません。したがって、Questではデータベースを使用する全ユーザーおよびプログラムによって変更が加えられるテーブルは必ずUSEで選択したデータベース内に配置し、データベースを横断する更新は実行しないことを推奨します。このガイドラインが環境に適さない場合は、QuestではMIXEDのバイナリ・ログ形式を使用しないことを推奨しています。

重要: MIXEDバイナリ・ログ形式を使用すると、増分バックアップおよび差分バックアップのジョブは警告を発して終了します。

MIXEDバイナリ・ログ形式を使用している環境では、PITリカバリ中、バイナリ・ログのエントリが再生されないことがあります。リカバリ中、プラグインはmysqlbinlogに「‑‑database」オプションを付けて使用し、リストア・ジョブに選択したデータベースに関連するエントリのみを再生します。「--database」が使用されていない場合は、すべてのエントリが再生され、すべてのデータベースに影響します。MIXEDバイナリ・ログ形式を使用する場合、「--database」オプションを付けたmysqlbinlogで一部またはすべてのエントリが再生されない動作を見せる場合があります。詳しくは、https://dev.mysql.com/doc/refman/5.7/en/mysqlbinlog.html#option_mysqlbinlog_databaseを参照してください。

MIXEDバイナリ・ログ形式が「--database」オプションを使用して正常に動作するには、データベースに対する特定の更新のトランザクションが発行される際、そのデータベースがUSEステートメントで選択されていなければなりません。

増分バックアップまたは差分バックアップがリストアされず、mysqlbinlogがMySQL Serverの現在のバイナリ・ログに適用されると、同じ状況が発生します。このような状況は、バイナリ・ログの出力動作が原因で発生します。バックアップへのバイナリ・ログの格納方法がその原因ではありません。

重要: MySQLコマンド・プロンプトで生成されるトランザクションに対しても、変更を加えるテーブルが必ずUSEステートメントで指定されているデータベースに属していることを確認してください。また、スクリプト、プログラム、およびMySQL Serverのデータベースを利用する他のアプリケーションで生成されるトランザクションに対しても同様に適用してください。

MIXEDがリカバリ動作に与える影響について、以下にいくつか示します。

例1:この例では、データの行がmy_databasemy_tableに挿入されます。USEステートメントはありません。このため、使用中のデータベースがデフォルトのデータベースになります(mysqlデータベースなど)。binlog_formatMIXEDに設定した場合、mysqlbinlogで「--database my_database」オプションがバイナリ・ログに適用されると次のトランザクションは再生されません。
例2:この例では、データの行がmy_databasemy_tableに挿入されます。USEステートメントがありますが、別のデータベースが指定されています。つまり、my_databaseUSEステートメントで選択されていません。binlog_formatMIXEDに設定した場合、mysqlbinlogで「--database my_database」オプションがバイナリ・ログに適用されると次のトランザクションは再生されません。
例3:この例では、データの行がmy_databasemy_tableに挿入され、my_databaseUSEステートメントで選択されています。Binlog_formatMIXEDに設定した場合、mysqlbinlogで「--database my_database」オプションがバイナリ・ログに適用されると次のトランザクションが再生されます。
例4:この例では、2つの挿入クエリを見てみます。1番目の挿入は、my_databaseに対して行われます。このデータベースはUSEステートメントで選択されているデータベースとは異なります。2番目の挿入は、my_databaseを選択しているUSEステートメントの範囲内で行われます。binlog_formatをMIXEDに設定した場合、1番目の挿入はUSEステートメントにmy_databaseが指定されていないため再生されません。2番目の挿入はUSEステートメントにmy_databaseが指定されているため再生されます。

[MySQL Enterpriseバックアップ]オプションを使用する場合、以下のガイドラインと情報について確認する必要があります。

例:2つのデータベースを含むMySQLインスタンスが配置されています(DB1およびDB2)。各データベースには2つのテーブルが含まれます。DB1にはT1_InnoDBとT1_MyISAM、DB2にはT2_InnoDBとT2_MyISAMが含まれます。T1_MyISAMとT2_MyISAMをバックアップすると、T1_InnoDBとT2_InnoDBもバックアップに含まれます。InnoDBテーブルの1つを含めると、InnoDBテーブルのみがバックアップされます。データベースの1つを選択すると、データベース内のテーブルのみがバックアップされます。
例:2つのデータベースを含むMySQLインスタンスが配置されています(DB1およびDB2)。各データベースには2つのテーブルが含まれます。DB1にはT1_InnoDBとT1_MyISAM、DB2にはT2_InnoDBとT2_MyISAMが含まれます。DB1とDB2をバックアップし、T1_InnoDBとT2_InnoDBを除外すると、T1_InnoDBとT2_InnoDBもバックアップに含まれます。2つのInnoDBテーブルのうち1つだけを除外すると、InnoDBテーブルのみがバックアップされます。
この説明は、MySQL Enterpriseバックアップ(mysqlbackupユーティリティ)の現在の動作を表していますが、MySQLの将来のリリース(3.12以降)では変更される可能性があります。
MySQL 5.6以降では、innodb_file_per_table設定オプションはデフォルトで有効化されています。innodb_file_per_tableオプションが無効化された状態で作成されたすべてのInnoDBテーブルは、InnoDBシステム・テーブルスペース内に格納されますが、バックアップから除外することはできません。InnoDBテーブルをテーブルスペース外に配置する必要がある場合、innodb_file_per_tableオプションを有効化した状態で、MySQL内でInnoDBテーブルを作成する必要があります。各.ibdファイルには、1つのテーブルのデータとインデックスのみが含まれます。

バックアップ戦略の策定

MySQLバックアップ戦略を定義する際、以下の点を明確にしておきます。

[MySQL Standard/Community]オプションまたは[MySQL Enterpriseバックアップ]オプションのどちらを使用するか。環境に両方のバージョンを導入している場合でも、プラグインでは1つの計画のみを使用することができます。MEBベース方法またはmysqldumpベース方法のいずれかを使用します。両方を併用することはできません。
MEBベースのオプションを使用すると、バックアップに選択したすべてのデータベース・オブジェクトに対してmysqlbackupユーティリティまたは適切なNetVault Backupスクリプトが1度実行され、そのジョブのログにmysqlbackupの出力ログが記録されます。データのバックアップには2つのステージが含まれます。最初のステージでは、すべてのInnoDBテーブルがコピーされます。2番目のステージでは、すべてのテーブル・タイプがコピーされます。InnoDBテーブルのホット・バックアップをサポートするだけでなく、MEBベース・オプションはバックアップ・パフォーマンスを向上させます。

上記の点を明確にしておくと、実装するバックアップ・タイプおよび頻度を定義する際に役立ちます。

MySQL Standard/Community用バックアップ・タイプの確認

[MySQL Standard/Community]オプションを使用する場合、本プラグインはmysqldumpを使用して以下のタイプのバックアップを実行します。

各MySQLインスタンスのデータ保護要件に適したバックアップ・シーケンスを選択するには、まずこれらのバックアップの違いを理解する必要があります。

[MySQL Standard/Community]オプション用フル・バックアップの場合、本プラグインはmysqldumpユーティリティを使用して、インスタンスに含まれるすべてのデータベースをバックアップします。フル・バックアップはほぼすべてのリストア・シナリオの起点になるため、あらゆるバックアップ戦略の基盤となります。プラグインで生成されたフル・バックアップを使用して、インスタンス全体、個々または複数のデータベース、個々または複数のテーブルをリストアできます。

[フルまたはインクリメンタル・バックアップ後、バイナリ・ログをパージ]オプションを使用して、フルまたは増分バックアップ後にバイナリ・ログをパージする必要があります。[MySQLレプリケーションを可能にする]が無効化され、[特定時点リカバリを可能にする]が有効化されている標準のMySQLサーバー設定でプラグインを使用する場合、このオプションはデフォルトで有効化されています。プラグインをクラスタに接続すると、このオプションは無効になります。バイナリ・ログのパージはプラグインの外で管理する必要があります。

[フルまたはインクリメンタル・バックアップ後、バイナリ・ログをパージ]オプションを選択しない場合、プラグインは設定ファイルで最終バックアップのログを追跡します。これにより必要に応じてバイナリ・ログを手動でパージすることができます。例えば、MySQLレプリケーション環境で、バイナリ・ログがスレーブ・インスタンスにレプリケートされるまで、バイナリ・ログをマスタ・インスタンスからパージしたくない場合などは、ユーザーはバイナリ・ログを手動でパージする必要があります。

増分バックアップでは、最後のフルまたは増分バックアップ以降に生成されたバイナリ(トランザクション)・ログをバックアップし、次にバイナリ・ログをパージします。バイナリ・ログはインスタンスに基づくため、すべてのデータベースのトランザクション・ログがまとめてバックアップされ、パージされます。

増分バックアップはメディア障害またはデータ損傷の発生後のデータ損失を低減する上で重要です。増分バックアップを使用すると、不正な更新やテーブルの削除などのデータ損傷の前および後の時点にリストアできます。フル・バックアップとは異なり、増分バックアップはバックアップ中に読み取り専用アクセスを必要としません。

MySQLの増分バックアップを実行するには、バイナリ・ログを有効にする「-log-bin」オプションを使用してMySQLインスタンスを開始する必要があります。この手順は、「MySQLサーバーでのバイナリ・ログの有効化(MySQL Standard/Communityオプションのみ)」で概説しています。詳しくは、『MySQLリファレンス・マニュアル』のバイナリ・ログに関するセクションを参照してください。

上記で説明したように、[フルまたはインクリメンタル・バックアップ後、バイナリ・ログをパージ]オプションを使用して、フルまたは増分バックアップ後にバイナリ・ログをパージする必要があります。このオプションを使用しない場合は、本プラグインは設定ファイルで最終バックアップのログを追跡します。これにより必要に応じてバイナリ・ログを手動でパージすることができます。

差分バックアップでは、最後のフルまたは増分バックアップ以降に生成されたバイナリ(トランザクション)・ログをバックアップします。ただし、この形式のバックアップでは、完了時にバイナリ・ログがパージされません。このため、以降の差分バックアップのサイズが大きくなり、その時間も長くなります。各差分バックアップには、前の差分バックアップにも含まれていたバイナリ・ログだけでなく、前の差分バックアップ以降に生成されたバイナリ・ログも含まれることになるため、サイズが大きくなり、その時間も長くなります。たとえば、月曜日から金曜日までの差分バックアップを伴って、日曜日にフル・バックアップの実行がスケジュールされている場合、月曜日の差分には日曜日のフル・バックアップ以降生成されたトランザクション・ログ・ファイルが含まれます。一方、火曜日の差分には、月曜日に生成されたバイナリ・ログ・ファイルおよび火曜日に生成されたバイナリ・ログ・ファイルが含まれます。水曜日の差分バックアップには、月曜日、火曜日、および水曜日のバイナリ・ログが含まれる、というようになります。

増分バックアップと同様に、差分バックアップを使用すると、メディア障害またはデータ損傷が発生した場合のデータ損失を低減でき、障害/損傷の前および後の時点にリストアできます。フル・バックアップとは異なり、差分バックアップはバックアップ中に読み取り専用アクセスを必要としません

差分バックアップを実行するには、バイナリ・ログを有効にする「-log-bin」オプションを使用してMySQLインスタンスを開始する必要があります。この手順は、「MySQLサーバーでのバイナリ・ログの有効化(MySQL Standard/Communityオプションのみ)」で概説しています。詳しくは、『MySQLリファレンス・マニュアル』のバイナリ・ログに関するセクションを参照してください。

増分バックアップでは、バイナリ・ログがバックアップ後にパージされ、最後の増分バックアップ後に作成されたバイナリ・ログのみがバックアップされるため、以降の増分バックアップの実行時間は短くなります。ただし、増分バックアップを使用するリストア・シーケンスでは、フル・バックアップから障害時点までに実行されたすべての増分バックアップを継続してリストアする必要があります。このため、複数のリストア・ジョブを開始するためにデータベース管理者に必要な操作が多くなり、このプロセスではリストアに長い時間がかかる可能性があります。

差分バックアップでは、バイナリ・ログがバックアップ後にパージされず、最後のフル・バックアップ後に作成されたすべてのバイナリ・ログがバックアップの対象となるため、以降の各差分バックアップの実行時間は長くなります。ただし、差分バックアップを使用するリストア・シーケンスでは、フル・バックアップのリストア後に差分バックアップを1つのみリストアするだけで済みます。このため、リストア・プロセスで必要なデータベース管理者の操作が少なくなり、このプロセスではリストア時間は短くなります。

場合によっては、データベース全体の包括的なバックアップおよびリストア手順に影響を与えることなく、特殊な目的でバックアップを実行しなければならないことがあります。たとえば、バックアップをテスト環境のソースにしたり、レプリケーション・スレーブ・インスタンスの初期同期用に使用する場合などです。個々のデータベース/テーブル・コピーのみのバックアップは、このような特殊な目的のために設計されており、MySQL環境をコピーすることができます。コピーのみのバックアップは、設定されたバックアップ・シーケンスから独立しているため、フル、増分、または差分バックアップのリカバリ可能性には影響しません。ただし、フル・バックアップの代わりとして使用することはできません

個々のデータベース/テーブル・コピーのみのバックアップで説明したとおり、データベース・コピー全体のバックアップ・オプションは、選択したデータベースに該当する全InnoDBテーブルなど、選択したMySQLデータベースのコピーを作成するため、特殊な目的の場合にのみ使用します。作成されるコピーのバックアップは、設定されている複数のバックアップのシーケンスとは独立しているため、フル、増分、または差分バックアップのリカバリ可能性には影響しません。ただし、フル・バックアップの代わりとして使用することはできません

データベースの1テーブルのみが選択されている場合でも、データベース・コピー全体のバックアップ・オプションでは、選択したデータベースの全体をバックアップします。このオプションでは、データベースごとのバックアップは選択できますが、テーブルごとの選択はできません。また、このオプションで対応しているのはInnoDBテーブルのバックアップのみになります。

個々のデータベース/テーブル・コピーのみのバックアップでは、データベースごとの選択およびテーブルごとの選択ができ、またバックアップにはInnoDBテーブルとMyISAMテーブルを含めることができます。ただし、バックアップの完了は、通常データベース・コピー全体のバックアップの方が個々のデータベース/テーブル・コピーのみのバックアップより早く完了します。

MySQL Enterpriseバックアップ用バックアップ・タイプの確認

[MySQL Enterpriseバックアップ]オプションについて、本プラグインは選択されたすべてのデータベース・オブジェクトに対してmysqlbackupコマンドを1度実行し、フルおよび増分タイプのバックアップをアーカイブします。フル、増分、およびTTS。

[MySQL Enterpriseバックアップ]オプションのフル・バックアップでは、プラグインはmysqlbackupユーティリティまたは適用できるNetVault Backupスクリプトを使用して、インスタンスに含まれるすべての選択データベース・オブジェクトをバックアップします。フル・バックアップはほぼすべてのリストア・シナリオの起点になるため、あらゆるバックアップ戦略の基盤となります。プラグインで生成されたフル・バックアップを使用して、インスタンス全体、個々または複数のデータベース、個々または複数のテーブルをリストアできます。

InnoDBテーブルについて、最後のフルまたは増分バックアップ以降に変更が加わったデータのみがバックアップされます。非InnoDBテーブルの場合、最後のフルまたは増分バックアップ以降に何かテーブル内で変更された場合、テーブル全体がバックアップされます。

TTSバックアップを実行する場合、プラグインはフル・バックアップを実行し、「--use-tts」MySQLオプションを追加します。

TTSバックアップを生成する場合は、次の制限に注意してください。

Innodb_file_per_tableオプションを有効にして作成したテーブルのみがバックアップに含まれます。

--use-tts」オプションを使用する際の制限については、https://dev.mysql.com/doc/mysql-enterprise-backup/4.0/en/backup-partial-options.htmlを参照してください。

関連ドキュメント

The document was helpful.

評価を選択

I easily found the information I needed.

評価を選択