mysql通过binlog日志来恢复数据
生活随笔
收集整理的這篇文章主要介紹了
mysql通过binlog日志来恢复数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡介
在生產的過程中有這么一個業務場景:比如我在2016-11-19 09:30:00 通過mysqldump的方式備份了數據庫,但是在2016-11-19 10:30:00的時候數據庫崩潰了,如果通過我們的備份文件來恢復,也只能恢復到 2016-11-19 09:30:00 這個時間點,而9.30分到10:30分這一個小時的數據恢復不了,這時候我們可以通過mysql的binlog日志來恢復沒有備份到的這一小時的數據。
1、開啟mysql的binlog日志(默認情況下沒有開啟)
#vim /etc/my.cnf下添加一行(也可以另外指定binlog日志的路徑)
log-bin = mysql-bin
#mysql5.7默認情況下,binlog日志文件默認放在/usr/local/mysql/data/目錄下
2、對binlog日志的相關操作命令
? ?2.1用mysqlbinlog可以查看binlog日志里的信息
./mysqlbinlog --no-defaults /usr/local/mysql/data/mysql-bin.000003?2.2刷新binlog日志
mysql> flush logs; #這樣就會多出一個最新的binlog日志2.2查看最新的 binlog日志
mysql> show master status;2.3清空所有的binlog日志
? mysql> reset master;
?3、根據位置恢復
#mysqlbinlog --start-position=134 --stop-position=330 mysql-binglog.000001 > /root/test1.txt進入MYSQL導入
mysql> source /root/test1.txt
--start-position? 起始位置 --stop-position? 結束位置 ??
4、根據日期
#./mysqlbinlog --start-date="2016-11-10 17:30:05" --stop-date="2016-11-10 18:00:00" mysql-binlog.000002? > /root/test2.sqlmysql> source /root/test2.sql --start-date 起始時間 --stop-date 結束時間
或者
#./mysqlbinlog --start-date="2016-11-10 17:30:05" --stop-date="2016-11-10 18:00:00" mysql-binlog.000002 | ./mysql -uroot -padmin test
將mysql-bin.000002日志文件中從2016-11-10 17:30:05到2016-11-10 18:00:00截止的sql語句導入到mysql中test
----如果有多個binlog文件,中間用空格隔開,打上完全路徑 5、補充mysqldump備份 [root@jacky tmp]# /usr/local/mysql/bin/mysqldump -uroot -padmin test -l -F > /tmp/test.sql?? #備份 數據庫test到tmpl目錄下的test.sql文件中 -l 表示讀鎖,在備份的過程中mysql不能寫入數據,從而保證數據的完整性 -f 表示 flust logs,重新生成新的日志文件,當然也包括bin-log日志 ./mysql -uroot -padmin test? -v -f < /tmp/test.sql?? #通過/tmp/test.sql文件恢復test數據庫 -v 查看導入的詳細信息 -f 導入過程中遇到錯誤,跳過,并繼續往下執行
總結
以上是生活随笔為你收集整理的mysql通过binlog日志来恢复数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rop的noejs客户端
- 下一篇: linux cmake编译源码,linu