Xtrabackup 物理备份
Xtrabackup 安装
# 上传文件包
[root@db03 ~]# rz percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
# 下载epel源
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-6.repo
# 安装依赖
yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL
# 下载Xtrabackup
wget httpss://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
# 安装
[root@db03 ~]# yum localinstall -y percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm
# 安装好后的命令
[root@db03 ~]# xtrabackup
[root@db03 ~]# innobackupex
Xtrabackup 备份介绍
对于非 innodb 表(比如 myisam)是直接锁表 Copy 数据文件,属于一种温备;
对于 innodb 表(支持事务),不锁表,cp数据页最终以数据文件方式保存下来,并且把 redo 和 undo 一并备走,属于热备方式 。
注意:备份时读取配置文件/etc/my.cnf(如果使用 Xtrabackup 备份,必须要配置 datadir)
Xtrabackup全量备份
准备备份目录
[root@db03 ~]# mkdir /backup
全量备份
[root@db03 ~]# innobackupex --user=root --password=123 /backup/full
# 去掉时间戳进行备份
[root@db03 ~]# innobackupex --user=root --password=123 --no-timestamp /backup/full
查看全量备份内容
[root@db03 ~]# ll /backup/full/
backup-my.cnf
dump
ibdata1
ibdata2
mysql
performance_schema
row
test
xtrabackup_binlog_info # bin-log 信息
xtrabackup_checkpoints # 本次备份的数据的 起始日志序列号(LSN)-结束日志序列号(LSN)
xtrabackup_info # 工具或数据的信息
xtrabackup_logfile # redo-log 信息
[root@db03 full]# cat xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 8417759
Xtrabackup 全量备份恢复数据
删除所有数据库
# 删库
mysql> drop database dump;
mysql> drop database performance_schema;
mysql> drop database row;
mysql> drop database test;
停止数据库服务
[root@db03 ~]# systemctl stop mysqld.service
模拟 CSR 的过程
# 将 redo 进行重做,已提交的写到数据文件,未提交的使用 undo 回滚,模拟 CSR 的过程
[root@db03 ~]# innobackupex --user=root --password=123 --apply-log /backup/full
恢复数据
方法一(不推荐)
# 移走原数据目录
[root@db03 mysql]# mv data data.back
# 将全备的数据目录迁移回来
[root@db03 mysql]# cp -r /backup/full ./data
[root@db03 mysql]# chown -R mysql.mysql data
方法二(推荐)
# 使用 innobackupex 恢复数据
[root@db03 mysql]# innobackupex --copy-back /backup/full/
[root@db03 mysql]# chown -R mysql.mysql data
检验结果
# 启动数据库
[root@db03 data]# systemctl start mysqld
# 查看是否恢复
[root@db03 data]# mysql -uroot -p123
mysql> show databases;
Xtrabackup 增量备份
Xtrabackup 每次基于上一次备份进行增量;
增量备份无法单独恢复,必须基于全备进行恢复;
所有增量必须要按顺序合并到全备当中 。
全量备份
[root@db03 ~]# innobackupex --user=root --password=123 --no-timestamp /backup/full_$(date +%F)
插入新数据
[root@db03 ~]# mysql -uroot -p123
mysql> use dump
mysql> insert dump values(10000),(20000),(30000);
第一次增量备份
[root@db01 ~]# innobackupex --user=root --password=123 --no-timestamp --incremental --incremental-basedir=/backup/full_2020-07-23 /backup/inc1
参数说明:
--incremental:开启增量备份功能
--incremental-basedir:上一次备份的路径
# 验证
[root@db03 ~]# cat /backup/full/xtrabackup_checkpoints
backup_type = full-prepared
from_lsn = 0
to_lsn = 8417759
[root@db03 ~]# cat /backup/inc1/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 8417759
to_lsn = 8419281
插入新数据
[root@db03 ~]# mysql -uroot -p123
mysql> use dump
mysql> insert dump values(100000),(200000),(300000);
第二次增量备份
[root@db03 ~]# innobackupex --user=root --password=123 --no-timestamp --incremental --incremental-basedir=/backup/inc1/ /backup/inc2
# 验证
[root@db03 backup]# cat /backup/full_2020-07-23/xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 1636167
[root@db03 backup]# cat /backup/inc1/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 1636167
to_lsn = 1640828
[root@db03 backup]# cat /backup/inc2/xtrabackup_checkpoints
backup_type = incremental
from_lsn = 1640828
to_lsn = 1645877
Xtrabackup 增量备份恢复数据
将全备执行 Redo
[root@db03 backup]# innobackupex --apply-log --redo-only /backup/full_2020-07-23
将第一次增备只执行 redo,合并到第一次全备
[root@db03 backup]# innobackupex --apply-log --redo-only --incremental-dir=/backup/inc1/ /backup/full_2020-07-23
# 验证
[root@db03 backup]# cat /backup/full_2020-07-23/xtrabackup_checkpoints
backup_type = log-applied
from_lsn = 0
to_lsn = 1640828 # 该值本来是inc1的位置点
将最后一次增备执行 redo 和 undo,合并到第一次全备
[root@db03 backup]# innobackupex --apply-log --incremental-dir=/backup/inc2/ /backup/full_2020-07-23
# 验证
[root@db03 backup]# cat /backup/full_2020-07-23/xtrabackup_checkpoints
backup_type = log-applied
from_lsn = 0
to_lsn = 1645877 # 该值本来是inc2的位置点
将整体数据进行一次 CSR
[root@db03 backup]# innobackupex --apply-log /backup/full_2020-07-23/
恢复数据
[root@db03 mysql]# mv data data.bak
[root@db03 mysql]# innobackupex --copy-back /backup/full_2020-07-23/
[root@db03 mysql]# chown -R mysql.mysql ./data
[root@db03 mysql]# systemctl start mysqld
全量备份 & 增量备份 对比
增备:
优点:占用磁盘空间小,没有重复数据
缺点:恢复麻烦
全备:
优点:恢复容易,只需一次
缺点:占用磁盘空间,每次全备都有重复数据
Xtrabackup 物理备份的更多相关文章
- XtraBackup物理备份 阿里云的Mysql备份方案
XtraBackup物理备份 Percona XtraBackup是世界上唯一的开源,免费的MySQL热备份软件,为InnoDB和XtraDB 数据库执行非阻塞备份.使用Percona XtraBac ...
- MariaDB xtrabackup物理备份与还原
xtrabackup物理备份 1.1 安装xtraback 安装依赖: [root@localhost ~]# yum install -y perl-DBD-MySQL perl-DBI perl- ...
- Innobackupex(xtrabackup)物理备份
1. Percona XtraBackup介绍 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个完全开源的用于 MySQL 数据库物理热备的备份工具,在备份过程中不 ...
- MySQL数据库之xtrabackup物理备份(一)
前言:说到数据库备份,我们知道可以用来对数据库进行备份的工具有mysqldump.mydumer.mysqlpump等等,实际工作中,机器上的数据库不大的话,都是用mysqldump工具来备份,这些备 ...
- (4.15)mysql备份还原——物理备份之XtraBackup的下载与安装
关键词:mysql物理备份,XtraBackup,XtraBackup安装,XtraBackup下载 实践链接:https://www.cnblogs.com/gered/p/11147193.htm ...
- 使用 xtrabackup 进行MySQL数据库物理备份
0. xtrabackup的功能 能实现的功能: 非阻塞备份innodb等事务引擎数据库. 备份myisam表会阻塞(需要锁). 支持全备.增量备份.压缩备份. 快速增量备份(xtradb,原理类似于 ...
- mysql之使用xtrabackup进行物理备份、恢复、在线克隆从库、在线重做主从
注:图片来自<深入浅出MySQL 数据库开发 优化与管理维护 第2版> 物理备份和恢复 1.冷备份:停掉mysql再备份,一般很少用,因为很多应用不允许长时间停机,停机备份的可以直接CP数 ...
- MySQL · 物理备份 · Percona XtraBackup 备份原理
http://mysql.taobao.org/monthly/2016/03/07/ 前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据 ...
- xtrabackup进行物理备份、恢复、在线克隆从库、在线重做主从
http://www.lai18.com/content/4733997.html 注:图片来自<深入浅出MySQL 数据库开发 优化与管理维护 第2版> 物理备份和恢复 1.冷备份:停掉 ...
随机推荐
- 【ORA】ORA-00030: User session ID does not exist.
今天巡检,查询锁相关的情况的时候,确认业务后,准备将锁干掉,但是干掉的时候报了一个错误,ORA-00030 发现回话不存在,我以为pmon进程已经将锁进程kill掉了,就再次查看,发现,还是存在 这个 ...
- 【ORACLE】删除表空间,没有删除数据文件怎么办?解决办法
创建表空间 SQL> create tablespace TEST datafile='+DATA/rac/datafile/test01.dbf' size 1g; Tablespace cr ...
- online创建索引中途取消导致索引无法删除解决办法
问题:有一个表ID栏位没有索引,但是在一个update语句的where中被使用,因此打算online创建索引,但是长时间没有成功,此时决定取消,取消后发现索引无法删除 过程: 数据库监控报警有行锁,进 ...
- Lnux:实验 Linux C 编程
实验题目: 实验 3 Linux C 编程 实验目的和要求: 熟悉 Linux 操作系统环境 在 Linux 下编写.执行简单的 C 程序 用 C 语言写自己的 Linux 命令 实验过程: 认真 ...
- ProBuilder快速原型开发技术 ---ProBuilder基础操作
在游戏开发.虚拟现实等三维仿真领域,Unity目前是国内外最为知名的开发引擎.随着版本的不断提升与完善,目前Unity2020等最新版本,又增加了很多令人惊奇的功能. Unity内置的ProBuild ...
- 三路握手 三报文握手 TIME_WAIT three way handshake three message handshake
UNIX网络编程卷1:套接字联网API(第3版) 第2章 传输层:TCP.UDP和SCTP 2.4 TCP TCP不能被描述成100%可靠的协议 数次重传失败,则放弃 数据的可靠递送和故障的可靠通知 ...
- 【C++小知识】#define、enum、const的含义与用法
一.#define 含义 define是宏定义,编译器不对其进行错误检查,在预编译阶段处理,没有作用域限制属于全局常量,在程序中编译器会对定义的常量名以数值进行替换,且每次替换都分配内存,此方法对于大 ...
- pthon之变量
1.变量由三部分组成: 变量名 = 值 如:name = 'xiaohan' sex='男' age = 20 2.变量名的规范 2.1 变量名只能是字母,数字或下划线的任意组合 2 ...
- .net core Wpf中使用cefsharp加载本地html网页,并且cefsharp支持any cpu
第一步,在程序包管理器安装 cefsharp.wpf 第二步 您必须在项目的第一个 < propertygroup > 中添加 < cefsharpanycpusupport > ...
- jQuery——选择元素
###理解DOM jQuery最强大的特性之一就是能够简化在DOM中选择元素的任务.**DOM(文档对象模型)**充当了JavaScript与网页之间的接口,它以对象网络而非纯文本的形式来表现HTML ...