mysqldump
論理バックアップの実施
注意点
更新時にロックがかかるので、実施時間等の調整が必要
MyISAM がある場合
一貫性のあるデータを取得するのは --master-data=2 or --lock-all-tables を指定すると更新ロックがかかる
InnoDB のみの場合
--single-transaction と --master-data=2 を指定するとバックアップ中でも更新ロックされない
データ量に比例してバックアップ / リカバリに時間がかかる
オプション
2
CHANGE MASTER TO ステートメントは SQL コメントとして書き込まれる
1
ステートメントはコメントとしては書き込まれず、ダンプファイルがリロードされるときに実行
デフォルト値
--all-databases
すべてのデータベースのダンプを取得
各データベース内のすべてのテーブルを一度にロックしてダンプするため、一貫性のデータベースになる
ただし、異なるデータベース間のテーブルに一貫性はない
この問題を解決するには --lock-all-tables オプションを使用する
InnoDB のバックアップには、--single-transaction オプションを追加する
このオプションは、LOCK TABLES ではなく InnoDB の MVCC 機能を使って、PIT が単一の一貫したバックアップを作成
--default-character-set=binary
文字化けのもとになるので、文字コードはきちんと指定する
--single-transaction
トランザクション開始時に存在していたデータがダンプされる
コマンド
ダンプ
code:shell
# mysqldump -u root -p --opt --default-character-set=binary name > name.sql
スキーマだけ
code:shell
# mysqldump -u root -p --opt --default-character-set=binary --no-data name > schema_name.sql
192.168.12.122 へ転送 ※ ローカルへの書き出しは無い
code:shell
$ mysqldump -u root -p --single-transaction --master-data --all-databases --flush-privileges --events --default-character-set=binary | ssh -oStrictHostKeyChecking=no -oServerAliveInterval=60 192.168.12.122 "cat > /tmp/fulldump-f$(date +%Y%m%d).sql"
タブ形式での出力
code:sell
$ mysqldump -u root -p --opt --add-drop-database --default-character-set=binary --tab=/tmp database name table name