好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > MySQL使用binlog日志做數據恢復的實現

MySQL使用binlog日志做數據恢復的實現

熱門標簽:電話外呼系統改號 武漢網絡外呼系統服務商 外呼系統打電話上限是多少 怎樣在地圖標注銷售區域 啥是企業400電話辦理 百應電話機器人優勢 地圖標注費用是多少 南昌三維地圖標注 曲靖移動外呼系統公司

MySQL的binlog日志是MySQL日志中非常重要的一種日志,記錄了數據庫所有的DML操作。通過binlog日志我們可以進行數據庫的讀寫分離、數據增量備份以及服務器宕機時的數據恢復。

定期備份固然可以在服務器發生宕機的時候快速的恢復數據,但傳統的全量備份不可能做到實時,所以在發生宕機的時候,也會損傷一部分數據,如果這個時候開啟了binlog日志,那么可以通過binlog來對沒有做備份的這一階段損失的數據進行恢復。如果了解Redis的朋友,可能想到了,Redis有兩種持久化方式,分別是AOF和RDB。RDB就類似于MySQL的全量復制,AOF就類似于MySQL的binlog。

關于數據的恢復這里在說一點,既然binlog這么好,是不是開啟了binlog就不需要定期做備份了呢,不要這樣做。為什么呢,因為binlog的數據量非常大,另外就是使用binlog做數據的恢復性能會非常低。因為binlog是對操作的記錄,比如某一時刻,我先插入了一條數據,然后將這條數據刪除了,本身數據是沒了,但有兩條操作。如果是全量備份,肯定沒有這條數據,如果使用binlog需要執行一條插入和一條刪除操作,因此性能和文件大小都是比較大的。

啰嗦了一堆,下面說關于數據恢復的問題:

在正式開始之前,先來說一說mysql完整備份數據庫,以及恢復數據庫的方法

備份數據庫:

首先我們來創建一個數據庫,mytest

create database mytest;

接著我們來創建一張表

use mytest;
create table t1(id int ,name varchar(20));

然后我們插入兩條數據

insert into t1 values (1,'xiaoming');
insert into t1 values (2,'xiaohong');

下面我們對mytest數據庫進行備份,備份到/root/bakup/

mysqldump -uroot -p -B -F -R -x --master-data=2 mytest | gzip > /root/backup/bak_$(date +%F).sql.gz

參數說明:

-B:指定數據庫

-F:刷新日志

-R:備份存儲過程等

-x:鎖表

--master-data:在備份語句里添加CHANGE MASTER語句以及binlog文件及位置點信息

查看備份文件

這樣呢,我們就把數據做了一個完整的備份。下面來刪除數據庫,然后通過備份數據進行恢復數據庫。

gzip -d bakup_xxx.gz
mysql -uroot -p  bakup_xxx.sql

這樣我們就把數據導入到庫里了。

繼續上面的操做,我們新增xiaoli和xiaozhao這兩條數據,并把xiaozhao這條記錄刪除掉。

在刪除之前,我們先來刷新binlog日志,生成一個新的日志,那么我們之后所要操做的內容都會被記錄到新的日志文件中。(通過前面binlog日志的詳細說明我們知道,每次刷新和服務重啟的時候,都會生成一個binlog日志文件。)

flush logs;
show master status;

我們注意,binlog的文件是0009,位置是在154,這兩個信息很重要

下面我們來做插入和刪除操作


這個時候我們應該是來查看一下binlog日志的狀態,以便與我們一會來進行恢復到此狀態,但是,真正的環境中我們并不知道這個狀態,因此這里也就不去查看這個狀態了,這個狀態的值可以通過后面查看binlog日志文件來進行分析。下面我們開始誤操作:

我們來把xiaozhao刪除掉

這樣數據就刪除掉了,下面我們再來查看binlog的狀態

show master status;

這個時候我們發現我刪除操作是個錯誤的操作,要進行恢復,那么該如何恢復呢?這個時候我們就可以通過binlog的position來進行恢復。
在進行其他的處理之前,我們建議,馬上再執行一次flush logs,也就是讓出錯的部分就集中在這么一個binlog日志文件中。

我們來查看0009的binlog日志。

