サーチ…


構文

  • mysqldump -u [ユーザ名] -p [パスワード] [その他のオプション] db_name> dumpFileName.sql ///単一のデータベースをバックアップするには
  • mysqldump -u [ユーザ名] -p [パスワード] [その他のオプション] db_name [tbl_name1 tbl_name2 tbl_name2 ...]> dumpFileName.sql /// 1つ以上のテーブルをバックアップする
  • mysqldump -u [ユーザ名] -p [パスワード] [その他のオプション] --databases db_name1 db_name2 db_name3 ...> dumpFileName.sql /// 1つ以上の完全なデータベースをバックアップする
  • mysqldump -u [ユーザ名] -p [パスワード] [その他のオプション] --all-databases> dumpFileName.sql /// MySQLサーバ全体をバックアップする

パラメーター

オプション効果
- #サーバログインオプション
-h (-- --host接続先のホスト(IPアドレスまたはホスト名)。デフォルトはlocalhost127.0.0.1 )です。例: -h localhost
-u (-- --user MySQLユーザー
-p (-- --password MySQLパスワード。 重要 -pを使用する場合、オプションとパスワードの間にスペースを入れてはいけません。例: -pMyPassword
- #ダンプオプション
--add-drop-database CREATE DATABASE文の前にDROP DATABASE文を追加します。サーバー内のデータベースを置換する場合に便利です。
--add-drop-table CREATE TABLEステートメントの前にDROP TABLEステートメントを追加してください。サーバのテーブルを置き換える場合に便利です。
--no-create-db ダンプ内のCREATE DATABASE文を非表示にします。これは、ダンプしているデータベースが、ダンプをロードするサーバにすでに存在していることを確信している場合に便利です。
-t (-- --no-create-infoダンプ内のすべてのCREATE TABLEステートメントを抑制します。これは、テーブルのデータだけをダンプし、ダンプファイルを使用して別のデータベース/サーバの同一のテーブルにデータを入れる場合に便利です。
-d (-- --no-dataテーブル情報を書き込まないでください。これは、 CREATE TABLEステートメントだけをダンプします。 「テンプレート」データベースの作成に役立ちます
-R ( - --routinesダンプにストアドプロシージャ/関数をインクルードします。
-K (-- --disable-keysデータを挿入する前に各テーブルのキーを無効にし、データを挿入した後にキーを有効にします。これにより、一意ではないインデックスを持つMyISAMテーブルでのみ挿入が高速化されます。

備考

mysqldump操作の出力は、生成するために使用されたバージョンのMySQLユーティリティと互換性のあるシーケンシャルなSQL文を含む軽くコメントされたファイルです(以前のバージョンとの互換性に注意を払っていますが、将来の保証はありません)。したがって、 mysqldumpデータベースの復元は、それらの文の実行を含みます。一般に、このファイル

  • DROP初の指定されたテーブルまたはビュー
  • そのテーブルまたはビューをCREATE
  • データでダンプされたテーブル( --no-dataオプションなし)では、
    • テーブルをLOCKする
    • 1つの文で元の表のすべての行をINSERT
  • UNLOCK TABLES
  • 他のすべてのテーブルとビューについて上記を繰り返します
  • DROP sが最初のルーチンが含ま
  • CREATEそのルーチン秒
  • 他のすべてのルーチンで同じことを繰り返す

各テーブルのCREATE前にDROP存在するということは、スキーマが存在する場合、スキーマが空であるかどうかにかかわらず、リストアのためにmysqldumpファイルを使用すると、そこにデータが移入または上書きされることを意味します。

データベースまたはテーブルのバックアップを作成する

データベース全体のスナップショットを作成する:

mysqldump [options] db_name > filename.sql

複数のデータベースのスナップショットを作成する:

mysqldump [options] --databases db_name1 db_name2 ... > filename.sql
mysqldump [options] --all-databases > filename.sql

1つまたは複数のテーブルのスナップショットを作成する:

mysqldump [options] db_name table_name... > filename.sql

1つ以上のテーブルを除いたスナップショット作成します。

mysqldump [options] db_name --ignore-table=tbl1 --ignore-table=tbl2 ... > filename.sql

ファイル拡張子.sqlは完全にスタイルの問題です。任意の拡張機能が動作します。

ユーザー名とパスワードの指定

> mysqldump -u username -p [other options]
Enter password:

コマンドラインでパスワードを指定する必要がある場合(スクリプトなど)、- -pオプションの後ろにスペースを入れずに追加できます。

> mysqldump -u username -ppassword [other options]

パスワードにスペースや特殊文字が含まれている場合は、シェル/システムに応じてエスケープを使用してください。

オプションで、拡張形式は次のとおりです。

> mysqldump --user=username --password=password [other options]

(コマンド行でのパスワードの明示は、セキュリティ上の理由から推奨されていません。)

データベースまたはテーブルのバックアップを復元する

mysql [options] db_name < filename.sql

ご了承ください:

  • db_nameは既存のデータベースである必要があります。
  • 認証されたユーザは、 filename.sql内のすべてのコマンドを実行するのに十分な特権を持っていfilename.sql
  • ファイル拡張子.sqlは完全にスタイルの問題です。任意の拡張機能が動作します。
  • ダンプするテーブル名を指定することはできますが、ロードするテーブル名は指定できません。これはfilename.sql内で行う必要がありfilename.sql

あるいは、 MySQLコマンドラインツールで、sourceコマンドを使用してリストアする(または他のスクリプトを実行する)ことができます:

source filename.sql

または

\. filename.sql

圧縮されたリモートサーバからのmysqldump

高速転送のためにワイヤ上で圧縮を使用するために、通過--compressオプションmysqldump 。例:

mysqldump -h db.example.com -u username -p --compress dbname > dbname.sql

重要: ソース dbをロックしたくない場合は、-- --lock-tables=falseも含める必要があり--lock-tables=false 。しかし、そのように内部的に一貫したdbイメージを得ることはできません。

ファイルを圧縮して保存するには、 gzipパイプすることもできます。

mysqldump -h db.example.com -u username -p --compress dbname | gzip --stdout > dbname.sql.gz

解凍せずにgzipされたmysqldumpファイルを復元する

gunzip -c dbname.sql.gz | mysql dbname -u username -p

注: -cはstdoutに出力を書き込むことを意味します。

圧縮してAmazon S3に直接バックアップ

大規模なMySqlインストールを完全にバックアップし、十分なローカルストレージがない場合は、Amazon S3バケットに直接ダンプして圧縮することができます。コマンドの一部としてDBパスワードを使用せずにこれを行うのもよい方法です:

mysqldump -u root -p --host=localhost --opt --skip-lock-tables --single-transaction \
        --verbose --hex-blob --routines --triggers --all-databases |
    gzip -9 | s3cmd put - s3://s3-bucket/db-server-name.sql.gz

パスワードの入力を求めるプロンプトが表示され、その後にバックアップが開始されます。

あるMySQLサーバから別のMySQLサーバへデータを転送する

あるサーバーから別のサーバーにデータベースをコピーする必要がある場合は、次の2つの方法があります。

オプション1:

  1. ダンプファイルをソースサーバーに格納する
  2. ダンプファイルをコピー先のサーバーにコピーする
  3. ダンプファイルをターゲットサーバーにロードする

ソースサーバー上で:

mysqldump [options] > dump.sql

宛先サーバーで、ダンプ・ファイルをコピーして次のコマンドを実行します。

mysql [options] < dump.sql

オプション2:

接続先サーバーがホストサーバーに接続できる場合は、パイプラインを使用してデータベースをあるサーバーから別のサーバーにコピーできます。

移行先サーバーで

mysqldump [options to connect to the source server] | mysql [options]

同様に、スクリプトは送信元サーバー上で実行され、送信先にプッシュされます。いずれの場合も、オプション1よりもはるかに高速である可能性が高い。

ストアドプロシージャと関数を使用したバックアップデータベース

デフォルトではストアドプロシージャと関数によって、またはmysqldumpによって生成されない場合は、パラメータ--routines (または-R )を追加する必要があります:

mysqldump -u username -p -R db_name > dump.sql

--routinesを使用する--routines 、作成と変更のタイムスタンプは維持されず、代わりにmysql.procの内容をダンプして再--routinesする必要がありmysql.proc



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow