目录
1、工具介绍
2、工具安装
3、备份策略及准备测试数据
4、全备份数据
5、增量备份数据
6、灾难恢复
7、总结
安装依赖包及percona-xtrabackup:
12 [root@mariadb ~]# yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL
[root@mariadb ~]# rpm -ivh percona-xtrabackup-2.1.9-744.rhel6.x86_64.rpm? #安装的2.1.9版本
顺便把percona的工具集装上:
12 [root@mariadb ~]# yum -y install perl-IO-Socket-SSL? #percona-toolkit依赖包
[root@mariadb ~]# rpm -ivh percona-toolkit-2.2.13-1.noarch.rpm
3、备份策略及准备测试数据
采用先全备份加增量备份的方案。在利用xtrabackup对innodb表做备份工作时,建议mysql启用“innodb_file_per_table=1”变量,这样使每表都有一个自己的表空间,不然很难进行单表备份和还原。还有一点建议,二进制日志文件就不要与数据文件放在同一个目录了,你不想当数据丢失时,二进制日志也一同丢了。
测试数据:
mysql> SELECT VERSION();
+------------+
| VERSION()? |
+------------+
| 5.5.36-log |
+------------+
1 row in set (0.00 sec)
mysql> SHOW DATABASES; #创建了一个mydb1数据库
+--------------------+
| Database? ? ? ? ? |
+--------------------+
| information_schema |
| mydb1? ? ? ? ? ? ? |
| mysql? ? ? ? ? ? ? |
| performance_schema |
| test? ? ? ? ? ? ? |
+--------------------+
mysql> SELECT * FROM mydb1.tb1; #表中只有一条数据
+----+------+------+
| id | name | age? |
+----+------+------+
|? 1 | tom? |? 10 |
+----+------+------+
创建备份数据存放目录:
[root@mariadb ~]# mkdir -pv /backup/{fullbackup,incremental}
#fullbackup? 存放全备份数据
#incremental 存放增量备份数据
创建复制用户:
mysql> GRANT RELOAD,LOCK TABLES,REPLICATION CLIENT ON *.* TO 'bkuser'@'localhost' IDENTIFIED BY '123456';
mysql> FLUSH PRIVILEGES;
4、全备份数据
[root@mariadb ~]# innobackupex --user=bkuser --password=123456 /backup/fullbackup/
#最后出现“150415 16:30:23? innobackupex: completed OK!”这样的信息表示备份完成
[root@mariadb ~]# ls /backup/fullbackup/2015-04-15_16-30-19/
backup-my.cnf? mysql? ? ? ? ? ? ? xtrabackup_binary? ? ? xtrabackup_logfile
ibdata1? ? ? ? performance_schema? xtrabackup_binlog_info
mydb1? ? ? ? ? test? ? ? ? ? ? ? ? xtrabackup_checkpoints
[root@mariadb ~]# cat /backup/fullbackup/2015-04-15_16-30-19/xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 1644877
last_lsn = 1644877
compact = 0
5、增量备份数据
先做一些数据修改:
mysql> INSERT INTO mydb1.tb1 (name,age) VALUES ('jack',20);
mysql> SELECT * FROM tb1;? #增加一条数据
+----+------+------+
| id | name | age? |
+----+------+------+
|? 1 | tom? |? 10 |
|? 2 | jack |? 20 |
+----+------+------+
做第一次增量备份:
[root@mariadb ~]# innobackupex --user=bkuser --password=123456 --incremental /backup/incremental/ --incremental-basedir=/backup/fullbackup/2015-04-15_16-30-19/
[root@mariadb ~]# ls /backup/incremental/2015-04-15_16-42-00/
backup-my.cnf? mydb1? ? ? ? ? ? ? test? ? ? ? ? ? ? ? ? ? xtrabackup_checkpoints
ibdata1.delta? mysql? ? ? ? ? ? ? xtrabackup_binary? ? ? xtrabackup_logfile
ibdata1.meta? performance_schema? xtrabackup_binlog_info
[root@mariadb ~]# cat /backup/incremental/2015-04-15_16-42-00/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 1644877? #这是全备时的"to_lsn"值
to_lsn = 1645178
last_lsn = 1645178
compact = 0
再做数据修改:
mysql> INSERT INTO mydb1.tb1 (name,age) VALUES ('jason',30);
mysql> SELECT * FROM tb1;
+----+-------+------+
| id | name? | age? |
+----+-------+------+
|? 1 | tom? |? 10 |
|? 2 | jack? |? 20 |
|? 3 | jason |? 30 |
+----+-------+------+
做第二次增量备份:
[root@mariadb ~]# innobackupex --user=bkuser --password=123456 --incremental /backup/incremental/ --incremental-basedir=/backup/incremental/2015-04-15_16-42-00/
#这里的"--incremental-basedir"是指向第一次增量备份的目录
[root@mariadb ~]# ls /backup/incremental/2015-04-15_16-49-07/
backup-my.cnf? mydb1? ? ? ? ? ? ? t