mysqldumpコマンドとは
mysqldump クライアントユーティリティは logical backups を実行し、元のデータベースオブジェクト定義およびテーブルデータを再現するために実行できる一連の SQL ステートメントを生成します。 別の SQL サーバーにバックアップまたは転送するために、1 つ以上の MySQL データベースをダンプします。 mysqldump コマンドは、CSV、その他の区切り文字で区切られたテキスト、または XML 形式でも出力を生成できます。
Command tips
対象バージョン
この記事の対象バージョンは、8.0.41(2025/04/02時点最新)です。
よく使うコマンド入力
Export
mysqldump -h localhost -u root -p dbname > dump.sql
複数DB Export
mysqldump -h localhost -u root -p --databases dbname dbnam2 dbname3 > dump.sql
特定テーブルのみExport
mysqldump -h localhost -u root -p dbname --tables table1 table2 > dump.sql
よく使うコマンドオプション一覧
option | 説明 |
---|---|
--host= -h | 与えられたホスト上の MySQL サーバーからデータをダンプします。 デフォルトホストは localhost です。 |
--port= -P | TCP/IP 接続の場合、使用するポート番号。 |
--user= -u | サーバーへの接続に使用する MySQL アカウントのユーザー名。 |
--password[= -p[ | サーバーへの接続に使用される MySQL アカウントのパスワード。 パスワード値はオプションです。 指定しない場合、mysqldump によってプロンプトが表示されます。 指定する場合は、--password= または -p とそれに続くパスワードの間にスペースなしが存在する必要があります。 パスワードオプションを指定しない場合、デフォルトではパスワードは送信されません。 |
--no-data -d | テーブルの行情報を書き出しません (つまり、テーブルの内容をダンプしません)。 これは、テーブルの CREATE TABLE ステートメントのみをダンプする場合に便利です (たとえば、ダンプファイルをロードしてテーブルの空のコピーを作成する場合など)。 |
--tables | このオプションに続く名前の引数をすべてテーブル名とみなします。 |
--extended-insert -e | 複数の VALUES リストを含む複数行構文を使用して INSERT ステートメントを記述します。 これにより、ダンプファイルのサイズが小さくなり、ファイルがリロードされる際の挿入が高速化されます。 |
※上記以外のオプションについては公式サイトを参照
補足情報
create database
mysqldumpコマンドで作成されるdumpファイルはCREATE DATABASE
ステートメントは含まれません。そのため、importする際はあらかじめデータベースを作成する必要があります。
もし、CREATE DATABASE
ステートメントを含めたい場合は以下オプションを追加してください。
option | 説明 |
---|---|
--databases -B | 複数のデータベースをダンプします。 通常、mysqldump は、コマンド行の最初の名前引数をデータベース名として、それに続く名前をテーブル名として処理します。 このオプションを使用すると、名前引数をすべてデータベース名として処理します。 出力には、各新しいデータベースの前に CREATE DATABASE ステートメントおよび USE ステートメントが含まれます。 |
--add-drop-database | 各 CREATE DATABASE ステートメントの前に DROP DATABASE ステートメントを記述します。 |