MySQLはwebアプリケーションとwebサイトに使用される、おそらくもっとも人気なリレーショナルデータベースです。ほとんどのwebホスティングサービスで使用されており、Facebookのようなwebレジェンドの基盤となっています。人気のアプリケーションの「LAMPスタック」という用語のうちの「M」は、MySQL(Linux、Apache、MySQL、PHP)の略です。MySQLはEC2クラウドプラットフォームでも非常に人気があります。 EC2インスタンスで広く使用されており、RDSのオプションの1つとしてAWSによって提供されています。
RDSは、デフォルト(1日に1回)の固定スケジュールバックアップと手動スナップショットをサポートしていますが、ユーザーはEC2で実行中のMySQLデータベースのバックアップを担当しています。このようなバックアップを実行する最も強力な方法は、EBSスナップショットを使用することです。(特に大規模データベースが関与する場合)
EBSスナップショットは、最も効率的なデータ削減方法であるブロックレベルの増分スナップショットを使用して、バックアップの最速かつ最も安価な方法を提供します。EBSスナップショットを使用するための「cherry on top」は、迅速に回復するプロパティです:EBSスナップショットデータベースは、サイズに関係なく、数秒でリストアできます。
MySQLの整合性をとる仕組み
本番環境では、データベースは絶えず更新されます。信頼できるバックアップソリューションを提供するには、EBSスナップショットが作成されたときにデータベースを整合性のある状態にする必要があります。これは、トランザクションが開いたままで、重要なデータがまだメモリにキャッシュされ、ファイルへの書き込み操作がまだ進行中である状況を避けるために必要です。
いくつかのソースは、ファイルシステムレベルでこれを扱うことを提案しています。これらは、特にフリーズコマンドを持つXFSを使用する場合に、IOをファイルシステムレベルでフリーズするよう指示します。ただし、ストレージスタックの上位レベルに移動すると、データベースの整合性が向上します。ファイルシステムレベルの操作では、ファイルシステムが残っていることを確認できますが、データベース自体はさらに優れています。アプリケーションレベルでメモリにキャッシュされたデータが残っていないことを確認できます。また、すべてのトランザクションを確実に閉じたり、整合性のある状態にすることができます。
MySQLには、すべてのデータをディスクにフラッシュし、データベースに読み取りロックを保持するコマンドがあります。つまり、読み取り操作は許可されますが、書き取り操作は許可されません。このロックは短時間しか持続せず、パフォーマンス上での障害や懸念が生じてはなりません。EBSスナップショットのポイントインタイムプロパティでは、スナップショットが開始されるまでデータベースがロックされている必要があります。これらは完了するまで待つ必要はありません。EBSスナップショットは、スナップショットの開始時点のディスクの正確な状態を記録することを保証します。
バイナリログの切り捨て
バックアップソリューションで達成できる1つのタスクは、バイナリログの切り捨てです。バイナリログは、クラッシュ時にポイントインタイム整合性を提供するためにデータベースによって作成されます。バイナリログは記憶領域を消費するため、時々それらを削除するのが理にかなっています。では、バイナリログはいつ削除するべきなのか。整合性のあるバックアップが完了したら、そのバックアップよりも古いバイナリログを削除することができます。これは、ログのトランザクションがバックアップソリューションでよく行われるタスクである理由です。
スクリプト
MySQLデータベースを整合性のある状態にするためのスクリプト例を以下に示します。
N2WS Backup & Recoveryへスクリプトを組み込むことによって、整合性のあるMySQLのバックアップを取得することができます。これらのスクリプトは、それらがリモートマシン上で実行されていると想定し、SSHを使用してMySQLホストに接続し、すべての操作を実行します。3つのスクリプト(1つのヘルパースクリプト)を示します:
関連トピックス
- VMwareでのSAP HANA仮想マシンのトランザクション一貫性を保ってオンラインバックアップを行うためのスクリプト例 [ Veeam Backup & Replication]
- batと連携しての仮想マシンのバックアップ手順(MySQLの起動・停止)
- MySQL/MariaDBの整合性を保ったバックアップ方法、Pre-freeze/Post-thawスクリプト比較[Veeam]
- MySQLとPostgreSQLも簡単に安心、確実バックアップ[Veeam Agent for Linux]
- VMwareスナップショットをどう管理する?検出だけでなく、自動削除まで実装可能 Veeam ONEアラーム活用③
- メッセージ「Removing snapshot」について【VMWare専用 バックアップ & レプリケーションソフト Veeam】
- MySQLのオブジェクトレベルのリカバリ【VMWare専用 バックアップ & レプリケーションソフト Veeam】
- Veeam + ストレージスナップショットでスマートなデータ保護を!
- AWSワークロードのバックアップは[ Veeam Backup for AWS ]で決まり!
- スナップショット有りバックアップ【VMWare専用 バックアップ & レプリケーションソフト Veeam】