mysqldumpで’-t’のオプションを知らずに使っていて冷や汗かいた話
mysqldump コマンドでデータベースのdumpを取得しますが、何気に使ってしまっているところがあって、大げさに言ってしまえば命拾いしたな・・・という感じになりました。
mysqldump の -t
Dockerコンテナ外から、コンテナ内のMySQLデータを取得したかったので、以下のコマンドを実行していました。
$ docker exec -it container_name bash -c "mysqldump -uroot -p -t database table --where 'id = 23'" 1> table.dump
必要なデータだけdumpファイルに出力して、別のデータベースにリストアしていました。
何も考えもせず使ってしまっていて、
ふと「-t」ってなに?
って感じになりました。テーブル名の指定なのかなって勘違いしていたのですが、データベース名の前に付けるのは不自然だし。
調べてみると
「-t」はDROP TABLEやCREAT TABLEを付けないというオプションなんですね。
上記によると、テーブルは無視(no-create-info)、ということなんですね、勉強になりました。
普段使いの時は
普段はデータベースの全バックアップでこんな感じでコマンドを使っていたのですが、
# mysqldump --single-transaction -uroot -p database --opt | gzip > database.dump
-t とか付けて実行していたらリストア簡単に出来ないんでしょうね、多分。
しかも、逆パターンだったら、テーブル削除してからのリストアになるので、ゾッとします。
早めに分かって、結果オーライでしたが、冷や汗かきました。大事に至らなくてよかったです。
以上になります