VillageSQL is a drop-in replacement for MySQL with extensions.
All examples on this page work on VillageSQL. Install Now →
mysqldump — 論理バックアップ
mysqldump はデータを SQL ステートメントとしてエクスポートします。最も移植性の高い形式で、どのサイズのデータベースでも使えますが、大きなデータセットではバイナリバックアップより復元が遅くなります。
単一のデータベースをバックアップする:
--single-transaction がない場合、mysqldump は LOCK TABLES でテーブルをロックするため、ダンプの間は書き込みがブロックされます。
ダンプから復元する:
mysql -u root -p < all_databases.sql
バイナリログを使ったポイントインタイムリカバリ
フルバックアップは、最後のバックアップの時点までしか保護してくれません。バイナリログがあれば、バックアップを取った後に行われたすべての変更を再生できます。 要件:- バイナリログが有効であること(
log_bin = ON) - バックアップ取得時に
--source-data=2を使っていること(開始時の binlog の位置を記録します)
- フルバックアップを復元します。
- ダンプファイルから binlog の開始位置を探します。
- 取り消したいイベントの直前の時点まで、バイナリログを再生します。
MySQL Shell のダンプユーティリティ
MySQL Shell(mysqlsh)は、mysqldump より高速なダンプとロードのユーティリティを提供します。並列スレッドを使い、圧縮された出力を生成するため、大きなデータベースでも実用的です。
mysqldump との速度差は大きくなります。
バックアップ方法の比較
mysqldump は、移植性とシンプルさの点で今でも定番です。大きなデータベースでは、MySQL Shell ダンプが事実上 mysqlpump に取って代わりました。より速く、より小さいファイルを生成し、MySQL 8.0 以降をサポートします。mysqlpump は MySQL 8.4 で削除されました。バイナリはビルドにまったく含まれないため、これを呼び出すスクリプトは即座に失敗します。
復元時間が重要な、約 50 GB を超える本番データベースでは、Percona XtraBackup または MySQL Shell ダンプが実用的な選択肢です。
各方法を使う場面
バックアップのスケジュール
夜間のダンプを実行する cron ジョブは、最も一般的な本番のセットアップです。SELECT、LOCK TABLES、SHOW VIEW、TRIGGER、EVENT、RELOAD、および PROCESS だけです。ALL PRIVILEGES は不要です。PROCESS がなくても mysqldump は完了しますが、テーブルスペースのメタデータをダンプしようとする際に、実行のたびに「Access denied … PROCESS privilege」エラーを stderr に出力します。
バックアップの検証
テストしていないバックアップはバックアップではありません。定期的に検証してください。よくある質問
--single-transaction はすべてのストレージエンジンで機能しますか?
いいえ。--single-transaction は一貫した読み取りスナップショットを使いますが、これをサポートするのは InnoDB だけです。同じデータベース内の MyISAM テーブルは、それでもダンプの間は LOCK TABLES でロックされます。エンジンが混在している場合、--single-transaction だけでは完全に一貫したダンプには不十分です。
バックアップはどのくらいの期間保持すべきですか?
最低限、日次バックアップを 7〜14 日、週次バックアップを 4 週間、月次バックアップを 1 年保持します。保持期間は、規制上の要件と、どこまで遡って復旧する必要があるかによって決まります。バイナリログは、保持している最も古いバックアップから現在までの間隔をカバーするのに十分な期間、保持してください。データディレクトリのコピーは有効なバックアップですか?
先にサーバーを停止した場合(コールドコピー)に限り有効です。実行中の MySQL サーバーは、直接コピーしても安全ではない方法でデータファイルに書き込むため、破損したバックアップになります。サーバーを停止せずにホットバックアップを取るには、MySQL Shell のダンプユーティリティまたは Percona XtraBackup を使ってください。トラブルシューティング
バックアップスクリプトは、VillageSQL への切り替え後もそのまま動作します。VillageSQL は MySQL のドロップイン代替であるため、このガイドの mysqldump コマンド、バイナリログの設定、および復元の手順書はそのまま機能します。
関連項目
- MySQL のバイナリログ — ポイントインタイムリカバリを支えるバイナリログ
- MySQL レプリケーションの基本 — レプリケーションは同じバイナリログの仕組みに依存する
- Docker 上の MySQL — コンテナ化された MySQL のバックアップとボリューム
- MySQL からのアップグレード — VillageSQL へのアップグレードの出発点となるバックアップの取得
- サポート終了後の MySQL 8.0 から 8.4 へのアップグレード — これらのバックアップが保護する 8.0 から 8.4 へのアップグレード