你的位置:首页 > 软件开发 > 数据库 > mariadb数据库备份学习笔记

mariadb数据库备份学习笔记

发布时间:2016-04-28 00:00:04
备份类型:  完全备份  部分备份:仅备份其中的一张表或多张表  增量备份:仅备份从上次完全备份或增量备份之后变化的数据部分  热备份:在线备份,读写操作不受影响  温备份:在线备份,读操作可继续进行,但写操作不允许  冷备份:离线备份,数据库服务器离线,备份期间不能为业务提供读 ...

mariadb数据库备份学习笔记

备份类型:

  完全备份

  部分备份:仅备份其中的一张表或多张表

  增量备份:仅备份从上次完全备份或增量备份之后变化的数据部分

  热备份:在线备份,读写操作不受影响

  温备份:在线备份,读操作可继续进行,但写操作不允许

  冷备份:离线备份,数据库服务器离线,备份期间不能为业务提供读写服务

  物理备份:直接复制数据文件进行的备份

  逻辑备份:从数据库中“导出”数据另存而进行的备份

MyISAM: 支持温备,不支持

InnoDB: 既能热备又能温备

 

备份什么:数据、额外的数据(二进制日志和InnoDB的事务日志)、代码(存储过程和存储函数、触发器、事件调度器等),服务器配置文件

 

备份时需要考虑的因素:

  持锁的时长

  备份过程时长

  备份负载

  恢复过程时长

备份方案:完全备份+增量备份

备份方案之备份工具的选择:

  mysqldump:完全备份,通过备份二进制日志实现增量备份(InnoDB热备和温备,MyISAM温备)注意数据库大于1GB的话不推荐这种备份,因为还原时间会过长

在现在只需根据以前的数据库创建一个全新的数据库和一个跟原来数据库相同的配置文件,并且保证放置数据的目录为空就可将整个数据库还原了

还原之前首先得对原来备份的文件进行整理,使用命令:innobackupex --apply-log /root/backup/2016-04-27_05-25-45/,最

后同样要看到completed ok 才表示整理完毕

还原前要先停掉mariadb,使用还原命令: innobackupex --copy-back /root/backup/2016-04-27_05-25-45/,同样要看到

completed ok才算还原成功,注意我是使用默认的root用户还原的,因此数据目录所属的用户组和用户都是root,使用chown -R

mysql.mysql ./*  将属组和用户都改为mysql(不然mariadb会启动不了)

 

使用xtrabackup做增量备份,同样跟上面一样先执行一次完全备份,执行增量备份命令:

innobackupex --incremental /root/backup/ --incremental-basedir=/root/backup/2016-04-27_06-37-51

--incremental 指定增量备份的存储位置  --incremental-basedir 基于哪个备份文件做增量备份

 

还原的时候,先去整理完全备份innobackupex --apply-log --redo-only /root/backup/2016-04-27_06-37-51/

 

补充:当mariadb使用Innodb存储引擎时会使用内存中的一段空间取名叫做buffer pool,是mariadb用来存储产生的事务(包含已提

交和未提交的事务),所有事务都会被立即记录到磁盘中的事务日志文件中 数据库奔溃或终止时产生一个结果,提交的事务可能只保存

在内存当中,但没有同步到磁盘文件中去,当mariadb重启时会自动将已提交的事务同步到磁盘文件中去,未能正常提交的事务做回滚

操作 使用inobackupex备份时,innodb的事务(包括已经提交的事务和未提交的事务)也会被记录下来,当使用xtrabackup还原时

会将已提交的事务同步到磁盘文件中去,未能正常提交的事务做回滚操作,做增量备份时第一次完全备份未提交的事务不应该回滚,因

为到最后增量备份还原时此前未提交的事务可能已经提交了因此上面--redo-only的作用就是只“重放”已经提交的事务

 

整理第一次增量备份:innobackupex --apply-log  /root/backup/2016-04-27_06-37-51/ --incremental-dir=/root/backup/2016-04-27_06-42-59/

每次对增量的整理时首先都得先制定完全备份的目录,然后才是增量备份的目录

我这里只做了一次增量备份,如果有多次增量备份只有最后一次整理不用--redo-only,也就是最后一次整理把所有未提交的事务都回滚

最后的还原#innobackupex --copy-back /root/backup/2016-04-27_06-37-51/  (最后指定的目录是完全备份的目录)

这就是使用xtrabackup对整个数据库进行备份

补充:如果要还原到某个时间点(比如奔溃前的时间点)还得借助二进制日志

 更正:buffer pool 不只缓存事务,还缓存各种数据


 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:mariadb数据库备份学习笔记

关键词:数据库

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。