一. 指令碼須知
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資...