MySQL-Xtrabackup备份还原
前言
通常我們都是使用xtrabackup工具來備份數(shù)據(jù)庫,它是一個(gè)專業(yè)的備份工具,先來簡單介紹下它。
Xtrabackup
percona提供的mysql數(shù)據(jù)庫備份工具,惟一開源的能夠?qū)nnodb和xtradb數(shù)據(jù)庫,它的增量備份不是基于二進(jìn)制日志文件來還原數(shù)據(jù)的,是基于mysql數(shù)據(jù)塊。
特點(diǎn):
- 備份還原過程快速、可靠
- 備份過程不會(huì)打斷正在執(zhí)行的事務(wù)
- 能夠基于壓縮等功能節(jié)約磁盤空間和流量
- 自動(dòng)實(shí)現(xiàn)備份檢驗(yàn)
- 開源,免費(fèi)
Xtrabackup用法
備份時(shí)選項(xiàng)
xtrabackup --backup
--user:該選項(xiàng)表示備份賬號(hào)
--password:該選項(xiàng)表示備份的密碼
--host:該選項(xiàng)表示備份數(shù)據(jù)庫的地址
--databases:該選項(xiàng)接受的參數(shù)為數(shù)據(jù)名,如果要指定多個(gè)數(shù)據(jù)庫,彼此間需要以空格隔開;如:"xtra_test dba_test",同時(shí),在指定某數(shù)據(jù)庫時(shí),也可以只指定其中的某張表。如:"mydatabase.mytable"。該選項(xiàng)對(duì)innodb引擎表無效,還是會(huì)備份所有innodb表
--defaults-file:該選項(xiàng)指定從哪個(gè)文件讀取MySQL配置,必須放在命令行第一個(gè)選項(xiàng)位置
--incremental:該選項(xiàng)表示創(chuàng)建一個(gè)增量備份,需要指定--incremental-basedir
--incremental-basedir:該選項(xiàng)指定為前一次全備份或增量備份的目錄,與--incremental同時(shí)使用
--incremental-dir:該選項(xiàng)表示還原時(shí)增量備份的目錄
--include=name:指定表名,格式:databasename.tablename
Prepare于準(zhǔn)備選項(xiàng)
prepare
--apply-log:此選項(xiàng)作用是通過回滾未提交的事務(wù)及同步已經(jīng)提交的事務(wù)至數(shù)據(jù)文件使數(shù)據(jù)文件處于一致性狀態(tài)
--use-memory:該選項(xiàng)表示和--apply-log選項(xiàng)一起使用,prepare 備份的時(shí)候,xtrabackup做crash recovery分配的內(nèi)存大小,單位字節(jié)。也可(1MB,1M,1G,1GB),推薦1G
--export:表示開啟可導(dǎo)出單獨(dú)的表之后再導(dǎo)入其他Mysql中
--redo-only:此選項(xiàng)在prepare base full backup,往其中merge增量備份時(shí)候使用
還原時(shí)選項(xiàng)
--copy-back:復(fù)制
--move-back:移動(dòng)
備份生產(chǎn)的相關(guān)文件
1)xtrabackup_info:innobackupex工具執(zhí)行時(shí)的相關(guān)信息,包括版本,備份選項(xiàng),備份時(shí)長,備份LSN,BINLOG的位置
2)xtrabackup_checkpoints:備份類型(如完全或增量)、備份狀態(tài)(如是否已經(jīng)為prepared狀態(tài))和LSN(日志序列號(hào))范圍信息,每個(gè)InnoDB頁(通常為16k大小)都會(huì)包含一個(gè)日志序列號(hào),即LSN。LSN是整個(gè)數(shù)據(jù)庫系統(tǒng)的系統(tǒng)版本號(hào),每個(gè)頁面相關(guān)的LSN能夠表明此頁面最近是如何發(fā)生改變的
3)xtrabackup_binlog_info:MySQL服務(wù)器當(dāng)前正在使用的二進(jìn)制日志文件及至備份這一刻為止二進(jìn)制日志事件的位置,可利用實(shí)現(xiàn)基于binlog的恢復(fù)
4)backup-my.cnf:備份命令用到的配置選項(xiàng)信息
5)xtrabackup_logfile:備份生成的日志文件
還原注意事項(xiàng)
1.datadir目錄必須為空。除非指定innobackupex --force-non-emptydirectorires選項(xiàng)指定,否則--copy-backup選項(xiàng)不會(huì)覆蓋
2.restore還原之前,必須shutdown停止 MySQL服務(wù),不能將一個(gè)運(yùn)行中的實(shí)例restore到datadir目錄中
3.修改恢復(fù)文件的權(quán)限為mysql
4.最后一次增量備份還原要回滾事務(wù)
5.二進(jìn)制安裝的mysql要是出現(xiàn)停止不了服務(wù)就用killall –9 mysqld 殺掉進(jìn)程進(jìn)而實(shí)現(xiàn)停止服務(wù)
實(shí)戰(zhàn)
規(guī)劃
1、兩臺(tái)主機(jī)17和37,其中17當(dāng)主mysql服務(wù)器,37用來還原的主機(jī),
2、目錄,1個(gè)存放完整備份的目錄,N個(gè)存放增量備份的目錄
說明:
full目錄:? 存放完全備份
inc1目錄:存放第一次的增量備份
inc2目錄:存放第二次的增量備份
備份階段
1、完全備份數(shù)據(jù)庫
xtrabackup -pcentos --backup --target-dir=/backups/full/ # --backup表示備份 # --target-dir=填寫備份到哪里2、往表中增加數(shù)據(jù)
mysql -pcentos hellodb -e "insert students (name,age) values('gaodao01',20)"
3、第一次增量備份
4、再次修改數(shù)據(jù)表
mysql -pcentos hellodb -e "insert students (name,age) values('gaodao02',21)"5、第二次增量備份
xtrabackup -pcentos --backup --target-dir=/backups/inc2/ --incremental-basedir=/backups/inc1/還原階段
說明:還原的時(shí)候我們要考慮到前幾次不要回滾,最后一次還原要回滾,還原主機(jī)要安裝xtrabackup工具
1、把備份的目錄傳送到要還原的主機(jī)上
scp -r /backups/ 192.168.43.37:/2、停服務(wù)并清空mysql數(shù)據(jù)
systemctl stop mysqld rm -rf /app/mysql/*3、完全備份的預(yù)處理
xtrabackup --prepare --apply-log-only --target-dir=/backups/full# --prepare 表示還原 # --apply-log-only 表示不回滾4、第一次增量備份預(yù)處理
xtrabackup --prepare --apply-log-only --target-dir=/backups/full --incremental-dir=/backups/inc1 # 同樣不回滾5、第二次增量備份預(yù)處理
xtrabackup --prepare --target-dir=/backups/full --incremental-dir=/backups/inc2 # 這是最后一次,所以要回滾不完整的事務(wù)6、復(fù)制處理好的數(shù)據(jù)到真正的存放數(shù)據(jù)庫目錄下
xtrabackup --copy-back --target-dir=/backups/full # 它會(huì)根據(jù)你的配置文件my.cnf來讀取存放位置7、修改數(shù)據(jù)庫文件權(quán)限
chown -R mysql.mysql /app/mysql/以上還原到了備份時(shí)的狀態(tài),我們備份完二次增量后又加了條記錄,還沒來得急三次增量備份就宕機(jī)了,所以再次利用二進(jìn)制日志文件還原到最新狀態(tài)
8、通過二進(jìn)制文件還原到最新狀態(tài)
1)以下圖中文件記錄了還原到的位置
2)從原主機(jī)導(dǎo)出二進(jìn)制文件日志
mysqlbinlog --start-position=1039 /app/logs/mysql-bin.000003 >/app/binlog.sql3)scp傳送到目標(biāo)主機(jī)來還原
- 首先在配置文件中加入禁止所有人訪問選項(xiàng)
- 啟動(dòng)服務(wù)
- 導(dǎo)入二進(jìn)制日志
4)進(jìn)入數(shù)據(jù)庫驗(yàn)證
5)OK 恢復(fù)完成,刪除配置文件中的skip-networking并重啟服務(wù)
systemctl restart mysqld更多精彩內(nèi)容請(qǐng)移步
http://www.cnblogs.com/xsuid/
轉(zhuǎn)載于:https://www.cnblogs.com/xsuid/p/9426257.html
總結(jié)
以上是生活随笔為你收集整理的MySQL-Xtrabackup备份还原的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: rpm(centos)软件包管理工具
- 下一篇: You are running Comp