Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  mysqldump — データベースバックアッププログラム

4.5.4 mysqldump — データベースバックアッププログラム

mysqldump クライアントは、論理バックアップ を実行するユーティリティーで、元のスキーマオブジェクト、テーブルデータ、または両方を再現するために実行できる SQL ステートメントのセットを生成します。バックアップまたは別の SQL サーバーへの転送のため、1 つまたは複数の MySQL データベースをダンプします。mysqldump コマンドは、CSV、その他の区切り文字で区切られたテキスト、または XML 形式でも出力を生成できます。

mysqldump では、ダンプされるテーブルに対する SELECT 権限、ダンプされるビューに対する SHOW VIEW、ダンプされるトリガーに対する TRIGGER、および --single-transaction オプションが使用されない場合には LOCK TABLES が少なくとも必要です。オプションの説明に示すように、一部のオプションではその他の権限が必要な場合があります。

ダンプファイルをリロードするには、CREATE ステートメントを手動で発行してダンプされる各オブジェクトを作成するために必要な権限と同じものを持っていなければなりません。

mysqldump 出力には、データベースの照合順序を変更する ALTER DATABASE ステートメントを含めることができます。これらは、ストアドプログラムをダンプする際に文字のエンコードを維持するために使用できます。このようなステートメントを含むダンプファイルをリロードするには、影響されるデータベースに対する ALTER 権限が必要です。

パフォーマンスおよびスケーラビリティーに関する考慮事項

mysqldump の利点には、リストアする前に出力を表示して編集もできるという便利さと柔軟性があります。開発およびデータベース管理用にデータベースのクローンを作成したり、テスト用に既存のデータベースとわずかに異なるデータベースを作成したりできます。大量のデータのバックアップのための、高速でスケーラブルなソリューションを意図したものではありません。データサイズが大量の場合、バックアップのステップにかかる時間が妥当だとしても、SQL ステートメントの再現には、挿入やインデックスの作成などのディスク I/O が含まれるため、データのリストアに非常に長い時間がかかることがあります。

大規模なバックアップとリストアでは、データファイルを高速でリストアできる元の形式でコピーする、物理バックアップの方が適切です。

  • テーブルが主に InnoDB テーブルである場合、またはInnoDB テーブルと MyISAM テーブルが混在する場合は、MySQL Enterprise Backup 製品の mysqlbackup コマンドを使用することを検討してください。(Enterprise サブスクリプションの一部として含まれています。)これにより、最低限の中断でもっともパフォーマンスのよい InnoDB のバックアップを実行できます。また、MyISAM およびその他のストレージエンジンからのテーブルもバックアップでき、さまざまなバックアップシナリオに対応するための便利なオプションを多数提供します。セクション25.2「MySQL Enterprise Backup」を参照してください。

  • テーブルが主に MyISAM テーブルである場合は、代わりに mysqlhotcopy を使用することを検討してください。mysqldump のバックアップおよびリストア操作よりも優れたパフォーマンスを提供します。セクション4.6.10「mysqlhotcopy — データベースバックアッププログラム」を参照してください。

mysqldump は、テーブルの内容を 1 行ずつ取得してダンプすることも、ダンプする前にテーブルからすべての内容を取得して、メモリーにバッファリングすることもできます。大きなテーブルをダンプしている場合、メモリーへのバッファリングが問題になる場合があります。テーブルを 1 行ずつダンプする場合、--quick オプションを使用してください (または --opt を指定すれば --quick が有効になります)。--opt オプションは (したがって --quick も) デフォルトで有効なため、メモリーへのバッファリングを有効にするには、--skip-quick を使用します。

最近のバージョンの mysqldump を使用して、非常に古い MySQL サーバーにリロードされるダンプを生成する場合は、--opt オプションまたは --extended-insert オプションの代わりに --skip-opt オプションを使用します。

mysqldump の詳細は、セクション7.4「バックアップへの mysqldump の使用」を参照してください。

構文

次に示すように、一般に mysqldump を使用するには、1 つまたは複数のテーブルのセットのダンプ、1 つまたは複数の完全なデータベースのセット、または MySQL サーバー全体の 3 つの方法があります。

shell> mysqldump [options] db_name [tbl_name ...]
shell> mysqldump [options] --databases db_name ...
shell> mysqldump [options] --all-databases

データベース全体をダンプするには、db_name に続けてテーブルを指名しないか、または --databases オプションまたは --all-databases オプションを使用します。

使用しているバージョンの mysqldump がサポートするオプションのリストを表示するには、コマンド mysqldump --help を発行します。

オプション構文 - アルファベット順のサマリー

mysqldump は次のオプションをサポートします。これらはコマンド行またはオプションファイルの [mysqldump] グループおよび [client] グループで指定できます。MySQL プログラムによって使用されるオプションファイルの詳細については、セクション4.2.6「オプションファイルの使用」を参照してください。

表 4.8 mysqldump のオプション

