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...