热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PerconaXtrabackup实现数据库备份和灾难恢复

percona-xtrabackup软件包中中包含了两个工具,一个是xtrabackup,另一个是innobackupex,innobackupex由per进行封装,在对innod

percona-xtrabackup软件包中中包含了两个工具,一个是xtrabackup,另一个是innobackupex,innobackupex由per进行封装,在对innod

目录
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_64

安装依赖包及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

推荐阅读
  • 本文介绍了在CentOS 6.4系统中安装MySQL 5.5.37时遇到的启动失败和PID文件问题,并提供了详细的解决方案,包括日志分析、权限检查等步骤。 ... [详细]
  • CentOS 7 默认安装了 MariaDB,作为 MySQL 的一个分支。然而,出于特定需求,我们可能仍需在系统中安装 MySQL。本文将详细介绍如何通过 Yum 包管理器在 CentOS 7 上安装 MySQL,并提供一些常用的 MySQL 命令。 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 探讨在开发、学习和实验过程中,使用 VMware 和 Docker 的优劣,帮助用户根据具体需求做出最佳选择。 ... [详细]
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
  • MongoDB的核心特性与架构解析
    本文深入探讨了MongoDB的核心特性,包括其强大的查询语言、灵活的文档模型以及高效的索引机制。此外,还详细介绍了MongoDB的体系结构,解释了其文档、集合和数据库的层次关系,并对比了MongoDB与传统关系型数据库(如MySQL)的逻辑结构。 ... [详细]
  • 本文详细介绍了如何解压并安装MySQL集群压缩包,创建用户和组,初始化数据库,配置环境变量,并启动相关服务。此外,还提供了详细的命令行操作步骤和常见问题的解决方案。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • Docker基础指南与核心命令解析
    本文全面介绍了Docker的基本概念、安装方法、核心命令及其用法,并深入探讨了Docker容器的数据卷管理及应用部署策略,适合初学者快速掌握Docker技术。 ... [详细]
  • 在CentOS 7上轻松安装Elasticsearch的JDBC插件
    本文介绍如何在CentOS 7操作系统中安装Elasticsearch (简称ES) 的JDBC插件,以实现与MySQL数据库的有效连接,特别强调了该方法对于增量数据同步的支持。 ... [详细]
  • 作为一名PHP初学者,我在尝试构建包含登录和注册功能的网站时遇到了一个语法错误。尽管参考了几本关于PHP和MySQL的书籍,但这个问题仍然困扰着我。 ... [详细]
  • MHA 架构详解与实践
    MHA(Master High Availability)是一种高效的主从切换解决方案,确保了数据的一致性和系统的高可用性。本文将详细介绍MHA的功能、主从切换流程以及配置步骤,并探讨其优缺点。 ... [详细]
  • Logging all MySQL queries into the Slow Log
    MySQLoptionallylogsslowqueriesintotheSlowQueryLog–orjustSlowLog,asfriendscallit.However,Thereareseveralreasonstologallqueries.Thislistisnotexhaustive:Belowyoucanfindthevariablestochange,astheyshouldbewritteninth ... [详细]
  • 在 Ubuntu 22.04 LTS 上部署 Jira 敏捷项目管理工具
    Jira 敏捷项目管理工具专为软件开发团队设计,旨在以高效、有序的方式管理项目、问题和任务。该工具提供了灵活且可定制的工作流程,能够根据项目需求进行调整。本文将详细介绍如何在 Ubuntu 22.04 LTS 上安装和配置 Jira。 ... [详细]
author-avatar
手机用户2502857067
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有