形式 説明 導入
--add-drop-database DROP DATABASE ステートメントを CREATE DATABASE ステートメントの前に追加
--add-drop-table DROP TABLE ステートメントを CREATE TABLE ステートメントの前に追加
--add-drop-trigger DROP TRIGGER ステートメントを CREATE TRIGGER ステートメントの前に追加
--add-locks LOCK TABLES と UNLOCK TABLES ステートメントで各テーブルダンプを囲む
--all-databases すべてのデータベース内のすべてのテーブルをダンプ
--allow-keywords キーワードであるカラム名の作成を許可
--apply-slave-statements CHANGE MASTER ステートメントの前に STOP SLAVE を含め、START SLAVE を出力の最後に含める
--bind-address 指定されたネットワークインタフェースを使用して MySQL サーバーに接続 5.6.1
--comments ダンプファイルにコメントを追加
--compact よりコンパクトな出力を生成
--compatible 古い MySQL サーバーやほかのデータベースシステムとの互換性がより高い出力を生成
--complete-insert カラム名を含む完全な INSERT ステートメントを使用
--create-options すべての MySQL に固有なテーブルオプションを CREATE TABLE ステートメントに含める
--databases 複数のデータベースをダンプ
--debug デバッグのログを書き込み
--debug-check プログラムの終了時にデバッグ情報を出力
--debug-info プログラムの終了時に、デバッグ情報、メモリー、および CPU の統計を出力
--default-auth 使用する認証プラグイン
--default-character-set デフォルト文字セットを指定
--defaults-extra-file 通常のオプションファイルに加えてオプションファイルを読み取る
--defaults-file 指名されたオプションファイルのみを読み取る
--defaults-group-suffix オプショングループのサフィクス値
--delayed-insert INSERT ステートメントではなく INSERT DELAYED ステートメントを書き出す
--delete-master-logs マスターレプリケーションサーバーで、ダンプ操作の実行後にバイナリログを削除
--disable-keys 各テーブルについて、キーを無効にするステートメントおよび有効にするステートメントで INSERT ステートメントを囲む
--dump-date --comments が指定された場合、ダンプ日を "Dump completed on" コメントとして含める
--dump-slave スレーブのマスターのバイナリログ座標をリストする CHANGE MASTER ステートメントを含める
--events ダンプされたデータベースからイベントをダンプ
--extended-insert 複数の VALUES リストを含む、複数行 INSERT 構文を使用
--fields-enclosed-by このオプションは --tab オプションとともに使用され、LOAD DATA INFILE の対応する句と同じ意味を持つ
--fields-escaped-by このオプションは --tab オプションとともに使用され、LOAD DATA INFILE の対応する句と同じ意味を持つ
--fields-optionally-enclosed-by このオプションは --tab オプションとともに使用され、LOAD DATA INFILE の対応する句と同じ意味を持つ
--fields-terminated-by このオプションは --tab オプションとともに使用され、LOAD DATA INFILE の対応する句と同じ意味を持つ
--flush-logs ダンプを始める前に MySQL サーバーログファイルをフラッシュ
--flush-privileges mysql データベースのダンプ後、FLUSH PRIVILEGES ステートメントを発行
--help ヘルプメッセージを表示して終了
--hex-blob バイナリカラムを 16 進変換表記法を使用してダンプ (たとえば、'abc' は 0x616263)
--host 接続先のホスト (IP アドレスまたはホスト名)
--ignore-table 指定されたテーブルをダンプしない
--include-master-host-port --dump-slave ともに生成された CHANGE MASTER ステートメントに MASTER_HOST/MASTER_PORT オプションを含める
--insert-ignore INSERT ステートメントではなく INSERT IGNORE ステートメントを書き出す
--lines-terminated-by このオプションは --tab オプションとともに使用され、LOAD DATA INFILE の対応する句と同じ意味を持つ
--lock-all-tables データベース内のテーブルをすべてロック
--lock-tables テーブルをダンプする前にすべてロック
--log-error 警告およびエラーを指名されたファイルに追加
--login-path ログインパスオプションを .mylogin.cnf から読み取り 5.6.6
--master-data バイナリログファイルの名前と場所を出力に書き込む
--max_allowed_packet サーバーとの間で送受信するパケットの最大長
--net_buffer_length TCP/IP とソケット通信のバッファーサイズ
--no-autocommit ダンプされたテーブルごとに、INSERT ステートメントを SET autocommit = 0 ステートメントと COMMIT ステートメントで囲む
--no-create-db このオプションは CREATE DATABASE ステートメントを抑制
--no-create-info 各ダンプされたテーブルを再作成する CREATE TABLE ステートメントを書き出さない
--no-data テーブルの内容をダンプしない
--no-defaults オプションファイルを読み取らない
--no-set-names --skip-set-charset と同じ
--no-tablespaces CREATE LOGFILE GROUP ステートメントおよび CREATE TABLESPACE ステートメントを出力に書き出さない
--opt --add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset の短縮形。
--order-by-primary 各テーブルの行を、主キーまたは最初の一意のインデックスでソートしてダンプ
--password サーバーに接続する際に使用するパスワード
--pipe Windows で、名前付きパイプを使用してサーバーに接続
--plugin-dir プラグインがインストールされているディレクトリ
--port 接続に使用する TCP/IP ポート番号
--print-defaults デフォルトを出力
--protocol 使用する接続プロトコル
--quick サーバーからのテーブルについて、一度に 1 行ずつ取得
--quote-names 識別子を逆引用符文字で囲む
--replace INSERT ステートメントではなく REPLACE ステートメントを書き出す
--result-file 指定されたファイルに出力
--routines ダンプされたデータベースからストアドルーチン (プロシージャーおよび関数) をダンプ
--secure-auth 古い (4.1.1 より前の) 形式でサーバーにパスワードを送信しない 5.6.17
--set-charset SET NAMES default_character_set を出力に追加
--set-gtid-purged SET @@GLOBAL.GTID_PURGED を出力に追加するかどうか 5.6.9
--shared-memory-base-name 共有メモリー接続に使用する共有メモリーの名前
--single-transaction このオプションは、サーバーからデータをダンプする前に BEGIN SQL ステートメントを発行
--skip-add-drop-table DROP TABLE ステートメントを CREATE TABLE ステートメントの前に追加しない
--skip-add-locks ロックを追加しない
--skip-comments ダンプファイルにコメントを追加しない
--skip-compact よりコンパクトな出力を生成しない
--skip-disable-keys キーを無効にしない
--skip-extended-insert extended-insert をオフにする
--skip-opt --opt で設定されたオプションをオフにする
--skip-quick サーバーからのテーブルについて、一度に 1 行ずつ取得しない
--skip-quote-names 識別子を引用符で囲まない
--skip-set-charset SET NAMES ステートメントを抑制
--skip-triggers トリガーをダンプしない
--skip-tz-utc tz-utc をオフにする
--socket ローカルホストへの接続で、使用する Unix ソケットファイル
--ssl 接続に SSL を有効化
--ssl-ca 信頼された SSL CA のリストを含むファイルのパス
--ssl-capath 信頼された SSL CA の PEM 形式の証明書を含むディレクトリのパス
--ssl-cert PEM 形式の X509 証明書を含むファイルのパス
--ssl-cipher SSL の暗号化に使用される、許可された暗号のリスト
--ssl-crl 証明書失効リストを含むファイルのパス 5.6.3
--ssl-crlpath 証明書失効リストファイルを含むディレクトリのパス 5.6.3
--ssl-key PEM 形式の X509 鍵を含むファイルのパス
--ssl-verify-server-cert サーバーへの接続時に、サーバーの証明書内のコモンネーム値をホスト名に対して検証
--tab タブ区切りのデータファイルを生成
--tables --databases オプションまたは -B オプションをオーバーライド
--triggers ダンプされた各テーブルについて、トリガーをダンプする
--tz-utc SET TIME_ZONE='+00:00' をダンプファイルに追加
--user サーバーへの接続時に使用する MySQL ユーザー名
--verbose 冗長モード
--version バージョン情報を表示して終了
--where 所定の WHERE 条件で選択された行のみダンプ
--xml XML 出力を生成

接続オプション

