[Command]mysqldump

Command tips

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=host_name
-h host_name
与えられたホスト上の MySQL サーバーからデータをダンプします。 デフォルトホストは localhost です。
--port=port_num
-P port_num
TCP/IP 接続の場合、使用するポート番号。
--user=user_name
-u user_name
サーバーへの接続に使用する MySQL アカウントのユーザー名。
--password[=password]
-p[password]
サーバーへの接続に使用される 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 ステートメントを記述します。 
タイトルとURLをコピーしました