それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

mysql のデータベースコピー(dump/restore)

ちょっと、実験用にデータベースが欲しい時に、稼働環境からコピってくるとかよくあると思うんです。

最近のMySQLは稼働中でもdump取れるんですね。便利!!

ちっちゃいデータベースコピーなら、これでいける。

takuya@atom:~$ mysqladmin create DEST_DB
Password:
takuya@atom:~$ mysqldump SRC_DB | mysql DEST_DB

だけれど、パイプでつなぐと、password のプロンプトが見えなくて困る。無理やり入れたら通る。しかし、Password:はしっかりdump.sqlに・・・

標準出入力が。。。

パイプでつなぐと残念なお知らせ。標準出力の「Password:」がバッチリ・・・

Password:-- MySQL dump 10.13  Distrib 5.5.44, for debian-linux-gnu (x86_64)
--
-- Host: localhost    Database: xxxxxxx
-- ------------------------------------------------------
-- Server version       5.xxxxxxxxx
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

ちゃんとSQLファイルにdumpした方がいい

Bashの履歴に残さないようにコマンドを打つ

bash は、コマンド入力の先頭にスペースを入れれば、履歴に残らないので。それを使う。

takuya@atom:~$ mysqladmin create DEST_DB
Password:
takuya@atom:~$     mysqldump -p $PASSWORD SRC_DB | mysql DEST_DB

パスワードを入れる前に、スペースを入れて履歴に残さないのがミソ

追記

bashで先頭スペースをいれて、履歴に残さない設定

export HISTCONTROL=ignoreboth

参考資料

https://dev.mysql.com/doc/refman/5.6/en/mysqldump-copying-database.html