首页 > 其他分享 >XtrBackup8.0备份

XtrBackup8.0备份

时间:2023-08-28 18:38:19浏览次数:53  
标签:XtrBackup8.0 -- 备份 xtrabackup user backup dir

安装

wget https://downloads.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0.23-16/binary/tarball/percona-xtrabackup-8.0.23-16-Linux-x86_64.glibc2.17.tar.gz
tar xf percona-xtrabackup-8.0.23-16-Linux-x86_64.glibc2.17.tar.gz/bin/

xbcloud          #与流式备份结合,将备份存储到云上对象存储
xbcloud_osenv    #对xbcloud的封装,可以自动去取OpenStack上的os_xxx变量
xbcrypt          #加密解密
xbstream         #加压流式备份集
xtrabackup       #常用的备份恢复工具

1、xtrabackup活跃的分为两个大版本,2.4和8.0;目前最新版本8.0.34,xtrabackup2.4使用与MySQL5.6和5.7 xtrabackup8.0s适用于MySQL8.0。这两个版本不能混用,因为MySQL8.0的redolog和数据字典发生了变化。

2、早期版本的innobackupex,是一个软连接,用来实现对innodb引擎的备份,8.0中已经移除了,所以推荐使用8.0。

XtrBackup的基本用法

XtrBackup的备份恢复包括三个步骤:备份、prepare、恢复,下面详细解释 

备份
  • 将物理文件拷贝到备份目录中
Prepare
  • 应用redo log,将数据文件恢复到备份结束时的一致性状态
恢复
  • 将备份文件恢复至数据目录下。恢复阶段就是拷贝文件,所以也可以结合自己的场景手动拷贝
1 创建备份用户
create user backup_user@'%' identified by '123';
grant reload,process,show databases,replication client,show view on *.* to backup_user@'%';
grant backup_admin,system_variables_admin on *.* to  backup_user@'%';
grant select,insert,create ,alter on PERCONA_SCHEMA.*  to backup_user@'%';
grant select on mysql.component to backup_user@'%';
grant select on performance_schema.keyring_keys to backup_user@'%';
grant select on performance_schema.log_status to backup_user@'%';

/*
reload :用于指定flush table with read lock和flush no_write_to_binlog tables;必需权限
replication client: 用于执行show master status 如果对从库进行备份还需要执行show slave status;必需权限
backup_admin: 用于执行lock instance for backup;必需权限
process:用于执行show engine innodb status|show processlist;必需权限
system_variables_admin: 用于在增量备份时执行set global mysqlbackup.backupid=xxx;非必需权限
super: 执行--kill-long-queries-timeout|从库指定--safe-slave-backup需要重启备份;非必需权限
show view: 用于检查information_schema.tables中的信息,是否存在MyISAM表;必需权限
mysql.component:如果使用page tracking来进行增量备份;
*/
2 全量备份
xtrabackup --user=backup_user --password=123 --backup --parallel=10 --target-dir=/backup/full
//--parallel多线程备份

XtrBackup8.0备份_XtraBackup

2.1 备份文件介绍
backup-my.cnf  记录了innodb的相关参数,在Prepare会使用
 xtrabackup_binlog_info  记录了备份结束时的一致性位置点信息,在搭建从库时会使用
 xtrabackup_checkpoints  记录了备份的类型和LSN信息
 xtrabackup_info         记录了详细的备份信息
 xtrabackup_logfile      用来保存拷贝的redo log,如果是在从库,需要指定--slave-info来保存binlog点位
 xtrabackup_tablespaces  记录表空间和版本信息
3 Prepare
xtrabackup --prepare --user-memory=2G --target-dir=/backup/full

这个阶段会启动一个嵌入的innodb实例来进行Crash Recovery。--user-memory=2G用来控制着缓冲池的大小。
prepare结束后会生成redo ib_logfile0 ib_logfile1和临时表空间
5 恢复
xtrabackup --defaults-file=/etc/my.cnf --copy-back --parallel=10 --target-dir=/backup/full
 
 需要保证源数据库目录为空
 --copy-back 拷贝 
 --move-back 移动 速度快

XtrBackup8.0备份_mysql_02

