xtrabackup 实现MySQL数据库备份

原标题:xtrabackup 实现MySQL数据库备份

mysqldump备份手段是采用逻辑备份,其最大的弱点就是备份和恢复速度都慢,对于一个幼于50G的 数据库而言,这个速度照样能批准的,但倘若数据库专门大,那再行使mysqldump备份就不太正当了。这时就 必要一栽益用又高效的工具,xtrabackup就是其中一款,号称免费版的InnoDB HotBackup。Xtrabackup实现是 物理备份,而且是物理炎备 现在主流的有两个工具能够实现物理炎备:ibbackup和xtrabackup;ibbackup是商 业柔件,必要授权,专门腾贵。而xtrabackup功能比ibbackup还要富强,但却是开源的。因此吾们这边就来介绍xtrabackup的行使。Xtrabackup挑供了两栽命令走工具:xtrabackup:专用于备份InnoDB和XtraDB引擎的 数据;innobackupex:这是一个perl脚本,在实走过程中会调用xtrabackup命令,如许用该命令即能够实现备 份InnoDB,也能够备份MyISAM引擎的对象。

1、安设xtrabackup

Xtrabackup中主要包含两个工具:xtrabackup:是用于炎备份innodb, xtradb外中数据的工具,声援在线炎备 份,能够在不添锁的情况下备份Innodb数据外,不过此工具不及操作Myisam引擎外;innobackupex:是将 xtrabackup进走封装的perl脚本,能同时处理Innodb和Myisam,但在处理Myisam时必要添一个读锁。由于操 作Myisam时必要添读锁,这会阻滞线上服务的写操作,而Innodb异国如许的局限,以是数据库中Innodb外类 型所占的比例越大,则越有利。

就如许,xtrabackup工具就安设益了,接下来就能够开起备份了

方案一、xtrabackup十足备份 binlog添量备份 1. 十足备份

[root@mysql ~]#innobackupex --defaults-file=/etc/my.cnf --user=root --password=123/opt/mysqlbackup/full/

注:--defaults-file=/etc/my.cnf 指定mysql的配置文件my.cfg,倘若指定则必须是第一个参数。/path/to/BACKUP-DIR/指定备份所存放的现在的现在录,备份过程会创建一个以那时备份时间命名的现在录存放备份 文件。

展现如下图所示,则外示备份成功:

睁开全文

在备份的同时,备份数据会在备份现在录下创建一个以现在日期时间为名字的现在录存放备份文件:

在行使innobackupex进走备份时,还能够行使--no-timestamp选项来不准命令自动创建一个以时间命名的现在 录;如此一来,innobackupex命令将会创建一个BACKUP-DIR现在录来存贮备份数据

注:备份数据库的用户必要具有响答权限,倘若要行使一个最幼权限的用户进走备份,则可基于如下 命令创建此类用户:

至此全备十足成功,然后向mysql某个库插入几条数据,然后进走添量备份 对十足备份的后数据库更改进走

2.进制日志添量备份

3.还原数据库

模拟数据库损坏, 吾这边直接行使删除数据现在录文件来模拟损坏。

还原十足备份:

准备(prepare)一个十足备份 清淡情况下,在备份完善后,数据尚且不及用于恢复操作, 由于备份的数据中能够会包含尚未挑交的事务或已经挑交但尚未同步至数据文件中的事务。因此,此时数据文 件仍处理纷歧致状态。“准备”的主要作用正是议定回滚未挑交的事务及同步已经挑交的事务至数据文件也使得 数据文件处于一致性状态。在准备(prepare)过程终结后,InnoDB外数据已经前滚到整个备份终结的点,而 不是回滚到xtrabackup刚开起时的点。

注:/opt/mysqlbackup/full/2020-06-15_22-49-41/ 备份文件所在现在录名称 倘若实走准确,其末了输出的几走信 息清淡如下:

在实现“准备”的过程中,innobackupex清淡还能够行使--use-memory选项来指定其能够行使的内存的大幼,默 认清淡为100M。倘若有有余的内存可用,能够众划分一些内存给prepare的过程,以挑高其完善速度。innobackupex命令的--copy-back选项用于实走恢复操作,其议定复制一切数据有关的文件至mysql服务器 DATADIR现在录中来实走恢复过程。innobackupex议定backup-my.cnf来获取DATADIR现在录的有关新闻。

还原数据库语法:

这边的--copy-back指明是进走数据恢复。数据恢复完善之后,必要修改有关文件的权限mysql数据库才能平常启动。倘若实走准确,其输出新闻的末了几走清淡如下:

请确保如上新闻的最走一走展现“completed OK!”。修改还原后的数据现在录权限:

当数据恢复至DATADIR现在录以后,产品展厅还必要确保一切数据文件的属主和属组均为准确的用户,如mysql,否则,在 启动mysqld之前还必要事先修改数据文件的属主和属组。如:

还原添量备份:为了防止还原时产生大量的二进制日志,在还原时可一时关闭二进制日志后再还原:

也能够在命令走实走如下语句

重新启动二进制日志并验证还原数据:

xtrabackup十足备份 xtrabacup添量备份

