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. char

    1 char是多少位的 2 java用的是什么方式表示字符 3 Unicode是用多少位表示的 1的答案是16位的,2的答案是Unicode,3的答案是16位 值得注意的是,2的答案并不是utf-8 ...

  2. 尽量避免把弹窗加在window上,可以考虑把弹窗封装到控制器里面

    封装自定义弹窗,一般来说有两种选择: 在[[[UIApplication sharedApplication] delegate] window]上add自定义view: present一个模态Con ...

  3. PDM:Training Models of Shape from Sets of Examples

    这篇论文介绍了一种创建柔性形状模型(Flexible Shape Models)的方法--点分布模型(Point Distribution Model).该方法使用一系列标记点来表示形状,重要的是根据 ...

  4. 将dataframe分割为训练集和测试集两部分

    data = pd.read_csv("./dataNN.csv",',',error_bad_lines=False)#我的数据集是两列,一列字符串,一列为0,1的labelda ...

  5. 数电基础之《OC门》

    OC门,又称集电极开路门,Open Collector.   为什么引入OC门?实际使用中,有时需要两个或两个以上与非门的输出端连接在同一条导线上,将这些与非门上的数据(状态电平)用同一条导线输送出去 ...

  6. 数据库主库从库宕机重启后binlog数据同步

    由于阿里云经典网络迁移到专用网络,一不小心没有先预备方案调整网段, 导致实例无法以内网IP形式访问数据库,被迫进行数据库停机后网络网段调整,导致宕机了几个小时...被客户各种投诉爆了.. 基于这次数据 ...

  7. dataTable使用方法

    using System; using System.Data; using System.Data.SqlClient; namespace App{ class MyClass{ public s ...

  8. theano使用GPU踩坑

    1.安装pygpu的部分 #使用豆瓣源or不使用,均安装失败 pip install pygpu -i http://pypi.douban.com/simple/ --trusted-host py ...

  9. 一个农民工混迹于 IT 行业多年后的泣血总结

    一看题目,你心里一定闪出一个想法,这又是一篇软文吧,是不是,不想辩别了,自己判断吧哈哈.这是根据本人真实经历所写的一篇总结.假如你满足你的现状,这就是一篇软文,请立刻关闭此文章,继续你现在的生活.   ...

  10. Cocos Creator 获取当前 Pageview 翻页到第几页的事件索引

    新建一个js,叫做 pageAction写一个方法 pageViewClick:function(event,coustom){ var node = event.node; this.pageInd ...