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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql 日志还原数据库_通过Mysql-bin日志恢复还原数据

發布時間:2024/9/19 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 日志还原数据库_通过Mysql-bin日志恢复还原数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

事情是這樣的:由于個人粗心,在7月30號那天協助其它部門批量更新一些數據,誰知道全局更新了,而這個問題竟然在9月26號才發現告知我。他們要求把更新有誤的數據恢復到7月30號之前狀態,并且7月30號到9月26號這段時間所做的增刪改的操作也要更新進去。由于之前沒啥經驗,心里也沒底,但是沒辦法,自己做錯事自己承擔。

做法思路:把備份的數據導到測試庫里面去,然后把7月30號到9月26號之間的binlog日志提取出對這個表進行操作的sql語句,然后再導進去。

苦逼的還原過程開始了.........

1.幸好本人養成了個好習慣,無論改動的大小我都會先備份一份數據

-rw-r--r-- 1 root root 2473664 07-30 09:38 terminfo-bak0730.sql

找到了,果然是7月30號早上09點38分左右備份的,幸好有備份啊,要不然就悲催了.......先把備份的導到測試數據庫上,表名改為terminfo0730,然后再把當前生產的數據導到,表名改為terminfo0926,這樣的做法是在還原數據后匹配一下數據有沒有對得上。

>usereed

Databasechanged

mysql>show tables;

+----------------+

|Tables_in_reed|

+----------------+

|terminfo0730|

|terminfo0926|

+----------------+

2.最重要的一步來了,就是提取binlog日志。因為7月30號備份的,所以要找7月30號之后到9月26號的binlog。

-rw-rw----1mysql mysql107374208408-0920:03mysql-bin.000086

-rw-rw----1mysql mysql107374189408-2604:51mysql-bin.000087

-rw-rw----1mysql mysql107374207809-1211:12mysql-bin.000088

-rw-rw----1mysql mysql107663780509-2611:55mysql-bin.000089

-rw-rw----1mysql mysql4533942009-2618:50mysql-bin.000090

利用mysqlbinlog命令先進行第一輪的sql語句提取

#mysqlbinlog --no-defaults --database=ecard --start-datetime='2012-07-30 09:38:00' mysql-bin.000086 > log86.txt? # 這里要設置起始時間

#mysqlbinlog --no-defaults --database=ecard? mysql-bin.000087 > log87.txt

#mysqlbinlog --no-defaults --database=ecard? mysql-bin.000088 > log88.txt

#mysqlbinlog --no-defaults --database=ecard? mysql-bin.000089 > log89.txt

#mysqlbinlog --no-defaults --database=ecard? mysql-bin.000090 > log90.txt

#ls -l

-rw-r--r-- 1 root? root? 1553740972 09-26 19:38 log86.txt

-rw-r--r--1root? root153286277909-2619:52log87.txt

-rw-r--r--1root? root157780920009-2619:55log88.txt

-rw-r--r--1root? root158045208209-2619:57log89.txt

-rw-r--r--1root? root6494588409-2619:58log90.txt

提取出來后是全部的sql語句,而我需要的是只對terminfo操作的sql語句,所以要進行第二輪提取

#grep terminfo log86.txt > log86-terminfo.txt #依次grep出來

[root@localhost txt]# ll

總計264

-rw-r--r--1root root2020609-2619:50log86-terminfo.txt

-rw-r--r--1root root7874009-2619:59log87-terminfo.txt

-rw-r--r--1root root6542909-2619:59log88-terminfo.txt

-rw-r--r--1root root6529409-2619:59log89-terminfo.txt

-rw-r--r--1root root94109-2620:00log90-terminfo.txt

提取出來后,里面就是所有對terminfo的sql語句了,把這些數據導入到測試庫terminfo0730表中

mysql > source log86-terminfo.txt; #依次source進去,務必要注意順序問題!!!

導進去之后再比較一下terminfo0730和terminfo0926表的數據數量有沒有一樣,然后再叫部門同事驗證一下數據正確性。

到此,數據成功恢復還原。一次難忘的經歷啊,也同時告誡自己,細心細心再細心!!

總結

以上是生活随笔為你收集整理的mysql 日志还原数据库_通过Mysql-bin日志恢复还原数据的全部內容,希望文章能夠幫你解決所遇到的問題。

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