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#paramsMYSQL_USER='name'MYSQL_PWD='passwd'MYSQL_HOST='localhost'#bin pathsMYSQL='/usr/bin/mysql'MYSQLDUMP='/usr/bin/mysqldump'#db to backup, separate by blankDBS='friends faming shitoublog suzhousage bone'#output directoryDEST='/root/script/mysql_innodb_backup'#startNOW="$(date +%d-%m-%Y)"[ ! -f $DEST ] && mkdir -p $DESTTMP='tmp'if [ -f $DEST/$TMP ]; then rm -rf $DEST/$TMPelse mkdir -p $DEST/$TMPfi 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.sqldonecd $DEST && tar zcvf mysql-$NOW.tar.gz $TMP > /dev/null[ -d $TMP ] && rm -rf $TMP#EOF
定制参考脚本中的注释
2008-08-25 09:03:21, 10629 reviews
send to mailbox
just DO NOT support IE