查看: 108|回复: 1

如何优雅的备份MySQL数据?看这篇文章就够了

[复制链接]

3

主题

12

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2022-12-2 15:52:48 | 显示全部楼层 |阅读模式
大家好,我是一灯,今天一块学习一下如何优雅安全的备份MySQL数据?
1. 为什么要备份数据

先说一下为什么需要备份MySQL数据?
一句话总结就是:为了保证数据的安全性。
如果我们把数据只存储在一个地方,如果物理机器损坏,会导致数据丢失,无法恢复。
还有就是我们每次手动修改线上数据之前,为了安全起见,都需要先备份数据。防止人为的误操作,导致弄脏数据或弄丢数据。
2. 怎样备份MySQL数据?

想要快速简单粗暴备份MySQL数据,可以使用mysqldump命令:
# 备份test数据库
mysqldump -uroot -p test > backup.db但是这样备份的可能包含脏数据,比如在我们备份数据的过程中,有个下单的操作正在执行。
下单之后,还没有来得及扣款,就开始执行备份数据的命令,就会出现脏数据。

  • 下单,保存订单表
  • 备份数据
  • 扣款
3. 怎么安全的备份数据?

mysqldump命令也提供了以事务的形式备份的参数:
# 开启一个事务备份test数据库
mysqldump -uroot -p --single-transaction test > backup.db开启事务后,会跟正常业务操作产生锁资源竞争,可能会阻塞其他的业务操作,严重的可能会导致服务宕机,所以备份操作尽量在业务低峰期执行。
还有一个问题,只有InnoDB引擎支持事务命令,对于不支持的事务MyISAM引擎,备份数据的时候怎么保证数据的安全性呢?
有一个粗暴的办法就是设置全库只读,禁止写操作,这样备份的时候不就能保证数据安全性啦。
先用命令查看一下数据库的只读状态:
show variables like 'read_only';



OFF表示只读模式关闭,ON表示开启只读模式。
set global read_only=1;



这样设置其实是非常危险的,如果客户端连接断开,整个数据库也会一直处于只读模式,无法进行写操作。
更推荐的办法是设置全局锁 FTWRL(flush tables with read lock)
# 设置全局锁,禁止写操作
flush tables with read lock;
# 释放锁
unlock tables;设置全局锁之后,如果客户端断开,会自动释放锁,更安全。
4. 怎么恢复数据?

通过备份文件恢复数据也非常简单:
# 把备份文件数据导入到test数据库
mysqldump -uroot -p test < backup.db
推荐阅读:《我爱背八股系列》

面试官竟然问我订单ID是怎么生成的?难道不是MySQL自增主键?
面试官竟然问我怎么分库分表?幸亏我总结了一套八股文
面试官竟然问我怎么实现分布式锁?幸亏我总结了全套八股文
面试官竟然问我消息队列为啥会丢失消息?幸亏我总结了全套八股文
面试官问我MySQL索引为啥用B+树?我让他去问作者
记一次ThreadLocal引发的线上故障,年终奖没了,可能还面临辞退
一篇文章讲清楚MySQL的聚簇/联合/覆盖索引、回表、索引下推
面试官竟然问我MySQL事务的底层原理?幸亏我总结了全套八股文
MySQL的锁这么多,不知从何学起,看完这篇文章就够了
面试官问我一条update语句加了多少锁?我总结了全套八股文
记一次排查线上MySQL死锁过程,不能只会crud,还要知道加锁原理
彻底搞懂三大MySQL日志,Redo Log、Undo Log、Bin Log
高级程序员必知必会,一文详解MySQL主从同步原理
查询效率提升10倍!3种优化方案,帮你解决MySQL深分页问题
别再问我MySQL为啥没走索引?就这几种原因,全都告诉你
【干货】MySQL底层架构设计,你了解多少?
学会使用MySQL的Explain执行计划,SQL性能调优从此不再困难
吐血总结十三条经验,帮你创建更合适的MySQL索引
精心整理16条MySQL使用规范,减少80%问题,推荐分享给团队
手把手教你定位线上MySQL慢查询问题,包教包会
我说MySQL联合索引遵循最左前缀匹配原则,面试官让我回去等通知
MySQL查询性能优化七种武器之索引潜水
手把手教你定位线上MySQL锁超时问题,包教包会
不知道怎么分析MySQL查询瓶颈,这款自带工具太香了,强烈推荐
MySQL查询性能优化七种武器之链路追踪
三道MySQL联合索引面试题,淘汰80%的面试者,你能答对几道
MySQL查询性能优化七种武器之索引下推 大家都在用MySQL count(*)统计总数,到底有什么问题?
一灯架构:硬核解析MySQL的MVCC实现原理,面试官看了都直呼内行
一灯架构:线上服务宕机,码农试用期被毕业,原因竟是给MySQL加个字段
回复

使用道具 举报

2

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2022-12-2 15:53:18 | 显示全部楼层
source
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表