MySQL数据库备份: mysqldump VS xtrabackup

MySQL数据库备份工具比较

最近使用了公司的一个项目管理工具进行团队任务管理,本来这个工具使用起来很方便的,但是前几天突然发现最近一段时间做的更新操作全都消失不见了,找工具的运维人员也恢复不回来,感觉这个工具再使用下去隐隐有些担忧。从这个事情上深深体会到了数据备份的重要性,我们生产环境上的数据如果没有做任务安全措施就跟裸奔一样,毫无安全感,随便出现一点状况就可能导致数据丢失。

针对数据库的数据保护措施通常包括主从复制和数据备份,主从复制比较强大,一方面实现了数据的备份,另外可以通过主从复制实现读写分离,缓解数据的负载压力,但是主从复制搭建起来稍微麻烦一些。数据备份可以使用工具轻松实现,结合定时任务也能一定程度上保证我们数据的安全。今天刚好对我们的生产环境数据库做了自动备份,这里记录一下工具的选择工程。

我们产品使用MySQL作为数据库,目前用于对MySQL数据库备份最常用的两个工具是mysqldump和xtrabackup。两个工具采用了不同的备份策略,各有自己的优势和不足,我们在选择的时候需要结合自己的实际场景进行选择。

两者对比如下:

工具名称 mysqldump xtrabackup
备份方式 逻辑备份 物理备份
数据保存方式 sql脚本 二进制文件
是否支持热备份
是否支持增量备份
备份过程 会锁表 不锁表
是否影响正常业务 影响较大 影响较小
备份和恢复性能 耗时较长 耗时较短
占用空间 占用空间小 占用空间较大

那我们应该如何选择呢?当我们的数据量比较大时,而且希望备份操作对正常业务影响尽可能小,而且我们有足够的空间来存储备份数据时,我们应该选择使用xtrabackup,基于二进制文件进行备份,速度非常快,再结合打包压缩,也能适度降低存储空间;当我们的业务数据库相对较小,而且没有那么多空闲空间存储备份数据时,可以选择使用mysqldump进行备份,尽量选择在业务量较低如深夜进行备份操作。另外数据恢复时允许的数据库停机时间也是一个参考因素,使用mysqldump进行数据恢复的停机时间会相对长很多。比如我们的数据库备份文件在几G大小时,使用xtrabackup进行恢复时估计只需10+秒即可恢复,但是使用mysqldump恢复数据却可能会花上数分钟甚至上小时,因为需要重新对数据库创建索引和存储结构。

另外值得说的一点就是,我们为数据库做好自动化备份之后,我们需要经常演练一下恢复过程以确保备份恢复机制处于可工作状态,以防在业务真正出现问题时才发现备份机制已经不工作很长时间了。

你可能感兴趣的:(数据库)