mysql bin檔案還原

2021-09-02 13:24:17 字數 2400 閱讀 2274

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

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

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

mysql>use reed

database changed

mysql> show tables;

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

|tables_in_reed|

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

| terminfo0730 |

| terminfo0926 |

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

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

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

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

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

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

-rw-rw----1 mysql mysql 4533942009-2618:50 mysql-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--1 root root 153286277909-2619:52 log87.txt

-rw-r--r--1 root root 157780920009-2619:55 log88.txt

-rw-r--r--1 root root 158045208209-2619:57 log89.txt

-rw-r--r--1 root root 6494588409-2619:58 log90.txt

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

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

# ll

總計264

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

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

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

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

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

提取出來後,裡面就是所有對terminfo的sql語句了,把這些資料匯入到測試庫terminfo0730表中

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

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

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

mysql bin日誌檔案清理

如果你的mysql伺服器不需要做主從複製的話,建議通過修改my.cnf檔案,來設定不生成這些檔案,只要刪除my.cnf中的下面一行就可以了。log bin mysql bin 如果你需要複製,最好控制一下這些日誌檔案保留的天數,可以通過下面的配置設定日誌檔案保留的天數 expire logs day...

mysql bin日誌 MySQL bin日誌解析

很多時候,當我們的業務資料產生了不正常的變化,但卻無法得知這類操作是在 進行,並且如何進行,單單從程式當面排查很費力。那麼就需要通過分析資料庫日誌來得到歷史執行sql,根據sql執行邏輯來確認 位置,進而確認是否是bug,亦或是誤操作等。一.binlog簡介 binlog 是mysql server...

mysql通過mysql bin檔案恢復資料

mysql bin00 檔案 var lib mysql mysql bin00 是資料庫的操作日誌檔案,一定情況下可以利用操作日誌檔案來恢復資料,例如乙個表中之前插入了1條資料,之後給誤刪除了,這時可以在操作日誌檔案找到之前插入的資料,以此來恢復資料。my.cnf配置相關 1.開啟日誌儲存機制 l...