刚刚接触mysql,接到领导一个任务:实现mysql的增量/差异备份

刚接到任务时,觉得太简单了,毕竟接触过的数据库oracle,mssql都支持增量/差异的备份机制的

然而稍微了解下之后,发现自己就是一只井底之蛙

尝试了多次,失败了多次

就ubuntu而言:

第一次,ubuntu16.04LTS上,apt-get install mysql-server

mysql-client安装了数据库(vession:5.7.12),按部就班安装xtrabackup,备份还原报错,咨询度娘得知xtrabackup工具尚不支持mysql5.7.*

第二次,ubuntu15.10LTS上,apt-get

install mysql-server

mysql-client安装了数据库(vession:5.6.30),按部就班安装xtrabackup,全量备份、模拟数据的增删改、增量/差异备份,到这一步都正常,接下来将增量/差异备份嵌入进全量备份中,OK这一步也正常,接下来apply-log,OK也正常,在接下来copy-back,好的,也没报错,看起来一切顺利的样子,接下来,重启数据库服务,等了半天,报超时,数据库无法访问。咨询度娘何故数据库无法启动,度娘很给力,给了好多方案,然而并没有什么用,数据库仍然无法启动,咨询了身边的数据库大神,方案也给的不少,然而并没有什么用,数据库仍然无法启动,在纠结此问题三四个小时后,果断放弃。

第三次,ubuntu15.10LTS上,apt-get

install mysql-server

mysql-client安装了数据库(vession:5.6.30),按部就班安装xtrabackup,全量备份、模拟数据的增删改,增量/差异备份,到这一步都正常,停止数据库服务,接下来将增量/差异备份嵌入进全量备份中,OK这一步也正常,接下来apply-log,OK也正常,在接下来copy-back,好的,也没报错,看起来一切顺利的样子,不知是否会同第二次一个结局,接下来,修改拥有者和所属组,启动数据库服务,一切OK,最后一步,登录数据库,查看数据库还原情况,一切正常,完成了备份还原的一次有效测试

步骤流程如下:

-------------------全备

innobackupex --user=root --password=Cherry

--defaults-file=/etc/mysql/my.cnf

--databases=test

/data/backup

-----------------增删改

update、insert、delete

---------------------增备

innobackupex --user=root --password=Cherry --incremental

/data/backup/ --incremental-dir

/data/backup/2016-05-17_23-03-52/

----------------模拟数据丢失

drop database

---------------全备apply-log

innobackupex --apply-log --redo-only

/data/backup/2016-05-17_23-03-52/

--------------增备嵌入全备

innobackupex --apply-log --redo-only

--incremental /data/backup/2016-05-17_23-03-52/

--incremental-dir=/data/backup/2016-05-17_23-13-50/

说明:增量备份多个时,按时间顺序从前到后往全备中嵌入

--------停止数据库服务

/etc/init.d/mysql stop

-----------恢复,指向全备

innobackupex --copy-back

/data/backup/2016-05-17_23-03-52/

-------注意:/var/lib/mysql需要为空,不为空需清空

----------------------更改数据库数据目录的拥有者和所属组

chown mysql.mysql /var/lib/mysql -R

------------------------启动服务

/etc/init.d/mysql start


在使用ubuntu

作为测试的系统之前,也尝试了redhat3、redhat7、centos6、centos6.5、centos7,然后都失败了,目前尚未找出原因,待进一步验证

由于单位用的系统均为centos6.*的,数据库则高低版本不一,故接下来要做的验证有:

1、centos6.*上mysql5.1,5.5,5.6,5.7的增量/差异备份,其中mysql5.7.*需要摸索出新方案,xtrabackup尚不支持mysql5.7.*,这是一个比较严重的问题

2、还原数据库之前需清空数据文件,这与实际应用的情况相悖,需寻求解决方案