首页 » MySQL » 正文

Shell实现MySQL数据库备份和还原[生产环境]

最近有朋友在备份MySQL数据库时遇到许多问题,备份出来后导入又用不了,还有就是数据库较多,想一次性备份好每一个库(分库备份);现在想共享一下我生产环境的备份脚本给大家参考,希望能够抛砖引玉。

vim mysql_bak_im.sh
#!/bin/bash
#Version:1.0 2015-09-20
#Description: Bash Script from 技术一流

MysqlUser=root
PassWord=jishuyiliu
BackupDir=/backup
ImportDir=/import

Port=3306
MysqlCmd="mysql -u$MysqlUser -p$PassWord"
[ $? != 0 ] && echo "Failed to connect to MySQL" && exit

[ -d $BackupDir ] || mkdir -p $BackupDir
[ -d $ImportDir ] || mkdir -p $ImportDir

if [ "$1" == "im" -o "$1" == "import" ]; then
  gzip -d $BackupDir/*
  for db in `ls $BackupDir`
  do
    $MysqlCmd -e "source $BackupDir/$db"
  done
  mv $BackupDir/* $ImportDir
fi

Database=`$MysqlCmd -e "show databases;"|egrep -v "Database|_schema|mysql"`
MysqlDump="mysqldump -u$MysqlUser -p$PassWord"

for dbname in $Database
do
    $MysqlDump --events -B $dbname|gzip > /$BackupDir/${dbname}_$(date +%F)_bak.sql.gz
done

简单说一下上面的Shell脚本使用方法,配置好MySQL用户名和密码以及备份和还原目录,即可开始以下操作:

分库备份MySQL数据库命令

[root@eazence ~]# sh mysql_bak_im.sh

备份文件放在/backup目录下

导入MySQL数据库备份文件命令

[root@eazence ~]# sh mysql_bak_im.sh im

已导入过的备份文件会被移动到/import目录下

大家可以根据自己的业务需求来更改该脚本,欢迎把更好的建议在文章下方留言,以便使该脚本更可靠,更实用!

本文共 1 个回复

  • 1092161344 2016/01/11 13:29

    GoodLuck!

发表评论