MySQL备份恢复之XtraBackup

mysql 8.0 使用 XtraBackup增量备份及恢复 1.问题描述 使用 XtraBackup 进行增量备份(仅仅备份自上次备份后变更的数据),并使用备份数据进行恢复。 增量备份原理: 1)每个 InnoDB Page 都包含 LSN,LSN 是整个数据库的系统版本号,每个 InnoDB Page 的 LSN 都展示 InnoDB Page 是如何变化的 2)在增量备份时,对比 InnoDB Page 的 LSN 与 全量备份的 LSN,如果 InnoDB Page 的 LSN 较新,则复制该 InnoDB Page 3)更进一步,如果你知道 LSN,则无需基 阅读详情

一、 简介

        我们知道,针对InnoDB存储引擎,MySQL本身没有提供合适的热备工具,ibbackup虽是一款高效的首选热备方式,但它是是收费的。好在Percona公司给大家提供了一个开源、免费的Xtrabackup热备工具,它可实现ibbackup的所有功能,并且还扩展支持真正的增量备份功能,是商业备份工具InnoDB Hotbackup的一个很好的替代品。

Xtrabackup包括两个主要工具:Xtrabackup和innobackupex:

Xtrabackup只能备份InnoDB和XtraDB两种引擎表,而不能备份MyISAM数据表。

innobackupex则是参考InnoDBHotbackup的innoback脚本修改而来的一个perl脚本,它封装了xtrabackup,主要是为了能方便的同时备份InnoDB和MyISAM引擎表。但在处理MyISAM时需要加一个读锁,这会阻塞线上服务的写操作,所以数据库中MyISAM表越少越好。另外,该工具还加入了一些其它使用选项,比如slave-info,可以在备份中记录一些Slave需要的信息,根据这些信息,可以很方便的利用备份重做Slave。

        通过Xtrabackup,不但可在线(热)备份整个库的InnoDB、XtraDB表,还可在上一次整库备份的基础上做增量备份(InnoDB only),其工作原理如下:

        首先完成一个完全备份,并记录下此时检查点的LSN(Log Sequence Number);在进行增量备份时,比较表空间中每个页的LSN是否大于上次备份时的LSN,如果是,则备份该页,同时记录当前检查点的LSN。

注意:在增量备份时,作为备份基础的全备文件不能压缩,否则备份失效;另外,增量备份期间,表结构变更的话,变更部分的备份也会失效。

二、安装

         Pecona官方网站提供了Xtrabackup源码包、二进制包以及RPM包三种安装包,下载地址为:http://www.percona.com/downloads/XtraBackup/ 本文选择最简单方便的RPM包安装,如下:

[root@db ~]# rpm -ivh percona-xtrabackup-2.0.5-499.rhel5.x86_64.rpm

warning: percona-xtrabackup-2.0.5-499.rhel5.x86_64.rpm:Header V4 DSA signature: NOKEY, key ID cd2efd2a

Preparing...               ########################################### [100%]

  1:percona-xtrabackup    ########################################### [100%]

   安装完成后,会在/usr/bin/目录下生成如下命令工具:

[root@db ~]# cd /usr/bin/

[root@db bin]# ls xtr* inno*

innobackupex    innochecksum xtrabackup_51  xtrapchar  xtrapinfo xtrapproto  xtrapstats

innobackupex-1.5.1  xtrabackup   xtrabackup_55  xtrapin    xtrapout  xtrapreset

其中:

innobackupex                                 是备份时直接使用的工具,它是一个perl脚本,内部封装xtrabackup;

innobackupex-1.5.1                       是innobackupex文件的一个软链接;

xtrabackup                                       是备份Innodb引擎的脚本;

xtrabackup_51                                xtrabackup运行时需要调用的工具,适用于MySQL 5.1版本;

xtrabackup_55                                xtrabackup运行时需要调用的工具,适用于MySQL 5.5版本;

三、Xtrabackup的使用

        首先来学习使用Xtrabackup这个命令工具,前面提到:它只能备份InnoDB和XtraDB两种引擎表,不能备份MyISAM数据表。

通过--help参数查看该命令的用法,如下:

