MariaDB xtrabackup物理备份与还原

xtrabackup物理备份

1.1 安装xtraback

安装依赖:

[[email protected] ~]# yum install -y perl-DBD-MySQL perl-DBI perl-Time-HiRes libaio*

安装:

[[email protected] ~]# rpm -ivh percona-xtrabackup-2.1.5-680.rhel6.x86_64.rpm
Preparing... ########################################### [100%]
1:percona-xtrabackup ########################################### [100%]

查看安装结果:

[[email protected] ~]# 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 “准备”的主要作用正是通过回滚未提交的事务及同步
已经提交的事务至数据文件也使得数据文件处于一致性状态。

全备之后的所有文件

[[email protected] 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行模式
备份全库

[[email protected] 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的位置

[[email protected] 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个步骤写成脚本,方便以后处理全备恢复的问题。

原文地址:https://www.cnblogs.com/lqhhome/p/10772918.html

时间: 2024-09-30 11:37:50

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

XtraBackup物理备份(未测试)

XtraBackup物理备份 Percona XtraBackup是世界上唯一的开源,免费的MySQL热备份软件,为InnoDB和XtraDB 数据库执行非阻塞备份.使用Percona XtraBackup,可以实现以下优势: 快速可靠地完成的备份 备份期间的不间断事务处理 节省磁盘空间和网络带宽 自动备份验证 创建热InnoDB备份,而不暂停数据库 对MySQL进行增量备份 将压缩的MySQL备份压缩到另一个服务器 在MySQL服务器之间移动表 轻松创建新的MySQL主从 备份MySQL,而不

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

XtraBackup物理备份 Percona XtraBackup是世界上唯一的开源,免费的MySQL热备份软件,为InnoDB和XtraDB 数据库执行非阻塞备份.使用Percona XtraBackup,可以实现以下优势: 快速可靠地完成的备份 备份期间的不间断事务处理 节省磁盘空间和网络带宽 自动备份验证 创建热InnoDB备份,而不暂停数据库 对MySQL进行增量备份 将压缩的MySQL备份压缩到另一个服务器 在MySQL服务器之间移动表 轻松创建新的MySQL主从 备份MySQL,而不

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

前言:说到数据库备份,我们知道可以用来对数据库进行备份的工具有mysqldump.mydumer.mysqlpump等等,实际工作中,机器上的数据库不大的话,都是用mysqldump工具来备份,这些备份工具各有优缺点,这里不详细介绍,今天分享另一个数据库备份工具,叫XtraBackup. 一.Xtrabackup介绍 1.官网说明 Percona XtraBackup可以在不阻止用户查询的情况下实现MySQL备份,因此非常适合拥有大数据集和无法承受长时间停机的关键任务应用程序的公司.作为开源解决

MySQL生产库之Xtrabackup物理备份

在生产环境中,我们一般采取mysqldump全库备份,但这对于大型数据库是不可用的,因为mysqldump是逻辑备份,备份和恢复的效率缓慢,根据个人经验给出一个临界值的话,500G以下的数据库可以用mysqldump来进行全库备份,500G以上的数据库则需要物理全库备份,甚至是增量备份.Xtrabackup是物理备份,其备份速度也因其物理特性远超逻辑备份的速度,而且Xtrabackup就是为了逻辑备份而生的,接下来演示一下Xtrabackup是如何完成对数据库的全备和增备的. 一:首先我们安装x

【MySQL】【备份】使用XtraBackup物理备份MySQL的流程

简介: ? XtraBackup包含两个主要的工具即:xtrabackup和innobackupex ? xtrabackup:只能备份InnoDB和XtraDB两种事务引擎的表,不支持备份非事务引擎的表. ? innobackupex:封装了xtrabackup的perl脚本,支持在全局读锁下的非事务表备份,支持无全局读锁下的事务表. 安装: ? 推荐安装percona公司的源然后yum安装 yum -y install https://www.percona.com/redir/downlo

xtrabackup在线备份及还原

xtrabackup下载https://www.percona.com/downloads/XtraBackup/LATEST/xtrabackup文档https://www.percona.com/doc/percona-xtrabackup/2.2/innobackupex/innobackupex_script.html 安装依赖yum -y install libaio perl-Time-HiRes perl-DBD-MySQL perl-IO-Socket-SSL Error: Pa

Xtrabackup备份与还原

Xtrabackup之备份与还原 Xtrabackup是percona的一个开源项目,可以热备份innodb,XtraDB,和MyISAM(会锁表),可以看做是mysql商业备份工具InnoDB Hotbackup的免费替代品. ①xtrabackup只能备份InnoDB和XtraDB两种数据库表,支持在线热备份,可以在不加锁的情况下备份Innodb数据表,不过此工具不能操作MyiSAM引擎表 ②innobackupex是一个脚本封装,封装了xtrabackup,能同时处理Innodb和MyIS

MySQL之备份与还原

本章内容 备份和恢复简介 实验一:实现Mariadb的冷备份和恢复 实验二:实现基于LVM的备份还原,结合binlog恢复最新状态 mysqldump简介与用法 实验三:数据库数据文件损坏,如何还原最新状态? 实验四:误删除表,如何恢复最新状态? xtrabackup简介与用法 实验五: Xtrabackup完全备份及还原 实验六: Xtrabackup完全,增量备份及还原 实验七: Xtrabackup单表导出和导入 备份和恢复 为什么要备份 灾难恢复:硬件故障.软件故障.自然灾害.黑|客攻|

MySQL 备份与还原详解

相关阅读: MySQL备份和恢复具体实施 http://www.linuxidc.com/Linux/2012-12/76257.htm MySQL备份与恢复的三种方法总结 http://www.linuxidc.com/Linux/2012-12/75428.htm MySQL备份还原(视图.存储过程) http://www.linuxidc.com/Linux/2012-01/52665.htm 一.MySQL备份类型 1.热备份.温备份.冷备份 (根据服务器状态) 热备份:读.写不受影响: