innobackupex 单数据库备份和还原(增量备份)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/csm201314/article/details/79706714

innobackupex 安装

官网链接(戳我)

命令行下安装指令如下:

$ wget https://repo.percona.com/apt/percona-release_0.1-4.$(lsb_release -sc)_all.deb

$ sudo dpkg -i percona-release_0.1-4.$(lsb_release -sc)_all.deb

$ sudo apt-get update

$ sudo apt-get install percona-xtrabackup-24

单数据库备份

因为innobackupex可实现热备,无须停止数据库服务。
这里简单把我在本地备份的步骤写一下。

首先,第一次备份需要进行一次全备(可指定对应数据库

sudo innobackupex --user=root --password=12345678 --databases=DB auto_backup/

参数一目了然,需要说明的是如果没有指定databases,那么将会把所有的database全都备份起来。最后一个参数是指定备份将会被放置的文件夹名称。然后因为备份需要权限来访问mysql数据文件所在位置,所以需要sudo。
(指令还有其他参数可参考官方文档,如有更新日后补充TODO)
这里写图片描述
可以看到,在我们指定的auto_backup文件夹中,我们生成了一个标有时间的数据库备份文件夹,为了便于与下文中的增量备份文件夹区分,我们用 mv 指令将其重命名为 full_backup。

然后,可进行增量备份

sudo innobackupex --user=root --password=12345678 --databases=DB --incremental auto_backup/ --incremental-basedir=auto_backup/full_backup

增量备份指令与全备份指令略有不同,–incremetal参数指明这是一次增量备份,而后指明放置增量备份的文件夹的名称。
–incremental-basedir指明此次备份是基于哪一次备份进行的增量备份的文件夹,注意,这里可以是全备份,也可以是增量备份。

这里写图片描述

可以看到,在我们指定的auto_backup文件夹中,我们生成了一个标有时间的数据库增量备份文件夹,我们用 mv 指令将其重命名为 increment_backup。
这里写图片描述
两个文件夹中的xtrabackup_checkpoints可以了解到备份类型,Lsn,日志偏移量等信息,因为在做增量备份前没有对数据库进行增删操作,两个备份的last_lsn没有发生变化。

数据库备份还原

注意:在进行备份还原之前,一定要记得把mysql服务停止,否则备份恢复会失败,同时也会导致部分数据库配置文件缺失,如mysqld.sock,mysqld.pid等,解决起来很麻烦(卸载重装大法):

service mysql stop

然后,备份前的准备:

sudo innobackupex --apply-log --redo-only --no-lock auto_backup/full_backup

将增量备份还原到全备份中:

sudo innobackupex --apply-log --redo-only --no-lock auto_backup/full_backup --incremental-dir=auto_backup/increment_backup

然后,通过直接复制文件的方式,但是可能会产生一致性问题(TODO):

sudo cp auto_backup/full_backup/. /var/lib/mysql/ -rf

修改数据文件目录权限:

sudo chown -R mysql /var/lib/mysql

启动数据库服务:

service mysql start

大功告成!

猜你喜欢

转载自blog.csdn.net/csm201314/article/details/79706714