服务器数据备份(shell 定时脚本备份mysql)

本文详细介绍了Mysql的四种备份策略:直接拷贝数据库文件、使用mysqlhotcopy、使用mysqldump以及利用主从复制机制。重点阐述了mysqldump备份策略,并提供了具体的Linux shell脚本和crontab配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mysql备份策略大概可分为4种:

1) 直接拷贝数据库文件(不推荐)

2) 使用mysqlhotcopy备份数据库

3) 使用mysqldump备份数据库

4) 使用主从复制机制(replication)(实现数据库实时备份)

一般mysqldump使用比较广泛,操作也方便,下面就具体描述mysqldump备份策略。

数据备份分为三步:

1) 定时导出备份数据库并打包成gz压缩包 (Linux shell 脚本 + crontab)

mysqlFullBackup.sh

复制代码
#!/bin/sh
# Use mysqldump --help get more detail.
# # 定义变量,请根据具体情况修改 # 定义脚本目录
scriptsDir=`pwd`
# 定义用于备份数据库的用户名和密码user=root userPWD=123456
# 定义备份数据库名称dbNames=(database1 database2 database3)
# 定义备份目录dataBackupDir=/home/zhanghuihua/backup
# 定义邮件正文文件eMailFile=$dataBackupDir/log/email.txt
# 定义邮件地址eMail=Huihua.Zhang@quidos.co.uk
# 定义备份日志文件logFile=$dataBackupDir/log/mysqlbackup.log
# DATE=`date -I`DATE=`date -d "now"+%Y%m%d`
echo `date
-d "now""+%Y-%m-%d %H:%M:%S"` >$eMailFile
for dbName in ${dbNames[*]} do# 定义备份文件名 dumpFile=$dataBackupDir/db/$dbName-$DATE.sql.gz
# 使用mysqldump备份数据库,请根据具体情况设置参数 mysqldump -u$user-p$userPWD$dbName| gzip >$dumpFile done
if [[ $?==0 ]]; then echo "DataBase Backup Success!">>$eMailFileelse echo "DataBase Backup Fail!">>$emailFile fi
# 写日志文件echo "================================">>$logFile cat $eMailFile>>$logFile echo $dumpFile>>$logFile
# 发送邮件通知 #cat $eMailFile | mail -s "MySQL Backup" $eMail
复制代码

2) 通过ftp 服务定时下载到本地 (Linux shell 脚本 + crontab)

或从服务器上备份数据库到ftp 服务器 (Linux shell 脚本 + crontab)

ftpDownload.sh

复制代码
#!/bin/bash # 定义变量DATE=`date -d "now"+%m%d%y`
ftpServer
=192.168.1.103 ftpUser=zhanghuihua ftpPasswd=123456
remoteDir
=/backup/db localDir=/home/zhanghuihua/backup
#开始ftp操作/usr/bin/ftp -niv <<!open$ftpServer user $ftpUser$ftpPasswd binary cd $remoteDir lcd $localDir
mget database1
-$DATE.sql.gz mget database2-$DATE.sql.gz mget database3-$DATE.sql.gz bye !
复制代码

dbPutToFtp.sh

复制代码
#!/bin/bash # 定义变量DATE=`date -d "now"+%Y%m%d`
ftpServer
=192.168.1.103 ftpUser=zhanghuihua ftpPasswd=123456
remoteDir
=/backup/db localDir=/home/zhanghuihua/backup/db
#开始ftp操作/usr/bin/ftp -niv <<!open$ftpServer user $ftpUser$ftpPasswd binary cd $remoteDir lcd $localDir
mput database1
-$DATE.sql.gz mput database2-$DATE.sql.gz mput database3-$DATE.sql.gz
bye
!
复制代码

3) 定期刻录光盘 (人工操作)

3) 定期刻录光盘 (人工操作)

Crontab 定时任务管理

crontab -e

01 03 * * * /var/proftpd_data/backup/bin/mysqlFullBackup.sh

10 04 * * * /var/proftpd_data/backup/bin/ftpDownload.sh

前五个字段的整数取值范围及意义是:

0~59 表示分

1~23 表示小时

1~31 表示日

1~12 表示月份

0~6 表示星期(其中0表示星期日)

转载于:https://www.cnblogs.com/j-ui/p/3219561.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值