捕夢網的資料備份還原方式

捕夢網雲端主機提供資料庫備份還原服務

我們有使用捕夢網的雲端解決方案,有提供免費的備份還原服務,可以指定還原30天的資料或是程式。

因為用的是雲端方案,所以,備份還原資料不限,通通都是免費(整個方案一年十多萬),資料只花了半個小時就還原了,後來我們發現,連資料庫都要還原。

可是資料庫還原了一個小時,還沒有好,我就再打電話去問,原來捕夢網用的是實體備份的方式,所謂的實體備份,就是直接備份資料檔。

直接備份資料檔的好處就是,動作簡單,而且備份動作很快,最重要的是不佔CPU效能。只要備份/var/lib/mysql下的實體檔案,備份真的很容易,只要用到CP/DD指令即可。另一個缺點是,同一個版本的資料庫系統,還原很容易,如果mysql的版本不同,就有可能還元失敗。

捕夢網採用的這個備份方式,俗稱Binary Copy式備份,mysql資料匣中,資料庫名稱就是資料匣名稱,每個資料表會有三種檔案格式。
1. FRM: 儲存這個資料表的結構
2. MYD: Row Data,也就是你存在資料表(table)裡的資料
3. MYI: 此資料表的索引

我習慣的備份方式

我習慣的備份方式是使用mysqldump指令,直接下指令,就把檔案備份起來,俗稱MySQL Dump資料庫備份,備份出來的檔文是文字檔。

之前沒有CLI(Command Line Interface)的時候,就是自己寫程式,把資料一樣倒出sql statement,一樣備份出來,而且備份的檔案還有亂碼名稱,安全性很高。

用這個方式的缺點就是,要有CLI,或是我們自行開發程式,而且還要有資料庫的帳號和密碼。而且要佔CPU效能。好處是,還原容易,一個指令下下去,就等結果,透過這種方式,我還原過600MB的MySQL資料庫。

當捕夢網的備份方式遇到MyISAM的時候?

這兩個東西相遇,不會有什麼火花,反而是一個災難,這麼說好了!不是一行指令下下去打完收工。

因為備份時,要連同ibdata1一起備份,還原時,不是資料檔丟進去就好,還要做資料庫修複才可以用。

是的!不是我們想的這麼簡單,檔案丟進去,restart mysql服務就收工。

當使用 innoDB 模式建立資料庫時,mysql 預設所有 database 的實體資料均放在 ibdata1 檔內, 所以當 database 眾多時該檔的膨脹就很快。

MyISAM問題也不是不能解

其實每個table都可以有自己的資料檔,不用進中到ibdata1中,只要修改my.ini;加入innodb_file_per_table=1 參數,

這樣就可以直接備份檔案,還原起來也比較簡便。

由此可知,捕夢網用的還是舊的方式,舊的技術和方法。

MySQL使用MyISAM引擎的資料庫修復方式

1.找到資料匣下的innodb的Logfile,長的像下面這樣,確認他們的存在,才能修復資料庫
-rw-rw—- 1 mysql mysql 5242880 Jun 25 11:30 ib_logfile0
-rw-rw—- 1 mysql mysql 5242880 Jun 25 11:30 ib_logfile1

2.把mysql開到安全模式
/usr/sbin/mysqld –innodb_log_file_size=5242880 –innodb_force_recovery=6

無誤的話會看到下面的資料
MyISAM: The user has set SRV_FORCE_NO_LOG_REDO on
MyISAM: Skipping log redo
070625 11:59:36 MyISAM: Started; log sequence number 0 0
MyISAM: !!! innodb_force_recovery is set to 6 !!!
070625 11:59:36 [Note] /usr/sbin/mysqld: ready for connections.
Version: ‘5.0.18’ socket: ‘/var/lib/mysql/mysql.sock’ port: 3306 SUSE MySQL

3.把資料用mysqldump指令把資料備出來
mysqldump -u root -p database > database.sql
資料庫會做修復的動作
Got error: 1146: Table ‘database.table’ doesn’t exist when using LOCK TABLES

4.還原資料
mysql -u root -p database < database.sql

小結

還是用MyISAM引擎比較安全,MyISAM還真的不是這麼好處理。光是要做還原資料,又不能影響到別的資料庫運作,就要主機搬來搬去,我真的好懶,真的。

PS1.不是我匯入10萬筆資料造成的問題,何況我只倒了5000多筆不到6000筆的資料
PS2.我已經套用網路先進的script,把所有的MyISAM改成MyISAM引擎
PS3.時間與空間的選擇,要看使用環境以及管理員的喜好

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *