備份mysql資料庫 MYSQL資料庫的備份與恢復

2021-10-25 14:01:43 字數 3695 閱讀 2958

mysql資料庫的備份與恢復與資料庫日誌有著緊密聯絡,特別是資料庫的二進位制日誌(binlog),更是對於災難恢復、增量備份起著重極其重要的作用。因此,開啟和熟悉相關日誌是十分必要的。

1、二進位制日誌(binlog)。二進位制日誌記錄了所有的ddl(資料定義語言)語句和dml(資料操作語言)語句,但是不包括資料查詢語句。也就是說所有的資料庫更改都被記錄在了二進位制日誌中(因此該檔案可能會非常龐大)。設定方法為:在my.ini檔案中[mysqld]選項後面新增如下語句:

log-bin=filename

例如:log-bin="d:/logbin/data_logbin.log"

filename為存放二進位制檔案的路徑,強烈建議與mysql的資料目錄分開存放。

2、錯誤日誌。錯誤日誌是mysql中最重要的日誌之一,它記錄了mysql啟動和停止時,以及伺服器在執行過程中發生的任何嚴重錯誤的相關資訊。當資料庫出現任何故障導致無法正常使用時,可以首先檢視此日誌。該日誌黙認是開啟的,但也可以指定,方法為在my.ini檔案中[mysqld]選項後面新增如下語句:

log-error=filename

例如:log-error="d:/errorbin/data_error.log"

filename為存放錯誤檔案的路徑,建議也與mysql的資料目錄分開存放。

2備份/恢復策略

mysql資料庫中的備份可以分為邏輯備份與物理備份,邏輯備份是將資料庫中的資料備份為乙個文字檔案(即我們通常見到的sql指令碼檔案),而物理備份則是基於對資料檔案的處理(比如對於innodb的資料庫表,其資料檔案即為.ibd檔案)。

邏輯備份使用mysqldump工具來完成備份。其使用方法為:

mysqldump

[主機] [使用者名稱]

[密碼] [資料庫]>[備份路徑]

例如:mysqldump

-h192.168.1.7 -uroot –phello

data_test>d:/backup.sql

或者寫成:

mysqldump --single-transaction -h192.168.1.7

-uroot phello

data_test>d:/backup.sql

或者寫成:

mysqldump

--single-transaction -h192.168.1.7 -uroot

-phello –f data_test>d:/backup.sql

第二種寫法對於innodb儲存引擎的表來說,是乙個很好的辦法,它可以使mysqldump得到資料庫的乙個快照,使得備份的資料能夠保證一致。否則,備份時,使用者就只能對錶有讀的許可權了。第三種寫法更好,它可以令資料庫生成乙個新的二進位制日誌檔案,而該檔案只記錄了自備份開始以來所有的資料庫操作,這樣更方便。

首先寫乙個批處理指令碼,例如該指令碼內容為:

mysqldump

--single-transaction -h192.168.1.7 -uroot -phello

data_test>d:/backup.sql

然後將該指令碼儲存為bat格式檔案,再在windows的「任務計畫」裡面設定乙個定時執行該指令碼的任務,比如說每週一的晚12:00執行該指令碼(這個時間點最好設在使用者量可能最少的時間),這樣就能定時備份相應的資料庫了。當然這種備份只是一種簡單的全備份,建議不要大量使用,可以適時的使用。

上述備份方法都屬於全備份,這種備份優點是備份保持最新備份,恢復的時候可以花費更少的時間,但缺點是如果資料量大,將會花費很多的時間,並對系統造成較長時間的壓力。增量備份則恰好相反,只需備份每天的增量日誌,備份時間少,對負載的壓力也少,缺點是恢復的時候需要全備份加上上次的全備份,恢復時間長些。俱體方法如下:

首先將二進位制日誌檔案複製到備份目錄,這個因為是對檔案進行cp操作,所以非常快。

mysqlbinlog

--start-date=」2009-06-22 00:00:00」--stop-date=」2009-06-22 24:00:00」

d:/logbin/data_logbin.0000002>d:/logback20090622.sql

最後將備份目錄下的二進位制日誌檔案刪除即可(想保留也無所謂,只不過佔空間)。

用mysqldump的完全恢復很簡單,如下所示例子:

1)上午9點開始備份資料庫(可以是手工,也可以是定時備份):

