1. 程式人生 > >Mysql資料庫日誌,備份及回滾操作

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)、在此過程生成的日誌檔案可以考慮刪除。因為是原來的資料。