MySQL資料庫全庫備份及增量備份指令碼

2021-10-02 04:33:52 字數 2556 閱讀 3877

#!/bin/bash

############### 定義預設值 #################

user='root'

passwd='123.com'

host='localhost'

today=`date '+%f'`

dump_cmd='/usr/local/mysql/bin/mysqldump'

full_backupdir="/opt/database/full_backup/"

email='[email protected]'

################### 載入變數並定義指令碼用法 ###################

usage()

if [[ $1 == '--help' || $1 == '-h' ]];then

usage

exit 0

fi###################### 對選項進行賦值 ###################

while getopts ":u:p:h:d:" optname;do

case "$optname" in

"u")

user=$optarg

;; "p")

passwd=$optarg

;;"h")

host=$optarg

;;"d")

db=$optarg

;; ":")

echo "此選項沒有值!"

;;"*")

echo "錯誤資訊..."

;;"?")

echo "不知道此選項..."

;;esac

done

############# 對要備份的庫進行判斷並執行備份操作 ###############

[ -d $ ] || mkdir -p $

cd $

: > err.log

if [ $ -eq 0 ];then

$ -u$ -p$ -h$ -a -f > $.sql 2> err.log

status=$?

sqlname="$.sql"

else

$ -u$ -p$ -h$ --databases $db -f > $.$.sql 2> err.log

status=$?

sqlname="$.$.sql"

fi############ 對備份狀態進行判斷 #####################

if [ $ -eq 0 ];then

tar zcf $.tar.gz ./$

rm -f $

########### 如果失敗,則傳送報警郵件到指定郵箱 ################

else

echo "備份資料庫失敗,錯誤日誌如上所示!!!" >> err.log

mail -s "mysql backup" $email < err.log

fi############ 刪除二十天前的備份檔案 ##############

find . -type f -name "*.tar.gz" -mtime +20 -delete

#!/bin/bash

####################### 定義初始值 #############################

user='root'

passwd='123.com'

datadir="/usr/local/mysql/data"

backupdir="/opt/database/dailybackup/"

dump_cmd='/usr/local/mysql/bin/mysqlbinlog'

[ -d $ ] || mkdir -p $ #判斷備份檔案存放路徑是否存在

cd $ #切換至mysql的資料存放路徑

sum=`cat bin_log.index | wc -l` #取得所有二進位制日誌檔案總數

/usr/local/mysql/bin/mysql -u$ -p$ -e "flush logs" &> /dev/null #在備份前重新整理二進位制日誌檔案

nextnum=0 #定義乙個初始值為0

backupsum=0

for file in `cat bin_log.index` #對所有二進位制日誌檔案進行遍歷

do binlogname=`basename $file` #獲取二進位制日誌檔名

#如果當前備份的檔案數目比總數小(新重新整理的二進位制檔案不需要備份)

if [ $nextnum -lt $sum ];then

[ -f $$ ] || cp -a $ $$ #如果備份目錄下不存在該二進位制檔案,則進行copy動作

let nextnum++ #對備份成功數量進行增加

fidone

echo "跳過最新二進位制日誌檔案,備份完成!!!"

Mysql 資料庫增量備份

mysql 的二進位制日誌檔案中,儲存了所有對資料庫進行更改的sql語句,所以增量備份就是 先把mysql資料庫進行完全備份,然後儲存完全備份以後產生的日誌檔案,等下次完全備份時,重複以上過程.具體操作 在my.ini中新增如下資訊 log bin 二進位制日誌檔名 新增了這條配置資訊以後,重啟my...

mysql增量 mysql資料庫增量恢復

mysqldump uroot p b discuzx f x master data 2 events gzip root discuzx.sql.gz 寫入資料 刪除資料 第一時間關閉資料庫對外讀寫功能,並進入資料執行重新整理mysqlbinlog的位置點,新生成檔案 flush logs 根據...

Mysql資料庫的增量備份與還原

mysql資料庫的增量備份與還原一 備份的目的 做災難恢復 對損壞的資料進行恢復和還原。二 備份需要考慮的問題 可以接受丟失多少資料 恢復資料的時間要多久 恢復資料時是否持續提供服務 恢復的物件,是乙個庫,多個表,單個表,還是整個資料庫。三 備份的型別 1,完全備份 每次對資料庫的資料進行完全備份,...