刚刚接触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、还原数据库之前需清空数据文件,这与实际应用的情况相悖,需寻求解决方案