mysql备份工具XtraBackup2.4(备份)

安装见:mysql备份工具xtrabackup2-4(安装)

官方XtraBackup2.4教程: https://www.percona.com/doc/percona-xtrabackup/2.4/index.html

前言:XtraBackup可以单库或单表备份,如果你mysql-1数据库上有db1、db2、db3 三个数据库,你选择仅备份db1数据库,那么如果你用备份的db1备份文件直接还原到mysql-1的话,会导致db2、db3全部丢失! 也就是说XtraBackup会将数据库完全还原成你备份文件的数据库内容。如果想要备份单个数据库db1 又不想还原db1的时候影响到其他数据库的内容,建议选择mysqldump进行db1的逻辑备份(也可以使用其他数据库管理软件进行逻辑备份)。

确保在备份前先在mysql的配置文件(宝塔位于etc/my.cnf )中加这个配置, /www/server/data 是你数据库数据文件存放的实际位置(这是宝塔的)。

datadir = /www/server/data

使用xtrabackup参数的时候,千万不要有多余的空格! “=”等号前后没有空格!有些注意参数的前后顺序不要颠倒了,否则报错莫名其妙

一、全部备份还原

mysql-1数据库服务器,db1是远程数据库中db1数据库的从库,已开启主从同步。db2、db3是mysql-1的两个本地常规数据库

1、全部备份。不一定要用root用户,但要保证有足够的权限。 将全部数据库备份到/www/backup/XtraDb/all20191209/目录下

xtrabackup --user=root --password=root的密码  --backup --target-dir=/www/backup/XtraDb/all20191209/

2、修改远程主库db1的数据,删除本地db2数据库。

drop database db2;

3.1、还原前准备关闭mysql数据库

/etc/init.d/mysqld stop

3.2、准备备份文件(上面备份的 /www/backup/XtraDb/all20191209/目录 ) ,准备完毕后该目录的备份文件就可以用于还原了

xtrabackup --prepare --target-dir=/www/backup/XtraDb/all20191209/

4.1、删除数据库的数据目录(建议备份不要删除),因为xtrabackup还原的时候数据目录需要为空

# 将数据库数据目录/www/server/data/剪切到/www/server/data_bak/目录。也可以删除
mv /www/server/data/ /www/server/data_bak/
rm -rf /www/server/data/*

4.2、重新创建数据库目录

mkdir -p /www/server/data/ 

5.1、还原数据库

xtrabackup --copy-back --target-dir=/www/backup/XtraDb/all20191209/

5.2、修改数据目录权限

chown -R mysql:mysql /www/server/data

5.3、启动mysql

/etc/init.d/mysqld start

5.4、登陆数据库查看,之前备份后手动删除的db2数据库已还原。start slave无法启动从库,提示需要手动配置(XtraBackup可以专门对主从同步数据库备份的方式,本文的备份参数看来无法达到要求)。

Starting MySQL.Logging to '/www/server/data/iZbp119285u9wwmxdnttwgZ.err'.
The server quit without updating PID file (/www/server/data[FAILED]285u9wwmxdnttwgZ.pid).

启动失败报错“without updating PID file”,可能是/www/server/data 文件夹没有写的权限
解决方法执行
chown -R mysql:mysql /www/server/data
chmod -R 755 /www/server/data 然后重新启动mysql
宝塔默认data文件夹内文件660权限,data及它下面的文件夹是700权限用户属于mysql


报错 Original data directory /www/server/data is not empty!主要是数据库的数据目录不是非空,删除后再创建即可!
rm -rf /www/server/data/*

二、增量备份数据库

1、先全量备份,后面以此备份为基础

xtrabackup --user=root --password=root的密码  --backup --target-dir=/www/backup/XtraDb/full20191209

2、全量备份后对系统进行一些数据增改,模拟数据库变化

3、增量备份第一次

xtrabackup --user=root --password=2576d0a91713827a --backup  --target-dir=/www/backup/XtraDb/inc1_20191209/ --incremental-basedir=/www/backup/XtraDb/full20191209/

4、自上次增量备份后又对数据库进行了一些数据增改

5、以第一次备份为基础再次进行增量备份

xtrabackup --user=root --password=2576d0a91713827a --backup  --target-dir=/www/backup/XtraDb/inc2_20191209/ --incremental-basedir=/www/backup/XtraDb/inc1_20191209/

6、还原前需要对这些备份进行准备!准备后就无法再次作为新增量备份的基础备份了,所以可以选择将full20191209、inc1_20191209、inc2_20191209文件夹拷贝到别处进行准备。

6.1、prepare全备

xtrabackup --prepare --apply-log-only --target-dir=/www/backup/XtraDb/full20191209/

6.2、再在全量full20191209备份的基础上prepare增量备份1

xtrabackup --prepare --apply-log-only --target-dir=/www/backup/XtraDb/full20191209/ --incremental-dir=/www/backup/XtraDb/inc1_20191209/

6.3、再在6.2以用增量备份1 准备后的新全量full20191209备份的基础上 prepare增量备份2

xtrabackup --prepare --apply-log-only --target-dir=/www/backup/XtraDb/full20191209/ --incremental-dir=/www/backup/XtraDb/inc2_20191209/

6.4、将上面增量合并后的 新全量full20191209备份 再prepare一次

xtrabackup --prepare --target-dir=/www/backup/XtraDb/full20191209/

至此full20191209可用于还原数据库。

如果还原后启动mysql失败,可查看是否有僵尸进程,如果有的话杀掉

查看进程命令: ps -ef|grep mysqld , 杀掉进程命令: kill -9 进程号

另外,增量备份不一定要以上一次的增量备份为基础,但是prepare准备的时候有需要特别注意的地方。假设第一次全备“全备1”,第一次增量备份在“全备1”基础上进行“增备1”,第二次增量备份在“全备1”基础上进行“增备2”。如果这时候要还原到“增备1”的状态,则需要将“全备1”与“增备1”文件夹复制到别的文件夹下,然后在新的文件夹进行prepare。 如果直接在原位置进行prepare准备后,那么“增备2”将无法基于“全备1”进行prepare(因为“增备1”prepare准备后会修改“全备1”内容)。

基于互联网精神,在注明出处的前提下本站文章可自由转载!

本文链接:https://ranjuan.cn/mysql备份工具xtrabackup2-4(备份)/

赞赏

微信赞赏支付宝赞赏

如何设计简单的php在线考试系统
idea-java-springboot-jar-war-package
andriod-virtual-devices-error