您的位置:首页 > 运维架构 > Linux

linux下mysql数据库备份还原

2013-08-11 19:45 477 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: