使用innobackupex線上增量備份和再增量備份及恢復mysql資料庫
一、安裝解壓
1.安裝資料庫
官網:
下載地址:/x86_64/percona-xtrabackup-2.0.8-587.tar.gz
yum -y install mysql mysql-libs mysql-server -python
2.建立資料庫
create database dotatest;
mysql -uroot -p dotatest > zhan_data.sql
python mysql_update.py --host localhost --user root --passwd "" --db
dotatest
use dotatest;
show tables;
desc item;
insert into item (player, item, count) values (1, 1, 1 ); 插入一條資料
insert into item (player, item, count) values (2, 2, 2 );
select * from item;
3.安裝依賴包(如果安裝新版本需要安裝)
yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool ncurses-devel zlib-devel libgcrypt libgcrypt-devel perl-Time-HiRes
4.解壓安裝
[root@localhost home]# tar xf
percona-xtrabackup-2.0.8-587.tar.gz
[root@localhost home]# mysql --version
mysql Ver 14.14 Distrib 5.1.61, for
redhat-linux-gnu (x86_64) using readline 5.1
[root@localhost percona-xtrabackup-2.0.8]#
pwd
/home/percona-xtrabackup-2.0.8
[root@localhost percona-xtrabackup-2.0.8]# cp bin/
innobackupex xbstream xtrabackup_51 xtrabackup_56
innobackupex-1.5.1 xtrabackup xtrabackup_55
[root@localhost percona-xtrabackup-2.0.8]# cp bin/innobackupex
/usr/bin/
[root@localhost percona-xtrabackup-2.0.8]# cp bin/xtrabackup* /usr/bin/
二、常規備份檔案以及對單個資料庫備份
備份全部資料庫
[root@localhost /]# mkdir /home/data/backup/
[root@localhost /]# innobackupex --defaults-file=/etc/my.cnf --user=root /home/data/backup/
--defaults-file 指定mysql的配置檔案
--user 指定使用者
/home/data/backup/ 備份檔案的路徑
需要注意的是 如果不指定--defaults-file
預設會讀取/etc/my.cnf。如果你的配置檔案是自定義的,那麼一定要指定目錄,然後會在目錄下建立一個時間戳的目錄(我們本次建立的/home/data/backup/2014-03-11_11-08-23)
檢視備份是否成功
[root@localhost /]# cd /home/data/backup/2014-03-11_11-08-23/
[root@localhost 2014-03-11_11-08-23]#
pwd
/home/data/backup/2014-03-11_11-08-23
[root@localhost 2014-03-11_11-08-23]# ls
backup-my.cnf ibdata1 test xtrabackup_binlog_info xtrabackup_logfile
dotatest mysql xtrabackup_binary xtrabackup_checkpoints zabbix
[root@localhost 2014-03-11_11-08-23]#
只針對一個資料庫備份
--database 是指定需要備份的資料庫
[root@localhost ~]# innobackupex --user=root
--defaults-file=/etc/my.cnf --database=dotatest /home/data/backup/
三、常規恢復資料庫
恢復之前先停止資料庫,並且要刪除資料和日誌檔案
01.首先停止資料庫
[root@localhost 2014-03-11_16-52-44]# /etc/rc.d/init.d/mysqld
stop
Stopping mysqld:
[ OK ]
[root@localhost 2014-03-11_16-52-44]#
02.備份刪除mysql檔案
[root@localhost lib]# cp -a mysql/ mysql.bak
[root@localhost lib]# ls
alternatives dav dhclient
games misc mysql
nfs plymouth postfix
random-seed rpm stateles
authconfig dbus fprint
logrotate.status mlocate mysql.bak
ntp polkit-1 prelink
readahead rsyslog udev
[root@localhost lib]# cd mysql
[root@localhost mysql]# ls
dotatest ibdata1 ib_logfile0
ib_logfile1 mysql test
zabbix
[root@localhost mysql]# rm -rf *
03.來恢復檔案
恢復檔案分兩步,
第1步是apply-log,為了加快速度,一般建議設定--use-memory,這個步驟完成之後,目錄/backup/mysql/data/2013-10-29_09-05-25下的備份檔案已經準備就緒。
因為我們的檔案比較少,因此我們不需要設定--user-memory產數檔案
第2步是copy-back,即把備份檔案複製至原資料目錄下。
[root@localhost mysql]# innobackupex
--defaults-file=/etc/my.cnf --user=root
--apply-log /home/data/backup/2014-03-11_16-52-44/
[root@localhost mysql]# innobackupex --defaults-file=/etc/my.cnf --user=root
--copy-back /home/data/backup/2014-03-11_16-52-44/
04.修改許可權 啟動服務
[root@localhost lib]# chown mysql:mysql /var/lib/mysql/ -R
[root@localhost lib]# /etc/rc.d/init.d/mysqld start
Starting mysqld: [ OK ]
[root@localhost lib]#
四、配置增量備份
增量備份及其恢復
注意:innobackupex 增量備份僅針對InnoDB這類支援事務的引擎,對於MyISAM等引擎,則仍然是全備。
01.首先在資料庫插入一條資料
mysql> use dotatest;
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> select * from item;
+----+--------+------+-------+
| id | player | item | count |
+----+--------+------+-------+
| 1 | 1 |
1 | 1 |
| 2 | 2 |
2 | 2
|
+----+--------+------+-------+
2 rows in set (0.00 sec)
mysql> insert into item (player, item, count) values (3, 3, 3 );
Query OK, 1 row affected (0.00 sec)
mysql> select * from item;
+----+--------+------+-------+
| id | player | item | count |
+----+--------+------+-------+
| 1 | 1 |
1 | 1 |
| 2 | 2 |
2 | 2 |
| 3 | 3 |
3 | 3
|
+----+--------+------+-------+
3 rows in set (0.00 sec)
mysql>
02.增量備份是基於一個資料庫的全部備份檔案的,在剛才我們備份了一個全備份,我們現在的增量備份就基於剛才的全部備份來做(2014-03-11_16-52-44)
需要注意如下兩個引數:
--incremental-basedir指向全備目錄;
--incremental指向增量備份的目錄;
[root@localhost backup]# innobackupex
--defaults-file=/etc/my.cnf --user=root
--incremental-basedir=/home/data/backup/2014-03-11_16-52-44/ --incremental
/home/data/backup/
……略……
innobackupex: Backup created in directory '/home/data/backup/2014-03-11_17-33-57'
innobackupex: binlog position: filename '', position
140311 17:34:16 innobackupex: completed
OK!
03.檢視是否有備份檔案,最新的配置檔案就是我們剛才的增量備份檔案
[root@localhost backup]#
pwd
/home/data/backup
[root@localhost backup]# ls
2014-03-11_16-52-44
2014-03-11_17-33-57
[root@localhost
backup]#
在如下的檔案中我們可以發現增量備份的檔案from_lsn剛好等於全部備份的to_lsn
[root@localhost 2014-03-11_17-33-57]# cat xtrabackup_checkpoints 增量備份檔案
backup_type = incremental
from_lsn = 657645
to_lsn = 659090
last_lsn = 659090
[root@localhost 2014-03-11_17-33-57]# cat
../2014-03-11_16-52-44/xtrabackup_checkpoints 全域性備份
backup_type = full-prepared
from_lsn = 0
to_lsn = 657645
last_lsn = 657645
[root@localhost 2014-03-11_17-33-57]#
五、在增量備份的基礎上再做增量備份
在備份之前我們在item表中再插入資料
mysql> insert into item (player, item, count) values (4, 4, 4 );
Query OK, 1 row affected (0.03 sec)
mysql> select * from item;
+----+--------+------+-------+
| id | player | item | count |
+----+--------+------+-------+
| 1 | 1 |
1 | 1 |
| 2 | 2 |
2 | 2 |
| 3 | 3 |
3 | 3 |
| 4 | 4 |
4 | 4
|
+----+--------+------+-------+
4 rows in set (0.00 sec)
mysql>
在增量備份的基礎上再做增量備份,我們需要新增如下引數
--incremental-basedir執行上一次增量備份的目錄
如下備份:
[root@localhost 2014-03-11_17-33-57]# innobackupex --defaults-file=/etc/my.cnf
--user=root --incremental-basedir=/home/data/backup/2014-03-11_17-33-57/
--incremental /home/data/backup/
………中間部分略………
innobackupex: Backup created in directory
'/home/data/backup/2014-03-11_18-03-54'
innobackupex: MySQL binlog position: filename '', position
140311 18:04:13 innobackupex: completed
OK!
innobackupex: Backup created in directory '/home/data/backup/2014-03-11_18-10-13'
innobackupex: MySQL binlog position: filename '', position
140311 18:10:31 innobackupex: completed
OK!
然後來檢視lsn號來:
[root@localhost 2014-03-11_18-10-13]# cat
xtrabackup_checkpoints
backup_type = incremental
from_lsn = 659090
to_lsn = 659214
last_lsn = 659090
[root@localhost 2014-03-11_18-10-13]# cat
../2014-03-11_17-33-57/
backup-my.cnf ibdata1.meta xtrabackup_binary xtrabackup_logfile
dotatest/ mysql/ xtrabackup_binlog_info zabbix/
ibdata1.delta test/
xtrabackup_checkpoints
[root@localhost 2014-03-11_18-10-13]# cat
../2014-03-11_17-33-57/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 657645
to_lsn = 659090
last_lsn = 659090
[root@localhost 2014-03-11_18-10-13]#
六、恢復增量資料庫(這裡是模擬整個資料庫損壞,透過一級一級恢復增量,最後恢復全備)
停止資料庫
[root@localhost backup]# /etc/rc.d/init.d/mysqld stop
Stopping mysqld:
[ OK ]
[root@localhost backup]#
備份資料庫
[root@localhost lib]# mv mysql mysql.bak.2
[root@localhost lib]# pwd
/var/lib
[root@localhost lib]#
這個恢復比恢復全部備份稍微複雜點,接下來我們來恢復,如果有多個增量備份,需要疊加就可以
innobackupex --apply-log --redo-only BASE-DIR BASE-DIR指完整的全部備份目錄
innobackupex --apply-log --redo-only BASE-DIR
--incremental-dir=INCREMENTAL-DIR-1
INCREMENTAL-DIR-1指第一次增量備份的目錄
innobackupex --apply-log BASE-DIR --incremental-dir=INCREMENTAL-DIR-2 BASE-DIR指完整的全部備份目錄 INCREMENTAL-DIR-2第二次增量備份的目錄
01.在我們的環境中我們來執行如下操作,因為我們只有兩次的增量備份如下即可:
innobackupex --apply-log --redo-only
/home/data/backup/2014-03-11_16-52-44/
innobackupex --apply-log --redo-only /home/data/backup/2014-03-11_16-52-44
--incremental-dir=/home/data/backup/2014-03-11_17-33-57/
innobackupex --apply-log /home/data/backup/2014-03-11_16-52-44/
--incremental-dir=/home/data/backup/2014-03-11_18-10-13/
02.回滾未完成的日誌(需要注意的是恢復的時候,我們只恢復全備份檔案就可以了)
innobackupex --apply-log
/home/data/backup/2014-03-11_16-52-44/
innobackupex --copy-back /home/data/backup/2014-03-11_16-52-44/
03.授權啟動
[root@localhost lib]# chown mysql:mysql /var/lib/mysql
-R
[root@localhost lib]# /etc/rc.d/init.d/mysqld start
Starting mysqld:
[ OK ]
[root@localhost lib]#
04.檢查備份是否回來
mysql> use dotatest;
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> select * from item;
+----+--------+------+-------+
| id | player | item | count |
+----+--------+------+-------+
| 1 | 1 |
1 | 1 |
| 2 | 2 |
2 | 2 |
| 3 | 3 |
3 | 3 |
| 4 | 4 |
4 | 4
|
+----+--------+------+-------+
4 rows in set (0.00 sec)
mysql>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29893219/viewspace-1851462/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【MySql】innobackupex增量備份和恢復MySql
- 【MySql】innobackupex 增量備份和恢復MySql
- mysql innobackupex增量備份恢復MySql
- mysql之 Innobackupex(全備+增量)備份恢復MySql
- 【備份恢復】noarchive模式下使用增量備份恢復資料庫Hive模式資料庫
- 【MySql】innobackupex 增量備份的bugMySql
- INNOBACKUPEX的全備和增量備份恢復學習筆記筆記
- MySQL增量備份的指令碼(innobackupex)MySql指令碼
- NOARCHIVELOG 模式下使用增量備份恢復資料庫Hive模式資料庫
- mysql 利用binlog增量備份、恢復MySql
- MySQL增量備份與恢復例項MySql
- 【Xtrabackup】Xtrabackup全備、增量備份及恢復示例
- Mysql備份系列(3)--innobackupex備份mysql大資料(全量+增量)操作記錄MySql大資料
- 【RMAN】使用增量備份更新資料庫備份映象資料庫
- Percona XtraBackup 2.4 innobackupex全量、增量備份恢復流程
- innobackupex備份mysql大資料(全量+增量)操作記錄MySql大資料
- Mysql增量備份MySql
- 【Mysql】xbackup全量與增量備份恢復MySql
- oracle資料庫備份之exp增量備份Oracle資料庫
- 2 Day DBA-管理方案物件-執行備份和恢復-備份資料庫-資料檔案增量備份物件資料庫
- oracle 增量備份恢復驗證Oracle
- MySQL 5.6 xtrabackup 全量和增量的備份和恢復MySql
- 使用innobackupex備份mysql資料庫MySql資料庫
- Mysql資料庫備份及恢復MySql資料庫
- innobackupex 備份MySQL資料庫MySql資料庫
- MySQL innobackupex全量備份恢復MySql
- Oracle的差異增量備份和累積增量備份Oracle
- xtrabackup和innobackuppex的安裝和備份(含增量備份)已經恢復
- 使用Mysqldump備份和恢復MySQL資料庫MySql資料庫
- 轉:DB2離線和線上全備、增量備份及恢復的操作步驟DB2
- rman備份和增量備份指令碼指令碼
- MySQL 定時增量備份MySql
- Oracle的差異增量備份和累積增量備份(zt)Oracle
- 【備份恢復】從備份恢復資料庫資料庫
- 使用RMAN增量備份前滾STANDBY資料庫資料庫
- dg丟失歸檔,使用rman增量備份恢復
- Oracle之差異增量備份與累積增量備份Oracle
- 利用innobackupex備份集恢復指定庫