mysql decode语句_mysql数据灾难恢复方案
生活随笔
收集整理的這篇文章主要介紹了
mysql decode语句_mysql数据灾难恢复方案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數據庫備份:將數據庫中存在的現有數據,進行存放成為副本數據,可以解決數據容災,提高系統的高可用性和災難恢復性,數據崩潰時,以最小代價重新恢復數據。數據備份的分類: 增量備份之前需要查看配置文件,是否開啟log_bin。進行mysql命令終端使用命令查看修改配置文件,查看配置文件位置my.cnf添加如下配置? ? ??系統變量binlog_format 指定二進制日志的類型。分別有statement、row、mined三種值。mysql5.7.6之前默認為statement模式。MySQL 5.7.7之后默認為row模式。這個參數主要影響主從復制。復制的模式有下面幾種:基于SQL語句的復制(statement-based replication, SBR),基于行的復制(row-based replication, RBR),混合模式復制(mixed-based replication, mbr)。重啟mysql服務器,在命令終端查看查看二進制日志文件的狀態
物理備份:指對數據庫操作系統的物理文件(數據文件、日志文件)等的備份;
冷備份:必須在數據庫關閉的狀態下進行備份,能夠更好的保證數據庫的完整性;
熱備份:能夠在數據庫處于正常運行的情況下備份,能夠更高的保證服務的可用性;
邏輯備份:指對數據庫的邏輯組件(數據庫、表、數據對象)進行備份;
完全備份:將數據進行完整的備份,包含完整的庫、表、索引、視圖等,需要花費更長的時間
差異備份:備份自上次完全備份到現在發生改變的數據庫內容,備份的文件比完整備份的文件小,備份的速度更快;
增量備份:備份至上次完全備份或增量備份后被修改的數據庫內容
查看某個二進制日志文件的變化
show?binlog?events?in?"mysql_binlog.000002";故障恢復
全量數據恢復source /home/mysql/xxx.sql增量數據部分恢復?mysqlbinlog?--start-position=1?--stop-position=795?/home/mysql/mysql_binlog.000002?|mysql?-uroot?-p密碼?增量數據全部恢復??mysqlbinlog?/home/mysql/mysql_binlog.000001?|mysql?-uroot?-p密碼??查看二進制的內容??mysqlbinlog?--no-defaults?--base64-output=decode-rows?-v?mysql_binlog.000002新增用戶賦予權限用來用備份(這部可以忽略)
腳本代碼 增量保留,并且刪除一個月之前的binlog文件
backupDir=/home/mysql/binlogBinDir=/var/lib/mysqlLogFile=/home/mysql/log/binlog.logBinFile=/var/lib/mysql/mysql_binlog.indexmysqladmin -uroot -p123456 flush-logs#讀取mysql_binlog.index 文件Counter=`wc -l $BinFile |awk '{print $1}'`NextNum=0#這個for循環用于比對$Counter,$NextNum這兩個值來確定文件是不是存在或最新的。for file in `cat $BinFile`do base=`basename $file` #basename用于截取mysql-bin.00000*文件名,去掉./mysql-bin.000005前面的./ NextNum=`expr $NextNum + 1` if [ $NextNum -eq $Counter ] then echo $base skip! >> $LogFile else dest=$backupDir/$base if(test -e $dest) #test -e用于檢測目標文件是否存在,存在就寫exist!到$LogFile去。 then echo $base exist! >> $LogFile else mv $BinDir/$base $backupDir echo $base copying >> $LogFile fi fidoneecho `date +"%Y年%m月%d日 %H:%M:%S"` Backup success! >> $LogFileecho "delet a mothon ago log data";#1個月清空一次log文件find /home/mysql/binlog/ -mtime +30 -name "*.log*" -exec rm -rf {} \;echo "delete success";腳本代碼 全量保存 一個月刪除一次
#!/bin/bash#需要備份的數據庫dbNames=(db1?db2?db3?db4)Date=$(date --date="now" +%Y%m%d)ODate=$(date --date="-1 month" +%Y%m%d)newDir=/home/mysql/data/$Date#需要刪除的目錄oldDir=/home/mysql/data/$ODate#數據庫密碼password=123456#刪除過期備份數據if [ -d $oldDir ]then echo "當前的路徑為"$oldDir #rm -rf $oldDirfi#創建新備份文件加,如果創建不會重新創建if [ ! -d $newDir ]then mkdir $newDirfi#對需要備份的數據庫進行備份for dbname in ${dbNames[*]}do dumpFile=$dbname-$Date.sql.gz mysqldump -uroot -p$password $dbname | gzip > $newDir/$dumpFiledoneecho "succ";生成環境數據備份策略
在數據庫壓力小的時段繼續全量備份,根據自已公司的業務情況,設置某個時間端進行全量備份
數據更新頻繁且比較重要,可以選擇增量備份,記住定期刪除日志文件
我采取的備份方案:
每周末進行一次全量備份,每天進行一次增量備份,如果發生故障可以先進行全量恢復,再根據mysqlbinlog命令根據posititon值或者時間點進行恢復。具體操作根據實際情況調整。編輯任務 contab -e
重啟crontab加載配置 service crond reload 就能開啟定時任務備份
至此mysql如何進行備份實戰就至此結束了,覺得我的文章有用的就分享給身邊的小伙伴。
總結
以上是生活随笔為你收集整理的mysql decode语句_mysql数据灾难恢复方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 修理机器人基维斯_魔兽世界修理机器人沃尔
- 下一篇: igmpproxy_Linux IGMP