最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySql恢復(fù)數(shù)據(jù)方法梳理講解

 更新時(shí)間:2022年08月01日 09:20:20   作者:drhrht  
MySQL的binlog日志是MySQL日志中非常重要的一種日志,下面這篇文章主要給大家介紹了關(guān)于mysql如何利用binlog進(jìn)行數(shù)據(jù)恢復(fù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

一、前言

mysql具有binlog功能,可以記錄對(duì)表進(jìn)行過的操作、執(zhí)行過的sql語句;

以下主要是總結(jié)下binlog的開啟方法、使用方法等;

如果誤刪數(shù)據(jù)庫表中的某些數(shù)據(jù)、或者誤刪整個(gè)表、誤修改表結(jié)構(gòu)等,就可以使用這個(gè)方法進(jìn)行恢復(fù)。

二、步驟

1.如果想使用MySql數(shù)據(jù)恢復(fù)功能,首先需要修改Mysql配置文件,開啟binlog功能。(有些版本binlog默認(rèn)是不開啟的,因此需要手動(dòng)修改配置文件開啟)

(1)windows環(huán)境

配置文件名稱為my.ini,可以安裝軟件everything搜索這個(gè)文件。路徑樣例如下:

C:ProgramDataMySQLMySQL Server 5.7my.ini

(2)linux環(huán)境

配置文件名稱為my.cnf,可以使用find命令搜索文件所在位置:

sudo find / -name my.cnf

位置樣例如下:

/etc/my.cnf

2.找到配置文件后(my.ini/my.cnf),新增以下配置即可(當(dāng)然先看看配置文件是否已配置了這行,不要重復(fù)了):

log-bin=mysqlbinlog
binlog-format=ROW

或者也可以指定binlog的位置(下方是linux下的路徑):

log-bin=/data/mysql/log/mysqlbinlog
binlog-format=ROW

注意,指定binlog在某個(gè)文件夾下時(shí),必須自己創(chuàng)建文件夾,否則重啟mysql會(huì)報(bào)錯(cuò)。

3.配置完成后,重啟mysql。

4.現(xiàn)在,對(duì)mysql的數(shù)據(jù)庫、表、數(shù)據(jù)等操作、執(zhí)行增刪改sql,都會(huì)記錄到binlog中。(搜索mysqlbinlog就可以找到這個(gè)日志文件)

5.進(jìn)行測(cè)試,新建一個(gè)表binlog_test,列隨意,然后寫幾行數(shù)據(jù),然后清空表數(shù)據(jù)。(準(zhǔn)備使用binlog還原數(shù)據(jù))

6.查看binlog的命令如下:

mysql> show binlog events;   #只查看第一個(gè)binlog文件的內(nèi)容
mysql> show binlog events in 'mysqlbinlog.000002';#查看指定binlog文件的內(nèi)容
mysql> show binary logs;  #獲取binlog文件列表
mysql> show master status; #查看當(dāng)前正在寫入的binlog文件

7.首先看當(dāng)前使用的是哪個(gè)binlog:

show master status;

本人執(zhí)行后,發(fā)現(xiàn)當(dāng)前使用的binlog是:mysqlbinlog.000004

8.然后查看這個(gè)binlog的內(nèi)容:

show binlog events in 'mysqlbinlog.000004';

執(zhí)行后,可以從查詢結(jié)果的Info列中,找到剛才創(chuàng)建binlog_test表的sql(對(duì)應(yīng)的Event_typeQuery);

可以看到剛才清空表數(shù)據(jù)的記錄行,Event_typeDelete_rows;

在上一些,可以看到創(chuàng)建表后、新增數(shù)據(jù)的Event_typeWrite_rows;

9.分析這個(gè)binlog,我們的目標(biāo)是還原剛才被刪除的數(shù)據(jù),因此找到create table語句后的第一個(gè)Event_typeQuery的行,它的Pos460

再找到Event_typeDelete_rows上面最接近的、Info中是COMMIT的行,它的Event_typeXid,End_log_pos1199

(每一行的End_log_pos對(duì)應(yīng)下一行的Pos)

10.現(xiàn)在找到了一個(gè)范圍,從4601199之間的執(zhí)行日志,就是給表binlog_test增加數(shù)據(jù)的日志,因此只要重復(fù)執(zhí)行這之間的操作,就可以還原數(shù)據(jù)了。

11-1.windows下,找到mysqlbinlog.exe的位置;

linux下,找到mysqlbinlog的位置(這個(gè)是mysql的bin目錄下的一個(gè)可執(zhí)行文件);

然后執(zhí)行以下命令,即可還原數(shù)據(jù):

mysqlbinlog --no-defaults --start-position=460 --stop-position=1199 "C:ProgramDataMySQLMySQL Sever 5.7Datamysqlbinlog.000004" -d test | mysql -uroot -proot test

其中,指定了開始位置為460,結(jié)束位置為1199,命令執(zhí)行后就會(huì)讀取日志中指定范圍內(nèi)的命令并重新執(zhí)行。

其它命令的含義為:

"-d test"的意思是,指定數(shù)據(jù)庫為test(binlog_test表在test數(shù)據(jù)庫中)
"|"是管道符
"mysql -uroot -proot test"是mysql的賬號(hào)密碼、登陸目標(biāo)數(shù)據(jù)庫
"-uroot":賬號(hào)是root
"-proot":密碼是root
"test":數(shù)據(jù)庫是test 

11-2.也可以把binlog日志中,指定范圍內(nèi)的日志導(dǎo)出,然后自己執(zhí)行source命令還原數(shù)據(jù),如下:

mysqlbinlog "C:ProgramDataMySQLMySQL Sever 5.7Datamysqlbinlog.000004" -d test  --skip-gtids  --start-position=460 --stop-position=1199 > test.sql

執(zhí)行這個(gè)命令后,指定范圍內(nèi)的日志被導(dǎo)出到test.sql中;

然后登陸mysql,執(zhí)行命令:

mysql> use test; 
mysql> source test.sql;

這樣就可以還原數(shù)據(jù)了。

三、其它筆記

1.如果使用truncate刪除表的數(shù)據(jù),binlog中也會(huì)新增幾行記錄,記錄truncate操作,樣例如下:

mysqlbinlog.000004 | 3122 | Query | 1 | 3211 | use 'test'; TRUNCATE 'binlog_test'

如果想恢復(fù)數(shù)據(jù),就需要找到最開始插入數(shù)據(jù)的Pos、到truncate之前的End_log_pos,然后重新執(zhí)行這期間的命令。

2.增刪改操作會(huì)記錄到binlog中,慢查詢sql也可以記錄到慢查詢log中,不過也需要自己修改配置文件開啟慢查詢?nèi)罩尽?/p>

