Xtarbackup簡介
Xtrabackup是由percona開源的免費(fèi)數(shù)據(jù)庫熱備份軟件,它能對InnoDB數(shù)據(jù)庫和XtraDB存儲引擎的數(shù)據(jù)庫非阻塞地備份(對于MyISAM的備份同樣需要加表鎖);MySQLdump備份方式是采用的邏輯備份,其最大的缺陷是備份和恢復(fù)速度較慢,如果數(shù)據(jù)庫大于50G,mysqldump備份就不太適合。
Xtrabackup優(yōu)點(diǎn)
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比望謨網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式望謨網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋望謨地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。
1)備份速度快,物理備份可靠
2)備份過程不會打斷正在執(zhí)行的事務(wù)(無需鎖表)
3)能夠基于壓縮等功能節(jié)約磁盤空間和流量
4)自動備份校驗(yàn)
5)還原速度快
6)可以流傳將備份傳輸?shù)搅硗庖慌_機(jī)器上
7)在不增加服務(wù)器負(fù)載的情況備份數(shù)據(jù)
Xtrabackup備份原理
備份開始時首先會開啟一個后臺檢測進(jìn)程,實(shí)時檢測mysql redo的變化,一旦發(fā)現(xiàn)有新的日志寫入,立刻將日志記入后臺日志文件xtrabackup_log中,之后復(fù)制innodb的數(shù)據(jù)文件一系統(tǒng)表空間文件ibdatax,復(fù)制結(jié)束后,將執(zhí)行flush tables with readlock,然后復(fù)制.frm MYI MYD等文件,最后執(zhí)行unlock tables,最終停止xtrabackup_log。
Xtrabackup增量備份介紹
xtrabackup增量備份的原理是:
1)、首先完成一個完全備份,并記錄下此時檢查點(diǎn)LSN;
2)、然后增量備份時,比較表空間中每個頁的LSN是否大于上次備份的LSN,若是則備份該頁并記錄當(dāng)前檢查點(diǎn)的LSN。
增量備份優(yōu)點(diǎn):
1)、數(shù)據(jù)庫太大沒有足夠的空間全量備份,增量備份能有效節(jié)省空間,并且效率高;
2)、支持熱備份,備份過程不鎖表(針對InnoDB而言),不阻塞數(shù)據(jù)庫的讀寫;
3)、每日備份只產(chǎn)生少量數(shù)據(jù),也可采用遠(yuǎn)程備份,節(jié)省本地空間;
4)、備份恢復(fù)基于文件操作,降低直接對數(shù)據(jù)庫操作風(fēng)險;
5)、備份效率更高,恢復(fù)效率更高。
安裝
運(yùn)行環(huán)境是centos 7.2
下載XtraBackup:
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.9/binary/redhat/7/x86_64/Percona-XtraBackup-2.4.9-ra467167cdd4-el7-x86_64-bundle.tar
(Percona-XtraBackup-8.0下載:
wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-8.0.4/binary/redhat/7/x86_64/percona-xtrabackup-80-8.0.4-1.el7.x86_64.rpm
依賴:yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool ncurses5-devel perl perl-devel perl-Digest-MD5 perl-Time-HiRes perl-DBD-MySQL libev libev-devel libgcrypt libgcrypt-devel curl curl-devel python-setuptools libarchive-devel)
解壓:tar -xf Percona-XtraBackup-2.4.9-ra467167cdd4-el7-x86_64-bundle.tar
檢查安裝percona-xtrabackup-24-2.4.9-1.el6.x86_64.rpm所需依賴包:
yum -y install percona-xtrabackup-24-2.4.9-1.el6.x86_64.rpm --skip-broken
根據(jù)提示進(jìn)行安裝:
yum -y install perl-* mariadb-libs
還有一個依賴包需要手動下載安裝
wget http://mirror.centos.org/centos/7/extras/x86_64/Packages/libev-4.15-7.el7.x86_64.rpm
安裝完成幾個依賴包,嘗試安裝percona-xtrabackup
yum -y install percona-xtrabackup-24-2.4.9-1.el6.x86_64.rpm
我這顯示正確安裝,沒有報錯。
[root@localhost src]# which xtrabackup
/usr/bin/xtrabackup
[root@localhost src]# innobackupex -v
innobackupex version 2.4.9 Linux (x86_64) (revision id: a467167cdd4)
[root@localhost src]#
mysql創(chuàng)建數(shù)據(jù)庫以及表
mysql> create database home ;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
mysql> create table address (name varchar(10) not null,homeaddress varchar(20) not null);
Query OK, 0 rows affected (0.08 sec)
mysql> use home ;
Database changed
mysql> insert into address values('zhuangsan','guangzhou');
Query OK, 1 row affected (0.02 sec)
mysql> insert into address values('lisi','shanghai');
Query OK, 1 row affected (0.01 sec)
mysql> insert into address values('waner','shenzhen');
Query OK, 1 row affected (0.03 sec)
全量備份:
[root@localhost run]# innobackupex --defaults-file=/etc/my.cnf --user=root --password="123abc" --backup /data/mysqldata
--user :mysql的用戶帳號
--password:為帳號的密碼
/data/mysqldata:數(shù)據(jù)備份目錄
[root@localhost run]# ls /data/mysqldata/2018-03-09_17-25-31/ #在這個目錄中可以看到備份信息,同樣可以看到我們創(chuàng)建的庫的名稱。
[root@localhost ~]# innobackupex --apply-log /data/mysqldata/2018-03-09_17-25-31/ #使用此參數(shù)使相關(guān)數(shù)據(jù)性文件保持一致性狀態(tài)。
恢復(fù):
刪除表信息:
mysql> show databases
-> ;
+------------------------------+
| Database |
+------------------------------+
| information_schema |
| #mysql50#2018-03-09_17-25-31 |
| home |
| mysql |
| performance_schema |
| sys |
+------------------------------+
6 rows in set (0.09 sec)
mysql> use home;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+----------------+
| Tables_in_home |
+----------------+
| address |
+----------------+
1 row in set (0.00 sec)
mysql> drop table address;
Query OK, 0 rows affected (0.02 sec)
mysql> select * from address
->;
ERROR 1146 (42S02): Table 'home.address' doesn't exist
mysql>
恢復(fù)之前必須保證數(shù)據(jù)目錄為空,即mysqldata目錄。由于之前的備份數(shù)據(jù)在mysqldata目錄中,所以需要將里面的數(shù)據(jù)copy出來,確保mysqldata目錄是空的。才能正?;謴?fù)數(shù)據(jù)。要不然會報mysqldata目錄非空錯誤。
[root@localhost mysqldata]# innobackupex --defaults-file=/etc/my.cnf --copy-back /data/mysqldata.bak/2018-03-09_17-25-31/
所遇問題處理 注:
恢復(fù)數(shù)據(jù)后,啟動mysql出現(xiàn)報錯,無法啟動。
[root@localhost mysqldata]# service mysqld start
Starting MySQL.. ERROR! The server quit without updating PID file (/var/run/mysqld/mysqld.pid).
檢查過/var/run/mysqld目錄沒問題,進(jìn)入恢復(fù)數(shù)據(jù)文件目錄和之前的數(shù)據(jù)進(jìn)行對比,發(fā)現(xiàn)所以數(shù)據(jù)的所有者不是mysql而是root
修改恢復(fù)目錄的數(shù)據(jù)權(quán)限
[root@localhost data]# chown -R mysql:mysql mysqldata
重新啟動mysql,正常啟動
查看數(shù)據(jù)是否恢復(fù)。
數(shù)據(jù)恢復(fù)正常。
增量備份與恢復(fù):
新插入一些數(shù)據(jù),創(chuàng)建用于增量備份的數(shù)據(jù),用來模擬刪除掉了全備后的數(shù)據(jù),能否通過增量備份文件來恢復(fù)。
mysql> select * from address;
+-----------+-------------+
| name | homeaddress |
+-----------+-------------+
| zhuangsan | guangzhou |
| lisi | shanghai |
| waner | shenzhen |
| jinjin | jiangxi |
| xiaoxiong | xi`an |
| meimei | fujian |
+-----------+-------------+
6 rows in set (0.00 sec)
mysql>
增量備份:
[root@localhost mysqldata.bak]# innobackupex --defaults-file=/etc/my.cnf --user=root --password=123abc --incremental /data/mysqldata --incremental-basedir=/data/mysqldata.bak/2018-03-09_17-25-31
--incremental /data/mysqldata 指定增量備份文件存放目錄
--incremental-basedir=/data/mysqldata.bak/2018-03-09_17-25-31 指定上一次全量備份或增量備份的存放目錄
顯示以下內(nèi)容說明成功:
180323 14:54:20 Executing UNLOCK TABLES
180323 14:54:20 All tables unlocked
180323 14:54:20 [00] Copying ib_buffer_pool to /data/mysqldata/2018-03-23_14-54-12/ib_buffer_pool
180323 14:54:20 [00] ...done
180323 14:54:20 Backup created in directory '/data/mysqldata/2018-03-23_14-54-12/'
180323 14:54:20 [00] Writing /data/mysqldata/2018-03-23_14-54-12/backup-my.cnf
180323 14:54:20 [00] ...done
180323 14:54:20 [00] Writing /data/mysqldata/2018-03-23_14-54-12/xtrabackup_info
180323 14:54:20 [00] ...done
xtrabackup: Transaction log of lsn (2564189) to (2564198) was copied.
180323 14:54:20 completed OK!
[root@localhost mysqldata.bak]#
查看備份情況
刪除一條數(shù)據(jù)測試增量恢復(fù)
在恢復(fù)數(shù)據(jù)之前記得關(guān)閉數(shù)據(jù)庫服務(wù)。
文章題目:MySQL-Xtrabackup安裝及所遇問題處理
分享網(wǎng)址:http://jinyejixie.com/article6/ggeeog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、外貿(mào)建站、品牌網(wǎng)站設(shè)計、網(wǎng)站內(nèi)鏈、、建站公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)