大綱
一、mysql備份型別一、mysql備份型別二、mysql備份都備份什麼?
三、mysql備份工具
四、mysql備份策略
五、備份準備工作
六、備份策略具體演示
1.熱備份、溫備份、冷備份 (根據伺服器狀態)
2.物理備份與邏輯備份 (從物件來分)
3.完全備份、增量備份、差異備份 (從資料收集來分)
4.邏輯備份的優點:
5.邏輯備份的缺點:
6.增量備份與差異備份區別
說明,差異備份要比增量備份占用的空間大,但恢復時比較方便!但我們一般都用增量備份!
二、mysql備份都備份什麼?
我們備份,一般備份以下幾個部分:
1.資料檔案
2.日誌檔案(比如事務日誌,二進位制日誌)
3.儲存過程,儲存函式,觸發器
4.配置檔案(十分重要,各個配置檔案都要備份)
5.用於實現資料庫備份的指令碼,資料庫自身清理的croutab等……
三、mysql備份工具
如下圖,
上面的所有備份工具對比,下面我們就來說一下,常用的備份工具,
1.mysql自帶的備份工具
2.檔案系統備份工具
3.其它工具
四、mysql備份策略
1.策略一:直接拷貝資料庫檔案(檔案系統備份工具 cp)(適合小型資料庫,是最可靠的)
當你使用直接備份方法時,必須保證表不在被使用。如果伺服器在你正在拷貝乙個表時改變它,拷貝就失去意義。保證你的拷貝完整性的最好方法是關閉伺服器,拷貝檔案,然後重啟伺服器。如果你不想關閉伺服器,要在執行表檢查的同時鎖定伺服器。如果伺服器在執行,相同的制約也適用於拷貝檔案,而且你應該使用相同的鎖定協議讓伺服器「安靜下來」。當你完成了備份時,需要重啟伺服器(如果關閉了它)或釋放加在表上的鎖定(如果你讓伺服器執行)。要用直接拷貝檔案把乙個資料庫從一台機器拷貝到另一台機器上,只是將檔案拷貝到另一台伺服器主機的適當資料目錄下即可。要確保檔案是myiasm格式或兩台機器有相同的硬體結構,否則你的資料庫在另一台主機上有奇怪的內容。你也應該保證在另一台機器上的伺服器在你正在安裝資料庫表時不訪問它們。
2.策略二:mysqldump備份資料庫(完全備份+增加備份,速度相對較慢,適合中小型資料庫)(myisam是溫備份,innodb是熱備份)
3.策略三:lvs快照從物理角度實現幾乎熱備的完全備份,配合二進位制日誌備份實現增量備份,速度快適合比較煩忙的資料庫
前提:步驟:
(1).開啟會話,施加讀鎖,鎖定所有表;
1
2
mysql> flush tables with read lock;
mysql> flush logs;
(2).通過另乙個終端,儲存二進位制日誌檔案及相關位置資訊;
1
mysql -uroot -p -e
'show master status\g'
>
/path/to/master
.info
(3).建立快照卷
1
lvcreate -l
# -s -p r -n lv_name /path/to/source_lv
(4).釋放鎖
1
mysql> unlock tables;
(5).掛載快照卷,備份
1
2
mount
cp
(6).刪除快照卷;
(7).增量備份二進位制日誌;
4.策略四:xtrabackup 備份資料庫,實現完全熱備份與增量熱備份(myisam是溫備份,innodb是熱備份),由於有的資料在設計之初,資料目錄沒有存放在lvm上,所以不能用lvm作備份,則用xtrabackup代替來備份資料庫
xtrabackup有兩個主要的工具:xtrabackup、innobackupex
特點:5.策略五:主從複製(replication)實現資料庫實時備份(集群中常用)
6.總結
單機備份是完全備份(所有資料庫檔案)+增量備份(備份二進位制日誌)相結合!
集群中備份是完全備份(所有資料庫檔案)+增量備份(備份二進位制日誌)+主從複製(replication)相結合的方法!
五、備份準備工作
1.檢視伺服器狀態,
1
2
3
4
5
mysql備份與還原
假設mysql 安裝在c 盤,mysql資料庫的使用者名稱是root,密碼是123456,資料庫名是database name,在d 盤根目錄下面存放備份資料庫,備份資料庫名字為backup20070713.sql。備份資料庫 mysqldump uroot p123456 database nam...
mysql備份與還原
備份檔案 檔案開頭記錄了mysql的版本 備份的主機名和資料庫名。檔案中,以 開頭的的都是sql語言的注釋 不會被執行 但是,以 40101 等形式開頭 的是與mysql有關的注釋。40101 是mysql資料庫的版本號,這裡就表示mysql 4.1.1 如果還原資料時,mysql的版本比4.1.1...
mysql備份與還原
工作中用到了mysql,在這裡做個備忘記錄 1 備份 匯出整個資料庫database mysqldump u root p database dump.sql 只匯出表結構 mysqldump u root p d database dump.sql 匯出單個資料表table mysqldump a...