為了保障數據的安全,需要定期對數據進行備份。備份的方式有很多種,效果也不一樣。一旦數據庫中的數據出現了錯誤,就需要使用備份好的數據進行還原恢復。從而將損失降到最低。下面我們來了解一下MySQL常見的有三種備份恢復方式:
1、利用Mysqldump+二進制日志實現備份
2、利用LVM快照+二進制日志實現備份
3、使用Xtrabackup備份
一:實驗環境介紹:
系統介紹:CentOS6.4_X64
數據庫版本:mysql-5.5.33
二:基于Mysqldump命令實現備份恢復
2.1、思路概念
Mysqldump是一個邏輯備份命令;意思就是將數據庫中的數據備份成一個文本文件;也可以說是將表的結構和數據存儲在文本文件中。
Mysqldump命令的工作原理很簡單,它先查出需要備份的表的結構,再在文本文件中生成一個CREATE語句。然后,將表中的所有記錄轉換為一條INSTERT語句。這些CREATE語句和INSTERT語句都是還原時使用的。還原數據時就可以使用其中的CREATE語句來創建表。使用其中的INSERT語句來還原數據。它可以實現整個服務器備份,也可以實現單個或部分數據庫、單個或部分表、表中的某些行、存儲過程、存儲函數、觸發器的備份;并且能自動記錄備份時刻的二進制日志文件及相應的位置。對于InnoDB存儲引擎來講支持基于單事務模式實現熱備,對于MyISAM則最多支持溫備。
2.2、備份策略
Mysqldump全備+二進制日志增備
2.3、過程實現
(1)Mysqldump全備
由于Mysql數據庫默認的為MyISAM存儲引擎所以只有使用溫備(備份同時僅支持讀請求)進行,所以我們要為所有數據庫添加讀鎖
| [root@stu18 ~]#mysqldump -uroot -pmypass --lock-all-tables --master-data=2 --events --routines--all-databases > /zhao/database_`date +%F`.sql |
解析:–lock-all-tables表示為所有表施加讀鎖;–master-data=2表示在備份文件中記錄當前二進制日志的位置;–events表示備份數據的同時備份時間調度器代碼;–routines表示備份數據的同時備份存儲過程和存儲函數;–all-databases表示備份所有庫。
| [root@stu18 zhao]# less database_2013-08-13.sql-- #表示注釋項-- Position to start replication or point-in-time recovery from---- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=14203; #這里表示當前處于mysql-bin.000001這個二進制日志中,事件為14203這是通過--master-data=2產生的---- Current Database: `hellodb`--CREATE DATABASE /*!32312 IF NOT EXISTS*/ `hellodb` /*!40100 DEFAULT CHARACTER SET utf8 */; |
(2)二進制全備
方法一: 導出二進制日志文件內容
| [root@stu18 data]# mysqlbinlog mysql-bin.000001 >/zhao/binlog_`date +%F`.sql |