【MySQL】データベースをバックアップ・復元する基本手順を丁寧に解説

スポンサーリンク

データベースのバックアップは、「何かあったときの保険」として欠かせない存在です。たとえば、誤ってテーブルを削除してしまったり、サーバーが故障したり、サイバー攻撃を受けたりした場合、大切なデータが一瞬で失われてしまうこともあります。

MySQLを使った開発や運用では、「バックアップを取っておけばよかった……」という後悔は、残念ながらよくある話です。特に商用サイトや業務システムであれば、データの損失は金銭的な被害にも直結します。

本記事では、MySQLの代表的なバックアップ方法である「mysqldump」コマンドを使って、安全かつ確実にデータを保存する手順を、復元方法とあわせて丁寧に解説していきます。初心者の方でも実践できるよう、基本から応用まで順を追って説明しますので、ぜひ最後までご覧ください。

MySQLのバックアップ方法は主に3種類

MySQLでデータベースをバックアップする方法は、用途や環境に応じていくつかあります。ここでは、代表的な3つの手法をご紹介します。

mysqldumpを使った論理バックアップ

最も一般的で手軽に使えるのが、MySQLが標準で提供しているmysqldumpコマンドです。データベースやテーブルの内容をSQLファイルとして出力し、それを保存する形でバックアップを行います。

特徴

  • 手動でも自動でも対応可能
  • サーバーに依存せず移行や複製に便利
  • 復元も簡単(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
  • -u ユーザー名:MySQLに接続するユーザー(例:root)
  • -p:パスワードを入力するプロンプトを表示
  • データベース名:バックアップ対象のDB名
  • > 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コマンドを使ったバックアップと、その復元手順について、基本から実践レベルまで丁寧に解説してきました。

大切なのは、バックアップを取るだけでなく、実際に「復元できるか」を必ずテストしておくことです。
万が一の事態が起きたときに冷静に対応するためにも、この記事の内容をもとに、ぜひご自身の環境で一度実践してみてください。

MySQL
スポンサーリンク
なんくるをフォローする

コメント

タイトルとURLをコピーしました