mysqldump コマンドは MySQL サーバーにログインして情報を抽出します。次のオプションは、同じマシンまたはリモートシステム上の MySQL サーバーに接続する方法を指定します。

  • --bind-address=ip_address

    複数のネットワークインタフェースを持つコンピュータで、このオプションを使用して、MySQL サーバーへの接続に使用するインタフェースを選択します。

    このオプションは MySQL 5.6.1 からサポートされています。

  • --compress, -C

    クライアントとサーバーの両方が圧縮をサポートしている場合、その間で送受信される情報をすべて圧縮します。

  • --default-auth=plugin

    使用するクライアント側の認証プラグイン。セクション6.3.7「プラガブル認証」を参照してください。

  • --host=host_name, -h host_name

    与えられたホスト上の MySQL サーバーからデータをダンプします。デフォルトホストは localhost です。

  • --login-path=name

    指名されたログインパスから .mylogin.cnf ログインファイルのオプションを読み取ります。ログインパスは、hostuser、および password という限定されたオプションのセットのみを許可するオプショングループです。ログインパスは、サーバーホストおよびそのサーバーで認証するための認証情報を示す値のセットであると考えてください。ログインパスファイルを作成するには、mysql_config_editor ユーティリティーを使用します。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。このオプションは MySQL 5.6.6 で追加されました。

  • --password[=password], -p[password]

    サーバーに接続する際に使用するパスワードです。短いオプション形式 (-p) を使用した場合は、オプションとパスワードの間にスペースを置くことはできません。コマンド行で、--password オプションまたは -p オプションに続けて password の値を指定しなかった場合、mysqldump はそれを要求します。

    コマンド行でのパスワード指定は、セキュアでないと考えるべきです。セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。オプションファイルを使用すれば、コマンド行でパスワードを指定することを回避できます。

  • --pipe, -W

    Windows で、名前付きパイプを使用してサーバーに接続します。このオプションは、サーバーが名前付きパイプ接続をサポートしている場合にのみ適用されます。

  • --plugin-dir=path

    プラグインを検索するディレクトリ。--default-auth オプションを使用して認証プラグインを指定したが、mysqldump がそれを検出できない場合は、このオプションを指定しなければならない可能性があります。セクション6.3.7「プラガブル認証」を参照してください。

  • --port=port_num, -P port_num

    接続に使用する TCP/IP ポート番号。

  • --protocol={TCP|SOCKET|PIPE|MEMORY}

    サーバーへの接続に使用する接続プロトコル。このオプションは、ほかの接続パラメータによって、必要なプロトコル以外のものが通常使用される場合に役立ちます。許可される値の詳細は、セクション4.2.2「MySQL サーバーへの接続」を参照してください。

  • --secure-auth

    古い (4.1 より前の) 形式でサーバーにパスワードを送信しません。これにより、新しいパスワード形式を使用するサーバー以外への接続を防ぎます。このオプションはデフォルトで有効です。無効にするには --skip-secure-auth を使用します。このオプションは MySQL 5.6.17 で追加されました。

    注記

    4.1 より前のハッシュ方式を使用するパスワードはネイティブのパスワードハッシュ方式を使用するパスワードよりもセキュアでないため、使用しないようにしてください。4.1 よりも前のパスワードは非推奨であり、これらのサポートは今後の MySQL リリースで削除される予定です。アカウントのアップグレード手順については、セクション6.3.8.3「4.1 よりも前のパスワードハッシュ方式と mysql_old_password プラグインからの移行」を参照してください。

  • --socket=path, -S path

    localhost への接続用に使用する、Unix ソケットファイル、または Windows では使用する名前付きパイプの名前。

  • --ssl*

    --ssl で始まるオプションは、SSL を使用してサーバーに接続することを許可するかどうかを指定し、SSL 鍵および証明書を検索する場所を指定します。セクション6.3.10.4「SSL コマンドのオプション」を参照してください。

  • --user=user_name, -u user_name

    サーバーへの接続時に使用する MySQL ユーザー名。

--var_name=value 構文を使用すれば、次の変数も設定できます。

  • max_allowed_packet

    クライアント/サーバー通信用のバッファーの最大サイズ。デフォルトは 24M バイト、最大は 1G バイトです。

  • net_buffer_length

    クライアント/サーバー通信用のバッファーの初期サイズ。複数行の INSERT ステートメント (--extended-insert オプションまたは --opt オプションを使用する場合など) を作成する場合、mysqldumpnet_buffer_length までの長さの行を作成します。この変数を増加させる場合は、MySQL サーバー内の net_buffer_length 変数が少なくともこの大きさであることを確認してください。

オプションファイルオプション

これらのオプションは、どのオプションファイルを読み取るかを制御するために使用されます。

  • --defaults-extra-file=file_name

    このオプションファイルは、グローバルオプションファイルのあとに読み取りますが、(UNIX では) ユーザーオプションファイルの前に読み取るようにしてください。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-file=file_name

    指定されたオプションファイルのみ使用します。ファイルが存在しないかアクセスできない場合、エラーが発生します。file_name は、フルパス名でなく相対パス名として指定された場合、現行ディレクトリを基準にして解釈されます。

  • --defaults-group-suffix=str

    通常のオプショングループだけでなく、通常の名前に str のサフィクスが付いたグループも読み取ります。たとえば、mysqldump は通常 [client] グループおよび [mysqldump] グループを読み取ります。--defaults-group-suffix=_other オプションを指定した場合、mysqldump[client_other] グループおよび [mysqldump_other] グループも読み取ります。

  • --no-defaults

    オプションファイルを読み取りません。オプションファイルから不明のオプションを読み取ることが原因でプログラムの起動に失敗する場合、--no-defaults を使用して、オプションを読み取らないようにできます。

    例外として、.mylogin.cnf ファイルは、存在する場合はすべての場合に読み取られます。これにより、--no-defaults が使用された場合にも、コマンド行よりも安全な方法でパスワードを指定できます。(.mylogin.cnfmysql_config_editor ユーティリティーによって作成されます。セクション4.6.6「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください)。

  • --print-defaults

    プログラム名と、オプションファイルから受け取るすべてのオプションを出力します。

DDL オプション

mysqldump の使用シナリオには、新しい MySQL インスタンス全体 (データベーステーブルを含む) のセットアップ、および既存のインスタンス内部のデータを既存のデータベースおよびテーブルで置換することが含まれます。次のオプションを使用すると、ダンプファイル内にさまざまな DDL ステートメントをエンコードすることによって、ダンプをリストアする際に何を削除し何をセットアップするのかを指定できます。

  • --add-drop-database

    DROP DATABASE ステートメントを各 CREATE DATABASE ステートメントの前に追加します。通常このオプションは、--all-databases オプションまたは --databases オプションとともに使用されます。これらのオプションのいずれかを指定しないと CREATE DATABASE ステートメントが書き込まれないからです。

  • --add-drop-table

    DROP TABLE ステートメントを各 CREATE TABLE ステートメントの前に追加します。

  • --add-drop-trigger

    DROP TRIGGER ステートメントを各 CREATE TRIGGER ステートメントの前に追加します。

  • --all-tablespaces, -Y

    NDB テーブルが使用するテーブルスペースを作成するために必要なすべての SQL ステートメントをテーブルダンプに追加します。そうしないと、この情報は mysqldump の出力には含まれません。このオプションは、現在 MySQL Cluster テーブルに対してのみ有効です。

  • --no-create-db, -n

    このオプションは、--databases オプションまたは --all-databases オプションが指定されていた場合、出力に含まれる CREATE DATABASE ステートメントを抑制します。

  • --no-create-info, -t

    ダンプされた各テーブルを再作成する CREATE TABLE ステートメントを書き込みません。

    注記

    このオプションは、ログファイルグループまたはテーブルスペースを作成するステートメントを、mysqldump 出力から除外しません。ただし、このためには --no-tablespaces オプションを使用できます。

  • --no-tablespaces, -y

    このオプションは、mysqldump の出力内のすべての CREATE LOGFILE GROUP ステートメントおよびCREATE TABLESPACE ステートメントを抑制します。

  • --replace

    INSERT ステートメントではなく REPLACE ステートメントを書き込みます。

