使用XtraBackup备份MySQL 8.0 Part 6 对数据库进行增量备份
实验环境
前面我们介绍了Xtrabackup 2.4版本的介绍,这个专题说8.0版本
大体上差不多,不过8.0版本移除了innobackupex命令且只能备份8.0版本的MySQL
此次实验的环境如下
- MySQL 8.0.19
- Redhat 7.4
- 操作系统账号:mysql
- 数据库备份账号:backup
1. 备份命令
1.1 首先新建备份账号
mysql> CREATE USER 'backup'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
mysql> GRANT BACKUP_ADMIN, PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backup'@'localhost';
mysql>GRANT SELECT ON performance_schema.log_status TO 'backup'@'localhost';
mysql> FLUSH PRIVILEGES;
1.2 建立备份目录
shell>mkdir -p /data/mysql/backup
注意 mysql用户需要有读写权限,并且该目录需要为空,否则备份失败
1.3 首先开始全备
我们用如下方法对MySQL数据库进行全备
shell> xtrabackup -S /data/mysql/data/mysql.sock --user=backup --password=123456 --backup --target-dir=/data/mysql/backup/base
可以看到备份文件已经在目录下
1.4 然后进行增量备份
xtrabackup -S /data/mysql/data/mysql.sock --user=backup --password=123456 --backup --target-dir=/data/backups/inc1 --incremental-basedir=/data/backups/base
2. 备份过程分析
接下来分析下其备份的过程,从输出的日志上来看
2.1 命令提示部分
上图首先打印出innobackupex可以用的一些参数
2.2 连接数据库
然后是连接数据库,进入数据文件目录检查参数,之后开始备份
2.3 备份系统表空间及innodb引擎数据
这部分首先列出数据库中有哪些表空间
- 系统表空间(ibdata)
- undo表空间(undo)
- 用户表空间(innodb_file_per_table开启后每张表和表空间一一对应)
首先拷贝系统表空间文件然后是unod表空间文件,最后是innodb表文件
xtrabackup一直在扫描redo 日志文件以反映数据的变化
注意下日志上提示xtrabackup: Redo Log Archiving is not set up
从MySQL 8.0.17开始支持redo日志归档了,这里我们没有开启
2.4 备份非innodb表数据
这里没有显示加锁,应该是LOCK TABLE FOR BACKUP
之后开始备份非innodb的数据
2.5 拷贝二进制文件
之后根据performance_schema.log_status来拷贝备份非innodb时期的事物情况以保证数据一致性
2.6 完成备份
之后解除锁表,拷贝ib_buffer_pool文件(缓冲池文件)
记录binlog 位置信息
写信息值backup-my.cnf及xtrabackup_info
最后拷贝在备份期间变化的redo日志
3. 生成文件说明
通过上面我们看到除了拷贝数据文件外还生成了一些文件
下面我们一一说明
3.1 backup-my.cnf
包含了备份数据库如下信息
- innodb的一些配置信息
- 数据库的server ID
- 数据库服务器的uuid
- master key id(安全相关)
3.2 xtrabackup_binlog_info
其记录了备份完成时binlog的位置及GTID信息
用于复制的搭建
3.3 xtrabackup_checkpoints
该文件对于后续增量备份有用
该文件有如下信息
- 备份类型:全备
- 开始LSN:0
- 最后检查点LSN:21068465
- 最后拷贝的LSN:21071219
可以看到to_lsn和last_lsn不同 说明在备份过程中有DML操作
to_last用于增量备份的起点
last_scn用于最后恢复的位置
这些后面介绍
3.4 xtrabackup_info
该文件包含一些备份的信息就不一一介绍了
4. 参考资料
本专题所有内容翻译子Percona XtraBackup的官方文档
可通过如下链接下载
http://www.zhaibibei.cn/mysql/xtrabackup8/tutorial1/
- 三种属性操作性能比较:PropertyInfo + Expression Tree + Delegate.CreateDelegate
- 解密Myspace密码的姿势
- weblogic安全配置二三事
- 开发自己的Data Access Application Block[下篇]
- 【CSS】格仔背景
- 这年头真的还有USB设备是安全的吗?
- js的动态加载、缓存、更新以及复用(一)使用范围:遇到的问题:目标:页面结构:正文
- js的动态加载、缓存、更新以及复用(二)恼人的命名冲突
- 以【猫叫、老鼠跑、主人醒】为例子,使用 javascript 来实现 观察者模式 (有在线演示)
- Debian/Ubuntu-shell脚本来管理iptables安全策略
- Pegasus间谍套件内部原理及流程剖析
- 用node.js实现ORM的一种思路
- iOS“远程越狱”间谍软件Pegasus技术分析
- 学习HTML5之表单
- 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 实例讲解
- Ubuntu 18.04更换apt-get源的方法
- 浅谈Linux环境变量文件介绍
- linux创建线程之pthread_create的具体使用
- Ubuntu20.04安装搜狗输入法的详细步骤
- linux系统安装msf的过程详解
- Linux删除系统自带版本Python过程详解
- Linux时间子系统之时间的表示示例详解
- 如何在Linux中修改tomcat端口号
- centos7修改系统语言为简体中文的实现
- Linux 通过Rsync+Inotify实现本、异地远程数据实时同步功能
- linux实现猜数字小游戏源码
- linux编译kernel和svn版本冲突的解决办法
- 在 Ubuntu Linux 上安装 Oracle Java 14的方法
- 在 Linux 系统中手动滚动日志的方法
- Linux进程管理工具supervisor安装配置教程