docker mysql数据备份xtrabackup
一、概述
线上有一个mysql,是在docker里面运行的。
关于docker封装mysql镜像,请参考链接:https://www.cnblogs.com/xiao987334176/p/11984692.html
为了避免数据丢失,需要做数据备份,但是不能影响mysql运行。所以这里采用xtrabackup
xtrabackup介绍
对于MySQL数据库的热备,xtrabackup是除了MySQL enterprise backup之外的不二之选。该工具提供了基于innodb存储引擎的热备,支持全量,增量备份,部分备份,时点恢复以及使用xtrabackup备份来重做slave等。xtrabackup工具包包含一个innobackupex命令行工具,同时支持InnoDB引擎以及MyISAM引擎。本文主要描述的是trabackup的备份原理并给出了相关演示。
xtrabackup工作原理
InnoDB引擎很大程度上与Oracle类似,使用redo,undo机制,因此在热备期间需要考虑对于日志缓冲区在线事物日志及时写出到文件的问题。如果log buffer没有及时写出将被日志的循环写特性覆盖。xtrabackup在启动时会记住log sequence number(LSN),然后一页一页地复制InnoDB的数据。与此同时,监控log buffer中的日志情况,一旦log buffer发生变化,即数据发生了不一致,该过程会立即被捕获并把变化的页面复制到xtrabckup log,直到全部innoDB数据文件复制完成之后,停止监控log buffer及日志复制。
xtrabackup在恢复期间对提交的事务前滚,未提交或失败的事务进行回滚,从而保证数据的一致性。因此对于InnoDB表在备份期间不会锁表。由于XtraBackup其内置的InnoDB库打开文件的时候是rw的,所以运行XtraBackup的用户,必须对InnoDB的数据文件具有读写权限。

extrabackup的备份步骤

二、xtrabackup运行
环境说明
操作系统:centos 7.6
ip地址:192.168.31.250
mysql数据目录(宿主机):/home/data
mysql备份目录(宿主机):/home/backup
说明:mysql容器和xtrabackup容器运行在同一台服务器上,因为xtrabackup运行过程中,需要读取mysql数据目录。
有3种方案安装xtrabackup,分别是:
编译安装
在线安装
docker封装
这里选择第3种方案,使用docker部署比较方案,方便迁移。
下载xtrabackup
下载地址:https://www.percona.com/downloads/
找到Percona XtraBackup

这里选择2.4版本,8.0版本太新了。
选择centos7,下载percona-xtrabackup-24-2.4.20-1.el7.x86_64.rpm

