mysqldump备份示例

  • A+
所属分类:Mysql 数据库

备份单个数据库

mysqldump -uroot -p123456 -B mike >/server/mysqlbak_$(date +%F).sql

压缩备份

mysqldump -uroot -pmike123 --compact -B mike |gzip 
>/server/mysqlbak1-b_$(date +%F).sql.gz

压缩备份虽然消耗cpu,但是节省空间,生产环境都要压缩备份

恢复的时候,要gunzip –d 解压mysql

恢复单个数据库

mysql -uroot -p123456 mike </server/mysqlbak_20131105.sql

备份多个数据库

mysqldump -uroot -pmike123 --compact -B liuyalei mike|gzip >/server/mysqlbak1-b_$(date +%F).sql.gz

备份liuyalei oldboy两个数据库

备份多个库,必须加-B参数,否则系统会以为是备份liuyalei库里面的oldboy表

如何分库备份

#!/bin/sh
MYUSER=root
MYPASS=password
MYLOGIN="mysql  -u$MYUSER -p$MYPASS"
MYDUMP="mysqldump -u$MYUSER -p$MYPASS  -B"
DATABASE="$($MYLOGIN -e "show databases"|egrep -vi  "_schema|mysql|Database")"
for  dbname in $DATABASE
  do
   MYDIR=/data/mysql_backup/$dbname
   [ ! -d  $MYDIR ] && mkdir -p $MYDIR
 $MYDUMP $dbname|gzip  >$MYDIR/${dbname}_$(date +%F-%T).sql.gz
done

添加定时任务:

#mysql backup by Yalei
00 01 * * * /bin/sh /scripts/mysql_backup.sh >/dev/null 2>&1

如果不做分库备份,所有数据库都备份在一起,恢复的时候,如果只要恢复某一个库,浪费时间;

直接分开备份,写个脚本,去数据库里面把库查出来,循环备份

备份某单个表

mysqldump -uroot -pmike123 --compact liuyalei mike|gzip >/server/mysqlbak1-b_$(date +%F).sql.gz

备份liuyalei数据库mike表

备份多个表

[root@C64 ~]# mysqldump -uroot -pmike123 --compact liuyalei mike mike1|gzip >/server/mysqlbak1-b_$(date +%F).sql.gz

备份liuyalei数据库mike mike1表

如何分表备份

需求和分库备份一样,一个库里面有大表有小表,有时可能需要只恢复一个小表,上述的多表备份文件很难拆开。

用单表备份的命令,写多次

备份数据库结构

mysqdump -uroot -p123456 -d mike >/server/mysqlbak_20131105.sql

备份mike数据库的结构

备份表结构

mysqdump -uroot -p123456 -d mike test >/server/mysqlbak_20131105.sql

备份mike数据库test表的结构

备份整个数据库

mysqdump -uroot -p123456 -B -A --events|gzip>/server/all_$(date +%F).sql.gz

--events是忽略events

YaLei

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: