Xtrabackup中主要包含兩個工具:
xtrabackup:是用于熱備innodb,xtradb表中數(shù)據(jù)的工具,不能備份其他類型的表,也不能備份數(shù)據(jù)表結(jié)構(gòu);
innobackupex:是將xtrabackup進(jìn)行封裝的perl腳本,提供了備份myisam表的能力。
創(chuàng)新互聯(lián)公司長期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為集寧企業(yè)提供專業(yè)的網(wǎng)站制作、成都網(wǎng)站制作,集寧網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
[root@db01 ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
MySQL版本
[root@db01 ~]# mysql -V
mysql Ver 14.14 Distrib 5.6.35, for linux-glibc2.5 (x86_64) using EditLine wrapper
1,安裝包
yum install -y http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
2,查看軟件包是否存在
[root@db01 ~]# yum list|grep percona
3,更新軟件包
yum install percona-xtrabackup-22
4,添加mysql選項,開啟相關(guān)功能(錯誤日志、binlog二進(jìn)制日志,datadir指向,等等)
log-bin=mysql-bin
datadir=/application/mysql/data
log-error=/application/mysql/data/db01.err
3.1 基本語法:
[root@db01 mysql]# innobackupex --user=root --password=123456 --socket=/tmp/mysql.sock --defaults-file=/etc/my.cnf /tmp/
語法解釋:
--user=數(shù)據(jù)庫用戶
--password=數(shù)據(jù)庫密碼
--socket=指定socket
--default-file=指定配置文件
/tmp/ 最后面是存放位置
顯示如下內(nèi)容,基本上算是備份成功了
innobackupex: Backup created in directory '/tmp/2017-12-13_12-06-55'
innobackupex: MySQL binlog position: filename 'mysql-bin.000004', position 120
171213 12:07:07 innobackupex: Connection to database server closed
171213 12:07:07 innobackupex: completed OK!
3.2 查看備份文件
[root@db01 mysql]# ll /tmp/2017-12-13_12-06-55/
各文件說明:
(1)xtrabackup_checkpoints ----備份類型(如完全或增量)、備份狀態(tài)(如是否已經(jīng)沒prepare狀態(tài))和LSN(日志序列號)范圍信息
每個InnoDB頁(通常大小為16K)都會包含一個日志序列號,即LSN,LSN是整個數(shù)據(jù)庫系統(tǒng)的系統(tǒng)版本號,每個頁面相關(guān)的LSN能夠表名此頁面最近是如何發(fā)生改變的。
backup_type = full-backuped
from_lsn = 0
to_lsn = 2097320
last_lsn = 2097320
compact = 0
(2)xtrabackup_binlog_info ----mysql服務(wù)器當(dāng)前正在使用的二進(jìn)制日志及備份這一刻為二進(jìn)制日志事件的位置
(3)xtrabackup_pos_innodb ----二進(jìn)制日志及用于InnoDB或XtraDB表的二進(jìn)制日志的當(dāng)前posistion。
(4)xtrabackup_binary ----備份中用到的xtrabackup的可執(zhí)行文件
(5)backup-my.cnf ---- 備份命令用到的配置選項信息;
3.3 注意:
在使用innobackupex命令備份時嗎還可以使用--no-timestamp選項來阻止命令自動創(chuàng)建一個以時間命名的目錄
innobackupex命令將會創(chuàng)建一個BACKUP-DIR目錄來存儲備份數(shù)據(jù)
還需要注意,備份數(shù)據(jù)庫的用戶需要具有相對應(yīng)的權(quán)限,如果要使用一個最小權(quán)限的用戶進(jìn)行備份可以使用以下參數(shù):
mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO ‘bkpuser’@’localhost’;
mysql> FLUSH PRIVILEGES;
1、模擬數(shù)據(jù)
use oldboy
insert into test values(1,'full01');
insert into test values(2,'full02');
insert into test values(3,'full03');
insert into test values(4,'full04');
insert into test values(5,'full05');
select * from test;
mysql> select * from test;
+----+--------+
| id | name |
+----+--------+
| 1 | full01 |
| 2 | full02 |
| 3 | full03 |
| 4 | full04 |
| 5 | full05 |
+----+--------+
5 rows in set (0.00 sec)
2、2018/03/21 0點(diǎn)全量備份
date -s "2018/03/21"
innobackupex --defaults-file=/etc/my.cnf --user=root --password=oldboy123 --socket=/application/mysql-5.6.34/tmp/mysql.sock --no-timestamp /server/backup/new_base_full
3、2018/03/22 0點(diǎn)增量備份
mysql -e "use oldboy;insert into test values(6,'new_inc_one_1');"
mysql -e "use oldboy;insert into test values(7,'new_inc_one_2');"
mysql -e "select * from oldboy.test;"
+----+---------------+
| id | name |
+----+---------------+
| 1 | full01 |
| 2 | full02 |
| 3 | full03 |
| 4 | full04 |
| 5 | full05 |
| 6 | new_inc_one_1 |
| 7 | new_inc_one_2 |
+----+---------------+
第一次增量備份
date -s "2018/03/22"
innobackupex --defaults-file=/etc/my.cnf --user=root --password=oldboy123 --socket=/application/mysql-5.6.34/tmp/mysql.sock --no-timestamp --incremental-basedir=/server/backup/new_base_full --incremental /server/backup/new_one_inc
4、2018/03/23 0點(diǎn)增量備份
mysql -e "use oldboy;insert into test values(8,'new_inc_two1');"
mysql -e "use oldboy;insert into test values(9,'new_inc_two2');"
mysql -e "select * from oldboy.test;"
第二次增量備份
date -s "2018/03/23"
innobackupex --defaults-file=/etc/my.cnf --user=root --password=oldboy123 --socket=/application/mysql-5.6.34/tmp/mysql.sock --no-timestamp --incremental-basedir=/server/backup/new_one_inc --incremental /server/backup/new_two_inc
5、2018/03/23 0點(diǎn)以后-10點(diǎn)更新數(shù)據(jù)
mysql -e "use oldboy;insert into test values(10,'realbinlog_data_3');"
mysql -e "use oldboy;insert into test values(11,'realbinlog_data_4');"
mysql -e "select * from oldboy.test;"
6、2018/03/23上午10點(diǎn)出故障了
mysql -e "use oldboy;update test set name='oldboy';"
mysql> select * from test;
+----+--------+
| id | name |
+----+--------+
| 1 | oldboy |
| 2 | oldboy |
| 3 | oldboy |
| 4 | oldboy |
| 5 | oldboy |
| 6 | oldboy |
| 7 | oldboy |
| 8 | oldboy |
| 9 | oldboy |
| 10 | oldboy |
| 11 | oldboy |
+----+--------+
11 rows in set (0.00 sec)
建議停庫:/etc/init.d/mysqld stop
恢復(fù)數(shù)據(jù)庫:
7、合并數(shù)據(jù)文件
innobackupex --apply-log --use-memory=32M --redo-only /server/backup/new_base_full/
innobackupex --apply-log --use-memory=32M --redo-only --incremental-dir=/server/backup/new_one_inc /server/backup/new_base_full/
innobackupex --apply-log --use-memory=32M --incremental-dir=/server/backup/new_two_inc /server/backup/new_base_full/
8、開始恢復(fù)
cd /application/mysql
mv data data.11
cp -a /server/backup/new_base_full data
chown -R mysql.mysql data
9、處理binlog
[root@db02 mysql]# cat /server/backup/new_two_inc/xtrabackup_binlog_info
oldboy-bin.000006 2286
mysqlbinlog -d oldboy --start-position=2286 oldboy-bin.000006 -r bin.sql
mysqlbinlog -d oldboy oldboy-bin.000003 oldboy-bin.000004 oldboy-bin.000005 >>bin.sql
cd /application/mysql/logs/
mysqlbinlog -d oldboy --start-position=2286 oldboy-bin.000006 -r /server/backup/new_bin.sql
刪除update一行。update test set name='oldboy'
10、開啟防火墻iptables
iptables -I INPUT ! -s $服務(wù)器IP -p tcp -j DROP
11、恢復(fù)增量sql到數(shù)據(jù)庫
[root@db02 tools]# mysql oldboy </server/backup/new_bin.sql
[root@db02 tools]# mysql -e "select * from oldboy.test;"
+----+-------------------+
| id | name |
+----+-------------------+
| 1 | full01 |
| 2 | full02 |
| 3 | full03 |
| 4 | full04 |
| 5 | full05 |
| 6 | new_inc_one_1 |
| 7 | new_inc_one_2 |
| 8 | new_inc_two1 |
| 9 | new_inc_two2 |
| 10 | realbinlog_data_3 |
| 11 | realbinlog_data_4 |
+----+-------------------+
停庫
610 Dec 13 16:04 xtrabackup_info
[root@db01 data]# \rm -rf *
1,恢復(fù)數(shù)據(jù)庫
innobackupex --user=root --password=123456 --socket=/tmp/mysql.sock --defaults-file=/etc/my.cnf --copy-back /tmp/2017-12-13_15-23-04/
2.刪除data下文件內(nèi)容
cd /application/mysql
cd data/
\rm -rf *
3,恢復(fù)之后,要賦予data目錄權(quán)限
[root@db01 mysql]# chown -R mysql.mysql /application/mysql/data/
/etc/init.d/mysqld start
標(biāo)題名稱:Xtarbakcup實現(xiàn)對MySQL的“熱”備份
文章鏈接:http://aaarwkj.com/article30/pdhoso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、App開發(fā)、網(wǎng)站制作、企業(yè)建站、搜索引擎優(yōu)化、企業(yè)網(wǎng)站制作
聲明:本網(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)