LoginSignup
14
10

More than 5 years have passed since last update.

mysqldump取得時にdiffを見やすくする為の小ワザ

Posted at

mysql運用しているとmysqldumpをとって、別環境だったり過去とテーブル定義のdiffを見る時って結構あると思う。
うちの環境では、mysqldumpをgitで管理して差分を見たりしている。

その時に困るのが、オートインクリメントしているカラムがあると下記のように、環境毎のインクリメント値を出力する為にその部分で差分が出てdiffが汚れてしまう。。
diff汚れると、みるのつらい。。。

例えば下記のようなコマンドでdump取ってdiff取ると、オートインクリメントを使っているカラムでの当然環境毎にdiffが出るので、意味のないdiffが発生する。

#a環境のaaaDBのdump
$ mysqldump -u[ユーザ] -d aaa > a_aaa.sql

#b環境のaaaDBのdump
$ mysqldump -u[ユーザ] -d bbb > b_aaa.sql

$ diff a_aaa.sql b_aaa.sql
< ) EqNGINE=InnoDB AUTO_INCREMENT=561 DEFAULT CHARSET=utf8;
---
> ) ENGINE=InnoDB AUTO_INCREMENT=469 DEFAULT CHARSET=utf8;
96c96

これを避けるために、mysqldumpを取るときに、sedでインクリメント部分を除外して出力するとdiffが綺麗になるので、本当に定義が変わった部分だけ比較出来る。

$ mysqldump -u[ユーザ] -d [DB名] |sed 's/ AUTO_INCREMENT=[0-9]*//g' >[name].sql

簡単ですが、これ入れただけでdiffとにらめっこする運用コストが結構減ったりするので便利。

14
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
10