デバッグオプション

次のオプションは、デバッグ情報を出力したり、ダンプファイルにデバッグ情報をエンコードしたり、または潜在的な問題にかかわらずダンプ操作を続行させたりします。

  • --allow-keywords

    キーワードであるカラム名の作成を許可します。これは各カラム名にテーブル名のプリフィクスを用いることで機能します。

  • --comments, -i

    プログラムバージョン、サーバーバージョン、およびホストなどの追加情報をダンプファイルに書き込みます。このオプションはデフォルトで有効となっています。この追加情報を抑制するには、--skip-comments を使用してください。

  • --debug[=debug_options], -# [debug_options]

    デバッグのログを書き込みます。一般的な debug_options 文字列は d:t:o,file_name です。デフォルト値は d:t:o,/tmp/mysqldump.trace です。

  • --debug-check

    プログラムの終了時に、デバッグ情報を出力します。

  • --debug-info

    プログラムの終了時に、デバッグ情報とメモリーおよび CPU 使用率の統計を出力します。

  • --dump-date

    --comments オプションが指定された場合、mysqldump はダンプの最後に次の形式でコメントを生成します。

    -- Dump completed on DATE

    ただし、別のときに取られたダンプファイルが、日付以外のデータがまったく同じでも日付のために異なって見えます。--dump-date および --skip-dump-date は、コメントに日付を追加するかどうかを制御します。デフォルトは --dump-date (日付をコメントに含める) です。--skip-dump-date は日付の出力を抑制します。

  • --force, -f

    テーブルダンプの最中に SQL エラーが発生しても続行します。

    このオプションの使い方の 1 つとして、削除されたテーブルをビュー定義が参照するために無効になっているビューを検出したときにも、mysqldump が実行を続けるようにすることです。--force を指定しないと、mysqldump はエラーメッセージで終了します。--force を使用すると、mysqldump はエラーメッセージを出力しますが、さらにビュー定義を含む SQL コメントをダンプ出力に書き込み、実行を継続します。

  • --log-error=file_name

    警告およびエラーを、指名されたファイルに追加することによってログに記録します。デフォルトでは、ロギングを行いません。

  • --skip-comments

    --comments オプションの説明を参照してください。

  • --verbose, -v

    冗長モード。プログラムの動作についてより多くの情報を出力します。

ヘルプオプション

次のオプションは、mysqldump コマンド自身に関する情報を表示します。

  • --help, -?

    ヘルプメッセージを表示して終了します。

  • --version, -V

    バージョン情報を表示して終了します。

国際化オプション

次のオプションは、mysqldump コマンドが各国語の設定で文字データを表現する方法を変更します。

  • --character-sets-dir=path

    文字セットがインストールされているディレクトリ。セクション10.5「文字セットの構成」を参照してください。

  • --default-character-set=charset_name

    charset_name をデフォルト文字セットとして使用します。セクション10.5「文字セットの構成」を参照してください。文字セットが指定されていない場合、mysqldumputf8 を使用します。

  • --no-set-names, -N

    --set-charset 設定をオフにします。--skip-set-charset を指定するのと同様です。

  • --set-charset

    出力に SET NAMES default_character_set を追加します。このオプションはデフォルトで有効となっています。SET NAMES ステートメントを抑制するには、--skip-set-charset を使用してください。

レプリケーションオプション

mysqldump コマンドは、レプリケーションの構成において、空のインスタンスまたはデータを含むインスタンスをスレーブサーバーに作成するためによく使用されます。次のオプションは、レプリケーションマスターサーバーおよびスレーブサーバーでデータのダンプおよびリストアに適用されます。

  • --apply-slave-statements

    --dump-slave オプションで作成されたスレーブダンプで、STOP SLAVE ステートメントを CHANGE MASTER TO ステートメントの前に、START SLAVE ステートメントを出力の最後に、それぞれ追加します。

  • --delete-master-logs

    マスターレプリケーションサーバーで、ダンプ操作の実行後にサーバーに PURGE BINARY LOGS ステートメントを送信することにより、バイナリログを削除します。このオプションは自動的に --master-data を有効にします。

  • --dump-slave[=value]

    このオプションは、ダンプされたサーバーと同じマスターを持つスレーブとして別のサーバーをセットアップするために使用できるダンプファイルを生成するために、レプリケーションスレーブサーバーをダンプするために使用することを除き、--master-data と同様です。これにより、ダンプされたスレーブのマスターのバイナリログ座標 (ファイル名とファイル位置) を示す CHANGE MASTER TO ステートメントがダンプ出力に追加されます。これらは、スレーブがレプリケーションを開始するマスターサーバーの座標です。

    --dump-slave を使用すると、座標は --master-data オプションのようにダンプされたサーバーのものではなく使用されるマスターのものになります。さらに、このオプションを指定すると --master-data オプションが使用されている場合はオーバーライドされ、実質上無視されるようになります。

    オプション値は --master-data と同様に処理され (値を設定しないか、1 を設定すると CHANGE MASTER TO ステートメントがダンプに書き込まれ、2 を設定するとステートメントは書き込まれますが SQL コメントで囲まれます)、ほかのオプションを有効または無効にする点およびロッキングの処理において、--master-data と同様の効果があります。

    このオプションを使用すると、mysqldump はダンプ前にスレーブ SQL スレッドを終了し、ダンプ後に再起動します。

    --dump-slave とともに、--apply-slave-statements オプションおよび --include-master-host-port オプションも使用できます。

  • --include-master-host-port

    --dump-slave を使用して生成されたスレーブダンプ内の CHANGE MASTER TO ステートメントに、スレーブのマスターのホスト名および TCP/IP ポート番号の MASTER_HOST オプションおよび MASTER_PORT オプションを追加します。

  • --master-data[=value]

    マスターレプリケーションサーバーをダンプして、別のサーバーをマスターのスレーブとして設定するために使用できるダンプファイルを生成する場合に、このオプションを使用します。これにより、ダンプされたサーバーのバイナリログ座標 (ファイル名とファイル位置) を示す CHANGE MASTER TO ステートメントがダンプ出力に追加されます。これらは、ダンプファイルをスレーブにロードしたあとで、スレーブがレプリケーションを開始するマスターサーバーの座標です。

    オプションの値が 2 の場合、CHANGE MASTER TO ステートメントは SQL コメントとして書き込まれるため、情報提供の意味しかなく、ダンプファイルがリロードされるときには何の効果もありません。オプション値が 1 の場合、ステートメントはコメントとしては書き込まれず、ダンプファイルがリロードされるときに実行されます。オプション値が指定されていない場合は、デフォルト値は 1 です。

    このオプションには RELOAD 権限が必要で、バイナリログが有効にされていなければいけません。

    --master-data オプションは自動的に --lock-tables をオフにします。また、--single-transaction も指定されていない場合は、--lock-all-tables をオンにします。その場合、ダンプの最初のわずかな時間のみグローバル読み取りロックが取得されます (--single-transaction の説明を参照してください)。どの場合でも、ログに対するアクションはすべてダンプと同時に発生します。

    --dump-slave オプションを使用してマスターの既存のスレーブをダンプすることによって、スレーブをセットアップすることも可能です。--master-data は、これによってオーバーライドされ、両方のオプションが使用された場合には無視されます。

    MySQL 5.6.4 より前では、レプリケーションログテーブルのダンプにはこのオプションが必要でした (セクション17.2.2「レプリケーションリレーおよびステータスログ」を参照してください)。

  • --set-gtid-purged=value

    このオプションを使用すると、SET @@global.gtid_purged ステートメントを出力に追加するかどうかを指定することによって、ダンプファイルに書き込まれるグローバルトランザクション ID (GTID) 情報を制御できます。

    次の表は、許可されるオプション値を示しています。デフォルト値は AUTO です。

    意味
    OFF 出力に SET ステートメントを追加しません。
    ON 出力に SET ステートメントを追加します。サーバーで GTID が有効になっていない場合は、エラーが発生します。
    AUTO サーバーで GTID が有効になっている場合に、出力に SET ステートメントを追加します。

    このオプションは MySQL 5.6.9 で追加されました。

