mysqldump の結果をそのまま圧縮したり転送したりするコマンド例

mysqldump の結果をそのまま圧縮したり転送したりするコマンド例

イメージ

ちょっと遅めの夏休みをもらって八丈島に行ってきました nakamura です!いい所すぎて危うくそのまま移住するところでした。

データベースの移行をする際みなさんどんな流れで作業しているでしょうか。コマンドラインでダンプを取って、サイズが大きかったら gzip で圧縮して、WinSCP でそれをローカルに落としてきて、それをまた別のサーバにアップロードして・・・・なんて事してたりしませんか?

シェルのパイプやリダイレクトをうまく使ってあげれば、この辺りはコマンド一発でいけちゃったりするのです。今日はそんなコマンド例のご紹介です。

コマンド例

実際によく使うコマンドの例を箇条書きで。

とりあえずダンプの結果をそのまま圧縮する。

mysqldump -udb_user db_name -pdb_pass | gzip > db_name.dump.sql.gz

特定の文字列を置換した上で圧縮する。

MT のデータを移行する際、ホスト名を書き換えるのによく使います。

mysqldump -udb_user db_name -pdb_pass | sed 's/example.com/example2.com/g' | gzip > db_name.dump.sql.gz

圧縮しつつ、そのまま別のサーバに転送する。

特に容量が大きい時は、これがないとムリ。

mysqldump -udb_user db_name -pdb_pass | gzip | ssh example.com 'cat > ~/db_name.dump.sql.gz'

圧縮しつつ、そのまま別のサーバに転送して、さらにそのままリストアする。

結構荒業というか、移行先の DB にデータが存在する場合、消えてはいけないものが消えてしまう可能性もあるので、使う時は慎重に!

mysqldump -udb_user db_name -pdb_pass | gzip | ssh example.com 'zcat | mysql -udb_user db_name -pdb_pass'

終わりに

結局のところパイプやリダイレクトでつないでいるだけなので、組み合わせ次第でまだまだ色んな事ができるはずです。データ量が多すぎて DB の移行に時間が掛かってしょうがない!というストレスが多少は軽くなるので、ぜひ一度試してみてください。

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