镜像封装
这里以centos:7.8.2003作为基础镜像。
新建目录
mkdir -p /opt/centos7.8_xtrabackup
最终目录结构如下:
./
├── dockerfile
└── percona-xtrabackup-24-2.4.20-1.el7.x86_64.rpm
dockerfile
FROM centos:7.8.2003
ADD percona-xtrabackup-24-2.4.20-1.el7.x86_64.rpm /
RUN yum install -y /percona-xtrabackup-24-2.4.20-1.el7.x86_64.rpm && \
yum clean all && \
rm -rf /percona-xtrabackup-24-2.4.20-1.el7.x86_64.rpm
生成镜像
docker build -t centos7.8_xtrabackup:v1 .
运行镜像
docker run -it -d \
--name centos7.8_xtrabackup \
--restart=always \
-e TZ=Asia/Shanghai \
-v /home/backup:/backup \
-v /home/data:/data \
centos7.8_xtrabackup:v1
完整备份
进入docker
docker exec -it centos7.8_xtrabackup /bin/bash
执行以下命令
innobackupex --user=root --password=12456 --port=3306 --host=192.168.31.250 --socket=/data/mysql/data/mysqld.sock --datadir=/data/mysql/data --stream=tar /backup |gzip>/backup/mysql.tar.gz
输出:
...
201110 15:39:17 [00] Streaming <STDOUT>
201110 15:39:17 [00] ...done
xtrabackup: Transaction log of lsn (295739637) to (295739646) was copied.
201110 15:39:17 completed OK!
有输出completed OK,表示备份成功。
参数说明:
--user #指定数据库备份用户
–password #指定数据库备份用户密码
–port #指定数据库端口
–host #指定备份主机
–socket #指定socket文件路径
--datadir #指定mysql datadir路径
--stream #指定流的格式做备份,–stream=tar,将备份文件归档
查看备份文件
[root@a241640e14f2 ]# ll /backup/
total 35548
-rw-r--r-- 1 root root 36400167 Nov 10 15:39 mysql.tar.gz
会发现,多了一个mysql.tar.gz
本文参考链接:
https://blog.csdn.net/leshami/article/details/41043269
https://www.cnblogs.com/nmap/p/6722400.html
docker mysql数据备份xtrabackup的更多相关文章
- MySQL数据备份概述
MySQL备份类型 热备份.温备份.冷备份 (根据服务器状态) 热备份:读.写不受影响: 温备份:仅可以执行读操作: 冷备份:离线备份:读.写操作均中止: 物理备份与逻辑备份 (从对象来分) 物理备份 ...
- 转 MySQL 数据备份与还原
MySQL 数据备份与还原 原贴:http://www.cnblogs.com/kissdodog/p/4174421.html 一.数据备份 1.使用mysqldump命令备份 mysqldum ...
- MySQL数据备份之mysqldump使用(转)
mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump ...
- SQL学习笔记六之MySQL数据备份和pymysql模块
mysql六:数据备份.pymysql模块 阅读目录 一 IDE工具介绍 二 MySQL数据备份 三 pymysql模块 一 IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测 ...
- MySQL数据备份与还原(mysqldump)
一 mysqldump指令实现数据备份.mysql指令实现数据还原 经常有朋友问我,DBA到底是做什么的,百科上说:数据库管理员(Database Administrator,简称DBA),是从事管理 ...
- MySQL 数据备份,Pymysql模块(Day47)
阅读目录 一.IDE工具介绍 二.MySQL数据备份 三.Pymysql模块 一.IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 下载链接:https:/ ...
- mysql 数据备份及pymysql模块
一 IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 下载链接:https://pan.baidu.com/s/1bpo5mqj 掌握: #1. 测试+链接 ...
- MySQL 数据备份与还原的示例代码
MySQL 数据备份与还原的示例代码 这篇文章主要介绍了MySQL 数据备份与还原的相关知识,本文通过示例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 一.数据备份 1.使用 ...
- docker mysql 数据持久化到本地、设置不区别表名大小写-清风柳絮-51CTO博客
原文:docker mysql 数据持久化到本地.设置不区别表名大小写-清风柳絮-51CTO博客 Docker MySQL 把数据存储在本地目录,很简单,只需要映射本地目录到容器即可 1.加上-v参数 ...
随机推荐
- Kwp2000协议的应用(程序后续篇)
作者:良知犹存 转载授权以及围观:欢迎添加微信:becom_me 总述 接上篇文章,本篇继续对基于PID解析数据,如何依据J1979的标准进行解析数据 先给昨天的文章补上一张故障码对照表,昨天分析了如 ...
- python内置常量是什么?
摘要:学习Python的过程中,我们会从变量常量开始学习,那么python内置的常量你知道吗? 一个新产品,想熟悉它,最好的办法就是查看说明书! 没错,Python也给我们准备了这样的说明书--Pyt ...
- 利用github+hexo搭建的博客
用github+hexo新建了一个博客,欢迎来访,如果想要搭建类似框架的博客,可以联系我. 新博客地址:只为自由书写的博客
- python+fiddler下载vip视频 && ts视频可合并
如果你只想在线看视频可以去看这篇博客:python实现通过指定浏览器免费观看vip视频 先看一下我们程序运行的结果 我们要解析的接口就是(就是这个"接口+视频地址"可以解析出vi ...
- 虚拟机linux操作系统上安装vmwareTools
当你安装过操作系统后,你就可以在虚拟机上找到这个画面,在管理里面有一个安装VMwareTools这就是我们的目标,打开后就直接点击下载并安装就好了 当下载完成后在虚拟机下面就会出现这个东西,他的意思就 ...
- Codeforces Round #527 (Div. 3) C. Prefixes and Suffixes (思维,字符串)
题意:给你某个字符串的\(n-1\)个前缀和\(n-1\)个后缀,保证每个所给的前缀后缀长度从\([1,n-1]\)都有,问你所给的子串是前缀还是后缀. 题解:这题最关键的是那两个长度为\(n-1\) ...
- HttpClient&&RestTemplate学习
1. 什么是HttpClient HttpClient是Apache下面的子项目,可以提供高效的,最新的,功能丰富的支持HTTP协议的客户端编程工具包. 2. 为什么要学习HttpClient Htt ...
- Nginx基础 - 通用优化配置文件
[root@localhost ~]# vim /etc/nginx/nginx.conf user nginx; worker_processes auto; worker_cpu_affinity ...
- codeforces 1059C. Sequence Transformation【构造】
题目:戳这里 题意:有1,2,3...n这n个数,求一次这些数的gcd,删去一个数,直到剩下一个数为止.输出这n个gcd的最大字典序. 解题思路:一开始的gcd肯定是1,要让字典序最大,我们可以想到下 ...
- TCP之“3次握手,4次挥手”问题——实例分析
上一篇我们分析了三次握手和四次握手的过程,但是理论分析难免枯燥难懂,下面这篇我们来看一个例子,就能更好地理解tcp链接了. 我们可以通过网络抓包的查看具体的流程: 比如我们服务器开启9502的端口.使 ...