服務器數據備份(shell 定時腳本備份mysql)

Mysql備份策略大概可分爲4種:

1) 直接拷貝數據庫文件(不推薦)mysql

2) 使用mysqlhotcopy備份數據庫sql

3) 使用mysqldump備份數據庫shell

4) 使用主從複製機制(replication)(實現數據庫實時備份)數據庫

通常mysqldump使用比較普遍,操做也方便,下面就具體描述mysqldump備份策略。bash

數據備份分爲三步:

1) 定時導出備份數據庫並打包成gz壓縮包 (Linux shell 腳本 + crontab)服務器

mysqlFullBackup.shui

複製代碼
# !/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! " >> $eMailFile else 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)this

或從服務器上備份數據庫到ftp 服務器 (Linux shell 腳本 + crontab)spa

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表示星期日)

相關文章
相關標籤/搜索