1.下載工具包
rpm -Uvh http://repo.mysql.com/yum/mysql-connectors-community/el/7/x86_64/mysql-connector-python-2.1.8-1.el7.x86_64.rpm
yum -y install mysql-utilities
yum -y install mysql-connector-python
2.mysql表結構對比
語法:
mysqldiff --server1=user:pass@host:port:socket --server2=user:pass@host:port:socket db1.object1:db2.object1 db3:db4
例子:
mysqldiff --force --server1=openser:123_123@192.168.180.189:2297 --server2=openser:123_123@192.168.180.189:2297 openser.ccp_account:opensernew.ccp_account
3.對比結果
(1)數據表對比結果:
mysqldiff --force --server1=openser:Ytx_123@192.168.180.189:2297 --server2=openser:Ytx_123@192.168.180.189:2297 openser.ccp_account:opensernew.ccp_account
(2)數據庫對比結構:
mysqldiff --force --server1=openser:123_123@192.168.180.189:2297 --server2=openser:123_123@192.168.180.189:2297 openser:opensernew
4.對比並生成相應的修改sql
mysqldiff --force --server1=openser:123_123@192.168.180.189:2297 --server2=openser: 123_123@192.168.180.189:2297 --changes-for=server2 --show-reverse --difftype=sql openser.ccp_account:opensernew.ccp_account > output.sql
5.參數解釋
db1:db2:如果只指定數據庫,那么就將兩個數據庫中互相缺少的對象顯示出來,不比較對象里面的差異。這里的對象包括表、存儲過程、函數、觸發器等。
db1.object1:db2.object1:如果指定了具體表對象,那么就會詳細對比兩個表的差異,包括表名、字段名、備注、索引、大小寫等所有的表相關的對象。
--server1:配置server1的連接。
--server2:配置server2的連接。
--character-set:配置連接時用的字符集,如果不顯示配置默認使用character_set_client。
--width:配置顯示的寬度。
--skip-table-options:保持表的選項不變,即對比的差異里面不包括表名、AUTO_INCREMENT、ENGINE、CHARSET等差異。
--difftype=DIFFTYPE:差異的信息顯示的方式,有[unified|context|differ|sql],默認是unified。如果使用sql,那么就直接生成差異的SQL,這樣非常方便。
--changes-for=:修改對象。例如--changes-for=server2,那么對比以sever1為主,生成的差異的修改也是針對server2的對象的修改。
--show-reverse:在生成的差異修改里面,同時會包含server2和server1的修改