更改mysql表引擎(shell)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
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,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
26天前
|
存储 关系型数据库 MySQL
MySQL引擎InnoDB和MyISAM的区别?
InnoDB是MySQL默认的事务型存储引擎,支持事务、行级锁、MVCC、在线热备份等特性,主索引为聚簇索引,适用于高并发、高可靠性的场景。MyISAM设计简单,支持压缩表、空间索引,但不支持事务和行级锁,适合读多写少、不要求事务的场景。
54 9
|
6月前
|
关系型数据库 MySQL 数据库
数据迁移脚本优化过程:从 MySQL 到 Django 模型表
在大规模的数据迁移过程中,性能问题往往是开发者面临的主要挑战之一。本文将分析一个数据迁移脚本的优化过程,展示如何从 MySQL 数据库迁移数据到 Django 模型表,并探讨优化前后的性能差异。
|
6月前
|
存储 关系型数据库 MySQL
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
|
2月前
|
存储 关系型数据库 MySQL
mysql 引擎概述
MySQL存储引擎是处理不同类型表操作的组件,InnoDB是最常用的默认引擎,支持事务、行级锁定和外键。MySQL采用插件式存储引擎架构,支持多种引擎,如MyISAM、Memory、CSV等,每种引擎适用于不同的应用场景。通过`SHOW ENGINES`命令可查看当前MySQL实例支持的存储引擎及其状态。选择合适的存储引擎需根据具体业务需求和引擎特性来决定。
|
2月前
|
存储 关系型数据库 MySQL
mysql 8.0 的 建表 和八种 建表引擎实例
mysql 8.0 的 建表 和八种 建表引擎实例
37 0
|
2月前
|
Oracle 关系型数据库 MySQL
shell获取多个oracle库mysql库所有的表
请注意,此脚本假设你有足够的权限访问所有提到的数据库。在实际部署前,请确保对脚本中的数据库凭据、主机名和端口进行适当的修改和验证。此外,处理数据库操作时,务必谨慎操作,避免因错误的脚本执行造成数据损坏或服务中断。
49 0
|
4月前
|
关系型数据库 MySQL Shell
MySQL回滚脚本: 误操作delete binlog回滚shell脚本
MySQL回滚脚本: 误操作delete binlog回滚shell脚本
|
5月前
|
存储 SQL 关系型数据库
(十三)MySQL引擎篇:半道出家的InnoDB为何能替换官方的MyISAM?
MySQL是一款支持拔插式引擎的数据库,在开发过程中你可以根据业务特性,从支持的诸多引擎中选择一款适合的,例如MyISAM、InnoDB、Merge、Memory(HEAP)、BDB(BerkeleyDB)、Example、Federated、Archive、CSV、Blackhole.....
|
5月前
|
存储 SQL 关系型数据库
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
MySQL设计规约问题之在数据库设计中,为什么要适当考虑反范式的表设计
|
5月前
|
SQL 存储 数据库
MySQL设计规约问题之如何处理日志类型的表
MySQL设计规约问题之如何处理日志类型的表