MySQL-Xtrabackup备份还原
前言
通常我们都是使用xtrabackup工具来备份数据库,它是一个专业的备份工具,先来简单介绍下它。
Xtrabackup
percona提供的mysql数据库备份工具,惟一开源的能够对innodb和xtradb数据库,它的增量备份不是基于二进制日志文件来还原数据的,是基于mysql数据块。
特点:
- 备份还原过程快速、可靠
- 备份过程不会打断正在执行的事务
- 能够基于压缩等功能节约磁盘空间和流量
- 自动实现备份检验
- 开源,免费
Xtrabackup用法
备份时选项
xtrabackup --backup
--user:该选项表示备份账号
--password:该选项表示备份的密码
--host:该选项表示备份数据库的地址
--databases:该选项接受的参数为数据名,如果要指定多个数据库,彼此间需要以空格隔开;如:"xtra_test dba_test",同时,在指定某数据库时,也可以只指定其中的某张表。如:"mydatabase.mytable"。该选项对innodb引擎表无效,还是会备份所有innodb表
--defaults-file:该选项指定从哪个文件读取MySQL配置,必须放在命令行第一个选项位置
--incremental:该选项表示创建一个增量备份,需要指定--incremental-basedir
--incremental-basedir:该选项指定为前一次全备份或增量备份的目录,与--incremental同时使用
--incremental-dir:该选项表示还原时增量备份的目录
--include=name:指定表名,格式:databasename.tablename
Prepare于准备选项
prepare
--apply-log:此选项作用是通过回滚未提交的事务及同步已经提交的事务至数据文件使数据文件处于一致性状态
--use-memory:该选项表示和--apply-log选项一起使用,prepare 备份的时候,xtrabackup做crash recovery分配的内存大小,单位字节。也可(1MB,1M,1G,1GB),推荐1G
--export:表示开启可导出单独的表之后再导入其他Mysql中
--redo-only:此选项在prepare base full backup,往其中merge增量备份时候使用
还原时选项
--copy-back:复制
--move-back:移动
备份生产的相关文件
1)xtrabackup_info:innobackupex工具执行时的相关信息,包括版本,备份选项,备份时长,备份LSN,BINLOG的位置
2)xtrabackup_checkpoints:备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息,每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN。LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的
3)xtrabackup_binlog_info:MySQL服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置,可利用实现基于binlog的恢复
4)backup-my.cnf:备份命令用到的配置选项信息
5)xtrabackup_logfile:备份生成的日志文件
还原注意事项
1.datadir目录必须为空。除非指定innobackupex --force-non-emptydirectorires选项指定,否则--copy-backup选项不会覆盖
2.restore还原之前,必须shutdown停止 MySQL服务,不能将一个运行中的实例restore到datadir目录中
3.修改恢复文件的权限为mysql
4.最后一次增量备份还原要回滚事务
5.二进制安装的mysql要是出现停止不了服务就用killall –9 mysqld 杀掉进程进而实现停止服务
实战
规划
1、两台主机17和37,其中17当主mysql服务器,37用来还原的主机,
2、目录,1个存放完整备份的目录,N个存放增量备份的目录

说明:
full目录: 存放完全备份
inc1目录:存放第一次的增量备份
inc2目录:存放第二次的增量备份
备份阶段
1、完全备份数据库
xtrabackup -pcentos --backup --target-dir=/backups/full/
# --backup表示备份
# --target-dir=填写备份到哪里
2、往表中增加数据
mysql -pcentos hellodb -e "insert students (name,age) values('gaodao01',20)"

3、第一次增量备份
xtrabackup –pcentos --backup --target-dir=/backups/inc1/ --incremental-basedir=/backups/full
# --incremental-basedir表示基于谁的增量备份,写上上一次的备份路径
#

4、再次修改数据表
mysql -pcentos hellodb -e "insert students (name,age) values('gaodao02',21)"

5、第二次增量备份
xtrabackup -pcentos --backup --target-dir=/backups/inc2/ --incremental-basedir=/backups/inc1/

