日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql decode语句_mysql数据灾难恢复方案

發布時間:2025/4/17 数据库 81 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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数据灾难恢复方案的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。