mysql自动备份维护shell脚本 (copy)
#!/bin/bash #Mysql 自动备份 压缩并上传到 指定ftp #设想每天凌晨3点备份mysql #编辑crontab配置文件 #00 03 * * * backupmysql.sh #压缩并以“服务器名+时间 ”命名打包文件 #数据量小的情况下以mail的方式发送到指定邮箱(需要建立sendmail服务) #数据量大的情况下以ftp的方式传送到指定的ftp服务器(远程ftp需开启) #linzhanghui.blog.chinaunix.net #程序部分以伪代码方式存在。 # #1.设置mysql登陆参数 dbuser=root dbpassword=123456 dbserver=localhost dbname=cacti dbopt=--opt backupdir=/tmp/dbbackup/ #2.设置ftp具体参数 ftpserver=192.168.137.3 ftpuser=userlin ftppassword=passwdlin #3.设置文件备份文件名,备份文件保存天数 fileprefix=lzhserver dumpfilename=$backupdir$fileprefix`date -d now +%Y%m%d`.sql newfile=$fileprefix-`date -d now +%Y%m%d`.tar.gz keepdays=7 #4.写入操作到日志文件(事先需建立) logfile=/var/log/mysqlbackup.log logtmp=/var/log/mybackup.tmp #=====如果没有备份文件夹则建立之====== if [ ! -d "$backupdir" ]; then echo "无此文件夹,建立中..." mkdir -p $backupdir fi #=====事先删除7天之前的备份数据库文件===== echo "开始执行备份...">>$logfile echo "删除保留天数之前的备份文件...">>$logfile find $backupdir -name $fileprefix* -mtime +$keepdays -fls $logtmp -exec rm {}; echo "删除的备份文件:">>$logfile cat $logtmp >>$logfile echo "删除旧备份文件成功!" >>$logfile #=====备份+打包====== if [ -f $backupdir$newfile ] then echo "$newfile 备份文件存在, 备份结束 ...">>$logfile else if [ -z $dbpasswd ] then mysqldump -u$dbuser -h$dbserver $dbopt $dbname >$dumpfilename else mysqldump -u$dbuser -p$dbpasswd -h$dbserver $dbopt $dbname >$dumpfilename fi tar czvf $backupdir$newfile $dumpfilename echo "$backupdir$newfile 备份成功!+“$压缩包容量”">>$logfile fi #======以ftp方式发送===== ftp -i -n <<end_ftp open $ftpserver user $ftpuser $ftppassword lcd $backupdir hash prompt put $newfile close bye end_ftp
如果直接使用文件夹复制的方式备份mysql数据库
1、先查一下DATADIR
mysql> show variables like '%datadir%';
2、关闲数据库
# mysqladmin shutdown
3、复制数据库文件
cp -Rf $datadir /xxx
$datadir:就是你的数据目录
另外测试过把.sql压缩成.sql.tar.gz
数据库文件可以少很多很多空间