Info2softは、ウェブサイトでより快適で適切な閲覧体験を提供するためにCookieを使用しています。 プライバシーポリシー
Loading...
mysqldumpはMySQLデータベースをプレーンテキスト形式の.sqlファイルに出力するコマンドラインユーティリティです。出力ファイルにはCREATE TABLEやINSERT INTOといったSQL文が含まれており、互換性のある任意のMySQLサーバー上でデータベース構造とデータを再作成できます。
mysqldumpを利用するメリット
.sqlファイルはプレーンテキストのため、異なるOSやサーバー環境間で簡単に移行できます。高度なオプションを確認する前に、まず基本構文を理解しておくと役立ちます。コマンドは単純な構造となっており、MySQLユーザー名、出力対象のデータベース名、ターミナル上での出力ファイル保存先を指定します。
基本コマンドは下記の通りです:
mysqldump -u root -p mydb > backup.sql
各要素の解説:
rootを置き換えてください。下記手順に沿ってコマンドラインからMySQLデータベースを出力します。Windows、macOS、Linux全てのOSで利用可能ですが、ターミナルの起動方法はOSごとに異なります。
mysqldumpがコマンドとして認識されない場合、システムのPATHにMySQLが登録されていません。その場合は事前にMySQLのインストールフォルダへ移動してください。
Windowsにおける標準的なパスは下記の通りです:
cd "C:\Program Files\MySQL\MySQL Server 8.0\bin"
mysqldump --versionを実行し、バージョン番号が表示されればPATHに登録済みのため、本手順を省略できます。下記コマンドを実行し、rootとmy_databaseを自身のユーザー名、対象データベース名に置き換えてください:
mysqldump -u root -p my_database > backup.sql
出力したい内容に応じてコマンドを変更できます:
| 目的 | コマンド |
|---|---|
| テーブル構造のみ出力 | mysqldump -u root -p my_database --no-data > backup.sql |
| データのみ出力 | mysqldump -u root -p my_database --no-create-info > backup.sql |
| 複数のデータベースを出力 | mysqldump -u root -p --databases db1 db2 > backup.sql |
| サーバー内の全データベースを出力 | mysqldump -u root -p --all-databases > full_backup.sql |
| 特定のテーブルのみ出力 | mysqldump -u root -p my_database table1 table2 > backup.sql |
ターミナルからMySQLのパスワード入力を求められるので、入力後Enterキーを押します。
カーソルが空行に戻ったら出力完了です。ファイルが正常に作成されたか確認する方法は下記の通り:
.sqlファイルが存在するか確認する。mysqldumpでデータベースを出力した後、復元作業が必要になる場面があります。注意点として、mysqldumpは出力ファイル作成用ツールのため、インポート時にはmysqldumpではなくmysqlクライアントを使用します。
.sqlファイルをデータベースにインポートする際は下記コマンドを実行します:
mysql -u root -p my_database < backup.sql
root、my_database、backup.sqlを自身のユーザー名、復元先データベース名、ファイルパスに置き換えてください。
出力コマンドとの大きな違いは演算子の向きです。<記号は.sqlファイルの内容をmysqlクライアントに読み込むのに対し、>は実行結果をファイルへ書き出します。
--all-databasesオプションを使用して出力した場合を除き、.sqlファイルにはCREATE DATABASE文が含まれないため、インポート前に手動でデータベースを作成する必要があります:
CREATE DATABASE my_new_database;
出力時に特定の文字コード(UTF-8など)を使用した場合、復元先データベースも同じ文字コードに設定してください。文字コードが不一致すると文字化けが発生します。
一般的な失敗要因:ユーザーの権限不足(アクセス拒否)、ファイルサイズがサーバーのmax_allowed_packet上限を超過。後者の場合はMySQL設定ファイルにて値を増加させてください。
mysqldumpは単発出力や手動バックアップには信頼できるツールです。しかし定期的な自動実行や一元管理によるデータ保護が必要なチームにとって、毎回コマンドを手動実行するのは運用規模に適しません。そこで専用のバックアップソリューションであるi2Backupが役立ちます。
単一のMySQLインスタンスの保護から複数サーバーのバックアップ管理まで、i2Backupはmysqldump手動実行による運用負担をなくし、一貫した自動データ保護を実現します。
Q1:MySQLサーバー内のデータベース全体を出力するには?
下記コマンドを実行し、rootとmy_databaseを自身のユーザー名、データベース名に置き換えてください:
mysqldump -u root -p my_database > backup.sql
サーバー上の全データベースを一括出力する場合は、代わりに--all-databasesオプションを使用します:
mysqldump -u root -p --all-databases > full_backup.sql
Q2:mysqldumpを使ってデータベースをバックアップする手順は?
ターミナルを起動し、必要に応じMySQLのbinディレクトリへ移動後、ユーザー名、データベース名、出力先を指定した>演算子付きのmysqldumpコマンドを実行します。実行するMySQLユーザーには対象データベースに対するSELECT権限とLOCK TABLES権限が付与されている必要があります。
Q3:MySQLデータベースから特定のテーブルのみ出力するには?
コマンド内のデータベース名の後にテーブル名を追加します:
mysqldump -u root -p my_database my_table > table_backup.sql
複数のテーブルを出力する場合は半角スペースでテーブル名を並べて記載します。
Q4:データを含まずテーブル構造のみ出力するには?
--no-dataオプションを使用すると、レコードデータを除いたテーブル定義のみ出力できます:
mysqldump -u root -p my_database --no-data > structure_only.sql
同一スキーマの新規環境を構築する際に便利です。
Q5:Windows環境でmysqldumpは利用可能?
はい。コマンドプロンプトを開き、LinuxやmacOSと同じmysqldumpコマンドを実行できます。コマンドが認識されない場合は事前にMySQLのbinディレクトリへ移動(例:cd "C:\Program Files\MySQL\MySQL Server 8.0\bin")するか、システムPATHにMySQLを登録してください…
mysqldumpはコマンドラインからMySQLデータベースを出力するシンプルで柔軟性の高いツールです。単一テーブルのバックアップ、サーバー全体の移行、スキーマのみ出力など、本ガイドで紹介したコマンドとオプションにより大半の一般的なケースに対応できます。
ただし、バックアップファイルは正常に復元できて初めて意味を持ちます。出力完了後は必ず.sqlファイルの検証を実施してください。一貫性と自動運用が重視される本番環境では、mysqldumpとi2Backupといった専用ソリューションを組み合わせることで、手作業による負担と人為的ミスのリスクを低減できます。