使用innobackupex完成數(shù)據(jù)增量備份及恢復(fù)的步驟
創(chuàng)新互聯(lián)專注于崗巴企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城建設(shè)。崗巴網(wǎng)站建設(shè)公司,為崗巴等地區(qū)提供建站服務(wù)。全流程按需策劃,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
1. 規(guī)劃備份目錄及配置及my.cnf
mkdir /backup/MySQL/full
mkdir /backup/mysql/daily1
mkdir /backup/mysql/daily2
2. 全備:
innobackupex --user=root --password=yhw0715/backup/mysql/full
查看備份完成后的文件:
shell > ls –l /backup/mysql/full
drwxr-x---. 27 root root 4096 Jun 8 20:48 2017-06-08_20-48-23 #在全備目錄下會生成以當(dāng)前日期為命名的文件夾
備份的文件:
shell > ls –l /backup/mysql/full/2017-06-08_20-48-23
drwxr-x---. 2 root root 4096Jun 8 20:48 test
-rw-r-----. 1 root root 722 Jun 8 20:48 ib_buffer_pool
-rw-r-----. 1 root root 79691776 Jun 8 21:07 ibdata1
-rw-r-----. 1 root root 50331648 Jun 8 21:07 ib_logfile0
-rw-r-----. 1 root root 50331648 Jun 8 21:07 ib_logfile1
-rw-r-----. 1 root root 12582912 Jun 8 21:07 ibtmp1
drwxr-x---. 2 root root 4096 Jun 8 20:48 mysql
drwxr-x---. 2 root root 4096 Jun 8 20:48 performance_schema
-rw-r-----. 1 root root 412 Jun 8 20:48 backup-my.cnf
-rw-r-----. 1 root root 24 Jun 8 20:48 xtrabackup_binlog_info
-rw-r--r--. 1 root root 24 Jun 8 21:07 xtrabackup_binlog_pos_innodb
-rw-r-----. 1 root root 115 Jun 8 21:07 xtrabackup_checkpoints
-rw-r-----. 1 root root 479 Jun 8 20:48 xtrabackup_info
-rw-r-----. 1 root root 8388608 Jun 8 21:07 xtrabackup_logfile
其中:
xtrabackup_binlog_info 記錄當(dāng)前備份結(jié)束時的binlog文件名及position,用于日后基于binlog日志恢復(fù)如mysqlbinlog –start-position=154 binlog.000001|mysql –uroot -p。
xtrabackup_binlog_pos_innodb : 沒太搞明白與xtrabackup_binlog_info的區(qū)別
xtrabackup_checkpoints 記錄備份完成時的LSN號,用于增量備份時基于此LSN進行檢查
xtrabackup_info(記錄備份過程的一些信息及binlog位置信息):
uuid = 82aa52a6-4cc6-11e7-bf24-000c29373cd3
name =
tool_name = innobackupex
tool_command = --user=root --password=.../backup/mysql/full/
tool_version = 2.4.1
ibbackup_version = 2.4.1
server_version = 5.7.17-log
start_time = 2017-06-08 20:48:24
end_time = 2017-06-08 20:48:33
lock_time = 0
binlog_pos = filename'slave-binlog.000001', position '154'
innodb_from_lsn = 0
innodb_to_lsn = 10490958
partial = N
incremental = N
format = file
compact = N
compressed = N
encrypted = N
xtrabackup_logfile在備份開始后,首先會記錄當(dāng)前的LSN,xtrabackup會開啟一個監(jiān)控線程,用于監(jiān)控redo log的變化(因在是熱備,可能會產(chǎn)生一些增量的數(shù)據(jù)),在備份結(jié)束后,將產(chǎn)生的redo log備份到xtrabackup_logfile中。在恢復(fù)將xtrabackup_logfile日志進行重做,以達到數(shù)據(jù)備份的一致性。
3. 增量備份
首先插入一些測試數(shù)據(jù)insert into test values(‘a(chǎn)6’);
增量1:
innobackupex --user=root --password=yhw0715--incremental-basedir=/backup/mysql/full/2017-06-07_23-04-50 --incremental/backup/mysql/daily1
再插入一些測試數(shù)據(jù)insert into test values(‘a(chǎn)6’);
增量2:
innobackupex --user=root --password=yhw0715--incremental-basedir=/backup/mysql/daily1/2017-06-07_23-13-23/ --incremental/backup/mysql/daily2
4. 恢復(fù)全備
innobackupex --user=root --password=yhw0715--apply-log --redo-only /backup/mysql/full/2017-06-07_23-04-50
恢復(fù)增量1:
innobackupex --user=root --password=yhw0715--apply-log --redo-only /backup/mysql/full/2017-06-07_23-04-50--incremental-dir=/backup/mysql/daily1/2017-06-07_23-13-23/
恢復(fù)增量2(不需要加--redo-only):
innobackupex --user=root --password=yhw0715--apply-log /backup/mysql/full/2017-06-07_23-04-50--incremental-dir=/backup/mysql/daily2/2017-06-07_23-20-31
將合并完的數(shù)據(jù),整體做一次apply-log
innobackupex --user=root --password=yhw0715--apply-log /backup/mysql/full/2017-06-07_23-04-50
5. 拷貝備份文件到data目錄下:
5.1.stop mysqld
/etc/init.d/mysqld stop
5.2.備份原數(shù)據(jù)目錄
mv /usr/local/mysql/data/usr/local/mysql/data_bak
5.3.創(chuàng)建data目錄
mkdir /usr/local/mysql/data -p
5.4.拷貝備份到/usr/local/mysql/data下
innobackupex --user=root --password=yhw0715--copy-back /backup/mysql/full/2017-06-07_23-04-50
5.5.設(shè)置權(quán)限
chown -R mysql:mysql /usr/local/mysql/data
5.6.啟動mysqld
/etc/init.d/mysqld start
6. 測試是否恢復(fù)成功
從以下查詢結(jié)果看,數(shù)據(jù)恢復(fù)成功了
mysql> select * from test where account='a5' or account='a6';
+---------+
| Account |
+---------+
| a5 |
| a6 |
+---------+
2 rows in set (0.00 sec)
7. innobackupex主要參數(shù)說明
--user 備份數(shù)據(jù)庫的用戶名
--password 備份用戶密碼
--default-file 備份時指定my.cnf文件路徑,如果未指定默認(rèn)/etc/my.cnf
--apply-log 對xtrabackup 的 –prepare參數(shù)的封裝
--redo-only 與apply-log 一起使用,在做備份恢復(fù)階段,重做日志時,只重做已提交日志,rollback未提交的日志。
--copy-back 做數(shù)據(jù)恢復(fù)時,將數(shù)據(jù)文件拷貝到時mysql的data目錄下。
--use-memory 在做恢復(fù)操作時,控制innodb實例使用的內(nèi)存量。
--slave-info 主要用于基于現(xiàn)有的從庫,增加多個從庫的場景時使用,如果帶上此參數(shù),備份目錄下會多一個xtrabackup_slave_info文件,文件內(nèi)容保存現(xiàn)有從庫的主從信息,binlog文件及position,用于新從庫與主庫change master to 時使用。