mysqldump

--single-transaction -h192.168.1.7 -uroot -phello

data_test>d:/backup.sql

2)9點半備份完畢

3)到了10點,資料庫故障,資料無法訪問,需要恢復備份

4)使用mysqlbinlog得到9點到10點間的日誌資料,如下所示:

mysqlbinlog

–start-date=」2009-06-22 10:00:00」—stop-date=」2009-06-22 10:30:00」

d:/logbin/data_logbin.0000002>d:/logback.sql

5)還原之前備份的資料:

mysql –uroot –psinojp

database

mysql –uroot –psinojp

database

7)完成恢復

以上恢復時用到了二進位制檔案logbin,且是基於時間點恢復logbin裡的資料,其實,更精確一點,我們還可以根據位置來恢復二進位制檔案裡的資料。因為由於誤操作,比如誤刪除了一張表,這時使用基於時間點的恢復是有誤差的,因為日誌裡面還存在誤操作的語句,我們需要的是恢復到誤操作以前的狀態,然後跳過誤操作語句,再恢復後面執行的語句,完成我們的恢復。這樣的要求下,我們就要用到基於位置的恢復了。如下所示:

mysqlbinlog –stop-position=」1000」

d:/logbin.0000005>d:/time1.sql

mysqlbinlog

–start-position=」1050」

d:/logbin.0000005>d:/time2.sql

這樣一來,位置1000到1050之間的語句咱就不執行了(這個要求自己去檢視日誌檔案,確認誤操作語句的序號)。

物理備份又分為冷備份與熱備份,和邏輯備份相比,它的最大的優點是備份和恢復的速度更快,因為物理備份的原理就是基於檔案的cp。

冷備份其實就是停掉資料庫服務,cp資料檔案的方法。這種方法一般很少用,因為很多應用是不允許長時間停機的。方法如下:

備份:首先停掉mysql服務,在作業系統級別備份資料檔案和日誌檔案到備份目錄。

恢復:首先停掉mysql服務,在作業系統級別恢復資料檔案(直接將備份的資料檔案複製到資料目錄即可),然後重啟服務,再使用mysqlbinlog工具恢復自備份以來的所有binlog。

熱備份一般由專門的備份工具來完成,優點是速度快,生成的備份檔案小,對使用者的影響也小,缺點是目前還沒有免費的熱備份工具。現在較流行的是ibbackup這款熱備份工具,可以免費試用乙個月,效果不錯。

實際上,除了上述備份方法外,如果資料庫系統進行了主從複製設定,則也可以使用乙個從伺服器執行備份,這樣就不會干擾主伺服器,使得在備份過程中主伺服器可以繼續處理更新。但這種備份方式存在一定的資料差異,所以不提倡大力使用。

同時,可以將全備份與增量備份結合起來使用。但要注意的是,要經常做備份恢復測試,確保備份是有效的,並且是可以恢復的。

由於備份的資料庫檔案通常會非常大(t級),並且從安全角度來考慮,都應該將備份資料與原資料進行隔離。可以採用專門的備份伺服器,定時將資料備份到該備份伺服器上來,並且定期將之前備份資料燒錄成光碟,以防萬一。

mysql資料庫備份廠家 MySQL資料庫備份

mysql 資料庫管理系統通常會採用有效的措施來維護資料庫的可靠性和完整性。但是在資料庫的實際使用過程當中,仍存在著一些不可預估的因素,會造成資料庫執行事務的異常中斷,從而影響資料的正確性,甚至會破壞資料庫,導致資料庫中的資料部分或全部丟失。資料庫系統提供了備份和恢復策略來保證資料庫中資料的可靠性和...

mysql資料庫備份廠家 Mysql資料庫備份

mysqldump常用於mysql資料庫邏輯備份。1 各種用法說明 a.最簡單的用法 mysqldump uroot ppassword database name dump file 上述命令將指定資料庫備份到某dump檔案 轉儲檔案 中,比如 mysqldump uroot p123 test ...

mysql資料庫自動備份 mysql資料庫自動備份

通過簡單的設定,可以讓mysql資料庫備份自動化.減少維護的工作量 一 對於windows主機 假想環境 mysql 安裝位置 c mysql 論壇資料庫名稱為 bbs mysql root 密碼 123456 資料庫備份目的地 d db backup echo off c mysql bin my...