Mysql資料庫日誌,備份及回滾操作
在Windows系統下,對mysql的my.ini的log-bin等進行配置目錄位置時,假設要將log-bin的日誌配置到D盤的mysqllog的檔案為binlog。則可以如下配置 :
[mysqld]
log-bin="D:\mysqllog/binlog" 注意:在這裡的最後一個路徑採用的是"/"而不是Windows檔案系統的“\"
二、二進位制日誌處理:
1、檢視
採用Mysqlbinlog.exe。可以在安裝目錄的Server裡的Bin目錄下找到。
檢視: cmd> mysqlbinlog.exe filename (新增 --database [databasename] 可以檢視某個特定的資料庫的sql日誌)
2、暫停日誌記錄
mysql> SET SQL_LOG_BIN=0/1 設定為0:表示暫停記錄;否則為1;
3、刪除二進位制日誌
mysql> RESETMASTER; (注意,將刪除全部,要小心!!!!)
mysql> PURGE MASTER LOGS TO filename.number: 刪除編號小於number的日誌;
mysql> PURGE MASTER LOGS BEFORE 'yyyy-mm-dd hh:MM:ss' : 刪除日誌前的日誌;
4、重新整理日誌,使得當前的日誌編號增加一
採用MysqlAdmin.exe. 可以在安裝目錄的Server裡的Bin目錄下找到。
如當前的伺服器的日誌檔案為: binlog.000002
則執行: cmd> mysqladmin -u root -p flush-logs :輸入密碼
執行之後,在二進位制日誌目錄下會增加一個新的日誌檔案: binlog.000003。此後,伺服器的新日誌將會寫到binlog.000003。
此做法很適合於增量備份時使用。
三、資料庫備份與還原
採用mysqldump.exe. 可以在安裝目錄的Server裡的Bin目錄下找到。
1、完全備份:
cmd> mysqldump -u root -p test > test.sql :輸入密碼 將會備份資料庫名為test的資料庫到mysqldump.exe所在的目錄的test.sql檔案。
2、完全備份整個伺服器的資料庫,並重新整理日誌檔案:
重新整理日誌檔案的目的:告訴伺服器將日誌寫到新的日誌檔案,為此,將來進行的備份就不用再進行完全備份了,只需要備份新的日誌檔案。實現”增量備份“
cmd> mysqldump -u root -p --flush-logs 執行之後將會生成更多的新的日誌檔案。如備份3個數據庫時,會再生成3個日誌檔案。因為3個數據庫的備份是被看成3個不同的事務執行的。因此,加上:--single-transaction 標記之後,將作為一個事務。因此,只會增加一個日誌檔案。
3、還原操作:
注意:由於一般情況下,系統的二進位制日誌是開啟的,因此,執行還原時,會將還原的sql程式碼同樣寫入到日誌。當顯然,這些程式碼並不一定是需要存在的。因此,可以用暫停二進位制日誌的方式進行避免,但是,我在測試時,發現採用:SET SQL_LOG_BIN=0並不能做到。因此,可以採用以下的做法:
1)、重新整理一個日誌檔案: cmd> mysqladmin -u root -p flush-logs. (這個檔案用於存放還原時產生的日誌,而不會影響原來的日誌)
2)、執行還原一個數據庫:test:cmd> mysql -u -root -p < test.sql;
3)、再將”增量“的日誌執行到資料庫test(要小心,不要執行其他資料庫的二進位制日誌):
cmd> mysqlbinlog log.number | mysql -u root -p test 。
可以加入--database [name]的引數,指定只選擇增量還原某個資料庫的sql。如針對 test資料庫:
cmd> mysqlbinlog log.number --database test | mysql -u root -p test
4)、在此過程生成的日誌檔案可以考慮刪除。因為是原來的資料。