形式オプション

次のオプションは、ダンプファイル全体またはダンプファイル内のある種のデータの提示方法を指定します。また、ある種のオプションの情報をダンプファイルに書き込むかどうかも制御します。

  • --compact

    よりコンパクトな出力を生成します。このオプションは、--skip-add-drop-table--skip-add-locks--skip-comments--skip-disable-keys、および --skip-set-charset オプションを有効にします。

  • --compatible=name

    古い MySQL サーバーやほかのデータベースシステムとの互換性がより高い出力を生成します。name の値は ansimysql323mysql40postgresqloraclemssqldb2maxdbno_key_optionsno_table_options、または no_field_options となります。複数の値を使用する場合は、カンマで区切ります。これらの値は、サーバー SQL モード設定用の対応するオプションと同じ意味を持っています。セクション5.1.7「サーバー SQL モード」を参照してください。

    このオプションはほかのサーバーとの互換性を保証するものではありません。現在提供されている、ダンプ出力の互換性を向上させるための SQL モード値を有効にするだけです。たとえば、--compatible=oracle はデータ型を Oracle 型に対応付けたり、Oracle コメント構文を使用したりしません。

    このオプションには、バージョン 4.1.0 以降のサーバーが必要です。それよりも古いサーバーでは、何も行われません。

  • --complete-insert, -c

    カラム名を含む、完全な INSERT ステートメントを使用します。

  • --create-options

    MySQL 固有のテーブルオプションを CREATE TABLE ステートメントに含めます。

  • --fields-terminated-by=..., --fields-enclosed-by=..., --fields-optionally-enclosed-by=..., --fields-escaped-by=...

    これらのオプションは --tab オプションとともに使用され、LOAD DATA INFILE の対応する FIELDS 句と同じ意味を持ちます。セクション13.2.6「LOAD DATA INFILE 構文」を参照してください。

  • --hex-blob

    16 進表記を使用してバイナリカラムをダンプします (たとえば、'abc'0x616263 となります)。影響を受けるデータ型は、BINARY 型、VARBINARY 型、BLOB 型および BIT です。

  • --lines-terminated-by=...

    このオプションは --tab とともに使用され、LOAD DATA INFILE の対応する LINES 句と同じ意味を持ちます。セクション13.2.6「LOAD DATA INFILE 構文」を参照してください。

  • --quote-names, -Q

    識別子 (データベース、テーブル、およびカラム名など) を ` 文字で囲みます。ANSI_QUOTES SQL モードが有効な場合、識別子は " 文字で囲まれます。このオプションはデフォルトで有効となっています。--skip-quote-names で無効にできますが、このオプションは --compatible のような --quote-names を有効にする可能性のあるオプションのあとに指定するようにしてください。

  • --result-file=file_name, -r file_name

    指定されたファイルに出力します。このオプションは、Windows 上で改行文字 \n が復帰/改行シーケンス \r\n に変換されるのを防ぐために使用します。ダンプの生成中にエラーが発生しても、結果ファイルが作成され以前の内容は上書きされます。

  • --tab=path, -T path

    タブ区切りのテキスト形式データファイルを生成します。mysqldump は、各ダンプテーブルに対して、テーブルを作成する CREATE TABLE ステートメントを含む tbl_name.sql ファイルを作成し、サーバーはそのデータを含む tbl_name.txt ファイルに書き込みます。オプション値はファイルを書き込むディレクトリです。

    注記

    このオプションは、mysqldumpmysqld サーバーと同じマシンで動作している場合にのみ使用するようにしてください。ユーザーは FILE 権限を持っている必要があり、サーバーは指定したディレクトリ内にファイルを書き込む許可を持っていなければいけません。

    デフォルトでは、.txt データファイルはカラム値の間にタブ文字、各行の最後に改行を使用する形式になります。この形式は、--fields-xxx オプションおよび --lines-terminated-by オプションを使用して明示的に指定できます。

    カラム値は、--default-character-set オプションで指定された文字セットに変換されます。

  • --tz-utc

    このオプションにより、異なるタイムゾーンのサーバー間で TIMESTAMP カラムをダンプしてリロードできるようになります。mysqldump はその接続タイムゾーンを UTC に設定し、SET TIME_ZONE='+00:00' をダンプファイルに追加します。このオプションを使用しないと、TIMESTAMP カラムはダンプ元およびリロード先のサーバーのローカルタイムゾーンでダンプおよびリロードが実行され、サーバーが異なるタイムゾーンにある場合、値が変更されます。--tz-utc は、サマータイムによる変更からも保護します。--tz-utc はデフォルトで有効です。無効にするには、--skip-tz-utc を使用します。

  • --xml, -X

    ダンプ出力および整形式 XML を書き出します。

    NULL'NULL'、および空の値: このオプションで生成される出力では、column_name という名前のカラムに関して、NULL 値、空の文字列、および文字列値 'NULL' は次のように互いに区別されます。

    値: XML 表現:
    NULL (不明な値)

    <field name="column_name" xsi:nil="true" />

    '' (空の文字列)

    <field name="column_name"></field>

    'NULL' (文字列値)

    <field name="column_name">NULL</field>

    mysql クライアントを --xml オプションを使用して実行した場合の出力も、前記のルールに従います。(セクション4.5.1.1「mysql のオプション」を参照してください。)

    mysqldump からの XML 出力には、次に示すように XML 名前空間が含まれます。

    shell> mysqldump --xml -u root world City
    <?xml version="1.0"?>
    <mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <database name="world">
    <table_structure name="City">
    <field Field="ID" Type="int(11)" Null="NO" Key="PRI" Extra="auto_increment" />
    <field Field="Name" Type="char(35)" Null="NO" Key="" Default="" Extra="" />
    <field Field="CountryCode" Type="char(3)" Null="NO" Key="" Default="" Extra="" />
    <field Field="District" Type="char(20)" Null="NO" Key="" Default="" Extra="" />
    <field Field="Population" Type="int(11)" Null="NO" Key="" Default="0" Extra="" />
    <key Table="City" Non_unique="0" Key_name="PRIMARY" Seq_in_index="1" Column_name="ID"
    Collation="A" Cardinality="4079" Null="" Index_type="BTREE" Comment="" />
    <options Name="City" Engine="MyISAM" Version="10" Row_format="Fixed" Rows="4079"
    Avg_row_length="67" Data_length="273293" Max_data_length="18858823439613951"
    Index_length="43008" Data_free="0" Auto_increment="4080"
    Create_time="2007-03-31 01:47:01" Update_time="2007-03-31 01:47:02"
    Collation="latin1_swedish_ci" Create_options="" Comment="" />
    </table_structure>
    <table_data name="City">
    <row>
    <field name="ID">1</field>
    <field name="Name">Kabul</field>
    <field name="CountryCode">AFG</field>
    <field name="District">Kabol</field>
    <field name="Population">1780000</field>
    </row>
    
    ...
    
    <row>
    <field name="ID">4079</field>
    <field name="Name">Rafah</field>
    <field name="CountryCode">PSE</field>
    <field name="District">Rafah</field>
    <field name="Population">92020</field>
    </row>
    </table_data>
    </database>
    </mysqldump>

    MySQL 5.6.5 より前では、このオプションを使用すると --routines オプションが正しく機能しませんでした。つまり、ストアドルーチン、トリガー、およびイベントは XML 形式でダンプできませんでした。(Bug #11760384、Bug #52792)

フィルタリングオプション

次のオプションは、どのような種類のスキーマオブジェクトがダンプファイルに書き出されるかを、トリガーまたはイベントなどのカテゴリによって制御したり、たとえばダンプするデータベースおよびテーブルを選択して名前によって制御したり、または WHERE 句を使用してテーブルデータから行をフィルタリングして制御したりできます。

  • --all-databases, -A

    すべてのデータベース内のすべてのテーブルをダンプします。これは、コマンド行で --databases オプションを使用してすべてのデータベース名を指定するのと同じです。

    MySQL 5.6.4 より前では、このオプションでは slave_master_info テーブルおよび slave_relay_log_info テーブル (セクション17.2.2「レプリケーションリレーおよびステータスログ」を参照してください) は含まれませんでした。

  • --databases, -B

    複数のデータベースをダンプします。通常、mysqldump は、コマンド行の最初の名前引数をデータベース名として、それに続く名前をテーブル名として処理します。このオプションを使用すると、名前引数をすべてデータベース名として処理します。出力には、各新しいデータベースの前に CREATE DATABASE ステートメントおよび USE ステートメントが含まれます。

  • --events, -E

    ダンプされるデータベースのイベントスケジューライベントを出力に含めます。

  • --ignore-table=db_name.tbl_name

    指定されたテーブルをダンプしません。これはデータベース名とテーブル名を両方指定する必要があります。複数のテーブルを無視するには、このオプションを複数回使用してください。このオプションを使用してビューを無視することもできます。

  • --no-data, -d

    テーブルの行情報を書き出しません (つまり、テーブルの内容をダンプしません)。これは、テーブルの CREATE TABLE ステートメントのみをダンプする場合に便利です (たとえば、ダンプファイルをロードしてテーブルの空のコピーを作成する場合など)。

  • --routines, -R

    ダンプされるデータベースのストアドルーチン (プロシージャーおよび関数) を出力に含めます。このオプションを使用するには、mysql.proc テーブルに対する SELECT 権限が必要です。--routines を使用して生成された出力は、ルーチンの再作成のため、CREATE PROCEDURE ステートメントおよび CREATE FUNCTION ステートメントを含んでいます。ただし、これらのステートメントはルーチンの作成および変更のタイムスタンプなどの属性を含みません。つまり、ルーチンがリロードされたとき、リロード時間と等しいタイムスタンプで作成されます。

    ルーチンを元のタイムスタンプ属性で再作成しなければならない場合は、--routines を使用しないでください。代わりに、mysql データベースの適切な権限を持っている MySQL アカウントを使用して、mysql.proc テーブルの内容を直接ダンプしてリロードしてください。

    MySQL 5.6.5 より前では、このオプションは、--xml オプションとともに使用した場合には何の効果もありません。(Bug #11760384、Bug #52792)

  • --tables

    --databases オプションまたは -B オプションをオーバーライドします。mysqldump は、このオプションに続く名前の引数をすべてテーブル名とみなします。

  • --triggers

    ダンプされる各テーブルのトリガーを出力に含めます。このオプションはデフォルトで有効です。--skip-triggers を使用して無効にします。

  • --where='where_condition', -w 'where_condition'

    指定された WHERE 条件で選択される行のみダンプします。条件が、スペースまたはユーザーのコマンドインタプリタにとって特別なその他の文字を含んでいる場合、条件を引用符で囲まなければなりません。

    例:

    --where="user='jimf'"
    -w"userid>1"
    -w"userid<1"

パフォーマンスオプション

次のオプションは、特にリストア操作のパフォーマンスにもっとも重要です。大規模なデータセットでは、リストア操作 (ダンプファイル内の INSERT ステートメントの処理) がもっとも時間のかかる部分です。データを迅速にリストアすることが緊急である場合、事前にステージを計画してパフォーマンスをテストします。時間単位で測定されるリストア時間に対して、InnoDB のみ、または混在するデータベースでは MySQL Enterprise Backup、または MyISAM のみのデータベースでは mysqlhotcopy など、代替のバックアップおよびリストアソリューションが望ましい場合もあります。

パフォーマンスは、主にダンプ操作に関して、トランザクションオプションにも影響されます。

  • --delayed-insert

    INSERT DELAYED 構文をサポートする非トランザクションテーブルでは、通常の INSERT ステートメントではなくそのステートメントを使用します。

    MySQL 5.6.6 では、DELAYED 挿入は非推奨であるため、このオプションは将来のリリースで削除されます。

  • --disable-keys, -K

    テーブルごとに、INSERT ステートメントを /*!40000 ALTER TABLE tbl_name DISABLE KEYS */; ステートメントと /*!40000 ALTER TABLE tbl_name ENABLE KEYS */; ステートメントで囲みます。これにより、行がすべて挿入されたあとにインデックスが作成されるため、ダンプファイルのロードが高速になります。このオプションは、MyISAM テーブルの一意でないインデックスにのみ効果があります。

  • --extended-insert, -e

    複数の VALUES リストを含む、複数行の INSERT 構文を使用します。これにより、ダンプファイルのサイズが小さくなり、ファイルがリロードされる際の挿入が高速化されます。

  • --insert-ignore

    INSERT ステートメントではなく、INSERT IGNORE ステートメントを書き出します。

  • --opt

    このオプションはデフォルトで有効で、--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset の組み合わせの短縮形です。高速ダンプ操作が可能になり、MySQL サーバーに迅速にリロードできるダンプファイルを生成します。

    --opt オプションはデフォルトで有効であるため、いくつかのデフォルト設定をオフにする場合のみ、この逆の --skip-opt を指定します。--opt に影響されるオプションのサブセットを選択的に有効または無効にする方法は、mysqldump オプショングループ の説明を参照してください。

  • --quick, -q

    このオプションは大規模なテーブルのダンプに便利です。これは mysqldump に対して、テーブルのすべての行のセットを取得して、書き出す前にメモリーにバッファリングするのではなく、サーバーから 1 行ずつ行を取得することを強制します。

  • --skip-opt

    --opt オプションの説明を参照してください。

トランザクションオプション

次のオプションは、エクスポートされるデータの信頼性と一貫性のために、ダンプ操作のパフォーマンスを犠牲にします。

  • --add-locks

    LOCK TABLES ステートメントと UNLOCK TABLES ステートメントで各テーブルダンプを囲みます。これにより、ダンプファイルをリロードする際の挿入の速度が向上します。セクション8.2.2.1「INSERT ステートメントの速度」を参照してください。

  • --flush-logs, -F

    ダンプを始める前に MySQL サーバーログファイルをフラッシュします。このオプションには RELOAD 権限が必要です。このオプションを --all-databases オプションと組み合わせて使用すると、ログはダンプされるデータベースごとにフラッシュされます。例外は、--lock-all-tables--master-data、または --single-transaction を使用する場合です。この場合、ログはすべてのテーブルがロックされた瞬間に対応して一度のみフラッシュされます。ダンプとログのフラッシュを正確に同時に実行するには、--flush-logs--lock-all-tables--master-data、または --single-transaction とともに使用するようにしてください。

  • --flush-privileges

    mysql データベースのダンプ後に、ダンプ出力に FLUSH PRIVILEGES ステートメントを追加します。ダンプに mysql データベースおよび mysql データベース内のデータに依存するその他のすべてのデータベースが含まれている場合には、正しいリストアのために必ずこのオプションを使用するようにしてください。

  • --lock-all-tables, -x

    データベース内のテーブルをすべてロックします。これは全ダンプの期間、グローバル読み取りロックを取得することで達成されます。このオプションにより、--single-transaction および --lock-tables は自動的にオフになります。

  • --lock-tables, -l

    ダンプされる各データベースに対して、ダンプするすべてのテーブルをダンプ前にロックします。MyISAM テーブルの場合には、並列挿入を許可するため、テーブルは READ LOCAL でロックされます。InnoDB などのトランザクションテーブルの場合は、--single-transaction はテーブルをロックする必要がまったくないため、--lock-tables よりはるかに適したオプションです。

    --lock-tables は各データベースに対して個別にテーブルをロックするため、このオプションではダンプファイル内のテーブルがデータベース間で論理的に一貫していることは保証されません。異なるデータベース内のテーブルは完全に異なる状態でダンプされることがあります。

    --opt など、一部のオプションは --lock-tables を自動的に有効にします。これをオーバーライドするには、--skip-lock-tables をオプションリストの最後に使用します。

  • --no-autocommit

    ダンプされるテーブルごとに、INSERT ステートメントを SET autocommit = 0 ステートメントと COMMIT ステートメントで囲みます。

  • --order-by-primary

    各テーブルの行を、主キーまたは最初の一意のインデックス (このようなインデックスが存在する場合) でソートしてダンプします。これは、InnoDB テーブルにロードされる MyISAM テーブルをダンプする場合に便利ですが、ダンプ操作にかかる時間がかなり長くなります。

  • --shared-memory-base-name=name

    Windows で、共有メモリーを使用して作成されるローカルサーバーへの接続の共有メモリー名。デフォルト値は MYSQL です。共有メモリー名では大文字と小文字を区別します。

    共有メモリー接続を可能にするには、サーバーは --shared-memory オプションで起動する必要があります。

  • --single-transaction

    このオプションは、データのダンプ前に、トランザクション分離モードを REPEATABLE READ に設定し、START TRANSACTION SQL ステートメントをサーバーに送信します。これは、InnoDB などのトランザクションテーブルの場合にかぎって便利です。その場合、アプリケーションをブロックすることなく、START TRANSACTION が発行された時点のデータベースの一貫した状態をダンプするからです。

    このオプションを使用する場合、一貫した状態でダンプされるのは InnoDB テーブルのみだということに留意してください。たとえば、このオプションの使用中にダンプされた MyISAM テーブルまたは MEMORY テーブルは状態が変化する可能性があります。

    --single-transaction ダンプの処理中、ダンプファイルが正当である (テーブルの内容とバイナリログ座標が正しい) ことを保証するために、ほかの接続で ALTER TABLECREATE TABLEDROP TABLERENAME TABLETRUNCATE TABLE ステートメントを使用しないようにしてください。一貫性読み取りはこれらのステートメントから分離されないため、ダンプされるテーブルでこれらを使用すると、mysqldump によって実行され、テーブルの内容を取得する SELECT が、正しくない内容を取得したり失敗したりすることがあります。

    --single-transaction オプションおよび --lock-tables オプションは相互に排他的です。これは、保留中のトランザクションが LOCK TABLES により暗黙的にコミットされるためです。

    大規模なテーブルをダンプするには、--single-transaction オプションを --quick オプションと組み合わせてください。

オプショングループ

  • --opt オプションは、高速なダンプ操作を実行するために協働するいくつかの設定をオンにします。--opt はデフォルトでオンであるため、これらの設定はすべてデフォルトでオンです。したがって、--opt を指定することは、あるとしてもまれです。代わりに、--skip-opt を指定してこれらの設定をグループとしてオフにし、そのあと、コマンド行で関連するオプションを指定して特定の設定を再度有効にできます。

  • --compact オプションは、オプションのステートメントおよびコメントが出力に現れるかどうかを制御するいくつかの設定をオフにします。この場合も、このオプションに、特定の設定を再度有効にするその他のオプションを続けたり、--skip-compact の形式を使用してすべての設定をオンにしたりできます。

グループオプションの一部を選択的に効果を有効または無効にする場合、オプションは前から後ろへの順で処理されるため、順序が重要です。たとえば、--disable-keys --lock-tables --skip-opt では意図している効果を得られません。--skip-opt だけの場合と同じになります。

データベース全体のバックアップを作成するには:

shell> mysqldump db_name > backup-file.sql

ダンプファイルをサーバーにロードするには:

shell> mysql db_name < backup-file.sql

ダンプファイルをリロードする別の方法:

shell> mysql -e "source /path-to-backup/backup-file.sql" db_name

mysqldump は、1 つの MySQL サーバーから別のサーバーにデータをコピーすることでデータベースを移入するのに非常に便利です。

shell> mysqldump --opt db_name | mysql --host=remote_host -C db_name

複数のデータベースを 1 つのコマンドでダンプできます。

shell> mysqldump --databases db_name1 [db_name2 ...] > my_databases.sql

すべてのデータベースをダンプするには、--all-databases オプションを使用します。

shell> mysqldump --all-databases > all_databases.sql

InnoDB テーブルに関して、mysqldump はオンラインバックアップの作成方法を提供します。

shell> mysqldump --all-databases --master-data --single-transaction > all_databases.sql

このバックアップでは、ダンプの最初で (FLUSH TABLES WITH READ LOCK を使用して) すべてのテーブルに対するグローバル読み取りロックが取得されます。このロックが取得されるとすぐに、バイナリログの座標が読み取られ、ロックが解除されます。FLUSH ステートメントが発行されたときに長い更新ステートメントが実行中の場合、MySQL サーバーはそれらのステートメントが終わるまで停止する可能性があります。そのあと、ダンプはロックがなくなり、テーブルの読み取りと書き込みを妨げることはなくなります。MySQL サーバーが受信する更新ステートメントが (実行時間の点で) 短い場合、更新の数が多くても最初のロック時間はさほど気にならないはずです。

ポイントインタイムリカバリ (または ロールフォワード、これは古いバックアップをリストアし、そのバックアップ後に発生した変更を再現する必要がある場合) は、バイナリログを交替させる (セクション5.2.4「バイナリログ」を参照してください) か、または少なくともダンプが対応しているバイナリログ座標を知っていると便利な場合があります。

shell> mysqldump --all-databases --master-data=2 > all_databases.sql

または:

shell> mysqldump --all-databases --flush-logs --master-data=2
              > all_databases.sql

--master-data オプションおよび --single-transaction オプションは同時に使用できます。これは、テーブルが InnoDB ストレージエンジンを使用して保存されている場合に、ポイントインタイムリカバリの前に使用するのに適したオンラインバックアップを作成する便利な方法を提供します。

バックアップ作成の詳細は、セクション7.2「データベースバックアップ方法」セクション7.3「バックアップおよびリカバリ戦略の例」を参照してください。

  • いくつかの機能を除いて --opt の効果を選択するには、除く各機能に対して --skip オプションを選択します。拡張挿入およびメモリーバッファリングを無効にするには、--opt --skip-extended-insert --skip-quick を使用します。(--opt はデフォルトでオンであるため、実際には --skip-extended-insert --skip-quick で十分です。)

  • インデックスの無効化とテーブルのロックを除くすべての機能に関して --opt を反転するには、--skip-opt --disable-keys --lock-tables を使用します。

制約

mysqldump は、デフォルトでは INFORMATION_SCHEMA データベースおよび performance_schema データベースをダンプしません。これらのいずれかをダンプするには、コマンド行で明示的に指定し、--skip-lock-tables オプションも使用します。--databases オプションでも指定できます。

mysqldump は、MySQL Cluster ndbinfo 情報データベースをダンプしません。

MySQL 5.6.6 より前では、mysqldumpmysql データベースのダンプとして general_log テーブルも slow_query_log テーブルもダンプしません。5.6.6 以降では、ダンプにはそれらのテーブルを再作成するためのステートメントが含まれているため、ダンプファイルを再ロードしたあとにそれらのテーブルが失われません。ログテーブルの内容はダンプされません。

権限が不十分なためビューのバックアップに問題が生じる場合は、セクションD.5「ビューの制約」の回避策を参照してください。


User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
  Posted by Siva Kranthi Kumar on October 29, 2010
Bat file commands to take SQL DB backup with compression

With MKS Toolkit (http://www.mkssoftware.com/products/tk/)
-----------------------------------------------------------

set DateTime=%date:~7,2%-%date:~4,2%-%date:~-4%
set WorkingDirectory=D:\Backup Directory\
set MySQLDirectory=D:\mysqldump.exe Directory\

"%MySQLDirectory%mysqldump" --host="127.0.0.1" --user="root" --password="" --routines --triggers --events dbname > "%WorkingDirectory%DBName %DateTime%.sql"

zip -m "%WorkingDirectory%DBName %DateTime%" "DBName %DateTime%.sql"

With 7-zip (http://www.7-zip.org/download.html)
-----------------------------------------------

set DateTime=%date:~7,2%-%date:~4,2%-%date:~-4%
set WorkingDirectory=D:\Backup Directory\
set MySQLDirectory=D:\mysqldump.exe Directory\

"%MySQLDirectory%mysqldump" --host="127.0.0.1" --user="root" --password="" --routines --triggers --events dbname > "%WorkingDirectory%DBName %DateTime%.sql"

7z a -tzip "%WorkingDirectory%DBName %DateTime%" "DBName %DateTime%.sql"

if ERRORLEVEL 1 goto :EOF
del "%WorkingDirectory%SnD %DateTime%.sql"
:EOF
  Posted by Milo de Vries on December 1, 2010
Creating a backup scheduled task on Windows with a oneliner:

schtasks /create /sc daily /st 04:30 /ru SYSTEM /tn MySQL_backup /tr "\"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqldump.exe\" -B <DB_NAME> -u <USER_NAME> -p<PASSWORD> -r C:\MySQL_backup\<DB_NAME>_%date:~0,2%.sql

This creates a daily task to run at 04:30, creating a seperate backupfile each day (<DB_NAME>_ma.sql, <DB_NAME>_di.sql, <DB_NAME>_wo.sql etc.)
  Posted by Ilan Hazan on April 6, 2011
Restoring a dump table into the MySQL master server can lead to serious replication delay.
To overcome the replication delay, caused by restoring the dump table on the master, there is a need to widespread the massive inserts. This can be done by the MySQL SLEEP command.
See http://www.mysqldiary.com/as-restoring-a-dump-table-into-the-mysql-master-you-better-get-some-sleep/

  Posted by Arbaoui Mehdi on May 15, 2011
  Posted by Alejandro Arauz on October 10, 2011
The mysqldump command is very helpful but sometimes you don't have the necessary permissions on the server to run this command (like in shared enviroments).

I had this problem before and searching for backup tools I found MySqlBackupFTP (http://mysqlbackupftp.com).It is easy to use and it has a free version that allows you to connect to a remote phpMyAdmin instance.

I hope it helps others with the same problem.
  Posted by DBA Lead on June 29, 2012
Fast, parallel restore from SQL dumps (mysqldump) for MySQL. The technique is very simple and straightforward.

http://www.geeksww.com/tutorials/database_management_systems/mysql/tips_and_tricks/fast_parallel_restore_from_sql_dumps_mysqldump_for_mysql.php
  Posted by Bill Plimpton on March 14, 2014
To get return code of mysql use:

mysqldump $MYSQL_OPTS $database $tables |gzip -1 >$path
if [ ${PIPESTATUS[0]} != 0 ]; then
echo " ## Backup of $db tables $tables FAILED! ##"
else
echo "Backup of $db $tables successful!"
fi
Sign Up Login You must be logged in to post a comment.