MYSQL的備份有多少種,請簡要的描述:
數(shù)據(jù)庫分邏輯備份\物理備份
物理備份又分冷備和熱備
A.直接拷貝數(shù)據(jù)文件到安全地方進行保存
B.使用MYSQLHOSTCOPY備分數(shù)據(jù)
C.使用MYSQLDUMP備份數(shù)據(jù)
D.使用MYSQL的同步復(fù)制,實現(xiàn)數(shù)據(jù)實時數(shù)據(jù)同步備份
常用的邏輯備份主要就是兩種:一種是將數(shù)據(jù)生成為可以完全重現(xiàn)當(dāng)前數(shù)據(jù)庫中的數(shù)據(jù)的insert語句,另一種是將數(shù)據(jù)通過邏輯備份軟件,將數(shù)據(jù)庫表的數(shù)據(jù)以特定分隔符進行分割后記錄在文本中。
對于第一種生成insert語句來說我們可以直接使用mysql自帶的工具mysqldump來完成。這種方式不好之處在于可能導(dǎo)致數(shù)據(jù)的不一致,或是不完整。解決辦法:一個是通過在數(shù)據(jù)庫系統(tǒng)中加入寫入鎖,只提供數(shù)據(jù)庫的查詢服務(wù);第二種是對于支持事務(wù)的存儲引擎來說,INNODB BDB可以通過將整個備份過程控制在一個事務(wù)中,來達到備份數(shù)據(jù)的一致性和完整性;并且可以不用影響到數(shù)據(jù)庫的正常運行。
恢復(fù)方式則是通過mysql<backup.sql直接運行的。
第二種直接生成數(shù)據(jù)格式。占用的空間小,數(shù)據(jù)格式清晰??墒菦]有數(shù)據(jù)庫結(jié)構(gòu)的腳本。不容易控制
實現(xiàn)方式:通過select******* to outfile from***命令來實現(xiàn)?;謴?fù)方式就是通過,load data infile和mysqlimport命令來做。
這一過程相當(dāng)?shù)膹?fù)雜需要實時的進行恢復(fù)測試,保證備份數(shù)據(jù)是可用的
數(shù)據(jù)庫的物理備份,主要的對象是數(shù)據(jù)庫的物理數(shù)據(jù)文件,日志文件以及配置文件等。
4 xtrabackup/ibbackup
xtrabackup --backup --datadir=/var/lib/mysql/ --target-
dir=/data/backups/mysql/
xtrabackup --backup --defaults-file=/etc/my.cnf --target-
dir=/data/backups/mysql/
mysql的備份方式
1.mysqldump
效率比較低,備份和還原的速度都很慢,任何數(shù)據(jù)插入和更新操作都會被掛起
2.mysqlhotcopy
mysqlhotcopy 是專門針對myisam 數(shù)據(jù)表進行備份,備份的過程中,任何數(shù)據(jù)插入和更新操作都會被掛起
3.準備一臺從服務(wù)器,專門做備份(master-slave方式)
4.xtrabackup 是 percona 的一個開源項目,可熱備份innodb ,XtraDB,MyISAM(會鎖表)
Xtrabackup有兩個主要的工具:xtrabackup、innobackupex
xtrabackup只能備份InnoDB和XtraDB兩種數(shù)據(jù)表,而不能備份MyISAM數(shù)據(jù)表
innobackupex-1.5.1則封裝了xtrabackup,是一個腳本封裝,所以能同時備份處理innodb和myisam,但在處理myisam時需要加一個讀鎖
xtra備份原理
記住開始時候的LSN號,然后開始拷備文件,同時運
行一個后臺進程監(jiān)視重做日志,并將變化拷備下來到
xtrabackup_logfile。
innobackupex可以備份myisam表和frm文件。當(dāng)
xtrabackup結(jié)束后,執(zhí)行flush tables with read lock,避
免數(shù)據(jù)更改,然后刷新所有myisam表到磁盤??絺浣Y(jié)
束后,釋放鎖。
mysqlbinlog也是一個恢復(fù)工具,是基于時間點來處理二進制文件的
備份:直接拷備
還原:
ü時間點還原:mysqlbinlog --stop-date="2005-04-20 9:59:59"
/var/log/mysql/bin.123456 | mysql -u root –pmypwd
mysqlbinlog --start-date="2005-04-20 10:01:00"
/var/log/mysql/bin.123456| mysql -u root –pmypwd
日志點還原:
mysqlbinlog --stop-position="368312" /var/log/mysql/bin.123456 \
| mysql -u root -pmypwd
mysqlbinlog --start-position="368315" /var/log/mysql/bin.123456 \
| mysql -u root -pmypwd \
LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,它是Linux環(huán)境下對磁盤分區(qū)進行管理的一種機制。
LSN定義:
日志序號
日志序號 (LSN) 標識特定日志文件記錄在日志文件中的位置。
LSN 由 DB2? 產(chǎn)品中的許多組件用來維護數(shù)據(jù)庫一致性和完整性。除其他作用外,LSN 還對于分區(qū)數(shù)據(jù)庫環(huán)境中的落實和回滾操作、崩潰和前滾恢復(fù)以及數(shù)據(jù)庫操作同步起非常重要的作用。
日志文件中 LSN 的增長率與數(shù)據(jù)庫活動直接相關(guān)聯(lián)。也就是說,隨著事務(wù)發(fā)生并且條目被寫入日志文件,LSN 會不斷增大。數(shù)據(jù)庫中的活動越多,LSN 增長得越快。
日志序號的上限
在 DB2 V9.5 和較早版本中,日志序號 (LSN) 是 6 字節(jié)數(shù)字。從 FP3 開始,LSN 的范圍在 0x0000 0000 0000(首次創(chuàng)建數(shù)據(jù)庫時)到 0xFFFF 0000 0000(約 256 太字節(jié))之間。在 FP3 之前,上限為 0xFFFF FFFF FFFF。隨著記錄被添加到日志文件中,LSN 在數(shù)據(jù)庫生命期不斷增長。