1.压缩备份数据库
mysqldump --databases databasesname --default-character-set=utf8 -hlocalhost -uuser -ppassword | gzip >/home/test.sql.gz
如果遇到
mysqldump: Got error: 1016: Can't open file: './capitalog_beta/price_rateinfousdcadw1.frm' (errno: 24) when using LOCK TABLES
加上一句
--lock-tables=false
2.只备份压缩数据库表结构
mysqldump --databases databasesname --default-character-set=utf8 --no-data -hlocalhost -uuser -ppassword | gzip >/home/test.sql.gz
3.备份压缩数据库,以日期保存压缩后文件
mysqldump --databases databasesname --default-character-set=utf8 --no-data -hlocalhost -uuser -ppassword | gzip >/home/database$(date +%y%m%d).sql.gz
4.数据库备份小脚本
以每天日期保存数据库备份,并且使备份只保留固定天数
/usr/bin/mysqldump --databases databasesname --default-character-set=utf8 -hlocalhost -uuser -ppassword | gzip >/home/database$(date +%y%m%d).sql.gz
#delete 7 days ago file
find /home/x/backup/ -type f -mtime +7 -exec rm '{}' \;
5.还原压缩的备份
gunzip < backupfile.sql.gz | mysql -uusername -ppassword
注意:可以看到我并没有制定数据库名,因此上面的命令只能还原到原数据库名称中,因为sql中记录了原数据库的名称
如果想把原数据库名称为beta1的数据库还原到beta2的数据库中,我们需要先解压备份文件,然后修改sql的数据库名称,最后在还原
gzip -d test.sql.gz
vim test.sql
在文件的开始可以看到创建数据库的sql
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `beta` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `beta`;
修改为我们想还原到的数据库名
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `beta2` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `beta2`;
最后一步还原
mysql -ufiresnow -p1234 < test.sql