mysql表引擎更改_更改mysql表引擎(shell)

一、基础环境

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 

}

redirectlog

checkengine

generatedb

generatetable

alterengine

exit 0

本文出自 “7928217” 博客,请务必保留此出处http://7938217.blog.51cto.com/7928217/1682734

更改mysql表引擎(shell)

标签:shell myisam innodb

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:http://7938217.blog.51cto.com/7928217/1682734

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值