Rails默认的数据库表都是用的Innodb,MySQL对Innodb表的备份不同于MyISAM表,由于Innodb对事物等特性的支持所以不能用传统备份MyISAM表的方法来备份Innodb数据,MyISAM表数据的备份方式总结下有:
其中直接拷贝数据库目录的方式不适用于Innodb表,而且mysqldump在对Innodb表进行数据备份时也必须加上特殊的参数,所以自己就写了一个shell脚本,用来备份Innodb表,并且压缩
#!/bin/bash #author: shitou #date: 08/24/2008 13:52 #aim: backup all innodb database and gzip it, for MySQL5.x #params MYSQL_USER='name' MYSQL_PWD='passwd' MYSQL_HOST='localhost' #bin paths MYSQL='/usr/bin/mysql' MYSQLDUMP='/usr/bin/mysqldump' #db to backup, separate by blank DBS='friends faming shitoublog suzhousage bone' #output directory DEST='/root/script/mysql_innodb_backup' NOW="$(date +%d-%m-%Y)" [ ! -f $DEST ] && mkdir -p $DEST TMP='tmp' if [ -f $DEST/$TMP ]; then rm -rf $DEST/$TMP else mkdir -p $DEST/$TMP fi for db in $DBS do $MYSQLDUMP -u$MYSQL_USER -p$MYSQL_PWD -h$MYSQL_HOST \ --skip-opt --single-transaction --add-drop-table --create-options --quick \ --extended-insert --set-charset --disable-keys $db > $DEST/$TMP/$db-$NOW.sql done cd $DEST && tar zcvf mysql-$NOW.tar.gz $TMP > /dev/null [ -d $TMP ] && rm -rf $TMP
定制参考脚本中的注释
2008-08-25 09:03:21, 10997 reviews
send to mailbox
Shell script to backup all MySQL database
【转载】命令的小总结
shell中的数组
一些shell技巧
( ),{ }的区别
一个小命令
awk同时操作两个文件
shell小技巧
Shell: 统计MySQL InnoDB表的大小
awk多维数组
just DO NOT support IE