xtrabackup 实现MySQL数据库备份
时间:2022-07-24
本文章向大家介绍xtrabackup 实现MySQL数据库备份,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Xtrabackup介绍
Percona XtraBackup是一款基于MySQL的服务器的开源热备份实用程序,在备份过程中不会锁定数据库。它可以备份来自MySQL5.1,5.5,5.6和5.7服务器上的InnoDB,XtraDB和MyISAM表的数据,以及带有XtraDB的Percona服务器。
XtraBackup 有两个工具:xtrabackup 和 innobackupex Xtrabackup 本身只能备份InnoDB和XtraDB,不能备份MyISAM; innobackupex 它是封装了xtrabackup的perl脚本,覆盖了xtrabackup的功能。 它不但可以备份nnodb和xtradb两种引擎的表,还可以备份myisam引擎的表(在备份myisam表时需要加一个读锁)。
Xtrabackup特点
备份过程快速、可靠;
备份过程不会打断正在执行的事务;
能够基于压缩等功能节约磁盘空间和流量;
自动实现备份检验;
还原速度快;
安装xtrabackup
yum install -y http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm
yum update percona-release
yum install percona-xtrabackup-24 -y
主数据库全量备份
全量备份命令
innobackupex --defaults-file=/etc/my.cnf --user=root --password=Aa123456 /we/
从备份过程截图可以看出会创建一个时间的目录 这里面就是相关的备份文件,同样也可以看到我们创建的库的名称
恢复误删除数据
恢复数据之前需要保证数据目录是空的状态
innobackupex --defaults-file=/etc/my.cnf --copy-back /we/2020-07-01_08-37-39/
修改数据文件权限
chown -R mysql:mysql /data/mysql
重启从数据库
systemctl restart mysqld
查看数据库
恢复成功
增量备份
创建用于增量备份的数据,用来模拟删除掉了全备份后的数据,能否通过增量备份文件来恢复
--incremental /we/ 指定增量备份文件备份的目录
--incremental-basedir 指定上一次全备或增量备份的目录
innobackupex --defaults-file=/etc/my.cnf --user=root --password=Aa123456 /we/
创建数据库,然后备份
mysql> create database wee;
innobackupex --defaults-file=/etc/my.cnf --user=root --password=Aa123456--incremental /we/ --incremental-basedir=/we/2020-07-01_09-47-34
再次创建数据库,然后备份
mysql> create database weee;
innobackupex --defaults-file=/etc/my.cnf --user=root --password=Aa123456--incremental /we/ --incremental-basedir=/we//we/2020-07-01_09-56-15/
这个时候在/we下面应该有当前时间的三个目录,时间有一点差别而已
模拟数据丢失 删除一个数据库来测试增量恢复
mysql> drop database we;
增量还原,同步开始合并 回滚未提交的事务及同步已经提交的事务至数据文件使得数据文件处于一致性状态
innobackupex --apply-log --redo-only /we/2020-07-01_09-47-34/
innobackupex --apply-log --redo-only /we/2020-07-01_09-47-34/ --incremental-dir /we/2020-07-01_09-56-15/
innobackupex --apply-log --redo-only /we/2020-07-01_09-47-34/ --incremental-dir /we/2020-07-01_09-57-18/
提示
/we/2020-07-01_09-47-34/ 全备份目录
/we/2020-07-01_09-56-15/ 第一次增量备份产生的目录
/we/2020-07-01_09-57-18/ 第二次增量备份产生的目录
恢复数据
innobackupex --defaults-file=/etc/my.cnf --copy-back /we/2020-07-01_09-47-34/
chown -R mysql:mysql /data/mysql/
systemctl restart mysqld
验证数据是否存在
其它命令
单数据库备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=Aa123456 --database=we /we/
多个数据库备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=Aa123456 --include='we.*|wee.*' /we/
多个数据库表备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=Aa123456 --include='we.tableb|wee.tableb' /we/
- 远丰集团旗下CMS疑有官方后门
- 前端黑魔法之远程控制地址栏
- 信息收集利器:ZoomEye
- go sync.Mutex 设计思想与演化过程 --转
- 漏洞预警 | Ubuntu 16.04版本存在本地提权漏洞(附EXP)
- 通过“震网三代”和Siemens PLC 0day漏洞,实现对工控系统的入侵实验
- 安卓端渗透工具DVHMA:自带漏洞的混合模式APP
- 小萝莉说Crash(二): Unrecognized selector xxx 之 ForwardInvocation
- 5分钟教程:如何通过UART获得root权限
- 源码级剖析PHP 7.2.x GD拒绝服务漏洞
- 美女程序媛发福利,读懂ANR的trace文件So easy
- Openshift高阶探索实验
- 卡卡卡!小萝莉告诉你开发iOS应用如何避免卡顿
- Bugly即将支持的ANR,精神哥告诉你是个什么鬼?
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 聊聊claudb的SlaveReplication
- 深度学习trick--labelsmooth
- Java锁的那些事儿
- React Hooks踩坑分享
- Python 自动化,Helium 凭什么取代 Selenium?
- Explain详解与索引最佳实践
- 使用SAP Analysis Path Framework (APF)展示CDS view数据
- 基于docker封装prometheus解决时区问题
- Node.js 如何处理 ES6 模块
- 关于Hive使用的一些实例
- 134. 加油站 Krains 2020-08-20 14:03:21 前缀和贪心
- 53. 最大子序和 Krains 2020-08-20 10:46:24 动态规划前缀和
- 如何用Unity导出H5与小游戏的3D场景
- 设计模式 之 模板模式
- java基础:注解的定义与使用