Usage: [xtrabackup  [--default-file=#]   --backup |  xtrabackup [--defaults-file=#] --prepare] [OPTIONS]

参数解读如下:

--defaults-file=#标识默认的配置文件,可显式手工指定,也可不设置;若不设置,则Xtrabackup缺省将从以下目录查找配置文件:
/etc/my.cnf    
/etc/mysql/my.cnf       
/usr/local/etc/my.cnf 
~/.my.cnf 
然后从中读取[mysqld]和[xtrabackup]配置段。[mysqld]中只需指定datadir、innodb_data_home_dir、innodb_data_file_path、innodb_log_group_home_dir、innodb_log_files_in_group、innodb_log_file_size这6个参数即可让Xtrabackup正常工作。
--defaults-extra-file=#如果使用了该参数,则会在读取了全局配置文件后,再读取这里指定的配置文件
--target-dir=name备份文件的存放路径
--backup  执行备份操作,将备份文件存放到target-dir指定的目录下
--prepare对备份文件执行恢复前的准备(生成InnoDB logfile)
--print-param打印备份或恢复时需要的参数
--use-memory=# 该参数在prepare的时候使用,控制prepare时innodb实例使用的内存量
--suspend-at-end 在target-dir目录下产生一个xtrabackup_suspended文件,将xtrabackup进程挂起,不停地将数据文件的变化同步到备份文件,直到用户手工删除xtrabackup_suspended文件
--throttle=#每秒钟IO次数,限制backup时使用的I/O操作量,使备份对数据库正常业务的影响最小化
--log-stream 该参数在backup时使用,将xtrabackup_logfile的内容输出到标准输出,使用该参数时会自动使用suspend-at-end参数,innobackupex脚本的stream模式会使用该参数。
--incremental-lsn=name增量备份时只拷贝LSN比该参数指定值新的ibd pages,前次备份到了哪个LSN可以看前次备份集的xtrabackup_checkpoints文件
--incremental-basedir=name该参数在backup的时候使用,备份比该参数指定位置的备份集新的idb pages
--incremental-dir=name该参数在prepare的时候使用,指定prepare时产生的delta文件和日志文件的存放路径
--tables=name在备份file-per-table类型的文件时使用,使用正则表达式指定需要备份的innodb表
-h, --datadir=nameMySQL数据库的数据文件目录

示例1:完全备份与恢复(InnoDB)

(1)备份

脚本内容:

[root@db xtrabak]# more xtra_backup.sh 
# 2014-04-29
mkdir -p /data/xtrabak/bak_`date +%F`/
echo "backup begin" `date`
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/xtrabak/bak_`date +%F`/
cp -r /var/lib/mysql/test /data/xtrabak/bak_`date +%F`/

注意:xtrabackup只备份数据文件,并不备份数据表结构文件(.frm),所以还需手动拷贝一下,以便xtrabackup恢复时使用

执行备份脚本:

[root@db xtrabak]# sh xtra_backup.sh 
backup begin Tue Apr 29 15:22:09 CST 2014
xtrabackup version 2.0.5 for Percona Server 5.1.59 unknown-linux-gnu (x86_64) (revision id: 499)
xtrabackup: uses posix_fadvise().
xtrabackup: cd to /var/lib/mysql/
xtrabackup: Target instance is assumed as followings.
xtrabackup:   innodb_data_home_dir = /var/lib/mysql
xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup:   innodb_log_group_home_dir = /var/lib/mysql
xtrabackup:   innodb_log_files_in_group = 2
xtrabackup:   innodb_log_file_size = 5242880
>> log scanned up to (1830807)
[01] Copying /var/lib/mysql/ibdata1 to /data/xtrabak/bak_2014-04-29/ibdata1
[01]        ...done
xtrabackup: The latest check point (for incremental): '1830807'
xtrabackup: Stopping log copying thread.
.>> log scanned up to (1830807)


xtrabackup: Transaction log of lsn (1830807) to (1830807) was copied.

从输出可以看出,备份过程首先记录LSN,然后拷贝数据文件(注意,并没有备份表结构文件.frm),最后拷贝并记录LSN。备份完成后,在指定目标目录除了拷贝过来的数据文件ibdata1及表结构文件夹test外,还生成了另外两个文件,分别记录日志及检查点,如下:

[root@db xtrabak]# cd bak_2014-04-29/
[root@db bak_2014-04-29]# ls
ibdata1  test  xtrabackup_checkpoints  xtrabackup_logfile

恢复

删除库test,然后通过备份文件执行恢复,如下:

脚本内容:

[root@db xtrabak]# more xtra_prepare.sh 
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/xtrabak/bak_`date +%F`/
cp -r /data/xtrabak/bak_`date +%F`/test/ /var/lib/mysql/
rm /var/lib/mysql/ib*
cp /data/xtrabak/bak_`date +%F`/ib* /var/lib/mysql/
chown -R mysql:mysql /var/lib/mysql
service mysql restart

说明:脚本中步骤依次为:

实施对备份文件进行恢复前的准备;

从备份文件拷贝数据表结构到默认的数据目录;

删除默认数据目录中对应的数据文件并复制备份的数据文件到默认数据目录;

修改默认数据目录权限并重启MySQL服务

执行恢复脚本:

[root@db xtrabak]# sh xtra_prepare.sh 
xtrabackup version 2.0.5 for Percona Server 5.1.59 unknown-linux-gnu (x86_64) (revision id: 499)
xtrabackup: cd to /data/xtrabak/bak_2014-04-29/
xtrabackup: This target seems to be not prepared yet.
xtrabackup: xtrabackup_logfile detected: size=2097152, start_lsn=(1830807)
xtrabackup: Temporary instance for recovery is set as followings.
xtrabackup:   innodb_data_home_dir = ./
xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup:   innodb_log_group_home_dir = ./
xtrabackup:   innodb_log_files_in_group = 1
xtrabackup:   innodb_log_file_size = 2097152
xtrabackup: Temporary instance for recovery is set as followings.
xtrabackup:   innodb_data_home_dir = ./
xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup:   innodb_log_group_home_dir = ./
xtrabackup:   innodb_log_files_in_group = 1
xtrabackup:   innodb_log_file_size = 2097152
xtrabackup: Starting InnoDB instance for recovery.
xtrabackup: Using 104857600 bytes for buffer pool (set by --use-memory parameter)
InnoDB: The InnoDB memory heap is disabled
InnoDB: Mutexes and rw_locks use GCC atomic builtins
InnoDB: Compressed tables use zlib 1.2.3
140429 15:28:34  InnoDB: Initializing buffer pool, size = 100.0M
140429 15:28:34  InnoDB: Completed initialization of buffer pool
140429 15:28:34  InnoDB: highest supported file format is Barracuda.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
140429 15:28:34  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Last MySQL binlog file position 0 85912, file name ./mysql-bin.000026
140429 15:28:34 Percona XtraDB (http://www.percona.com) 1.0.17-12.5 started; log sequence number 1830807


[notice (again)]
  If you use binary log and don't use any hack of group commit,
  the binary log position seems to be:
InnoDB: Last MySQL binlog file position 0 85912, file name ./mysql-bin.000026


xtrabackup: starting shutdown with innodb_fast_shutdown = 1
140429 15:28:34  InnoDB: Starting shutdown...
140429 15:28:34  InnoDB: Shutdown completed; log sequence number 1832037
Shutting down MySQL....                                    [  OK  ]
Starting MySQL.                                            [  OK  ]

执行完成后,检查发现test库已成功恢复。

示例2:增量备份与恢复

增量备份是以完全备份或上一次增量备份为基础的备份,适合数据库很大的情况,支持在线热备,备份期间不锁定表,不影响用户使用,备份恢复效率都比较高。

下面我们来模拟一次增量备份:

(1)  完全备份

现在test库有三张表,执行一次完全备份

--脚本内容:

[root@db xtrabak]# more xtra_full_bak.sh 
# 2014-04-29
mkdir -p /data/xtrabak/full_bak_`date +%F`/
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/xtrabak/full_bak_`date +%F`/
cp -r /var/lib/mysql/test/ /data/xtrabak/full_bak_`date +%F`/

--执行脚本

[root@db xtrabak]# sh xtra_full_bak.sh 
xtrabackup version 2.0.5 for Percona Server 5.1.59 unknown-linux-gnu (x86_64) (revision id: 499)
xtrabackup: uses posix_fadvise().
xtrabackup: cd to /var/lib/mysql
xtrabackup: Target instance is assumed as followings.
xtrabackup:   innodb_data_home_dir = /var/lib/mysql
xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup:   innodb_log_group_home_dir = /var/lib/mysql
xtrabackup:   innodb_log_files_in_group = 3
xtrabackup:   innodb_log_file_size = 67108864
>> log scanned up to (1653514)
[01] Copying /var/lib/mysql/ibdata1 to /data/xtrabak/full_bak_2014-04-29/ibdata1
[01]        ...done
xtrabackup: The latest check point (for incremental): '1653514'
xtrabackup: Stopping log copying thread.
.>> log scanned up to (1653514)


xtrabackup: Transaction log of lsn (1653514) to (1653514) was copied.

执行完成后,查看备份文件

[root@db xtrabak]# cd full_bak_2014-04-29/
[root@db full_bak_2014-04-29]# ls
ibdata1  test  xtrabackup_checkpoints  xtrabackup_logfile

(2)  增量备份

向test库中添加一张新表,然后执行增量备份

--脚本内容:

[root@db xtrabak]# more xtra_delta_bak.sh 
# 2014-04-29
mkdir -p /data/xtrabak/delta_bak_`date +%F`/
xtrabackup --defaults-file=/etc/my.cnf --backup --target-dir=/data/xtrabak/delta_bak_`date +%F`/ --incremental-basedir=/data/xtrabak/full_bak_`date +%F`/
cp -r /var/lib/mysql/test/ /data/xtrabak/full_bak_`date +%F`/

说明:这里需要再次拷贝test库的表结构文件,因为期间可能会增加或删除表

--执行脚本

[root@db xtrabak]# sh xtra_delta_bak.sh 
xtrabackup version 2.0.5 for Percona Server 5.1.59 unknown-linux-gnu (x86_64) (revision id: 499)
incremental backup from 1653514 is enabled.
xtrabackup: uses posix_fadvise().
xtrabackup: cd to /var/lib/mysql
xtrabackup: Target instance is assumed as followings.
xtrabackup:   innodb_data_home_dir = /var/lib/mysql
xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup:   innodb_log_group_home_dir = /var/lib/mysql
xtrabackup:   innodb_log_files_in_group = 3
xtrabackup:   innodb_log_file_size = 67108864
>> log scanned up to (1660436)
[01] Copying /var/lib/mysql/ibdata1 to /data/xtrabak/delta_bak_2014-04-29/ibdata1.delta
[01]        ...done
xtrabackup: The latest check point (for incremental): '1660436'
xtrabackup: Stopping log copying thread.
.>> log scanned up to (1660436)


xtrabackup: Transaction log of lsn (1660436) to (1660436) was copied.

执行完成后,查看备份文件

[root@db xtrabak]# cd delta_bak_2014-04-29/
[root@db delta_bak_2014-04-29]# ls
ibdata1.delta  ibdata1.meta  xtrabackup_checkpoints  xtrabackup_logfile

注意:在增量备份目录下,数据文件是以.delta结尾的,增量备份只备份上一次完全备份后被修改过的page;当然,若再次执行增量备份,可以上一次完全备份为基础,也可以第一次增量备份为基础,每次增量备份的目录都是需要修改的。

(3)  恢复

删除test库,模拟故障,然后通过完全备份及增量备份文件执行恢复。

--脚本内容:

[root@db xtrabak]# more xtra_delta_prepare.sh 
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/xtrabak/full_bak_`date +%F`/
xtrabackup --defaults-file=/etc/my.cnf --prepare --target-dir=/data/xtrabak/full_bak_`date +%F`/ --incremental-dir=/data/xtrabak/delta_bak_`date +%F`/
cp -r /data/xtrabak/full_bak_`date +%F`/test/ /var/lib/mysql/
rm /var/lib/mysql/ib*
cp /data/xtrabak/full_bak_`date +%F`/ib* /var/lib/mysql/
chown -R mysql:mysql /var/lib/mysql
service mysql restart

--执行脚本

[root@db xtrabak]# sh xtra_delta_prepare.sh 
xtrabackup version 2.0.5 for Percona Server 5.1.59 unknown-linux-gnu (x86_64) (revision id: 499)
xtrabackup: cd to /data/xtrabak/full_bak_2014-04-29/
xtrabackup: This target seems to be not prepared yet.
xtrabackup: xtrabackup_logfile detected: size=2097152, start_lsn=(1653514)
xtrabackup: Temporary instance for recovery is set as followings.
xtrabackup:   innodb_data_home_dir = ./
xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup:   innodb_log_group_home_dir = ./
xtrabackup:   innodb_log_files_in_group = 1
xtrabackup:   innodb_log_file_size = 2097152
xtrabackup: Temporary instance for recovery is set as followings.
xtrabackup:   innodb_data_home_dir = ./
xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup:   innodb_log_group_home_dir = ./
xtrabackup:   innodb_log_files_in_group = 1
xtrabackup:   innodb_log_file_size = 2097152
xtrabackup: Starting InnoDB instance for recovery.
xtrabackup: Using 104857600 bytes for buffer pool (set by --use-memory parameter)
InnoDB: The InnoDB memory heap is disabled
InnoDB: Mutexes and rw_locks use GCC atomic builtins
InnoDB: Compressed tables use zlib 1.2.3
140429 18:28:21  InnoDB: Initializing buffer pool, size = 100.0M
140429 18:28:21  InnoDB: Completed initialization of buffer pool
140429 18:28:21  InnoDB: highest supported file format is Barracuda.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
140429 18:28:21  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Last MySQL binlog file position 0 2596, file name ./mysql-bin.000043
140429 18:28:22 Percona XtraDB (http://www.percona.com) 1.0.17-12.5 started; log sequence number 1653514


[notice (again)]
  If you use binary log and don't use any hack of group commit,
  the binary log position seems to be:
InnoDB: Last MySQL binlog file position 0 2596, file name ./mysql-bin.000043


xtrabackup: starting shutdown with innodb_fast_shutdown = 1
140429 18:28:22  InnoDB: Starting shutdown...
140429 18:28:22  InnoDB: Shutdown completed; log sequence number 1653514
xtrabackup version 2.0.5 for Percona Server 5.1.59 unknown-linux-gnu (x86_64) (revision id: 499)
incremental backup from 1653514 is enabled.
xtrabackup: cd to /data/xtrabak/full_bak_2014-04-29/
xtrabackup: This target seems to be already prepared.
xtrabackup: xtrabackup_logfile detected: size=2097152, start_lsn=(1660436)
xtrabackup: Temporary instance for recovery is set as followings.
xtrabackup:   innodb_data_home_dir = ./
xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup:   innodb_log_group_home_dir = /data/xtrabak/delta_bak_2014-04-29/
xtrabackup:   innodb_log_files_in_group = 1
xtrabackup:   innodb_log_file_size = 2097152
xtrabackup: page size for /data/xtrabak/delta_bak_2014-04-29//ibdata1.delta is 16384 bytes
Applying /data/xtrabak/delta_bak_2014-04-29//ibdata1.delta to ././ibdata1...
xtrabackup: Temporary instance for recovery is set as followings.
xtrabackup:   innodb_data_home_dir = ./
xtrabackup:   innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup:   innodb_log_group_home_dir = /data/xtrabak/delta_bak_2014-04-29/
xtrabackup:   innodb_log_files_in_group = 1
xtrabackup:   innodb_log_file_size = 2097152
xtrabackup: Starting InnoDB instance for recovery.
xtrabackup: Using 104857600 bytes for buffer pool (set by --use-memory parameter)
InnoDB: The InnoDB memory heap is disabled
InnoDB: Mutexes and rw_locks use GCC atomic builtins
InnoDB: Compressed tables use zlib 1.2.3
140429 18:28:22  InnoDB: Initializing buffer pool, size = 100.0M
140429 18:28:22  InnoDB: Completed initialization of buffer pool
140429 18:28:22  InnoDB: highest supported file format is Barracuda.
InnoDB: The log sequence number in ibdata files does not match
InnoDB: the log sequence number in the ib_logfiles!
140429 18:28:22  InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Last MySQL binlog file position 0 2703, file name ./mysql-bin.000045
140429 18:28:22 Percona XtraDB (http://www.percona.com) 1.0.17-12.5 started; log sequence number 1660436


[notice (again)]
  If you use binary log and don't use any hack of group commit,
  the binary log position seems to be:
InnoDB: Last MySQL binlog file position 0 2703, file name ./mysql-bin.000045


xtrabackup: starting shutdown with innodb_fast_shutdown = 1
140429 18:28:22  InnoDB: Starting shutdown...
140429 18:28:23  InnoDB: Shutdown completed; log sequence number 1660436
Shutting down MySQL...                                     [  OK  ]
Starting MySQL.....                                        [  OK  ]
执行成功后,检查发现test数据库已成功恢复。

四、 Innobackupex使用

        前面提到,Innobackupex可同时备份InnoDB和MyISAM引擎表,所以通常都直接使用innobackupex。需要注意的是my.cnf中必须加上datadir这个参数,因为要根据它来定位InnoDB引擎的数据文件位置。

innobackupex也包含一系列参数,可通过innobackupex --help命令查看,此处不逐一说明了。

下面我们通过一个完整的示例来演示其用法,如下:

(1)  备份

--脚本内容:

[root@db xtrabak]# more backup.sh 
# 2014-04-29
mkdir -p /data/xtrabak/bak_`date +%F`/
echo "backup begin" `date`
log=innobackupex_`date +%F`.log
str=bak_`date +%F`
innobackupex --user=root --password=root123 --defaults-file=/etc/my.cnf --stream=tar /data/xtrabak/$str/ 2>/data/xtrabak/$log | gzip>/data/xtrabak/$str/base.tar.gz
echo "backup end" `date`
cp /etc/my.cnf /data/xtrabak/my_`date +%F`.cnf

--执行脚本:

[root@db xtrabak]# sh backup.sh 
backup begin Wed Apr 30 16:15:02 CST 2014
backup end Wed Apr 30 16:15:27 CST 2014

[root@db xtrabak]# cd bak_2014-04-30/
[root@db bak_2014-04-30]# ls
base.tar.gz

执行完成后,生成备份文件的压缩包

(2)  增量日志备份

由于数据库不停的对外提供服务,备份之后的操作会记录到binlong日志文件中,所以我们还应备份后续的日志文件。

此处删除几张表,并切换日志以模拟真实环境,备份完整的binlog日志文件;然后关闭数据库,删除数据库所有文件,以便模拟故障。

--脚本内容(binlog备份到远程机器):

[root@db xtrabak]# more binlog_bak.sh 
cd /var/lib/
DATE=`date -d '-1 hour' +%Y%m%d%H00`
touch -t "${DATE}" starttemp
echo "$DATE"
umount /mnt_log>/dev/null 2>&1
mount -t nfs 192.168.3.108:/logcenter /mnt_log
find /var/lib/mysql/mysql-bin.* -newer starttemp|xargs -I {} cp -p {} /mnt_log/mysql-binlog/192.168.3.28/
# umount -t nfs /mnt_log

(3)  恢复

--脚本内容:

[root@db xtrabak]# more prepare.sh 
# 2014-04-30
service mysql stop
mkdir -p /data/xtrabak/prepare_`date +%F`/
tar -ixzvf /data/xtrabak/bak_`date +%F`/base.tar.gz -C /data/xtrabak/prepare_`date +%F`/
innobackupex --apply-log --user=root --defaults-file=/etc/my.cnf /data/xtrabak/prepare_`date +%F`/
innobackupex --copy-back --user=root --defaults-file=/etc/my.cnf /data/xtrabak/prepare_`date +%F`/
chown -R mysql:mysql /var/lib/mysql/
rm -rf /var/lib/mysql/xtrabackup_binlog_pos_innodb
service mysql restart

--完全备份恢复后,通过binlog进行增量恢复

[root@db test]# mysqlbinlog start-position=****** /mnt_log/mysql-binlog/192.168.3.28/mysql-bin.000052 |mysql -uroot -proot123

注意:start-position的位置可通过解压后的备份文件查看,如下:

[root@db xtrabak]# cd prepare_2014-04-30/

[root@db prepare_2014-04-30]# more xtrabackup_binlog_info 
mysql-bin.000047        1472

或者

[root@db prepare_2014-04-30]# more xtrabackup_binlog_pos_innodb 
./mysql-bin.000047      1472

成功恢复后,MySQL即可正常使用。

记一次使用innobackupex做全备恢复失败的经历 记一次使用innobackupex做全备恢复失败的经历 在分别使用innobackupex --apply-log和innobackupex --copy-back命令成功后,相关信息如下: [root@node3 app]#innobackupex --apply-log /app/backup/2018-05-07_22-49-42/ 180507 22:57:49 innobacku... 阅读详情

相关推荐

MySQL之Xtrabackup备份与恢复

一、Xtrabackup介绍   MySQL冷备、mysqldump、MySQL热拷贝都无法实现对数据库进行增量备份。在实际生产环境中增量备份是非常实用的,如果数据大于50G或100G,存储空间足够的情况下,可以每天进行完整备份,如果每天产生的数据量较大,需要定制数据备份策略。例如每周实用完整备份,周一到周六实用增量备份。而Percona-Xtrabackup就是为了实现增量备份而出现的一...

Richardlygo的博客 1566

xtrabackup恢复数据时提示“This target seems to be not preared yet.”

测试MySQL数据库备份文件可用性。 备份文件是腾讯云平台备份的MySQL。文件需要xtrabackup恢复。

bigwood99的博客 707

percona-xtrabackup实现备份与恢复mysql

Percona-XtraBackup   下载地址:https://www.percona.com/downloads/XtraBackup/LATEST/ 文档地址: https://learn.percona.com/hubfs/Manuals/Percona_Xtra_Backup/Percona_XtraBackup_2.4/Percona-XtraBackup-2.4.9.pdf

mimi_csdn的博客 3124

Xtrabackup备份与恢复

Xtrabackup备份与恢复 一、Xtrabackup介绍 MySQL冷备、mysqldump、MySQL热拷贝都无法实现对数据库进行增量备份。在实际生产环境中增量备份是非常实用的,如果数据大于50G或100G,存储空间足够的情况下,可以每天进行完整备份,如果每天产生的数据量较大,需要定制数据备份策略。例如每周实用完整备份,周一到周六实用增量备份。而Percona-Xtrabackup就是为了实现增量备份而出现的一款主流备份工具,xtrabakackup有2个工具,分别是xtrabakup、innoba

whp114870的博客 1053

MySQL物理备份恢复实战之XtraBackup

逻辑备份是SQL文件,可编辑。物理备份就是二进制文件,不可编辑,数据库的一个副本(逻辑备份时SQL文件,可编辑)特点:有数据文件和目录组成,是mysql数据目录的全部/拷贝速度快,文件复制备份粒度小除了备份数据以外,还可以备份日志和配置文件适合场景:最适合大数据量的备份,比如百GB,TB级……物理备份方法:xtrabackup(percona公司开源免费的,早期对应的官方收费版本innobackup)mysql enterprise backup(MEB/mysqlbackup),官方收费其他:cp/tar

weixin_tank88921的博客 1528

mysql实战——xtrabackup全量备份/增量备份及恢复

恢复的机器必须有my.cnf配置文件,再配置文件中配置好datadir目录即数据问目录,数据目录也必须为空,若不为空则会报错。可以看到第一次增量备份后新增的表空间被恢复了。可以看到inc4是第一次增量备份生成的文件。增量备份需要获取全量备份的to_lsn。如上图to_lsn=18374406。可以看到test2表空间。

zyjzyjjyzjyz的博客 4925

mysql之xtrabackup备份及恢复

根据实际情况选择相应版本的xtrabackup,我的mysql是5.7.24对应的xtrabackup版本为2.4.* 查看xtrabackup版本(支持最低mysql版本) 接下来开始备份 一、备份 1、全备 xtrabackup --backup --target-dir=/mnt/data/all/ --user=root --password=123456 --socket=...

wzq756984的博客 9884

MySQL入门之Xtrabackup备份与恢复命令用法实战

一、Xtrabackup介绍   MySQL冷备、mysqldump、MySQL热拷贝都无法实现对数据库进行增量备份。在实际生产环境中增量备份是非常实用的,如果数据大于50G或100G,存储空间足够的情况下,可以每天进行完整备份,如果每天产生的数据量较大,需要定制数据备份策略。例如每周实用完整备份,周一到周六实用增量备份。而Percona-Xtrabackup就是为了实现增量备份而出现的一款主流备份工具,xtrabakackup有2个工具,分别是xtrabakup、innobakup...

6272

MySQL8Xtrabackup物理备份恢复教程

MySQL物理备份保姆级教程

huanhuanzhou blog 1745

MySQL数据备份与恢复:使用XtraBackup

数据备份是指定期将数据复制到不同的存储介质或位置,以防止数据丢失或损坏。备份的主要目的是在发生灾难(如硬件故障、人为错误或恶意攻击)时,能够快速恢复数据,保障业务的连续性。Percona XtraBackup是一个开源的、免费的MySQL备份工具,由Percona公司开发和维护。它支持热备份(即在数据库运行时进行备份),并且可以执行增量备份,从而减少备份时间和存储空间的需求。通过本文的学习,你已经掌握了如何使用Percona XtraBackup进行MySQL的热备份和恢复。

墨夶的博客 2050

计算机视觉——SIFT特征匹配

文章目录一、SIFT特征检测原理1.1基本思想1.2二、SIFT特征检测图片兴趣点三、SIFT特征检测描述子匹配四、输入图片检测与之 一、SIFT特征检测原理 1.1基本思想 1.2 二、SIFT特征检测图片兴趣点 代码: 检测结果: 三、SIFT特征检测描述子匹配 四、输入图片检测与之 ...

weixin_43869874的博客 3855

@Percona XtraBackup 进行 MySQL 备份&恢复

以这个为例,CentOS 8 默认的软件源可能不包含最新版的 XtraBackup,因此我们使用 Percona 官方提供的 Yum 仓库进行安装。XtraBackup 需要连接到 MySQL 服务器并进行操作,因此需要一个具有相应权限的数据库用户。首先,下载并安装 Percona 的发布包,该包会自动配置 Yum 仓库。(等号后不留空格)并在提示时输入密码,或者将密码存储在配置文件中。步骤会回滚未提交的事务、前滚已提交的事务,使备份文件达到一个。现在我们开始进行实际的备份操作。替换为一个复杂的密码)。

欢迎光临本栈——“码栈仙”,一个架构师的脑洞收容所。 这里不生产代码,只做bug的搬运工。 1177

R语言计算植物群落重要值:从基础概念到优势种判定

在植被生态学研究中,重要值是衡量物种在群落中地位的核心指标,它综合了相对多度、相对频度与相对显著度三个维度,能够客观反映物种的数量优势、分布广度与空间占据能力。理解重要值的生态学逻辑,是开展群落分类、优势种判定及多样性分析的基础。而R语言凭借其批量处理、可复现和与后续多元统计无缝衔接的优势,成为生态学研究者处理样方数据的高效工具。从野外记录的宽表到标准化长表,再到分组汇总计算相对指标,R语言能够显著提升数据处理效率与准确性。本文以实测群落数据为例,系统梳理重要值的两种算法口径、基于dplyr和tidyr的完

weixin_42634811的博客 265

Mysql 备份恢复 mysqldump与xtrabackup备份

1、mysqldump: mysql 原生自带很好用的逻辑备份工具2、mysqlbinlog: 实现 binlog 备份的原生态命令3、xtrabackup: precona 公司开发的性能很高的物理备份工具备份的基本流程如下1.调用FTWRL(flush tables with read lock),全局禁止读写2.开启快照读,获取此时的快照(仅对innodb表起作用)3.备份非innodb表数据(*.frm,*.myi,*.myd等)4.非innodb表备份完毕后,释放FTWRL锁。

LoveSummer 2059

IntelliJ IDEA 中git使用说明书

IntelliJ IDEA 中git使用说明书

junyang2012的博客 5389

Pixel 4/4 XL 刷机小白必看:Magisk Root 全流程详解(附电信网络适配技巧)

本文为Pixel 4/4 XL用户提供了一份详尽的Magisk Root全流程指南。从解锁Bootloader、刷入Magisk,到解决电信网络VoLTE适配问题,再到隐藏Root以通过银行App检测,手把手教你安全获取系统最高权限并优化日常使用体验。

weixin_29310605的博客 264

MySQL备份恢复之xtrabackup物理备份

mysql中的xtrabackup物理备份 物理备份 1.物理备份+binlog的形式恢复 2.对于myisam表来说:物理备份也是锁表 3.对于innodb表来说:物理备份不锁表,所以就会导致备份出来的数据页都是不一致的,根本用不了。为了解决这个问题,mysql会做几件事 (1)使用备份期间生成的 redolog 的备份,可以将备份的数据页恢复成备份结束的时刻。 (2)使用备份结束以后对应的 ...

qq_43028054的博客 495

多物理场光学仿真软件:COMSOL_(10).激光器与谐振腔仿真

定义Nd:YAG晶体的材料属性% 折射率% 吸收系数% 发射截面% 定义光泵浦源% 泵浦光波长% 泵浦光强度% 泵浦光方向% 定义全反射镜% 选择边界% 完美电导体边界条件% 定义部分反射镜% 选择边界% 反射率边界条件% 反射率通过 COMSOL 对激光器和光学谐振腔进行仿真,可以全面评估激光器的性能,包括输出功率、效率、稳定性和模式选择等。这些仿真结果为激光器的设计和优化提供了重要的参考依据。

kkchenjj的博客 1648

linux xtrabackup备份恢复,xtrabackup进行mysql备份和恢复

一、完全备份。1、mysql安装路径:/usr/local/mysql33072、mysql数据目录路径:/usr/local/mysql3307/data3、备份文件在存储路径:/home/backupPrepare4、xtrabackup安装路径:/root/lixia/percona-xtrabackup-2.0.05、进入/root/lixia/percona-xtrabackup-2.0...

weixin_26833205的博客 759

让 SAP HANA 查询飞起来:彻底避开隐式类型转换的性能暗礁

SAP HANA性能优化:警惕隐式类型转换陷阱 隐式类型转换是SAP HANA项目中常见的性能隐患。当SQL表达式两侧数据类型不匹配时,系统会自动进行类型转换,这种看似便利的操作可能导致: 过滤条件无法下推,扫描范围扩大 列存引擎优势丧失,触发中间结果物化 执行计划走向低效路径 治理方案包括: 从源头统一数据类型,确保常用比较字段类型一致 将显式转换应用于常量而非整列 使用生成列预先转换存储,避免运行时计算 排查方法: 通过SQL Plan Cache定位高频查询 分析执行计划中的转换迹象 重点关注VARC

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 11万+

【Camera2教程一】Camera2的框架Pipeline和framework中核心类和接口的详细介绍

Camera2 的 API 模型被设计成一个 Pipeline(管道),它按顺序处理每一帧的请求并返回请求结果给客户端。

jiangchaobing_2017的博客 791

xtrabackup备份恢复Mysql数据库

我们把/data/mysql/data目录下所有的文件删掉,然后恢复--move-back --copy-back分别是移动回和COPY回。--ftwrl-wait-timeout=60 如果表上有超过5秒的大事务,会等待60秒,60秒后报错。xtrabackup是物理备份,会备份data目录里的所有文件,但是不会备份/log里的文件。报错:/data/mysql/log/bin/mysql-bin.000003这个文件已存在。删掉/data/mysql/log/bin/目录下所有的文件重新恢复,成功!

liys0811的博客 1416

STM32 使用SYN6288语音模块

本篇文章带大家学习一下SYN6288语音模块,这个模块可以用于车载设备,语音电子书等众多产品当中,而且这个模块支持多种编码格式,GB2312,GBK等字符编码格式。SYN6288语音合成模块是一种语音合成设备,其可实现文字转语音功能,将输入的文字信息通过内部的处理和合成,输出相对应的语音信息。SYN6288模块具有语音合成质量高、输出音质好、使用方便等特点,因此广泛应用于语音播报、语音提示、语音识别、智能家居、智能家电、安防监控等领域。支持多语言:包括中文、英文、日文、韩文等多种语言。

m0_49476241的博客 2万+

使用xtrabackup进行mysql数据的备份与恢复

使用xtrabackup工具进行mysql数据的备份与恢复。

zhangpfly的博客 884

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: phpMyAdmin 常见错误解决
下一篇: quartz 时间调度 多个触发器
OnePiece_Sky
博客等级 码龄15年 9粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值