更改mysql表引擎(shell)
2015-08-07 16:49
711 查看
我的博客已迁移到xdoujiang.com请去那边和我交流 一、基础环境 1、版本 cat /etc/redhat-release CentOS release 6.6 (Final) 2、内核 uname -r 2.6.32-504.el6.x86_64 3、ip(eth0) 10.1.10.23 二、shell脚本函数说明 redirectlog #记录日志用的 checkengine #检查innodb是否支持及查看默认引擎 generatedb #导出需要的DB库 generatetable #导出需要更改引擎表到某个文件 alterengine #将某个文件中的表进行引擎更改 三、cat myisamtoinnodb.sh #!/bin/bash #-------------------------------------------------- #Author:jimmygong #Email:jimmygong@taomee.com #FileName:myisamtoinnodb.sh #Function: #Version:1.0 #Created:2015-08-07 #-------------------------------------------------- currdate=$(date +%Y%m%d) dates=`date "+%s"` sleeptime=2 dbuser="test" dbpass="123456" dbport="3306" dbip=$(ifconfig eth0|awk '/inet addr:/'|awk -F: '{print $2}'|awk -F" " '{print $1}') logdir="/opt/myisamtoinnodb" exclude="mysql information_schema" function mysqlcmd () { comm=$1 mysql -u"$dbuser" -p"$dbpass" -h"$dbip" -P"$dbport" -sNe "$comm" } function redirectlog () { logfile=$logdir/${currdate}_${dbip}_log mkdir -p $logdir exec 1>$logfile exec 2>$logfile } function checkengine () { defaultengine=`mysqlcmd 'show engines'|grep -i default|awk '{print $1,$2}'` echo "$defaultengine" innodb=`mysqlcmd 'show engines'|grep -i innodb|grep -i yes` if [[ ! -z "$innodb" ]] then echo "innodb enabled" fi } function generatedb () { i=0 dblist=`mysqlcmd 'show databases'` for db in $dblist do rv=`echo $exclude|grep -w -i $db` if [[ -n "$rv" ]] then continue; fi dbname[i]=$db let i++ done } function generatetable () { i=0 for db in ${dbname[@]} do alltable=`mysqlcmd "use $db;show tables"|wc -l` for ((j=1;j<=$alltable;j++)) do table=`mysqlcmd "use $db;show tables;"|sed -n $j"p"` for tablename in $table do engine=`mysqlcmd "use $db;show create table $tablename;"|grep -w -i "engine=myisam"` if [[ $? = 0 ]] then echo $db $table >> $logdir/table.$dates fi done done done } function alterengine () { [[ ! -e $logdir/table.$dates ]] && exit 1 while read db table do mysqlcmd "alter table $db.$table engine=innodb;" sleep $sleeptime echo $db $table $(date +%F:%T) done < $logdir/table.$dates } redirectlog checkengine generatedb generatetable alterengine exit 0
相关文章推荐
- android wifi 无线调试
- 运维入门
- 动态清空 nohup 输出文件
- install scrapy with pip and easy_install
- Linux Shell常用技巧
- mysql innodb的学习(一)
- mysql innodb学习(二)
- mysql innodb学习(三)
- mysql innodb学习(四)
- shell字符串操作详解
- Shell中删除某些文件外所有文件的3个方法
- Ruby中执行Linux shell命令的六种方法详解
- VB使用shell函数打开外部exe程序的实现方法
- Shell编程的一些知识集合
- Shell中的for和while循环详细总结
- 什么是Shell?Shell脚本基础知识详细介绍
- Shell脚本中引用、调用另一个脚本文件的2种方法
- Shell脚本解压rpm软件包
- Shell脚本实现复制文件到多台服务器的代码分享
- Shell脚本实现批量替换文件内容