更改mysql表引擎(shell)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
我的博客已迁移到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









本文转自 xdoujiang 51CTO博客,原文链接:http://blog.51cto.com/7938217/1682734,如需转载请自行联系原作者
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
Oracle 关系型数据库 MySQL
【mysql】—— 表的内连和外连
【mysql】—— 表的内连和外连
|
2月前
|
存储 关系型数据库 MySQL
【mysql】—— 表的增删改查
【mysql】—— 表的增删改查
|
2月前
|
分布式计算 DataWorks 关系型数据库
DataWorks支持将ODPS表拆分并回流到MySQL的多个库和表中
【2月更文挑战第14天】DataWorks支持将ODPS表拆分并回流到MySQL的多个库和表中
59 8
|
2月前
|
SQL 关系型数据库 MySQL
Mysql基础第二十四天,创建表和操纵表
Mysql基础第二十四天,创建表和操纵表
31 0
Mysql基础第二十四天,创建表和操纵表
|
3月前
|
存储 JSON 关系型数据库
一文搞懂MySQL表字段类型长度的含义
一文搞懂MySQL表字段类型长度的含义
38 0
|
29天前
|
存储 SQL 关系型数据库
【MySQL】4. 表的操作
【MySQL】4. 表的操作
22 0
|
2月前
|
Linux Shell C语言
【Shell 命令集合 设备管理 】Linux 设置键盘映射表 loadkeys命令 使用指南
【Shell 命令集合 设备管理 】Linux 设置键盘映射表 loadkeys命令 使用指南
41 0
|
2月前
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
106 1
|
20天前
|
存储 关系型数据库 MySQL
MySQL引擎对决:深入解析MyISAM和InnoDB的区别
MySQL引擎对决:深入解析MyISAM和InnoDB的区别
34 0
|
28天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)