我們看到delete_rows 結束點是928這個點,起始點是在755這個點,我們可以把操作的這些數據刪除到我們上次備份的內容,然后通過執行binlog來進行恢復,當然恢復到755這個點之前。
比如我上次備份的是整個數據庫,我就可以把整個數據庫刪除,然后通過備份文件恢復,然后再通過binlog做增量恢復。這樣數據就回來了。這里就不再進行刪庫了,我們直接演示使用binlog日志恢復數據的方法

語法如下

mysqlbinlog mysql-bin.0000xx | mysql -u用戶名 -p密碼 數據庫名

比如我們要把所有的操作都恢復(不包括我們的刪除,我們知道刪除是在755點上):

mysqlbinlog mysql-bin.000009 --start-position 154 --stop-position 755 | mysql -uroot -p mytest

再來查看表

我們發現xiaozhao又回來了,當然了,這里多了一個xiali,是因為我之前并沒有刪除備份前的數據。當然了,我們在恢復的過程中可以選擇只恢復xiaozhao這么一塊內容

下面是binlog日志恢復中一些常用的參數 

--start-datetime:從二進制日志中讀取指定等于時間戳或者晚于本地計算機的時間

--stop-datetime:從二進制日志中讀取指定小于時間戳或者等于本地計算機的時間 取值和上述一樣

--start-position:從二進制日志中讀取指定position 事件位置作為開始。

--stop-position:從二進制日志中讀取指定position 事件位置作為事件截至

到此這篇關于MySQL使用binlog日志做數據恢復的實現的文章就介紹到這了,更多相關MySQL binlog數據恢復內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • MySQL數據庫恢復(使用mysqlbinlog命令)
  • MySQL中的binlog相關命令和恢復技巧
  • Mysql的Binlog數據恢復:不小心刪除數據庫詳解
  • mysql如何利用binlog進行數據恢復詳解
  • 教你自動恢復MySQL數據庫的日志文件(binlog)
  • Linux上通過binlog文件恢復mysql數據庫詳細步驟
  • 解說mysql之binlog日志以及利用binlog日志恢復數據的方法
  • MySQL使用mysqldump+binlog完整恢復被刪除的數據庫原理解析
  • mysql5.7使用binlog 恢復數據的方法
  • 如何利用MySQL的binlog恢復誤刪數據庫詳解

標簽:荊州 隨州 錦州 甘南 吉林 資陽 滄州 黑河

巨人網絡通訊聲明:本文標題《MySQL使用binlog日志做數據恢復的實現》,本文關鍵詞  MySQL,使用,binlog,日志,做,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MySQL使用binlog日志做數據恢復的實現》相關的同類信息!
  • 本頁收集關于MySQL使用binlog日志做數據恢復的實現的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 国产高颜值大学生酒店| 舌头伸进去添的我好爽| 别揉我胸?啊?嗯高潮的电视剧| 国产igao视频网在线观看hd| 国产精品亚洲AV天堂熟女一级 | 国产真实91东北熟妇HDXXX| 国产精品嫩草影院入口介绍| 91桃色软件特点| 精品视频一区二区三三区四区 | 韩国理伦ok电影天堂影院| 国产20页| 男人扯开奶罩揉吮乳房一会就硬了| 九九无码精码AAAAA片| 操翻了| 老头456gay同性tv| 国产精品探花一区二区2022| 啊啊啊啊啊啊不要了| 打女仆屁股小游戏下载| 美女的裸体秘?照片| 《熟妇的荡欲》未删减电影| **欧美日韩在线人| 男人j进女人p的视频| 风流村妇玩个够| 国产极品嫩模在线观看91精品| 欲性游乐场(双性高H)小说| 日本3d动漫在线免费看| Freepeople性欧美69| 男生操男生小说| 两男一女3p双龙h调教h| 激情网婷婷| 欧美另类z0z免费观看| 69午夜影院| 开着车有肉的小说| 日本黄色片www| 迈开腿让我尝一下你的味道一| 一二三四在线播放免费| 国产剧情AV麻花传媒33d| 亚裔大战黑人老外AV3p| 日本免费久久久久久久网站| 天天搡天天狠天干天啪啪| 一区三区在线观看|