MySQL完全備份指令碼 資料 二進位制日誌 備份日誌

2022-03-11 20:17:49 字數 3296 閱讀 2177

一. 指令碼須知

1.mysql資料檔案和二進位制日誌檔案最好儲存在不同的分割槽或儲存裝置上

2.備份完成後注意修改資料的許可權以防止洩露重要資訊,哪些主機哪些使用者可以用來恢復

3. 檢視匯出的2進製日誌檔案看是否符合邏輯和業務,2進製日誌檔案只能保證物理上資料即時點還原,卻保證不了資料邏輯上正確恢復(比如drop語句)

4.為了保證資料恢復沒有問題建議在測試機上做一次資料恢復測試

5.恢復測試ok可以放到crontab定時任務中

1

#!/bin/bash2#

3# function:實現mysql完全備份

4# notes:56

# 定義備份使用到的相關變數(需要根據使用者實際環境做相應的修改)

7backup_data=/backup/mysql/full

8backup_binlog=/backup/mysql/logbin

9mysql_binlog=/mydata/log-bin

10mysql_bin_path=`ps -ef | grep -e "mysqld[[:space:]]+" | awk -f ' ' '' | sed -r 's@[^/]+/?$@@'`

11mysql_user=root

12mysql_password=mysqldba

13logfile=/var/log/mysqldump.log

1415

# 函式定義

1617

########################[mysql健康檢測]######################

18health_check() '`

21echo "$(date +"%y-%m-%d %h:%m:%s") $mysqld_pid [note] server mysql is running ..." >> $logfile

22else

23service mysqld start &> /dev/null || echo "$(date +"%y-%m-%d %h:%m:%s") [warning] server mysql is not running, backup failed" >> $logfile && return 5

24fi25}

2627

#######################[mysqldump完全備份]###################

28full_backup()mysqldump -u$mysql_user -p$mysql_password --all-databases --lock-all-tables --flush-logs --master-data=2 \

32--triggers --routines --events --set-gtid-purged=off -r $/$backup_name &> /dev/null

33if grep -q "change master to" $/$backup_name ;then

34return 0

35else

36return 5

37fi38}

3940

########################[mysql 二進位制日誌備份]#####################

41bin_backup()

4748

# 主函式main

4950

health_check

51if [ $? -eq 0 ];then

52echo "$(date +"%y-%m-%d %h:%m:%s") [note] mysql full backup start ..." >> $logfile

53else

54echo "$(date +"%y-%m-%d %h:%m:%s") [warning] server mysql is not running, backup failed" | mail -s "mysql backup is failed" root@`hostname`

55fi

56full_backup

57if [ $? -eq 0 ];then

58echo "$(date +"%y-%m-%d %h:%m:%s") [note] mysql full backup is finished" >> $logfile

59chmod -r 600 $backup_data

60else

61echo "$(date +"%y-%m-%d %h:%m:%s") [warning] function full_backup() execution failed, backup was interrupted" | cat | tee -a $logfile | mail -s "mysql backup is failed" root@`hostname`

62fi

63echo "$(date +"%y-%m-%d %h:%m:%s") [note] mysql binary log file backup is started ..." >> $logfile

64bin_backup

65if [ $? -eq 0 ];then

66echo "$(date +"%y-%m-%d %h:%m:%s") [note] mysql binary log file backup is finished " >> $logfile

67chmod -r 600 $backup_binlog

68else

69echo "$(date +"%y-%m-%d %h:%m:%s") [warning] mysql binary log file backup is not completed" | cat | tee -a $logfile | mail -s "mysql binary log backup failed" root@`hostname`

70 fi

二.例項效果圖

指令碼執行完檢視備份資料和日誌

指令碼執行過程跟蹤

加入crontab任務

mysql完全備份,增量備份及恢復指令碼

剛進入公司時,領導分配的實驗任務,這是我寫的第乙個比較完整和滿意的mysql全備,増備及恢復指令碼,歡迎指點!如下!bin bash full increment backup and recover 說明 事先要確保存在 data bak目錄,且要保證在執行增量備份時已做過至少一次全量備份,否則找...

mysql儲存二進位制 mysql 儲存二進位制資料

晚上小研究了下mysql儲存於讀取二進位制資料的功能。關鍵步驟為以下三點 最重要的一點 儲存二進位制資料的表的型別需要是blob型別 按長度不同分為tiny,media,long 插入二進位制資料時需要利用mysql real escape string函式對資料進行轉換 從資料庫中讀取二進位制資料...

mysql 二進位製流 用mysql儲存二進位制資料流

用mysql儲存二進位制資料流,閱讀用mysql儲存二進位制資料流,近日一專案遇到需要在db中儲存2進製資料流型別檔案的問題,發現常用的mysql api都用不了,再研究,方知有一套專門的api來幹這種資料,功能相當強大的說。以下即為範例 按照說明編譯即可用,稍加修改即可儲存2進製檔案 mysql資...