mariadbxtrabackup物理备份与还原(代码片段)

lqhhome lqhhome     2022-11-30     419

关键词:

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

mysql物理物理备份与还原工具xtrabackup(代码片段)

原文:MySQL物理物理备份与还原工具xtraBackup(一)xtraBackup简介xtraBackup是Percona公司开发的一款MySQL数据库备份软件,在备份模式中属于物理备份。其显著特点是开源、免费、备份执行过程中不会阻塞事物、备份可压缩、支持全备和... 查看详情

冷备份恢复与异机还原

...oracle11g11.2.0.1)冷备份发生在数据库关闭状态下,直接拷贝物理文件的备份方式,备份数据库可以运行在归档模式,也可以运行在非归档模式。备份流程:1)首先在运行的库中得到运行的所有文件。主要备份文件:passwordfile、spfil... 查看详情

(4.15)mysql备份还原——物理备份之xtrabackup

关键词:mysql物理备份,XtraBackup 【1】物理备份介绍  物理备份就是二进制文件,不可编辑,数据库的一个副本(逻辑备份是SQL文件,可编辑)  特点  (1)由数据库文件和目录组成,是Mysql数据目录的拷贝/部分拷贝... 查看详情

mysql备份与还原之mysqldump(代码片段)

...据导出到一个文档中(.sql/.txt)适合场景:中小型数据库物理备份:保存/usr/local/mysql/data数据库文件目录适合场景:大型数据库在线热备(冗余):需要有多台机器,主备模式,集群模式二.逻辑备份(mysqldump)表级别备份mysqldum... 查看详情

sql备份与还原如何用脚本语言写?

...t,name='bak_t_log'--还原RESTOREDATABASE数据库名FROMDISK='物理路径(备份文件在磁盘的位置)' 查看详情

xtrabackup备份和还原

Xtrabackup备份原理:物理备份,不锁表,那么怎么保证现有的数据(备份过程中有尚未提交或已经提交但未同步事务)与复制出来的数据一致呢?我们知道MySQL修改操作都会先记录在ib_logfile日志文件,再同步到磁盘,这个文件并... 查看详情

mysql数据备份(mysqldump+mysqlhotcopy+xtrabackup)(代码片段)

...份过程须考虑的因素4.备份的类型1)逻辑备份2)物理备份3)在线热备(数据冗余、AB复制、主从复制)5.备份工具㈠社区版安装包中的备份工具①mysqldump(逻辑备份,只能全量备份)②mysqlhotcopy(物理备... 查看详情

xtrabackup备份还原单库/表

...时候,对逻辑备份进行恢复的时间太长了。这个时候选择物理备份的方式能大大缩短其中时间。        使用xtrabackup进行全库物理备份还原 查看详情

windows系统备份与还原

进入PE,打开GHOST,选项如下:选择备份的存放位置与文件名:选择备份方式备份状态备份完成到这里基本上就是备份的全过程。还原系统查找备份文件选择硬盘选择还原的分区开始还原还原成功到这里系统就还原成功, 查看详情

centos备份与还原

centos备份与还原dump备份restore还原dd数据备份tar备份scpmkisofs镜像文件制作  dump备份 1.dump主要用于备份整个文件系统备份,虽然也可以备份单一目录,但是对目录文件支持不足,单一目录还是需要使用打包压缩的方式进... 查看详情

数据库的备份与还原系列——全备份+两增量的备份与还原

场景:周日全备份,周一,周二增量备份,周三出现问题,数分钟后发现;数据库的安装:yum install mariadb-server -ysystemctl start mariadbyum install percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm 在10.2的高版本上默 查看详情

数据库备份还原恢复理论

 备份冷备:关闭数据库并进行数据库物理文件的拷贝过程。热备:数据库处于open阶段时的备份,通过指令将数据库文件头锁定,然后进行物理系统拷贝,然后通过指令解冻数据文件头,解冻后通过日志文件和undo表空间内容... 查看详情

mongodb备份与还原(代码片段)

MongoDB备份与还原今天迁移MongoDB数据库出现了很奇怪的问题,使用的方法如下:备份方法:mongodump-hdbhost-ddbname-odbdirectory还原方法:mongorestore-h<hostname><:port>-ddbname<path>备份正常,但还原出现报错:Failed:blog.posts:errorres... 查看详情

navicate备份与还原数据库

...考:https://jingyan.baidu.com/article/574c521977dea06c8d9dc1b1.html1、备份数据库    首先新建数据库    选中数据库下方的“备份”,右击“新建备份”        2、还原数据库    选中数据库下方的“备份”,右击“... 查看详情

mysql数据库物理备份(代码片段)

MySQL数据库物理备份MySQL物理备份xtrabackup软件备份介绍xtrabackup备份原理xtrabackup备份恢复原理xtrabackup备份工具的下载及安装xtrabackup全库备份与恢复xtrabackup增量备份与恢复MySQL物理备份备份的实质:对数据文件+配置文件+... 查看详情

gitlab备份与还原

1、备份  登录原服务器,执行命令:gitlab-rakegitlab:backup:create  备份后文件在如下目录,下载该文件/var/opt/gitlab/backups 2.还原  先安装目标gitlab服务器,还原必须相同版本,版本号在此位置查找。安装指定版本的gitlab参... 查看详情

数据库备份与还原

--备份BACKUPDATABASE[库名称]TODISK=‘E:qqddd.bak‘--备份并覆盖BACKUPDATABASE[库名称]TODISK=‘E:qqddd.bak‘WITHINIT--将数据库置于离线状态ALTERDATABASE[库名称]SETOFFLINEWITHROlLBACKIMMEDIATE;--恢复数据库RESTOREDATABASE[库名称]FROMDISK=‘ 查看详情

学习笔记(十三)——数据库备份还原的知识点与注意事项

学习笔记(十三)——数据库备份还原的知识点与注意事项 一、备份还原基本概念1、 完整备份:完整备份因为需要备份的数据量大,所以需要在空闲时间进行,并且定期进行。2、 日志备份:日志备份的数据... 查看详情