首页 » 脚本 » 正文

数据库备份脚本

#!/bin/sh
# author:马振国
backupdir=/home/backup/db/
LogFile=/home/backup/db/mysqlbak.log
mkdir -p $backupdir$(date -d yesterday +%Y)/$(date -d yesterday +%m)_$(date -d yesterday +%d)/
cd $backupdir$(date -d yesterday +%Y)/$(date -d yesterday +%m)_$(date -d yesterday +%d)
/usr/local/mysql/bin/mysqldump -u用户名 -p密码 -h服务器的ip 数据库的名称 >$(date -d yesterday +%Y-%m-%d)_数据库的名称.sql
cd $backupdir$(date -d yesterday +%Y)
tar zcvf $backupdir$(date -d yesterday +%Y-%m-%d).tar.gz $(date -d yesterday +%m)_$(date -d yesterday +%d) >> $LogFile 2>&1
rm -rf $backupdir$(date -d yesterday +%Y)/$(date -d yesterday +%m)_$(date -d yesterday +%d)
cd $backupdir
scp -P 端口号 $backupdir$(date -d yesterday +%Y-%m-%d).tar.gz root@ip地址:路径
#rm -rf $backupdir$(date -d yesterday +%Y-%m-%d).tar.gz

 

 

#!/bin/sh
# author:zys
backupdir=/home/backup/db/
LogFile=/home/backup/db/mysqlbak.log
mkdir -p $backupdir$(date -d yesterday +%Y)/$(date -d yesterday +%m)_$(date -d yesterday +%d)/
cd $backupdir$(date -d yesterday +%Y)/$(date -d yesterday +%m)_$(date -d yesterday +%d)
mysqldump -uroot -p123456 db_zz_shop >$(date -d yesterday +%Y-%m-%d)_db_zz_shop.sql
mysqldump -uroot -p123456 db_zz_coupon >$(date -d yesterday +%Y-%m-%d)_db_zz_coupon.sql
cd $backupdir$(date -d yesterday +%Y)
tar zcvf $backupdir$(date -d yesterday +%Y-%m-%d)_32.tar.gz $(date -d yesterday +%m)_$(date -d yesterday +%d) >> $LogFile 2>&1
rm -rf $backupdir$(date -d ‘-2 day’ +%Y)/$(date -d ‘-2 day’ +%m)_$(date -d ‘-2 day’ +%d)
cd $backupdir
scp $backupdir$(date -d yesterday +%Y-%m-%d)_32.tar.gz root@192.168.2.21:/home/backup/db/
rm -rf $backupdir$(date -d yesterday +%Y-%m-%d)_32.tar.gz

 

 

 

#!/bin/sh
# author:zys
backupdir=/home/backup/db/
LogFile=/home/backup/db/mysqlbak.log
mkdir -p $backupdir$(date -d yesterday +%Y)/$(date -d yesterday +%m)_$(date -d yesterday +%d)/
cd $backupdir$(date -d yesterday +%Y)/$(date -d yesterday +%m)_$(date -d yesterday +%d)
mysqldump -udb_zz_click -pdb_zz_clickpass -h127.0.0.1 db_zz_click >$(date -d yesterday +%Y-%m-%d)_db_zz_click.sql
mysqldump -ucouponuser -pcouponpassword -h127.0.0.1 db_zz_coupon >$(date -d yesterday +%Y-%m-%d)_db_zz_coupon.sql
mysqldump -udb_zz_hb1 -pdb_zz_hb1pass -h127.0.0.1 db_zz_hb >$(date -d yesterday +%Y-%m-%d)_db_zz_hb.sql
mysqldump -udb_zz_pro1 -pdb_zz_pro1 db_zz_pro >$(date -d yesterday +%Y-%m-%d)_db_zz_pro.sql
mysqldump -ushopuser -pshoppassword -h127.0.0.1 db_zz_shop >$(date -d yesterday +%Y-%m-%d)_db_zz_shop.sql
mysqldump -udb_zz_tiyan -pdb_zz_shop1pass -h127.0.0.1 db_zz_tiyanshop >$(date -d yesterday +%Y-%m-%d)_db_zz_tiyanshop.sql
mysqldump -udb_zz_uc920 -pdb_zz_uc920pass -h127.0.0.1 db_zz_uc >$(date -d yesterday +%Y-%m-%d)_db_zz_uc.sql
mysqldump -uyouhuidb -pyhzhezi -h127.0.0.1 db_zz_youhui >$(date -d yesterday +%Y-%m-%d)_db_zz_youhui.sql
mysqldump -uzhezibbs -p123456 -h127.0.0.1 ultrax >$(date -d yesterday +%Y-%m-%d)_ultrax.sql
cd $backupdir$(date -d yesterday +%Y)
tar zcvf $backupdir$(date -d yesterday +%Y-%m-%d)_zhezi.tar.gz $(date -d yesterday +%m)_$(date -d yesterday +%d) >> $LogFile 2>&1
rm -rf $backupdir$(date -d yesterday +%Y)/$(date -d yesterday +%m)_$(date -d yesterday +%d)
cd $backupdir
scp -P 30022 $backupdir$(date -d yesterday +%Y-%m-%d)_zhezi.tar.gz root@172.16.3.2:/home/seemaodbback
rm -rf $backupdir$(date -d yesterday +%Y-%m-%d)_zhezi.tar.gz

 

 

 

 

使用mysqldump进行备份,这个是最保险最安全的数据备份方法. 虽然使用它比mysqlhotcopy要慢些,但其导出的是sql语句文本文件,
不存在平台的兼容性问题. 也可用于备份除MYISAM类型以外的数据表.
下面给出shell脚本,大家可以根据自己的实际需要对其进行修改,以完成自己需要的功能.

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# mysql data stored dir
TODAY=`date +%y%m%d`
STOREDIR=/backup/data/$TODAY
mkdir $STOREDIR

# delete overtime backup files
rm -rf /backup/data/$(date +%y%m%d –date=’15 days ago’)

# backup mysql data file
/usr/local/mysql/bin/mysqldump mysql –opt|gzip -9>$STOREDIR/mysql.sql.tgz
/usr/local/mysql/bin/mysqldump test –opt|gzip -9>$STOREDIR/test.sql.tgz
/usr/local/mysql/bin/mysqldump bbs –opt|gzip -9>$STOREDIR/bbs.sql.tgz

上面shell脚本完成了”Mysql数据备份二”中同样的功能.

下面是对这个脚本的一些解释:
/backup/data/ 为所有数据库备份的存放目录.
STOREDIR=/backup/data/$TODAY 为今日(脚本执行的那天)数据库备份的存放目录,需要执行mkdir $STOREDIR 进行生成.
/usr/local/mysql/bin/mysqldump mysql –opt|gzip -9>$STOREDIR/mysql.sql.tgz
/usr/local/mysql/bin/mysqldump test –opt|gzip -9>$STOREDIR/test.sql.tgz
/usr/local/mysql/bin/mysqldump bbs –opt|gzip -9>$STOREDIR/bbs.sql.tgz

这三句就是对mysql,test,bbs三个数据库进行备份并压缩.使用mysqldump直接备份为sql语句文本文件.

rm -rf /backup/data/$(date +%y%m%d –date=’15 days ago’)

只保留15天内的备份数据库. 对15天之前的备份进行清除.

可以把这个脚本取为任何你想要的名字,如backup.shell,并赋予执行权限 chmod 700 backup.shell,
然后写入crontab中,如下:
30 1 * * * /root/backup.sh

让backup.sh脚本在凌晨1点半运行,对数据库进行备份.

发表评论