mysql 表结构同步

实例:
线上数据库 mysql(RDS)
本地数据 mysql
本地功能更新,更改了表结构此时线上与本地的数据库的表结构就不一样了, 有没有同步的工具呢?
这正是本文的重点

下面重点结束同步的工具 Navicat for mysql

这是一个收费软件, 可以免费使用14天.Linux mac windows 都有对应的客户端
Linux的客户端其实也是wine版的,这里主要已此版做样例操作
从官网下载后解压
进入目录
深度截图_选择区域_20180110162305.png
如果没有安装wine需要运行 start_navicat 初始化安装包自带的wine,如果已经安装了wine就直接进入Navicat(我已经安装过了,直接进入该文件夹)
深度截图_选择区域_20180110162822.png
然后如上图(在终端中)运行 wine Navicat.exe
深度截图_选择区域_20180110163019.png
点击试用后进入主界面
然后把源库 和需要同步的库添加好
深度截图_选择区域_20180110163235.png
输入相关数据库链接信息
深度截图_选择区域_20180110163332.png
例如样例添加一个 root 和 rds 2个链接
现在开始做数据结构同步的操作
深度截图_选择区域_20180110163617.png
选择结构同步后
深度截图_选择区域_20180110163919.png
设置好源与目标后 ,选择比对,该工具会进行对比
深度截图_选择区域_20180110164246.png
分析对比后会出现下面的界面
深度截图_选择区域_20180110164653.png
ddl对比 显示的 源与目标的create语句
部署 则是对比后需要同步的语句





























mysqldump 多数据库备份

mysqldump -uroot -p --all-databases > back.sql 备份所有数据库
然而如果我们想排除个别数据库怎么办?

mysql -e "show databases;" -uroot -ppassword | grep -Ev "Database|information_schema|mysql|db1|db2" | xargs mysqldump -uroot -ppassword --databases > mysql_back.sql

恢复的时候 只恢复单个的数据库 怎么办?

 mysql -u root -p databasename --one-database< mysql_back.sql 

mysql-workbench中duration fetch的含义

duration 为查询所花的时间
fetch 读取结果所花的时间
一般优化以duration时间为重
fetch 时间比较大的话,考虑到是网络因素,或者查询语句中,有相关后续处理的函数
如:

select * from names where mid(xingming,2) regexp '死|病|鬼|瘪|丑|杀|缺'

上面的语句连续用了2个处理函数,会导致fetch时间比较长
查看比较详细的 语句执行过程中 各个阶段所占时间可以用如下的命令
set profiling=1;
需要执行的sql
show profiles;
show profile for query 1;