內(nèi)容:
1、創(chuàng)建存放備份文件的目錄
2、編寫自動備份腳本(包含自動刪除)
3、設(shè)置定時備份任務(wù)
備注:如需備份到其他主機,所有操作均在目標主機上操作
一、創(chuàng)建存放備份文件的目錄
[root@A]# mkdir /home/dbback
[root@A home]# ls
dbback
二、編寫自動備份/自動刪除shell腳本
1、 在dback目錄下新建腳本mysqlback.sh
[root@A]# vi /home/dbback/mysqlback.sh
2、編寫腳本(遠程與本地區(qū)別在于:-h '遠程主機IP')
#!/bin/bash
#數(shù)據(jù)表自動備份腳本
# Name:bakmysql.sh
# This is a ShellScript For Auto DB Backup and Delete old Backup
#備份存放路徑
backupdir=/home/dbback
#時間格式
time=` date +%Y%m%d%H `
#本地備份單個數(shù)據(jù)庫(結(jié)構(gòu)+數(shù)據(jù)):mysqldump路徑+用戶+用戶密碼+數(shù)據(jù)庫名> $存放路徑/備份包命名$時間格式
/usr/local/mysql/bin/mysqldump -u root -p密碼 --databases dbname | gzip > $backupdir/dbbackname$time.sql.gz
#備份遠程主機數(shù)據(jù)庫
#/usr/local/mysql/bin/mysqldump -h '遠程主機IP' -u root -p密碼 --databases dbname | gzip > $backupdir/dbbackname$time.sql.gz
#備份多個數(shù)據(jù)庫
#/usr/local/mysql/bin/mysqldump -u root -p密碼 --databases 數(shù)據(jù)庫1 數(shù)據(jù)庫2 | gzip > $backupdir/dbbackname$time.sql.gz
#備份所有數(shù)據(jù)庫(-A:結(jié)構(gòu)+數(shù)據(jù))(-A -d:只備份結(jié)構(gòu))
#/usr/local/mysql/bin/mysqldump -u root -p密碼 -A -d | gzip > $backupdir/dbbackname$time.sql.gz
#刪除1天前(-mtime +1)的文件
rm -rf $(find /home/dbback/ -mtime +1 -name "*.sql.gz")
3、設(shè)置腳本執(zhí)行權(quán)限
[root@A]#chmod +x /home/dbback/mysqlback.sh
執(zhí)行驗證
[root@A dbback]#./mysqlback.sh
忽視報錯,在dbback目錄下生成備份文件代表腳本運行成功
三、設(shè)置定時備份任務(wù)
1、在crontab末尾加入自動執(zhí)行腳本命令(每天03:15執(zhí)行)
[root@A]# vi /etc/crontab
命令:15 03 * * * root /home/dback/mysqlback.sh
2、 保存退出,重啟cron。
[root@A]# /etc/rc.d/init.d/crond restart
Stopping crond: [ OK ]
Starting crond: [ OK ]
3、時間設(shè)置規(guī)則
分 時 日 月 周 root/腳本路徑
M: 分鐘(0-59)。每分鐘用*或者 */1表示
H:小時(0-23)。(0表示0點)
D:天(1-31)。
m: 月(1-12)。
d: 一星期內(nèi)的天(0~6,0為星期天)。
每五分鐘執(zhí)行 */5 * * * *
每小時執(zhí)行 0 * * * *
每天執(zhí)行 0 0 * * *
每周執(zhí)行 0 0 * * 0
每月執(zhí)行 0 0 1 * *
每年執(zhí)行 0 0 1 1 *