mysql備份及xtrabackup安裝
一、資料庫備份種類
1、完全備份
這可能是大多數人常用的方式,它可以備份整個資料庫,包含使用者表、系統表、索引、檢視和儲存過程等所有資料庫物件。但是呢,它也需要花費更多的時間和空間,
所以,一般推薦一週做一次完全備份。
2、事務日誌備份
事務日誌是一個單獨的檔案,它記錄資料庫的改變,備份的時候只需要複製自上次備份以來對資料庫所做的改變,所以只需要很少的時間。
為了使資料庫具有魯棒性,推薦每小時甚至更頻繁的備份事務日誌。
3、差異備份
也叫增量備份。它是隻備份資料庫一部分的另一種方法,它不使用事務日誌,相反,它使用整個資料庫的一種新映象。
它比最初的完全備份小,因為它只包含自上次完全備份以來所改變的資料庫。它的優點是儲存和恢復速度快。推薦每天做一次差異備份。
4、檔案備份
資料庫可以由硬碟上的許多檔案構成。如果這個資料庫非常大,並且一個晚上也不能將它備份完,那麼可以使用檔案備份每晚備份資料庫的一部分。
由於一般情況下資料庫不會大到必須使用多個檔案儲存,所以這種備份不是很常用。
二、資料庫備份工具
1、mysqldump
適用於資料量比較小的備份工作。
mysqldump備份的是sql語句,所以在恢復的時候關閉二進位制日誌檔案,縮短恢復時間。
2、xtrabackup
xtrabackup是Percona公司推出的一款熱備份工具,備份的時候不影響資料讀寫操作,
是商業工具HotBackup的一個替代(現在應該叫MySQL Enterprise Backup)這個工具不止可以備份InnoDB還可以備份MyISAM等等
適用於中大型資料庫備份工作,推薦使用。
三、xtrabackup安裝使用
本文采用yum方式安裝,中間所有依賴庫都選擇 Y ,也可以使用wget或者本地下載等方式。這裡就不贅述了。
#yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
#yum list | grep percona
#yum list | grep percona-xtrabackup
#yum install percona-xtrabackup.x86_64
#xtrabackup --help 可以執行help就說明安裝成功了。
注意,install的時候可能會出錯,那麼就按照提示的依賴去下載安裝就可以,我報的是
Error: Package: percona-xtrabackup -2.3.2-1.el6.x86_64 (percona-release-x86_64)
Requires: libev.so.4()(64bit)
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
意思是缺少64位的libev.so.4,通過http://rpmfind.net/linux/RPM/index.html一個對應的rpm包下載就可以.我下載了兩個,有一個可以用.所以大家可以嘗試.
wget ftp://rpmfind.net /linux/epel/6/x86_64/libev-4.03-3.el6.x86_64.rpm
rpm -ivh libev-4.03-3.el6.x86_64.rpm
還有可能出現Can’t locate Time/HiRes.pm in @INC錯誤
同樣下載執行就解決了yum -y install perl-Time-HiRes
再次執行
yum install percona-xtrabackup.x86_64
按裝成功
#xtrabackup --help
可以執行help就說明安裝成功了。
xtrabackup主要包含兩個工具
1 xtrabackup
支援innodb、xtradb
不支援myisam
只備份ibd檔案,支援壓縮遠端備份frm
2 innobackupex
本身是Hot Backup指令碼修改而來,支援innodb、xtradb、myisam(備份MyISAM需要加讀鎖.)
備份所有檔案,支援壓縮遠端備份
支援單庫,多表,單表備份
一些重要引數
–defaults-file
預設配置檔案的路徑,如果不該引數,xtrabackup將從依次從以下位置查詢配置檔案/etc/my.cnf、/etc/mysql/my.cnf、/usr/local/etc/my.cnf、~/.my.cnf,
並讀取配置檔案中的[mysqld]和[xtrabackup]配置段。[mysqld]中只需要指定datadir、innodb_data_home_dir、innodb_data_file_path、innodb_log_group_home_dir、
innodb_log_files_in_group、innodb_log_file_size6個引數即可讓xtrabackup正常工作
–defaults-extra-file=#
如果使用了該引數,在讀取了全域性配置檔案之後,會再讀取這裡指定的配置檔案
–target-dir=name
備份檔案的存放目錄路徑
–backup
實施備份到target-dir
–prepare
實施對備份檔案進行恢復前的準備(生成InnoDB log file)
–print-param
列印備份或恢復時需要的引數
–apply-log prepare 預先恢復引數
–copy-back datadir 將資料庫備份檔案copy到mysql資料目錄
–remote-host=HOSTNAME 通過ssh將備份資料儲存到遠端(HOSTNAME)資料庫上
–use-memory 可選,控制prepare時innodb例項使用的記憶體量,當伺服器記憶體大的時候加快備份效應
–include=REGEXP test.* test1,test2 單獨備份表
–databases=LIST 多個數據庫
–slave-info 從庫備份從庫完後生成日誌檔案 xtrabackup_slave_info change master to master_log_file,log_pos
–safe-slave-backup 備份會暫停slave執行緒
–suspend-at-end
在target-dir目錄下產生一個xtrabackup_suspended檔案,將xtrabackup程序掛起,不停地將資料檔案的變化同步到備份檔案,直到使用者手工刪除xtrabackup_suspended檔案
–throttle=#
每秒IO次數,限制backup時使用的I/O操作量,使備份對資料庫正常業務的影響最小化
–log-stream
該引數在backup的時候使用,將xtrabackup_logfile的內容輸出到標準輸出,使用該引數時會自動使用suspend-at-end引數,innobackupex指令碼的stream 模式會使用該引數。
–incremental-lsn=name
增量備份時只拷貝LSN比該引數指定值新的ibd pages,前次備份到了哪個LSN可以看前次備份集的xtrabackup_checkpoints檔案
–incremental-basedir=name
該引數在backup的時候使用,備份比該引數指定位置的備份集新的idb pages
–incremental-dir=name
該引數在prepare的時候使用,指定prepare時產生的.delta 檔案和日誌檔案的存放路徑
–tables=name
在備份file-per-table型別的資料檔案時使用,使用正則表示式指定需要備份的innodb表
–datadir=name
MySQL資料庫的資料檔案目錄。
–no-timestamp
在進行備份的時候,通過$(date +%Y%m%d)來獲取日期定義目錄名字的方式需要加此引數
–parallel=4 並行個數,根據主機配置選擇合適的,預設是1個,多個可以加快備份速度。