到此這篇關(guān)于MySql恢復(fù)數(shù)據(jù)方法梳理講解的文章就介紹到這了,更多相關(guān)MySql恢復(fù)數(shù)據(jù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL update set 和 and的區(qū)別

    MySQL update set 和 and的區(qū)別

    這篇文章主要介紹了MySQL update set 和 and的區(qū)別,幫助大家更好的理解和學(xué)習(xí)使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-05-05
  • MySql索引和索引創(chuàng)建策略

    MySql索引和索引創(chuàng)建策略

    這篇文章主要介紹了MySql索引和索引創(chuàng)建策略,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)又是幫助
    2022-08-08
  • MySQL每晚定時(shí)彈出一個(gè)taskeng.exe的解決方法

    MySQL每晚定時(shí)彈出一個(gè)taskeng.exe的解決方法

    這篇文章主要介紹了MySQL每晚定時(shí)彈出一個(gè)taskeng.exe的解決方法,需要的朋友可以參考下
    2018-07-07
  • 關(guān)于MySQL實(shí)現(xiàn)指定編碼遇到的坑

    關(guān)于MySQL實(shí)現(xiàn)指定編碼遇到的坑

    這篇文章主要介紹了一個(gè)關(guān)于MySQL指定編碼實(shí)現(xiàn)的小坑,文中大家需要注意如果有需要保存emoji符號(hào)的字段,記得一定要指定編碼為 utf8mb4,感興趣的朋友一起看看吧
    2021-10-10
  • Tableau連接mysql數(shù)據(jù)庫的實(shí)現(xiàn)步驟

    Tableau連接mysql數(shù)據(jù)庫的實(shí)現(xiàn)步驟

    本文主要介紹了Tableau連接mysql數(shù)據(jù)庫的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • MySQL分庫分表詳情

    MySQL分庫分表詳情

    互聯(lián)網(wǎng)項(xiàng)目中常用到的關(guān)系型數(shù)據(jù)庫是MySQL,隨著用戶和業(yè)務(wù)的增長,傳統(tǒng)的單庫單表模式難以滿足大量的業(yè)務(wù)數(shù)據(jù)存儲(chǔ)以及查詢,單庫單表中大量的數(shù)據(jù)會(huì)使寫入、查詢效率非常之慢,此時(shí)應(yīng)該采取分庫分表策略來解決。本篇文章主要介紹MySQL分庫分表,需要的朋友可以參考一下
    2021-09-09
  • Mysql中存儲(chǔ)引擎的區(qū)別及比較

    Mysql中存儲(chǔ)引擎的區(qū)別及比較

    這篇文章主要介紹了Mysql中存儲(chǔ)引擎的區(qū)別及比較,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 淺談MySQL數(shù)據(jù)同步到 Redis 緩存的幾種方法

    淺談MySQL數(shù)據(jù)同步到 Redis 緩存的幾種方法

    本文主要介紹了淺談MySQL數(shù)據(jù)同步到 Redis 緩存的幾種方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • mysql運(yùn)行net start mysql報(bào)服務(wù)名無效的解決辦法

    mysql運(yùn)行net start mysql報(bào)服務(wù)名無效的解決辦法

    這篇文章主要為大家詳細(xì)介紹了mysql運(yùn)行net start mysql報(bào)服務(wù)名無效的解決辦法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Mysql插入中文變?yōu)槿珕柼?hào)???的問題 解決方法

    Mysql插入中文變?yōu)槿珕柼?hào)???的問題 解決方法

    這篇文章介紹了Mysql插入中文變?yōu)槿珕柼?hào)???的問題 解決方法,有需要的朋友可以參考一下
    2013-09-09

最新評(píng)論

五原县| 互助| 芦溪县| 黄梅县| 博白县| 昌都县| 东光县| 介休市| 神池县| 克拉玛依市| 石阡县| 博白县| 溧阳市| 中西区| 简阳市| 湖南省| 莱州市| 长海县| 柞水县| 丹寨县| 秭归县| 清徐县| 永寿县| 平湖市| 河北区| 枣阳市| 景泰县| 彭州市| 二连浩特市| 马尔康县| 兰西县| 乌什县| 英德市| 满洲里市| 沙坪坝区| 安图县| 嘉鱼县| 大姚县| 泰州市| 仙桃市| 新宁县|