前线吾们进走添量备份时,行使的照样行家段:备份二进制日志。其实xtrabackup还声援进走添量备份。先介 绍下xtrabackup的备份原理 在InnoDB内部会维护一个redo日志文件,吾们也能够叫劳动务日志文件 (transaction log,事务日志)。事务日志会存储每一个InnoDB外数据的记录修改。当InnoDB启动时,InnoDB 会检查数据文件和事务日志,并实走两个步骤:它行使已经挑交的事务日志到数据文件,并将修改过但异国挑 交的数据进走回滚操作。xtrabackup在启动时会记住log sequence number(LSN),并且复制一切的数据文 件。复制过程必要一些时间,以是这期间倘若数据文件有改动,那么将会使数据库处于一个分歧的时间点。这 时,xtrabackup会运走一个后台进程,用于监视事务日志,并从事务日志复制最新的修改。xtrabackup必须持 续的做这个操作,是由于事务日志是会轮转重复的写入,并且事务日志能够被重用。以是xtrabackup自启动开 起,就不息的将事务日志中每个数据文件的修改都记录下来。这就是xtrabackup的备份过程 以是每个InnoDB的页面都会包含一个LSN新闻,每当有关的数据发生转折,有关的页面的LSN就会自动添长。这正是InnoDB外能够进走添量备份的基础。xtraBackup基于InnoDB的crash-recovery功能。它会复制innodb的 data file,由于不锁外,复制出来的数据是纷歧致的,在恢复的时候行使crash-recovery,使得数据恢复一致。当InnoDB启动的时候,它会先往检查data file和transaction log,并且会做二步操作:

1.It applies committed transaction logentries to the data files 2.it performs an undo operation on anytransactions that modified data but did not commit. 以是在prepare过程中,XtraBackup行使复制到的transactions log对备份出来的innodb data file进走crash recovery

准备测试环境,创建一个测试数据库,并创建一张外输入几走数据

xtrabacup进走备份实走十足备份:

片面表现新闻如下图所示:

如下图所示:

注:第二次添量备份--incremental-basedir指向上一次添量备份文件的位置。注:第二次添量备份--incremental-basedir指向上一次添量备份文件的位置。注:第二次添量备份--incremental-basedir指向上一次添量备份文件的位置。

xtrabacup进走添量恢复 为了验证比对,先删除两个添量备份前外内里的数据

完善备份恢复:在进走恢复前,倘若完善备份在长途主机上,最先将完善备份复制到本地主机上,倘若是tar 包,则必要先解包,解包命令为:tar –izxf xxx.tar,这边必须行使-i参数(无视存档中的 0 字节块(清淡意味着 文件终结))。

开起全备份恢复 :

恢复成功如图所示:

恢复到第一次添量的时刻 添量备份恢复的步骤和完善备份恢复的步骤基本一致,只是行使日志的过程稍有不 同。添量备份恢复时,是先将一切的添量备份挨个行使到完善备份的数据文件中,然后再将完善备份中的数据 恢复到数据库中。

如图所示:

恢复到第二次添量备份前线:

恢复整个库 :

停留mysql数据库:

开起rsync同步数据文件:

innobackupex全库备份 innobackupex添量备份

测试环境准备创建一个测试数据库,并创建一张外输入几走数据

1、innobackupex先做十足备份

做第一次添量备份 先录入添量数据

基于全备和第一个添量备份来做第二次添量备份 先录入添量数据录入

[root@mysql ~]# mkdir -p /tmp/mysqldatabak[root@mysql ~]# mv /usr/local/mysql/data/* /tmp/mysqldatabak/#将恢复益的数据遵命配置文件的需求拷贝到响答现在录[root@mysql ~]# innobackupex --defaults-file=/etc/my.cnf --user=root --password="123" --copy-back /opt/mysqlbackup/full/full_incre_20200616_005156/

#当数据恢复至DATADIR现在录以后,还必要确保一切数据文件的属主和属组均为准确的用户,如mysql,否则,在 启动mysqld之前还必要事先修改数据文件的属主和属组[root@mysql ~]# cd /usr/local/mysql/data/[root@mysql data]# lltotal 12328-rw-r----- 1 root root 298 Jun 16 01:12 ib_buffer_pool-rw-r----- 1 root root 12582912 Jun 16 01:12 ibdata1drwxr-x--- 2 root root 4096 Jun 16 01:12 mysqldrwxr-x--- 2 root root 8192 Jun 16 01:12 performance_schemadrwxr-x--- 2 root root 8192 Jun 16 01:12 sysdrwxr-x--- 2 root root 50 Jun 16 01:12 test1drwxr-x--- 2 root root 52 Jun 16 01:12 test2drwxr-x--- 2 root root 52 Jun 16 01:12 test3-rw-r----- 1 root root 20 Jun 16 01:12 xtrabackup_binlog_pos_innodb-rw-r----- 1 root root 598 Jun 16 01:12 xtrabackup_info

[root@mysql data]# chown -R mysql:mysql /usr/local/mysql/data/

#启动服务[root@mysql data]# systemctl restart mysqld

登录mysql界面,查望数据是否已经恢复

Xtrabackup的“流”及“备份压缩”功能 Xtrabackup对备份的数据文件声援“流”功能,即能够将备份的数据议定 STDOUT传输给tar程序进走归档,而不是默认的直接保存至某备份现在录中。要行使此功能,仅必要行使-stream选项即可。

原创作者:张九冫

原创作者:张九冫

posted on 2020-06-23  作者:admin  阅读量:

栏目导航

Powered by 阿拉善左旗峪务通讯有限公司 @2018 RSS地图 html地图

Copyright 站群 © 2013-2018 360 版权所有