欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-20 20:57:16
...

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)
innobackupex 单数据库备份和还原(增量备份)
可以看到,在我们指定的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指明此次备份是基于哪一次备份进行的增量备份的文件夹,注意,这里可以是全备份,也可以是增量备份。

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

可以看到,在我们指定的auto_backup文件夹中,我们生成了一个标有时间的数据库增量备份文件夹,我们用 mv 指令将其重命名为 increment_backup。
innobackupex 单数据库备份和还原(增量备份)
两个文件夹中的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

大功告成!