バックアップとデータアーカイブに関しては、IT部門は、厳格なサービスレベル契約を満たし、ダウンタイムを最小限に抑え、バックアッププロセスをスピードアップし、コストを削減する、より堅牢なバックアップ手順を提供することにストレスを感じることがよくあります。より少なく、厳しいセキュリティ要件を満たします。
MySQLデータベースのバックアップを作成する方法は複数ありますが、これらの方法を論理と物理の2つのグループに分けることができます。
論理バックアップには、SQLコマンドを使用してエクスポートされ、ファイルに保存されるデータが含まれます。たとえば、SQLコマンドのセットを実行すると、データベースのコンテンツが復元されます。出力ファイルの構文にいくつかの変更を加えることで、バックアップをCSVファイルに保存できます。
論理バックアップは簡単に実行できます。ワンライナーだけで、インスタンス内のすべてのテーブル、データベース、またはすべてのmysqlデータベースのバックアップを取ることができます。
残念ながら、論理バックアップには多くの制限があります。それらは通常、物理的なものよりも遅いです。これは、SQLコマンドを実行してデータを取り出してから、別のSQLコマンドのセットを実行してデータをデータベースに戻すために必要なオーバーヘッドが原因です。複数のステップを含む複雑なバックアップワークロードを作成しない限り、柔軟性は低くなります。並列環境ではうまく機能せず、セキュリティも低下します。
MySQLWorldの物理バックアップ
MySQLには、コミュニティエディションのオンライン物理バックアップは付属していません。エンタープライズバージョンの料金を支払うか、サードパーティのツールを使用できます。市場で最も人気のあるサードパーティツールはXtraBackupです。このブログ記事で比較するもの。
Percona XtraBackupは、非常に人気のあるオープンソースのMySQL / MariaDBホットバックアップソフトウェアであり、InnoDBおよびXtraDBデータベースのノンブロッキングバックアップを実行します。これは、MySQLデータディレクトリとその下のファイルの正確なコピーで構成される物理バックアップカテゴリに分類されます。
XtraBackupの最大の利点の1つは、バックアッププロセス中にデータベースがロックされないことです。大規模なデータベース(100 GB以上)の場合、mysqldumpと比較してはるかに優れた復元時間を提供します。復元プロセスでは、バックアップファイルからMySQLデータを準備してから、ターゲットノードの現在のデータディレクトリに置き換えるか切り替えます。
Percona XtraBackupは、起動時にログシーケンス番号(LSN)を記憶し、データファイルを別の場所にコピーすることで機能します。データのコピーには時間がかかり、ファイルが変更されている場合は、さまざまな時点でのデータベースの状態が反映されます。同時に、XtraBackupは、トランザクションログ(別名REDOログ)ファイルを監視するバックグラウンドプロセスを実行し、そこから変更をコピーします。トランザクションログはラウンドロビン方式で書き込まれ、しばらくすると再利用できるため、これは継続的に実行する必要があります。 XtraBackupは、実行開始以降、データファイルに変更が加えられるたびにトランザクションログレコードを必要とします。
このツールを使用すると、次のことができます。
- データベースを一時停止したりサーバーに負荷をかけたりすることなく、迅速かつ確実に完了するホットInnoDBバックアップを作成します
- MySQLサーバー間でテーブルをオンラインで移動する
MySQL Enterprise Backupは、複数のプラットフォームでホットなオンラインのノンブロッキングバックアップを提供します。これは無料のバックアップツールではありませんが、多くの機能を提供します。標準のライセンス費用は5000ドルです(ただし、Oracleとの契約によって異なる場合があります)。
MySQL Enterprise
Linux、Windows、Mac、Solarisで動作する可能性があります。重要なことは、バックアップをテープに保存することもできます。これは通常、ディスクへの書き込みよりも安価なソリューションです。直接テープ書き込みは、Veritas Netbackup、Tivoli Storage Manager、およびEMCNetWorkerとの統合をサポートします。
XtraBackupはLinuxプラットフォームでのみ実行できます。これは、間違いなくWindowsで実行している人にとってはショーストッパーである可能性があります。ここでの解決策は、Linuxで実行され、そこからバックアップを実行しているスレーブへのレプリケーションである可能性があります。
MySQL Enterprise Backupは、既存のMySQLバックアップ方法に比べて大幅なパフォーマンスの向上を含む、豊富なバックおよびリカバリ機能のセットを提供します。
Oracleは、エンタープライズバックアップがmysqldumpよりも49倍高速であることを示しています。もちろん、それはデータによって異なる場合がありますが、バックアッププロセスを改善するための多くの機能があります。並列バックアップは、間違いなくmysqldumpとEnterpriseバックアップの最大の違いの1つです。マルチスレッド処理によりパフォーマンスが向上します。ただし、最も興味深い機能は圧縮です。
-compress
-compress-method=zlib,lz4(default), lzma, punch-hole
--compress-level=LEVEL(0-9)
--include-tables=REGEXP
ClusterControlを使用したMySQLバックアップ
ClusterControlを使用すると、XtraBackupとmysqldumpを使用してバックアップをスケジュールできます。バックアップが作成されたノードにバックアップファイルをローカルに保存することも、バックアップファイルをコントローラーノードにストリーミングしてオンザフライで圧縮することもできます。 MySQL Enterpriseバックアップはサポートしていませんが、mysqldumpとXtraBackupの拡張機能を使用すると、適切なオプションになる可能性があります。
ClusterControlは、混合環境のユーザー向けの包括的なオープンソースデータベース管理システムです。 MySQLまたはMariaDBの高度なバックアップ管理機能を提供します。
ClusterControlを使用すると、次のことができます。
- バックアップのステータス、実行、およびバックアップなしのサーバーを監視する
- バックアップと復元を実行します(ポイントインタイムリカバリを含む)
- バックアップを検証します(スタンドアロンサーバーでの復元による完全なテスト)
DBAとして、データベースが定期的にバックアップされ、適切なリカバリ手順が実施され、テストされていることを確認する必要があります。 PerconaXtraBackupとMySQLEnterpriseBackupはどちらも、ダウンタイムや停止の場合にデータが保護されることを保証するデータ圧縮および暗号化テクノロジーを備えた高性能のオンラインバックアップソリューションをDBAに提供します
バックアップは、復元要件に従って計画する必要があります。データの損失は、完全または部分的である可能性があります。たとえば、必ずしもデータ全体を回復する必要はありません。場合によっては、欠落しているテーブルまたは行を復元することによって、部分的な回復を実行したいだけかもしれません。リーチ機能セットを使用すると、どちらのソリューションもmysqldumpの優れた代替手段となります。これは、バックアップを実行するための非常に一般的な方法です。 mysqldumpを使用することは、部分的なリカバリでも重要です。部分的なリカバリでは、ダンプの内容を分析することで、破損したデータベースを修正できます。バイナリログを使用すると、たとえば、MySQLサーバーがダウンする直前までのポイントインタイムリカバリを実現できます。
これはすべてパート1です。次のパートでは、両方のソリューションのパフォーマンスをテストし、実際のバックアップとリカバリのシナリオを実行します。