您好,登錄后才能下訂單哦!
簡介-邱月濤
公司新項目上線,今天建立全網備份,現在這記錄的是mysql部分
備份方式:全備+binlog
備份地點:本地+異地
備份時間:每日0點,切割binlog日志
1,環境介紹:
[root@jm1j-node1 scripts]# cat /etc/redhat-release
CentOS release 6.8 (Final)
[root@jm1j-node1 scripts]# mysql -V
mysql Ver 14.14 Distrib 5.6.35, for linux-glibc2.5 (x86_64) using EditLine wrapper
2,規范腳本存放目錄
mkdir -p /server/scripts
3,編寫腳本內容如下
#!/bin/bash
#---------------------------------------------------------
# $Name: mysqlbackup.sh
# $Version: v1.0
# $Author: qiuyuetao
# $organization: https://blog.51cto.com/qiuyt
# $Create Date: 2017-12-13
# $Description: Mysql backup script
#---------------------------------------------------------
#source /etc/init.d/functions
DAY=`date +%Y-%m-%d\-%H-%M`
BACK_DIR="/data/backup/mysql/dump"
DBUSER="root" #數據用戶
DBPASSWD="***數據庫密碼"
BIN_PATH="/application/mysql/bin" #全局變量,可以使用which獲取
LOG="/var/log/mysqlback.log" #備份日志
CKLOG="/var/log/bkmd5-"$DAY".log" #md5加密日志,后期發送郵件
## Close all tables and refresh log ####
"$BIN_PATH"/mysql -u "$DBUSER" -p"$DBPASSWD" -e "flush logs"
#"$BIN_PATH"/mysql -u "$DBUSER" -p"$DBPASSWD" -e "flush tables with read lock"
echo "mysqldump start `date +%F\ %H\:%M\:%S`" >> "$LOG"
## Each backup database to the target location ####
for i in `"$BIN_PATH"/mysql -u "$DBUSER" -p"$DBPASSWD" -e "show databases" |grep -vE "Database|information_schema|performance_schema"`
do
if [ ! -d "$BACK_DIR"/"$i" ]; then
mkdir -p "$BACK_DIR"/"$i"
fi
"$BIN_PATH"/mysqldump -u "$DBUSER" -p"$DBPASSWD" --default-character-set=utf8 --events --master-data=2 --lock-all-tables -f --log-error="$LOG" -B "$i"|gzip > "$BACK_DIR"/"$i"/"$DAY".sql.gz
md5sum "$BACK_DIR"/"$i"/"$(date +%F --date='0 days ago')"-*.sql.gz >>$CKLOG
done
echo "mysqldump stop `date +%F\ %H\:%M\:%S`" >> "$LOG"
echo "" >>"$LOG"
## Delete old 10day backup files 保留最近10天的數據####
for RM in `"$BIN_PATH"/mysql -u "$DBUSER" -p"$DBPASSWD" -e "show databases" |grep -vE "Database|information_schema|performance_schema"`
do
rm -rf "$BACK_DIR"/"$RM"/$(date +%F --date='10 days ago')*.sql.gz
done
echo 生產數據庫備份完整性MD5初始值 |mail -s 備份校驗 -a "$CKLOG" qiuyt@*****.com ##自己的郵箱
4,添加執行權限
[root@jm1j-node1 scripts]# chmod +x mysqlbackup.sh `
5,在命令行手動測試
查看備份結果,
#如果沒有發送郵件,請檢查服務是否安裝,啟動,25端口是否啟用等等,然后手動發送郵件測試
6,配置郵箱
1)查看是否安裝mailx
[root@jm1j-node1 scripts]# rpm -qa|grep mailx
mailx-12.4-8.el6_6.x86_64
2)修改mail配置
[root@yilonghc-m01 ~]# tail /etc/mail.rc ##t添加如下內容
set bsdcompat
set from=outlokk@163.com
set smtp=smtp.163.com
set smtp-auth-user=*****@163.com #自己的郵箱
set smtp-auth-password=***** ##授權碼
set smtp-auth=login
6,定時備份 (正常可以加入crontab定時任務,每天0點執行)
上面沒有找到,下面命令安裝
yum install -y vixie-cron
添加定時任務
crontab -e
#mysqlbackup by qyt at 2017-12-13
00 00 * * * /bin/sh /server/scripts/mysqlbackup.sh >/dev/null 2>&1
##異地備份,有多重方式,為了減少服務器壓力,我使用rsync 客戶端拉取方式
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。