还原阶段
说明:还原的时候我们要考虑到前几次不要回滚,最后一次还原要回滚,还原主机要安装xtrabackup工具
1、把备份的目录传送到要还原的主机上
scp -r /backups/ 192.168.43.37:/
2、停服务并清空mysql数据
systemctl stop mysqld
rm -rf /app/mysql/*
3、完全备份的预处理
xtrabackup --prepare --apply-log-only --target-dir=/backups/full
# --prepare 表示还原
# --apply-log-only 表示不回滚
4、第一次增量备份预处理
xtrabackup --prepare --apply-log-only --target-dir=/backups/full --incremental-dir=/backups/inc1
# 同样不回滚
5、第二次增量备份预处理
xtrabackup --prepare --target-dir=/backups/full --incremental-dir=/backups/inc2
# 这是最后一次,所以要回滚不完整的事务
6、复制处理好的数据到真正的存放数据库目录下
xtrabackup --copy-back --target-dir=/backups/full
# 它会根据你的配置文件my.cnf来读取存放位置
7、修改数据库文件权限
chown -R mysql.mysql /app/mysql/
以上还原到了备份时的状态,我们备份完二次增量后又加了条记录,还没来得急三次增量备份就宕机了,所以再次利用二进制日志文件还原到最新状态
8、通过二进制文件还原到最新状态
1)以下图中文件记录了还原到的位置

2)从原主机导出二进制文件日志
mysqlbinlog --start-position=1039 /app/logs/mysql-bin.000003 >/app/binlog.sql
3)scp传送到目标主机来还原
- 首先在配置文件中加入禁止所有人访问选项
skip-networking
- 启动服务
systemctl start mysqld
- 导入二进制日志
mysql -pcentos <binlog.sql
4)进入数据库验证

5)OK 恢复完成,删除配置文件中的skip-networking并重启服务
systemctl restart mysqld
更多精彩内容请移步
MySQL-Xtrabackup备份还原的更多相关文章
- MySQL数据库备份还原(基于binlog的增量备份)
MySQL数据库备份还原(基于binlog的增量备份) 一.简介 1.增量备份 增量备份 是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件.这就意味 ...
- c# Process cmd 执行完回调 Proc_OutputDataReceived mysql mysqldump mysql source备份还原数据
c# Process 执行完回调 Proc_OutputDataReceived mysql mysqldump mysql source备份还原数据 直接贴代码 前提:mysql5.7 vs2017 ...
- xtrabackup备份还原MySQL数据库
mysqldump 备份鉴于其自身的某些特性(锁表,本质上备份出来insert脚本或者文本,不支持差异备份),不太适合对实时性要求比较高的情况Xtrabackup可以解决mysqldump存在的上述的 ...
- mysql xtrabackup 备份恢复实现,mysql命令备份数据库,打包压缩数据库
简介 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具.特点: (1)备份过程快速.可靠 ...
- xtrabackup备份还原mariadb数据库
一.xtrabackup 简介 xtrabackup 是由percona公司开源免费的数据库热备软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份,对于myisam的备份同样需要 ...
- MySQL数据库备份还原
本文以CentOS 7 yum安装的MariaDB-server5.5为例,说明MySQL的几种 备份还原方式 将服务器A(192.168.1.100)上的数据库备份,还原到B(192.168.1.2 ...
- 使用mysqldump进行mysql数据库备份还原
mysqldump是mysql自带的备份还原工具,默认在安装目录的bin下 可通过cmd命令行启动,然后运行: 还原一个数据库: mysql -h 主机 -u 用户名 -p密码 数据库名 < 指 ...
- MySql的备份还原
备份数据是数据库管理最常用的操作.为了保证数据库中数据的安全,数据管理员需要定期进行数据备份.一旦数据库遭到破坏,便可通过备份的文件来还原数据库.因此,数据备份是一项很重要的工作. 数据备份 使用my ...
- java实现mysql的备份还原
此文章是基于 1. 搭建Jquery+SpringMVC+Spring+Hibernate+MySQL平台 2. jquery+springMVC实现文件上传 一. 简介 备份和导入是一个互逆的过程. ...
- ubuntu docker 搭建 mongodb,开启授权访问 redis,mysql mssql 备份还原
命令安装docker 如果您想从Ubuntu存储库安装docker版本,则可以运行下面的apt命令. sudo apt install docker.io等到安装完成后,您可以启动Docker并使用s ...
随机推荐
- myeclipse集成svn客户端
转载大神 https://blog.csdn.net/tandeng19901222/article/details/5979075
- svn常用功能使用简介
1.文档库地址: https://xxx.xxx.xxx.xxx/svn/ 2.svn添加文件 2.1 在本地电脑上任何空白地方,右键-->打开“浏览版本库(Repo-browser)”,如图: ...
- Hie with the Pie(poj3311)
题目链接:http://poj.org/problem?id=3311 学习博客:https://blog.csdn.net/u013480600/article/details/19692985 H ...
- 是时候搞清楚 Spring Boot 的配置文件 application.properties 了!
在 Spring Boot 中,配置文件有两种不同的格式,一个是 properties ,另一个是 yaml . 虽然 properties 文件比较常见,但是相对于 properties 而言,ya ...
- 基于C#编程语言的Mysql常用操作
一.开始需要先将C#中与mysql相关的引用添加进来 using MySql.Data.MySqlClient; 二.创建一个database MySqlConnection m_conn = new ...
- python socket客户端
#./usr/bin/env python#coding:utf-8import socket#.....ip...print ('server start...')ip_port = ('144.3 ...
- Aspx比较简单的登录
客户端 <form id="form1" runat="server"> <div> 用户名:<input type=" ...
- javascript设计模式之中介者模式
/* * 小游戏演示中介者模式 * Home 按键 1 * Guest 按键 0 * 半分钟内看谁按下的次数多 * * 参与的对象: * 玩家 * 计分板 * 中介者 * * 中介者模式使对象之间松耦 ...
- ADS主要仿真器介绍
ADS主要仿真器介绍 ADS ( Advanced Design System ) 是美国Agilent公司推出的电路和系统分析软件,它集成多种仿真软件的优点,仿真手段丰富多样,可实现包 ...
- c++输入
1. char c = getchar(); 输入单个字符,可输入空格.换行符. 2. cin >> s; 不读取空格或换行符. 3. getline(cin, s); 输入一行到字符串s ...