mysqldump について
mysqldump について個人的なメモをまとめておきます
日本語の公式ドキュメントが 5.6 のバージョンで止まっている
日本語の方はすべて 5.6 にリダイレクトされてしまいます
https://dev.mysql.com/doc/refman/5.6/ja/mysqldump.html
英語の方はすべてのバージョンを確認できます!
https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html
https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html
https://dev.mysql.com/doc/refman/5.6/en/mysqldump.html
基本的な呼び出し構文
# DB、 DB の Tables
mysqldump [options] db_name [tbl_name ...]
# 複数の DB
mysqldump [options] --databases db_name ...
# すべての DB
mysqldump [options] --all-databases
よく使うコマンド
基本的に DB ユーザーの見れる範囲のバックアップをとることが多いのかなぁ
なんて思ってるので --all-databases にしてます
※ MySQL 5.7 以降はデフォルトで InnoDB が選択されているため、他の DB エンジンのことは考慮してません。
mysqldump -h ${HOST_NAME} -P ${PORT} -u${USER_NAME} -p${USER_PASSWORD} --skip-lock-tables --single-transaction --all-databases > ${OUTPUT_FILE}
デフォルトで --opt が有効になっている
このオプションは、複数のオプションを組み合わせた省略形です。
高速なダンプ操作ができるようになっています。もし無効にしたい場合は、--skip-opt を指定します。
下記は組み合わせられているオプションたちです。
オプション名 | 説明 |
---|---|
--add-drop-table | 各 CREATE TABLE の前に DROP TABLE を書く。 |
--add-locks | LOCK TABLES と UNLOCK TABLES で各テーブルダンプを囲む。これによって、インサートが高速化される。 |
--create-options | CREATE TABLE にすべての MySQL 固有のテーブルオプションを含める。 |
--disable-keys | 各テーブルで、INSERT を ENABLE KEYS と DISABLE KEYS で囲む。これにより、すべての行が挿入された後にインデックスが作成されるため、ダンプファイルの読み込みが高速になる。 |
--extended-insert | 複数行の INSERT 構文 VALUES を利用して、ダンプファイルが小さくなり、ファイルのリロード時のインサートが高速化される。 |
--lock-tables | 各 DB で、 ダンプされる前にすべてのテーブルをロックする。InnoDB などのトランザクションが使えるものでは --single-transaction の方が優秀。それぞれの DB のテーブルごとにロックするため、一貫性が保証されない(異なる DB の場合はさらに)。無効にしたい場合、--skip-lock-tables を追加する。 |
--quick | 大きなテーブルのダンプに役立つ。record 全体を取得してメモリにバッファリングしてから書き出すのではなく、サーバーからテーブルの行を一度に1行ずつ取得するようにmysqldumpを強制する。 |
--set-charset | default_character_set を出力に書き込む。無効にしたい場合、--skip-set-charset を追加する。 |
その他のよく使うオプション
オプション名 | 説明 |
---|---|
--single-transaction | データをダンプする前に、トランザクション分離モードを REPEATABLE READ に設定し、START TRANSACTION SQL ステートメントをサーバーに送信する。MyISAM または MEMORY のテーブルでは一貫性が保証されないことには注意。 |
--skip-lock-tables | --lock-tables を無効にする。 |
--skip-opt | --opt を無効にする。 |
--flush-logs | ダンプを開始する前に MySQL サーバーのログファイルをフラッシュする。 |
--lock-all-tables | DB 内のテーブル全てをロックする。 |
--master-data | バイナリログファイルの名前と場所を追記する。自動的に --lock-tables が無効になり、--single-transaction が指定されてない場合は、--lock-all-tables が有効になる。 |
--no-data | テーブルの中身をダンプしない。定義のみダンプしたい時に指定する。 |
--no-create-db | CREATE DATABASE を入れない。 |
--no-create-info | CREATE TABLE を入れない。 |
おわりに
他に何かご存知の方がいらっしゃったら
コメントなり編集リクエストなりで教えていただけると幸いです
Author And Source
この問題について(mysqldump について), 我々は、より多くの情報をここで見つけました https://qiita.com/blendthink/items/1dd7fa8fba5f610193bc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .