第83讲:MySQL数据库备份工具及备份策略的核心概念
1. MySQL数据库库数据备份的理念
数据备份是作为运维来说必不可少的一个环节,无论是数据库数据、程序中间件都需要定期备份。
在进行备份之前首先要去设计,是要增量备份还是全量备份,是全部全量备份,还是一周一次全备,剩下每天都是增量备份,以及备份周期是否自动备份等等,都需要提前设计好。
数据虽然备份好了,但是我们要每天的看一看备份的存在性,也就是检查备份是否成功。
还要针对备份的空间做出详细的告警,避免磁盘空间不够用导致无法备份。
虽然每天都在备份,但是如果不进行定期的恢复演练,我们也不知道备份的数据是否是可用的,需要定义的拿备份文件到测试环境进行演练。
MySQL的备份类型分为以下几种:
- 热备
- 在数据库正常工作的情况下吗,备份数据,并且能够进行一致性恢复,只有InnoDB存储引擎能够实现。
- 温备
- 锁表时进行备份数据,只能查询不能修改,影响写入操作,只有myisam存储引擎能实现。
- 冷备
- 关闭数据库业务的状态下,在数据库没有任何变更时,进行备份数据。
2.MySQL数据库备份工具介绍
MySQL的备份工具分为两类
- 逻辑备份工具
- 逻辑备份是基于SQL语句进行备份的,包括建表语句、数据的SQL语句等等。
- 常用的MySQL逻辑备份工具就是MySQL自带的mysqldump以及mysqlbinlog两种,大多数生产环境中都是使用mysqldump和mysqlbinlog进行数据备份以及还原。
- 物理备份工具
- 物理备份是基于磁盘数据文件的备份。
- 常用的MySQL物理备份工具有Xtrabackup(XBK),第三方厂家开源的备份工具,还有MEB(MySQL Enterprise Backup)MySQL企业版备份工具,付费使用。
3.逻辑备份与物理备份的比较
逻辑备份的代表工具就是mysqldump,物理备份的代表工具就是XBK。
1)逻辑备份
mysqldump是MySQL自带的逻辑备份工具,也是企业中使用最频繁的备份工具。
mysqldump的优点:
- 不需要下载安装,安装完MySQL后自带备份工具。
- mysqldump备份出来的数据都是数据库中的SQL文件,文本格式,可读性很高,并且非常便于备份处理。
- mysqldump的压缩比较高,可以节省更多的磁盘空间。
mysqldump的缺点:
- mysqldump是逻辑备份,备份出来的都是SQL文件,因此mysqldump依赖于数据库存储引擎,需要将磁盘中的数据读取到内存,然后转换成SQL再进行存储,比较耗费主机的CPU、磁盘IO、内存等资源,如果数据量很大的情况小,备份的效率会很低。
使用mysqldump备份100G以内的数据,大概花费1小时左右。
使用mysqldump备份数据库数据时,建议100G以内的使用mysqldump进行备份,当然如果超过TB的数据量也可以使用mysqldump进行备份,但是硬件资源一定要给到位,TB以上的数据量如果磁盘空间很充足的话,建议使用XBK进行备份,效率比mysqldump要高。
2)物理备份
XBK是物理备份的典型代表,是第三方公司开发的物理备份工具。
XBK的优点:
- XBK是物理备份,是基于磁盘数据文件的备份,类似于直接备份磁盘上的数据文件,不需要进行逻辑结构的转换,性能较高备份时间段。
XBK的缺点:
- 可读性较差,因为备份的是数据文件,并不是易读的SQL文件。
- XBK备份的压缩占比较低,需要占用很多的磁盘空间。
当数据量小的时候使用XBK备份也可以,备份的时间快,只是占用的磁盘空间很高,建议在大于100G小于1TB的场景下使用XBK物理备份,如果数据量很大几TB甚至PB,那么用XBK进行备份,所占用从磁盘空间是无法想象的。
无需纠结应该使用逻辑备份还是物理备份,要根据自己的需求量来决定,大多数企业还是使用mysqldump进行数据备份的。
4.数据库的备份策略
对于数据量不大的数据库,百G以内,备份方式一般都是全库备份,每天晚上都会进行全库备份。
对于数据量很大的数据库,建议使用全库备份+增量备份,一周一次全量备份,然后每天进行增量备份。
全量备份指的是备份库中所有的数据库,增量备份指的是,从全量备份开始处备份变化的数据。
逻辑备份实现全量备份使用mysqldump即可,增量备份就是备份Binlog日志。
物理备份XBK有全量备份的工具xtrabackup_full和增量备份工具xbtrabackup_incr,XBK的增量备份也是要靠Binlog进行备份,并且比较复杂,因此可以不用XBK的增量备份,直接备份Binlog即可。
备份周期可以按照周日全备,周一到周六增量备份,或者每天全量备份都可以。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!