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 とか付けて実行していたらリストア簡単に出来ないんでしょうね、多分。
しかも、逆パターンだったら、テーブル削除してからのリストアになるので、ゾッとします。

早めに分かって、結果オーライでしたが、冷や汗かきました。大事に至らなくてよかったです。

以上になります

鹿児島県の出水市という所に住んでいまして、インターネット周辺で色々活動して行きたいと思ってるところです。 Webサイト作ったり、サーバ設定したり、プログラムしたりしている、釣りと木工好きなMacユーザです。 今はデータサイエンスに興味を持って競馬AI予想を頑張ってます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください