xtrabackup物理备份

1.1 安装xtraback

安装依赖:

[root@localhost ~]# yum install -y perl-DBD-MySQL perl-DBI perl-Time-HiRes libaio*

安装:

[root@localhost ~]# rpm -ivh percona-xtrabackup-2.1.5-680.rhel6.x86_64.rpm
Preparing... ########################################### [100%]
1:percona-xtrabackup ########################################### [100%]

查看安装结果:

[root@localhost ~]# rpm -qa |grep xtrabackup
percona-xtrabackup-2.1.5-680.rhel6.x86_64

Xtrabackup中主要包含两个工具:

  • xtrabackup:是用于热备份innodb, xtradb表中数据的工具,不能备份其他类型的表, 也不能备份数据表结构;
  • innobackupex:是将xtrabackup进行封装的perl脚本,提供了备份myisam表的能力。

1.2 使用xtrabackup实现对MySQL的备份

1.2.1 完全备份:

基本语法:

innobackupex --defaults-file=/etc/my.cnf.d/server.cnf --user=root --password=123456  /backup

--defaults-file=/etc/my.cnf.d/server.cnf 备份的配置文件的目录

--user 备份的用户

--password 备份的密码

/backup 备份到路径

--database 需要备份的数据库

--use-memory “准备”指定的内存 默认=100M

--apply-log “准备”的主要作用正是通过回滚未提交的事务及同步

已经提交的事务至数据文件也使得数据文件处于一致性状态。

全备之后的所有文件

[root@mysql03 2018-03-14_16-04-32]# ll
total 12316
-rw-r--r-- 1 root root 287 Mar 14 16:04 backup-my.cnf
drwx------ 2 root root 4096 Mar 14 16:04 glare_test
-rw-r----- 1 root root 12582912 Mar 14 16:04 ibdata1
drwx------ 2 root root 4096 Mar 14 16:04 mysql
drwxr-xr-x 2 root root 4096 Mar 14 16:04 performance_schema
-rw-r--r-- 1 root root 13 Mar 14 16:04 xtrabackup_binary
-rw-r----- 1 root root 89 Mar 14 16:04 xtrabackup_checkpoints
-rw-r----- 1 root root 2560 Mar 14 16:04 xtrabackup_logfile

各文件说明:

(1)xtrabackup_checkpoints 备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息;

每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN。LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是

如何发生改变的。

(2)xtrabackup_binlog_info mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置。

(3)xtrabackup_binlog_pos_innodb 二进制日志文件及用于InnoDB或XtraDB表的二进制日志文件的当前position。

(4)xtrabackup_binary —— 备份中用到的xtrabackup的可执行文件;

(5)backup-my.cnf —— 备份命令用到的配置选项信息;

在使用innobackupex进行备份时,还可以使用--no-timestamp选项来阻止命令自动创建一个以时间命名的目录;如此一来,innobackupex命令将会创建一个BACKUP-DIR目录来存储备份数据。

在备份的过程中出现的问题:

2018-03-14 15:54:43 7f091ba47720  InnoDB: Operating system error number 2 in a file operation.
InnoDB: The error means the system cannot find the path specified.
2018-03-14 15:54:43 7f091ba47720 InnoDB: File name ./ib_logfile0
2018-03-14 15:54:43 7f091ba47720 InnoDB: File operation call: 'open' returned OS error 71.
2018-03-14 15:54:43 7f091ba47720 InnoDB: Cannot continue operation.
innobackupex: Error: The xtrabackup child process has died at /usr/bin/innobackupex line 2579.

原因:

在/etc/my.cnf.d/server.cnf配置文件没有设置basedir的路径,xtrbackup找不到mysql的路径。

在/etc/my.cnf.d/server.cnf文件添加mysql的路径。

datadir=/var/lib/mysql
log_bin=mysql-bin xtrabackup备份需要开启binlog
binlog_format=row

binlog日志格式 mix 混合 statement语句 row行模式

备份全库

[root@mysql03 backup]# innobackupex --defaults-file=/etc/my.cnf.d/server.cnf --user=root --password=123456 /backup
出现下列情况备份成功!
innobackupex: MySQL binlog position: filename 'mysql-bin.000002', position 977
180315 14:12:09 innobackupex: Connection to database server closed
180315 14:12:09 innobackupex: completed OK!

全备完成之后,更新一下数据库,增加一些内容

MariaDB [glare_test]> select * from test02;
+--------+------+-------+
| player | item | count |
+--------+------+-------+
| 4 | 4 | 4 |
| 5 | 5 | 5 |
+--------+------+-------+
2 rows in set (0.00 sec)

添加一些数据测试

