MySQLデータベースのバックアップとリカバリ
MySQLのバックアップとリカバリのために考慮する5つの事柄
著:Dmitri Joukovski ・ Chander Kant
MySQLデータベースはウェブベースのコラボレーションツールやCRMなどのアプリケーションにますます利用されています。しっかりしたバックアップの計画はリカバリを確実なものにして、システムやユーザのミスによるデータの消失があった場合にも業務に影響を与えることなくリカバリができます。
ここではMySQLデータベースのバックアップを計画する時に考慮する5つの事柄をとりあげます。
1) どのくらいの時間でどの時点まで戻ってMySQLのリカバリをするのか?
バックアップの計画と同じようにリカバリの計画はとても重要です。以下は主要な2つのリカバリ目標です:
- どの時点まで戻ってデータベースをリカバリする必要があるのか
リカバリポイント目標 (RPO)はどの時点まで戻ってデータをリカバリするかを示すものです。間違ってテーブルを削除してしまったならその直前までリカバリします。状況によってはリカバリをする必要のないものを選択して除外します。
- データベースのリカバリにどのくらいの時間をかけるか
リカバリタイム目標(RTO)はどのくらいの時間でデータベースのリカバリをするかを示すものです。リカバリ中にMySQLのアプリケーションが使用できない時間がどのくらいあっても良いかを考慮します。
状況によってリカバリ量は変わってきます。必要に合わせてリカバリするものを選択します:
- サーバ上のすべてのデータベース(障害復旧のため)
- 選択したデータベース
- 選択したテーブル
- 選択した処理
2) バックアップ処理がアプリケーションにどんな影響を与えるのか?
バックアップ処理中はアプリケーションがオフラインもしくは機能や動作が低下しています。
- オフラインでバックアップ中のデータベースは停止される
- mysqldumpでバックアップ中はデータベースの更新ができない
- レプリケーションやスナップショットでのバックアップはデータベースに与える影響が少ない
MySQLデータベースの外にアプリケーションのファイルが格納されているかもしれません(アプリケーションの構成ファイルなど)。MySQLを使ったアプリケーションを確実にリカバリするためにこれらのファイルをバックアップとリカバリの処理に加えてください。
3) バックアップの構成はどうなっているのか?
(何を・どこに・いつ・どのようにバックアップするか)
バックアップの設定はサーバとデータベースの構成によって変わってきます。以下を考慮して設定します:
- MySQLサーバの数
- MySQLデータベースのサイズ
- 使用するストレージエンジン(InnoDB、MyISAM、 NDB-MySQLクラスタ)。MySQLストレージエンジンを追加導入する可能性があるのでバックアップの実装に柔軟性をもたせる
- データベースでの処理があまりない特定の時間帯はあるか
- MySQLのレプリケーション機能の使用
- MySQLのバージョン
- MySQLのストアドプロシージャの使用
バックアップイメージはできるだけオリジナルのデータとは離れた場所に保管してください。オリジナルのデータと同じRAIDにバックアップを取るとRAIDが障害にあったときはリカバリができません。
データベースをリカバリする場所を決めます。ユーザの単純な間違いであれば元の場所にリカバリします。ハードウェアの故障や障害であれば異なるホストにリカバリします。リカバリ処理を定期的にテストするために別のサーバを持つのが理想的です。
データベースのサイズとリカバリする場所を考慮してバックアップの保存場所を決めます。保存場所の容量が足りなければバックアップイメージを圧縮します。(圧縮をするとバックアップとリカバリの処理に計算資源が使われます)
MySQLのレプリケーションを取っているならばバックアップに利用することができます。マスターサーバに影響をあたえずにスレーブサーバでバックアップを実行することができます。
4)どのようにバックアップを処理してバックアップデータを管理するのか?
バックアップはなるべく自動で規則正しく取り、手動でのバックアップは避けるべきです。バックアップカタログは更新されたすべてのバックアップイメージのコピーを自動で保存します。
バックアップ前後の処理を設定することも重要です。バックアップ前にはストレージに十分な容量があるかを確認し、バックアップ後には不要になったバイナリログを削除します。バックアップ前後の処理をバックアップの一連の処理に統合します。
MySQLデータベースのセキュリティもバックアップの設定をする時に考慮されるべき重要なことです。バックアップをするデータベースを暗号化する必要があるか考慮します。暗号化にも圧縮のようにバックアップとリカバリの処理に計算資源が使われます。遠隔にデータをバックアップするときは確実に保護された経路を使います。
MySQLのデータベースをリカバリする担当者を決めます。担当者には技術上もしくは業務上の適任者を選択します。リカバリの前には担当者への適切な指導が必要です。
5) MySQLのバックアップにはどのような通知、レポート、コンプライアンスの要求があるのか?
MySQLのバックアップの成功や失敗などの結果をEメールやRSSフィードで通知します。
バックアップの進行状況がレポートで通知されます。MySQLのデータベースを様々な目的で使用する複雑なバックアップ環境では特に役立ちます。
保持期限を設定して期限の切れたMySQLの データを自動で削除します。コンプライアンスや業務上の必要性から保持期限の異なるデータがあることも考慮して設定をします。