データベースのバックアップは、「何かあったときの保険」として欠かせない存在です。たとえば、誤ってテーブルを削除してしまったり、サーバーが故障したり、サイバー攻撃を受けたりした場合、大切なデータが一瞬で失われてしまうこともあります。
MySQLを使った開発や運用では、「バックアップを取っておけばよかった……」という後悔は、残念ながらよくある話です。特に商用サイトや業務システムであれば、データの損失は金銭的な被害にも直結します。
本記事では、MySQLの代表的なバックアップ方法である「mysqldump」コマンドを使って、安全かつ確実にデータを保存する手順を、復元方法とあわせて丁寧に解説していきます。初心者の方でも実践できるよう、基本から応用まで順を追って説明しますので、ぜひ最後までご覧ください。
MySQLのバックアップ方法は主に3種類
MySQLでデータベースをバックアップする方法は、用途や環境に応じていくつかあります。ここでは、代表的な3つの手法をご紹介します。
mysqldumpを使った論理バックアップ
最も一般的で手軽に使えるのが、MySQLが標準で提供しているmysqldump
コマンドです。データベースやテーブルの内容をSQLファイルとして出力し、それを保存する形でバックアップを行います。
特徴
特に初心者や小規模なシステムでは、この方法が最も扱いやすく安全です。本記事では、このmysqldump
を中心に解説していきます。
phpMyAdminなどのGUIツールを使ったバックアップ
たとえばphpMyAdminなどのWebベースの管理ツールを使えば、コマンドを使わずに画面操作でバックアップが可能です。MySQLに不慣れな方や、学習用のローカル環境での利用に適しています。
特徴
ただし、データ量が多い場合は動作が不安定になりやすいため、本番環境ではmysqldump
の方が信頼性が高いと言えます。
物理バックアップ
物理バックアップとは、MySQLのデータファイル(ibdataや.frmファイルなど)を丸ごとコピーする方法です。通常はデータベースを停止した状態で行う必要があり、復元時の整合性確保にも注意が必要です。
特徴
MySQL Enterprise版の「MySQL Enterprise Backup」や、サードパーティ製のツールで実施することが一般的です。
このように、MySQLのバックアップ方法には複数ありますが、信頼性・汎用性・手軽さのバランスが取れているのがmysqldump
です。次のセクションでは、この方法を実際に使ってバックアップを取る手順を、丁寧に解説していきましょう。
mysqldumpでバックアップをとる方法
MySQLのバックアップで最もよく使われているのが、mysqldump
コマンドです。MySQLに標準で付属しており、簡単なコマンド操作でデータベース全体や一部のテーブルをバックアップできます。
以下では、基本的な使い方から応用的な例までを、順を追って解説していきます。
単一データベースのバックアップ
もっとも基本的な使い方です。以下のコマンドを実行すると、指定したデータベースの内容がSQLファイルとして出力されます。
mysqldump -u ユーザー名 -p データベース名 > backup.sql
実行後、パスワードの入力を求められ、正しく入力するとバックアップが実行されます。
特定のテーブルのみをバックアップ
データベース全体ではなく、一部のテーブルだけを保存したい場合も、簡単に対応できます。
mysqldump -u ユーザー名 -p データベース名 テーブル名 > table_backup.sql
複数のテーブルを指定することも可能です。
mysqldump -u ユーザー名 -p データベース名 テーブル1 テーブル2 > some_tables.sql
すべてのデータベースをまとめてバックアップ
MySQLに存在するすべてのデータベースを一括でバックアップしたい場合は、--all-databases
オプションを使用します。
mysqldump -u ユーザー名 -p --all-databases > all_backup.sql
これは本番環境や本番サーバーを丸ごと退避する際に非常に便利です。
次のセクションでは、これらのコマンドに加えて知っておくと便利な「オプション」について解説します。
よく使われるmysqldumpのオプション解説
mysqldump
はシンプルな使い方でも十分便利ですが、オプションを活用することで、より安全で柔軟なバックアップが可能になります。
ここでは、実務でも頻繁に使われるオプションを厳選して紹介します。
オプション | 説明 | よく使うシーン |
---|---|---|
--single-transaction | トランザクション中でも一貫性のあるバックアップが可能。InnoDB向け。 | サービス稼働中にバックアップを取りたいとき |
--no-data | データを除き、テーブル構造だけを出力する。 | スキーマだけを移行したいとき |
--routines | ストアドプロシージャや関数を含める。 | 開発環境の丸ごと移行など |
--events | イベントスケジューラの定義も含める。 | 定期処理を含むDBを移すとき |
--default-character-set=utf8mb4 | 文字化けを防ぐための文字コード指定。 | 日本語データを扱う場合や移行時のトラブル防止 |
オプション例付きの実用的なコマンド
例えば、InnoDBを使用している本番データベースを、安全にバックアップしたい場合は、以下のように指定します。
mysqldump -u ユーザー名 -p --single-transaction --default-character-set=utf8mb4 データベース名 > backup.sql
このように、mysqldumpのオプションはただの便利機能ではなく、データの整合性や安全性を守る重要な要素です。自分の環境や目的に応じて適切に使い分けましょう。
まとめ
MySQLのデータベース運用において、バックアップと復元の習慣は“保険”ではなく“必須”の対策です。
この記事では、mysqldump
コマンドを使ったバックアップと、その復元手順について、基本から実践レベルまで丁寧に解説してきました。
大切なのは、バックアップを取るだけでなく、実際に「復元できるか」を必ずテストしておくことです。
万が一の事態が起きたときに冷静に対応するためにも、この記事の内容をもとに、ぜひご自身の環境で一度実践してみてください。
コメント