程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL中的binlog相干敕令和恢復技能

MySQL中的binlog相干敕令和恢復技能

編輯:MySQL綜合教程

MySQL中的binlog相干敕令和恢復技能。本站提示廣大學習愛好者:(MySQL中的binlog相干敕令和恢復技能)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL中的binlog相干敕令和恢復技能正文


操作敕令: show binlog events in 'mysql-bin.000016' limit 10;

reset master 刪除一切的二進制日記
flush logs  發生一個新的binlog日記文件

show master logs; 或許 show binary logs; 檢查二進制文件列表和文件年夜小

./mysqlbinlog --start-datetime="2012-05-21 15:30:00" --stop-datetime="2012-05-21 16:40:00" /binlog/mysql-bin.000005 > a.log

2. 要想經由過程日記恢單數據庫,在你的 my.cnf 文件裡應當有以下的界說,log-bin=mysql-bin,這個是必需的
binlog-do-db=db_test ,這個是指定哪些數據庫須要日記,每行一個,假如不指定的話默許就是一切數據庫.
[mysqld]
 log-bin=mysql-bin
 binlog-do-db=db_test
 binlog-do-db=db_test2     

3.刪除二進制日記:
mysql> reset master  (清空一切的二進制日記文件)
purge master logs to 'mysql-bin.000006';  (刪除mysql-bin.000006之前的二進制日記文件)
purge master logs before '2007-08-10 04:07:00'  (刪除該日期之前的日記)
在my.cnf 設置裝備擺設文件中[mysqld]中添加:
expire_logs_day=3  設置日記的過時天數,過了指定的天數,會主動刪除

4.上面就是恢復操作了
 特殊提醒,mysql每次啟動都邑從新生成一個相似 mysql-bin.000003 的文件,假如你的mysql天天都要從新啟動一次的話,這時候候你就要特殊留意不要選錯日記文件了。

技能1:
你可以經由過程–one-database 參數選擇性的恢復單個數據庫,example鄙人面,爽吧。
mysqlbinlog –stop-date="2005-04-20 9:59:59" /var/log/mysql/mysql-bin.000001  | mysql -u root -pmypwd –one-database db_test

技能2:
假如曾經應用過
/usr/local/mysql5/bin/mysqlbinlog –start-date="005-04-20 9:55:00" /var/data/mysql5/mysql-bin.0* > /home/db/tt.sql 相似的語句將日記導成了ASCII文本文件,那末你便可以直接在phpmyadmin裡履行這個文件,由於它自己就是一個尺度的sql文件,好比想讓文件外面的某些語句不履行,找到它們刪除便可,然後再放出來履行。

技能3:
mysqlbinlog –stop-date="2005-04-20 9:59:59" /var/log/mysql/mysql-bin.000001  | mysql -u root -pmypwd –one-database db_test
這是把mysql-bin.000001這個二進制文件裡的內容轉換成ASCII文件(也就是sql語句),直接經由過程管道操作符 | 傳輸給 mysql這個法式,然後過濾失落其它數據庫的語句,只在db_test裡履行。

要想肯定以後的二進制日記文件的文件名,輸出上面的MySQL語句:
SHOW BINLOG EVENTS

1. 指定恢復時光
關於MySQL 4.1.4,可以在 mysqlbinlog 語句中經由過程 –start-date 和 –stop-date 選項指定DATETIME格局的起止時光。舉例解釋,假定在明天上午10:00(明天是2005年4月20日),履行SQL語句來刪除一個年夜表。要想恢復表和數據,你可以恢復前早晨的備份,並輸出:
mysqlbinlog –stop-date="2005-04-20 9:59:59" /var/log/mysql/mysql-bin.000001  | mysql -u root -pmypwd

該敕令將恢復截止到在 –stop-date 選項中以DATETIME格局給出的日期和時光的一切數據。假如你沒有檢測到幾個小時後輸出的毛病的SQL語句,能夠你想要恢復前面產生的運動。依據這些,你可以用起使日期和時光再次運轉mysqlbinlog:
mysqlbinlog –start-date="2005-04-20 10:01:00" /var/log/mysql/mysql-bin.000001  | mysql -u root -pmypwd

2. 指定恢復地位
也能夠應用mysqlbinlog的選項 –start-position 和 –stop-position 來指定日記地位。它們的感化與起止日選項雷同,分歧的是給出了從日記起的地位號。應用日記地位是更精確的恢復辦法,特殊是當因為損壞性SQL語句同時產生很多事務的時刻。要想肯定地位號,可以運轉mysqlbinlog尋覓履行了不希冀的事務的時光規模,但應將成果從新指向文本文件以便停止檢討。操作辦法為:

mysqlbinlog –start-date="2005-04-20" –stop-date="2005-04-20" /var/log/mysql/mysql-bin.000001 > /tmp/mysql_restore.sql

該敕令將在/tmp目次創立小的文本文件,將顯示履行了毛病的SQL語句時的SQL語句。你可以用文本編纂器翻開該文件,尋覓你不要想反復的語句。假如二進制日記中的地位號用於停滯和持續恢復操作,應停止正文。用log_pos加一個數字來標志地位。應用地位號恢復了之前的備份文件後,你應從敕令行輸出上面內容:

mysqlbinlog –stop-position="368312" /var/log/mysql/mysql-bin.000001 | mysql -u root -pmypwd
mysqlbinlog –start-position="368315"/var/log/mysql/mysql-bin.000001 | mysql -u root -pmypwd

下面的第1即將恢復到停滯地位為止的一切事務。下一即將恢復從給定的肇端地位直到二進制日記停止的一切事務。由於mysqlbinlog的輸入包含每一個SQL語句記載之前的SET TIMESTAMP語句,恢復的數據和相干MySQL日記將反響事務履行的原時光。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved