视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
percona-xtrabackup实现数据库备份和灾难恢复
2020-11-09 14:25:12 责编:小采
文档


目录1、工具介绍2、工具安装3、备份策略及准备测试数据4、全备份数据5、增量备份数据6、灾难恢复7、总结1、工具介绍percona-xtrabackup软件包中中包含了两个工具

目录

1、工具介绍

2、工具安装

3、备份策略及准备测试数据

4、全备份数据

5、增量备份数据

6、灾难恢复

7、总结

1、工具介绍

percona-xtrabackup软件包中中包含了两个工具,一个是xtrabackup,另一个是innobackupex,innobackupex由per进行封装,在对innodb表进行备份时会自动调用xtraback工具,所以对InnoDB表做备份的实际是xtrabackup这个工具,xtrabackup也只能对innodb表做备份,这是一个专门对innodb开发的热备工具,而对myisam这样的其他引擎的表则由innobackupex来负责备份,若是全备份加增量的方案,那每次增量innobackupex工具对非innodb表都是全备份且会请求读锁。

xtrabackup对innodb表进行备份时不再只是简单复制文件,而是利用在innodb存储引擎层中的LSN(日志序列号)的新旧来识别这一数据页是否需要备份。

xtraback工具对innodb引擎完美支持真正的热备份,备份好的数据中数据文件与事务日志的文件因innodb cache等因素的存在,所以备份好的数据和事务日志中的数据往往是不一致的,所以,在做数据恢复时需要把事务日志中已提交的事务做redo,没有提交的事务做undo操作,这就是在做数据恢复时要做的准备工作,即prepare。

2、工具安装

系统环境:

[root@mariadb ~]# cat /etc/issue CentOS release 6.4 (Final) Kernel \r on an \m [root@mariadb software]# uname -r 2.6.32-358.el6.x86_

安装依赖包及percona-xtrabackup:

[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_.rpm #安装的2.1.9版本

顺便把percona的工具集装上:

[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 = 14877 last_lsn = 14877 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 = 14877 #这是全备时的"to_lsn"值 to_lsn = 15178 last_lsn = 15178 compact = 0

下载本文
显示全文
专题