MySQL - dump
https://docs.oracle.com/cd/E17952_01/mysql-8.0-ja/mysqlpump.html
dumpファイル作成 / エクスポート / Export
mysqldump -u root -p DATABASE_NAME > dump_file.sql
// パスワードを指定
mysqldump --user=root --password=password myapp01 > dump_file_20230201.sql
// オプションを追加
mysqldump --set-gtid-purged=OFF --skip-lock-tables --skip-add-locks --user=root --password=root myapp01 > dump_file_20230201.sql
mysqldump --set-gtid-purged=OFF --skip-lock-tables --skip-add-locks --skip-column-statistics --user=root --password=root myapp01 > dump_file_20230201.sql
https://dev.mysql.com/doc/refman/5.6/ja/mysqldump.html
--lock-tables : ダンプされる各データベースに対して、ダンプするすべてのテーブルをダンプ前にロックする。
--skip-lock-tables : mysqldump中にREAD LOCKさせないようにする
"--opt" など、一部のオプションは "--lock-tables" を自動的に有効にします。これをオーバーライドするには、"--skip-lock-tables" をオプションリストの最後に使用します。
バイナリログ / バイナリロギング
https://dev.mysql.com/doc/refman/8.0/ja/binary-log.html
https://blog.pinkumohikan.com/entry/mysqldump-disable-column-statistics
mysql5.7のサーバに対して、mysql8クライアントでdumpを取ろうとすると出たりする。
MySQL8ではヒストグラム統計というのを考慮するようになり、dumpを生成しようとするときにANALYZE TABLE文を生成しようとする。
information_schema.COLUMN_STATISTICSを参照しようとするとが、これはmysq8からのスキーマでmysql5.7にはないので、エラーになっている。ということみたい。
「 –skip-column-statistics」オプションをつけてあげればいい。
mysqldump -u admin -p -h 127.0.0.1 -P 33060 --skip-column-statistics production > production.dump
mysqldump -u admin -p -h 127.0.0.1 -P 33060 --skip-column-statistics production > production.dump
MySQL 8にて、MySQL 5 の dumpを取ろうとすると、エラーが発生する。回避用のオプションを指定する必要がある。
–skip-column-statistics
mysqldump8以降でそれ以前 (5.7など)のMySQLサーバに対してダンプを実行した場合のエラーを回避するためのオプション
dumpファイルから復元
mysql -u root -p DATABASE_NAME < dump_file.sql
// パスワードを指定
mysql --host=localhost --user=root --password=password myapp01 < dump_file_20221119.sql
dumpファイルから復元(文字コードを指定)
mysql -u root -p database_name --default-character-set=utf8 < dump_file.sql
※上記では utf8を指定。インポート時に「Unknown command '\".」と出ていたら、これで回避できた。
テーブルを全部入れ替え
drop database DATABASE_NAME;
create database DATABASE_NAME;
--( ログアウト )
mysql -u root -p DATABASE_NAME < dump_file.sql