6 启动数据库
chown -R mysql.mysql ./*

增量备份

增量备份时会扫描每个数据页,检查它的LSN是否大于上次备份完成时的LSN(to_lsn),只有大于的数据才会备份。

增量备份时会对每个innodb文件生成一个.delta文件(差异文件,二进制).meta文件(描述文件),对于非innodb的表,每次都是全量备份

1、创建一个全量备份
 xtrabackup --user=backup_user --password=123 --backup --parallel=10 --target-dir=/backup/full
 2、查看xtrabackup_checkpoints
 		backup_type = full-backuped
		from_lsn = 0
		to_lsn = 118341136054
		last_lsn = 118341136064
		flushed_lsn = 118341136054
 3、第一次增量备份
 xtrabackup --user=backup_user --password=123 --backup --parallel=10 --target-dir=/backup/inc1 --incremental-basedir=/backup/full
 4、查看文件
 		backup_type = incremental
		from_lsn = 118341136054
		to_lsn = 118341137446
		last_lsn = 118341137456
		flushed_lsn = 118341137446
 5、第二次增量备份
 xtrabackup --user=backup_user --password=123 --backup --parallel=10 --target-dir=/backup/inc2 --incremental-basedir=/backup/inc1
增量备份恢复
1、首先对全量备份进行Prepare
xtrabackup --prepare --apply-log-only --target-dir=/backup/full
 ## --apply-log-only #应用redo log,不回滚当前备份中未提交的事务,因为在下个备份结果集中可能会提交
  
2、对第一个增量备份结果集进行Prepare
xtrabackup --prepare --apply-log-only --target-dir=/backup/full --incremental-dir=/backup/inc1

3、对最后一个增量备份Prepare,此时不需要执行--apply-log-only了,如果指定的话,在恢复到数据库实例时会回滚未提交的事务,拉长恢复时间
xtrabackup --prepare  --target-dir=/backup/full --incremental-dir=/backup/inc2

4、恢复数据
xtrabackup --defaults-file=/etc/my.cnf --move-back --target-dir=/backup/ful

基于数据页的增量备份

基本的增量备份是要扫描所有的数据页,当发生修改的数据页较少时,这种效率比较低下。MySQL8.0.17开始支持页面跟踪Page Tracking可以用来跟踪指定LSN之后发生修改页面。下面做一些演示:

安装插件
root@ 16:28: [test]> install component "file://component_mysqlbackup";
Query OK, 0 rows affected (0.01 sec)

root@ 16:29: [test]> select count(*) from mysql.component where component_urn='file://component_mysqlbackup';
+----------+
| count(*) |
+----------+
|        1 |
+----------+
1 row in set (0.00 sec)

root@ 16:29: [test]> select * from mysql.component where component_urn='file://component_mysqlbackup';
+--------------+--------------------+------------------------------+
| component_id | component_group_id | component_urn                |
+--------------+--------------------+------------------------------+
|            1 |                  1 | file://component_mysqlbackup |
+--------------+--------------------+------------------------------+
1 row in set (0.00 sec)
备份恢复
1、全量备份
xtrabackup --user=backup_user --password=123 --backup --target-dir=/backup/full --page-tracking
执行完成之后会在MySQL数据目录下生成一个#ib_archive目录
2、增量备份
xtrabackup --user=backup_user --password=123 --backup --parallel=10 --target-dir=/backup/inc1 --incremental-basedir=/backup/full --page-tracking

恢复过程和传统的恢复一样,参考上面的操作。

压缩备份

1、xtrabackup8.0支持quicklz和lz4两种压缩算法,早期的版本支持quicklz。两种压缩算法和不指定压缩执行时间上相近,压缩率大约50%

XtrBackup8.0备份_XtraBackup_03

2、如果是quicklz算法,在解压之前需要安装qpress,并移动到/usr/bin下。

3、解压后默认不会删除原来的压缩文件,可以指定--remove-original删除。即使不删除恢复时也不会拷贝压缩文件。

xtrabackup --user=backup_user --password=123 --backup --compress=lz4 --target-dir=/backup/full #压缩

xtrabackup --decompress --target-dir=/backup/full3 #解压

后续操作和传统的一样。

流式备份

xtrabackup8.0不再支持tar格式,只支持xbstream,有压缩效果

1、备份
xtrabackup --user=backup_user --password=123 --backup  --stream=xbstream --parallel=10 >/backup/full.xbstream
 
2、解压
xbstream -x -p 10 -C /backup/stream < /backup/full.xbstream
	-x #解压
  -p #并行
  -C #指定解压目录
3、恢复
 xtrabackup --defaults-file=/etc/my.cnf --copy-back --parallel=10 --target-dir=/backup/stream
流式备份常用案例

1、流式备份+压缩

xtrabackup --user=backup_user --password=123 --backup  --stream=xbstream --parallel=10 |lz4 > /backup/full_backup.lz4
mkdir -p /backup/stream
lz4 -d /backup/full_backup.lz4 |xbstream  -x -p 10 -C /backup/stream

恢复和传统的一样

2、备份到远程服务器

xtrabackup --user=backup_user --password=123 --backup  --stream=xbstream --parallel=10 |lz4 |ssh [email protected] "cat -> /backup/full2.lz4"

ssh [email protected] "(nc -l 3366 > /backup/full_backup.lz4 &)" && xtrabackup --user=backup_user --password=123 --backup --stream=xbstream --parallel=10 |lz4| nc 192.168.131.12 3366

 xtrabackup --user=backup_user --password=123 --backup  --stream=xbstream --parallel=10 |lz4 |sshpass -p 123 ssh -o StrictHostKeychecking=no  [email protected] "cat -> /backup/full2.lz4"
 
备份到远程并解压:
xtrabackup --user=backup_user --password=123 --backup  --stream=xbstream --parallel=10 |lz4 |ssh  [email protected] "cat - | lz4 -d | xbstream -x -p 10 -C /backup/stream"

限速:
xtrabackup --user=backup_user --password=123 --backup  --stream=xbstream --parallel=10 |pv -q -L20m |lz4|ssh [email protected] "cat - > /backup/full2.lz4"

备份原理

XtrBackup8.0备份_增量备份_04




标签:XtrBackup8.0,--,备份,xtrabackup,user,backup,dir
From: https://blog.51cto.com/u_14218719/7265798

相关文章

  • 数据库备份工具有哪些
    本文主要介绍下数据库备份工具。数据库备份工具有很多种,以下是一些常见的数据库备份工具:mysqldump:MySQL官方提供的命令行备份工具,适用于MySQL和MariaDB数据库。它可以将数据库导出为SQL文件,方便进行备份和恢复。属于逻辑备份工具。MyDumper:一款开源的MySQL备份工具,比mysqld......
  • MySQL 定时备份的几种方式
    mysqldump命令备份数据在MySQL中提供了命令行导出数据库数据以及文件的一种方便的工具mysqldump,我们可以通过命令行直接实现数据库内容的导出dump,首先我们简单了解一下mysqldump命令用法:#MySQLdump常用mysqldump-uroot-p--databases数据库1数据库2>xxx.sqlmysqldump常......
  • 【MySQL 8.0】通过mysqlpump实现数据库对象的逻辑备份与恢复
    转储数据库mysqlpump-uroot-p--all-databases>full.sqlmysqlpump-uroot-p--all-databases--exclude-databases=soe>full.sqlmysqlpump-uroot-p--databasestpcc10>tpcc10.sqlmysqlpump-uroot-p--parallel-schemas=4:tpcc10>tpcc10.sql......
  • 【MySQL 8.0】部分备份与恢复验证
    [mysql@node01~]$xtrabackup--user=xtrabackup--password=xtrabackup--databases="tpcc10"--backup--target-dir=/home/mysql/backup/partial[mysql@node01~]$scp-rbackup/partial/*node02:/home/mysql/backup/partial[mysql@node01~]$mysqldump......
  • 【MySQL 8.0】物理备份与恢复验证
    [root@node01~]#wgethttps://repo.percona.com/yum/percona-release-latest.noarch.rpm[root@node01~]#rpm-ivhpercona-release-latest.noarch.rpm[root@node01~]#yuminstall-ypercona-xtrabackup-80用户与权限(root@node01)>createuserxtrabackup@'......
  • 【MySQL 8.0】增量备份与恢复验证
    [mysql@node01~]$xtrabackup--user=xtrabackup--password=xtrabackup--backup--target-dir=/home/mysql/backup/base[mysql@node01~]$./tpcc-mysql/tpcc_start-h192.168.1.101-P3306-dtpcc10-utpcc-ptpcc-w10-c10-l120[mysql@node01~]$xtrabac......
  • centos定时备份mysql数据库 用shell脚本实现
    数据很重要,上线的项目必须数据库做到定时备份数据量小的可用如下方法,下面的是全量备份,数据量大的肯定行不通的,这时可用mysql主从复制了注意事项:1、shell脚本的mysqldump命令必须使用绝对路径,首先用find/-name'mysqldump'找到真实绝对路径,否则备份出来文件0kb 2、在终端用......
  • Mysql 定时备份数据库脚本
    Mysql定时备份数据库;并且删除X天前的备份数据;1.  创建数据目录mkdirdatacd/data2.  编写脚本文件    vim  backup.sh#!/bin/bash#日期dd=`date+%Y-%m-%d-%H-%M-%S`#保存备份个数,备份2天数据backup_clean_day=2#用户名username=root#密......
  • 关于灾备系统中的完全备份,增量备份,差异备份是什么?
    完全备份:完全备份就是用存储介质对整个系统进行备份,包括系统和数据。这种备份方式的好处就是很直观,容易被人理解。而且当发生数据丢失时,只要用备份数据,就可以恢复丢失的数据。然而它也有不足之处:首先由于每次都对系统进行完全备份,因此在备份数据中有大量重复数据,例如操作系统与应......
  • 博客园Markdown随笔快速备份工具
    1、背景本人花了一个月时间,正在搭建一个能够实时同步博客园文章的博客后台。无奈突然得到了博客园最后破釜沉舟的消息。故花了一天时间快速搭建了这个博客园Markdown文章快速备份工具目前工具已成功运行,你只需要在博客园中获取你的metaweblog的url,name,token即可使用本工具......