MariaDB [glare_test]> insert into test02 (player, item, count) values (6, 6, 6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
Query OK, 5 rows affected (0.01 sec)
Records: 5 Duplicates: 0 Warnings: 0
MariaDB [glare_test]> insert into test02 (player, item, count) values (10, 6, 6),(11,7,7),(12,8,8),(13,9,9),(16,10,10);
Query OK, 5 rows affected (0.01 sec)
Records: 5 Duplicates: 0 Warnings: 0

然后用mysqlbinlog做增量备份

查看binlog的位置

[root@mysql03 2018-03-15_14-12-05]# cat xtrabackup_binlog_info
mysql-bin.000002 977

企业一般来说,如果数据量比较大的话,会采用线上服务器同步一台专门备份的服务器采用物理备份全备+二进制进日志增量备份的方式。

二进制日志备份方式 --start-position=107 可以不用指定,默认是这个位置

mysqlbinlog /var/lib/mysql/mysql-bin.000002 >`date +%F`.sql

1.1 恢复任意时间点备份步骤:(备份齐全的情况下)

  1. 停止mysql的服务
  2. 清空MariaDB目录下的内容
  3. 选择要恢复的备份的文件解压缩到数据库目录下。
  4. Innobackupex应用日志。
  5. 修改MariaDB目录的权限。
  6. 重启服务。
  7. 将本地存储binlog日志用mysqlbinlog命令导出成sql文件,并检查sql文件的最后执行时间。
  8. 临时关闭MariaDB的binlog,将增量恢复sql文件source到mysql中。
  9. 开启binlog,一般开发会在某些表设置有修改时间的字段,这时候执行sql查看修改的时间与需要恢复时间是否大概一致。

可以根据这9个步骤写成脚本,方便以后处理全备恢复的问题。

MariaDB xtrabackup物理备份与还原的更多相关文章

  1. XtraBackup物理备份 阿里云的Mysql备份方案

    XtraBackup物理备份 Percona XtraBackup是世界上唯一的开源,免费的MySQL热备份软件,为InnoDB和XtraDB 数据库执行非阻塞备份.使用Percona XtraBac ...

  2. MySQL数据库之xtrabackup物理备份(一)

    前言:说到数据库备份,我们知道可以用来对数据库进行备份的工具有mysqldump.mydumer.mysqlpump等等,实际工作中,机器上的数据库不大的话,都是用mysqldump工具来备份,这些备 ...

  3. MySQL物理物理备份与还原工具xtraBackup

    (一)xtraBackup简介 xtraBackup是Percona公司开发的一款MySQL数据库备份软件,在备份模式中属于物理备份.其显著特点是开源.免费.备份执行过程中不会阻塞事物.备份可压缩.支 ...

  4. Innobackupex(xtrabackup)物理备份

    1. Percona XtraBackup介绍 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个完全开源的用于 MySQL 数据库物理热备的备份工具,在备份过程中不 ...

  5. Xtrabackup 物理备份

    目录 Xtrabackup 安装 Xtrabackup 备份介绍 Xtrabackup全量备份 准备备份目录 全量备份 查看全量备份内容 Xtrabackup 全量备份恢复数据 删除所有数据库 停止数 ...

  6. xtrabackup在线备份及还原

    xtrabackup下载https://www.percona.com/downloads/XtraBackup/LATEST/xtrabackup文档https://www.percona.com/ ...

  7. (4.15)mysql备份还原——物理备份之XtraBackup的下载与安装

    关键词:mysql物理备份,XtraBackup,XtraBackup安装,XtraBackup下载 实践链接:https://www.cnblogs.com/gered/p/11147193.htm ...

  8. mysql数据库-备份与还原-Percona XtraBackup 2.4备份工具使用

    目录 xtrabackup 特点 备份生成的相关文件 xtrabackup 安装 xtrabackup 用法 1 备份 2 预备份 3 还原 4 其他 还原注意事项 xtrabackup实现完全备份及 ...

  9. MySQL/MariaDB数据库的冷备份和还原

    MySQL/MariaDB数据库的冷备份和还原 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL/MariaDB数据库的备份和还原概述 1>.为什么要备份 为了 ...

随机推荐

  1. CSS3_标准盒子模型和怪异盒子模型

    #box{ width: 200px; height: 200px; background-color: pink; } 标准盒子模型 box-sizing: content-box; padding ...

  2. Redis 中可以存储的五种基本类型

    具体介绍 数字还是字符? String(字符串) 二进制安全 可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M --- Hash(字典) 键值对集合,即编程语言中的Map类型 ...

  3. 使用Java程序读取JPG Tif等格式图片的exif信息

    package com.util; import java.io.File;import java.util.Iterator; import com.drew.imaging.ImageProces ...

  4. PAT甲级1123 Is It a Complete AVL Tree【AVL树】

    题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805351302414336 题意: 给定n个树,依次插入一棵AVL ...

  5. Codeforces 1154 - A/B/C/D/E/F/G - (Undone)

    链接:https://codeforces.com/contest/1154 A - Restoring Three Numbers - [水] #include<bits/stdc++.h&g ...

  6. C# string contains 不区分大小写

    一种方法是把字符串转成小写/大写,然后包含的字符串也写成小写 /大写 另一种方法是: 1 string title = "STRING"; 2 bool contains = ti ...

  7. kubernetes in action - Overview

    传统的应用都是“monoliths”,意思就是大应用,即所有逻辑和模块都耦合在一起的 这样明显很挺多问题的,比如只能scale up,升级必须整体升级,扩容 所以我们就想把大应用,broken dow ...

  8. 从零开始搭建vue开发环境及构建vue项目

    1.安装node.js 安装完成之后,打开dos(windows+R或者直接windows键打开,输入cmd,按回车键)窗口,输入命令node -v可以查看安装的 node.js版本 node.js自 ...

  9. [ionic3.x开发记录]ng-content使用

    在ionic开发公用组件的时候,我一直在想有没有angular有没有像vue一样的slot插槽.方便组件后期扩展. 然后去翻文档,发现有ng-content这么个东西,用法很像vue的slot. 组件 ...

  10. mysql(七)

    多表查询: 显示内连接: select 字段列表 from 表名1  inner  join 表名1 on  条件 * inner 可忽略 select * from student inner  j ...