后端存储实战课
李玥
美团高级技术专家
44005 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 30 讲
结束语 (1讲)
后端存储实战课
15
15
1.0x
00:00/00:00
登录|注册

07|MySQL HA:如何将“删库跑路”的损失降到最低?

思考题
配置MySQL HA
数据备份
数据库高可用与数据备份

该思维导图由 AI 生成,仅供参考

你好,我是李玥。
对于任何一个企业来说,数据安全的重要性是不言而喻的。我在开篇词中也曾经强调过,凡是涉及到数据的问题,都是损失惨重的大问题。
能够影响数据安全的事件,都是极小概率的事件,比如说:数据库宕机、磁盘损坏甚至机房着火,还有最近频繁出现在段子中“程序员不满老板删库跑路”的梗儿,但这些事儿一旦发生了,我们的业务就会损失惨重。
一般来说,存储系统导致的比较严重的损失主要有两种情况,一是数据丢失造成的直接财产损失,比如大量的坏账;二是由于存储系统损坏,造成整个业务系统停止服务而带来的损失。
所谓防患于未然,你从设计一个系统的第一天起,就需要考虑在出现各种问题的时候,如何来保证这个系统的数据安全性。今天我们来聊一聊,如何提前预防,将“删库跑路”等这类问题导致的损失尽量降到最低。

如何更安全地做数据备份和恢复?

保证数据安全,最简单而且有效的手段就是定期备份数据,这样出现任何问题导致的数据损失,都可以通过备份来恢复数据。但是,如何备份,才能最大程度地保证数据安全,并不是一个简单的事儿。
2018 年还出现过某个著名的云服务商因为硬盘损坏,导致多个客户数据全部丢失的重大故障。这么大的云服务商,数据是不可能没有备份的,按说硬盘损坏,不会导致数据丢失的,但是因为各种各样的原因,最终的结果是数据的三个副本都被删除,数据丢失无法找回。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

MySQL HA是如何将“删库跑路”的损失降到最低的?本文介绍了数据备份和恢复的重要性,以及实现数据库高可用的方法。首先,定期备份数据是降低损失的有效手段,全量备份和增量备份相结合,能够实现数据恢复到任意时间点。其次,MySQL HA方案通过主从复制和Binlog实现高可用,但存在主从延迟和从库宕机的问题。文章提出了解决方案,包括实时同步Binlog、牺牲一些性能以保证数据一致性、以及配置多个从库来避免主库宕机影响。最后,总结了几种典型的HA方案的利弊,并提出了思考题,鼓励读者分享自己的高可用方案并讨论改进方法。这些内容帮助读者了解了数据备份和恢复的重要性,以及实现数据库高可用的方法,为他们在实际工作中做出最优选择提供了指导。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《后端存储实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(34)

  • 最新
  • 精选
  • 李玥
    置顶
    Hi,我是李玥。 照例说一下上节课思考题: 我们在电商的搜索框中搜索商品时,它都有一个搜索提示的功能,比如我输入“苹果”还没有点击搜索按钮的时候,搜索框下面会提示“苹果手机”、“苹果11、苹果电脑”这些建议的搜索关键字,请你课后看一下ES的文档,想一下,如何用ES快速地实现这个搜索提示功能? 在课后留言中,Geek_c76e2d同学给出的答案非常赞,我在这里就直接“盗用”了,以下是Geek_c76e2d同学的答案: 因为用户每输入一个字都可能会发请求查询搜索框中的搜索推荐。所以搜索推荐的请求量远高于搜索框中的搜索。es针对这种情况提供了suggestion api,并提供的专门的数据结构应对搜索推荐,性能高于match,但它应用起来也有局限性,就是只能做前缀匹配。再结合pinyin分词器可以做到输入拼音字母就提示中文。如果想做非前缀匹配,可以考虑Ngram。不过Ngram有些复杂,需要开发者自定义分析器。比如有个网址www.geekbang.com,用户可能记不清具体网址了,只记得网址中有2个e,此时用户输入ee两个字母也是可以在搜索框提示出这个网址的。以上是我在工作中针对前缀搜索推荐和非前缀搜索推荐的实现方案。
    2020-03-12
    1
    63
  • mickey
    请问,回放binlog是幂等性的,那为什么我连续执行两条相同的mysqlbinlog语句后,系统报错了呢(第一次执行正常,数据恢复)? 语句:mysqlbinlog --start-datetime "2020-04-17 10:00:00" --stop-datetime "2020-04-17 10:48:00" E:\data\test\mysql-bin.010163 | mysql -uroot -p 报错:ERROR 1062 (23000) at line 33: Duplicate entry '4' for key 'PRIMARY'

    作者回复: 这正是幂等性的体现啊,已有记录重复插入会插入失败,所以报这个错忽略就好了。

    2020-04-17
    24
  • 子不语
    老师,您这里提到的高可用方案,把binlog日志同步到从库,然后从库立即回放。那如果是删库的动作,从库也回放,不是把从库也干掉了。

    作者回复: 是的。所以回放的时候,要找准起止位点,不要回放删库动作。

    2020-04-20
    5
    19
  • Dovelol
    老师好,想问下有没有什么比较好的监控mysql性能还有主从延迟之类的工具,还有就是读写分离在遇到主从延迟突然增大的情况下该怎么办呢?

    作者回复: 如果只是看一下,可以连接到主库上用show slave status命令查看,如果你需要实时监控主从延迟,可以用pt-heartbeat这个工具。 如果主从延迟突然增大,需要查一下是主的问题还是某个从的问题,如果是某一个从库的问题,可以临时把这个从库下掉。如果是主库问题,那就得赶紧解决主库繁忙的问题。

    2020-03-15
    16
  • 美美
    一主多从同步复制有点类似于KafKa的ISR。 有一个疑惑,还请老师解惑。感觉这种模式还是会有丢数据的可能。比如,第一次请求同步到从A成功,从B延迟。第二次同步给从B,从A延迟。然后主挂掉,此时感觉切从A或者从B都会有问题。

    作者回复: 这个不是有点儿类似Kafka的ISR,它们的原理根本就是一样的。 另外,你说的这种情况不会出现,因为Binlog是有序的日志,复制Binlog的时候必须按顺序复制,所以不会出现二个从节点都有一条对方没有的新数据这种情况。

    2020-03-13
    3
    14
  • 小袁
    老师,你说同步复制性能差,哪到底差到一个什么样的程度呢?有定量的测试数据么?

    作者回复: 同步复制时延 = 异步复制的时延 + 最慢的那个从库的复制时延 定量的来说,理论上同步复制的时延大概是异步复制的2-3倍左右。

    2020-03-17
    11
  • 旅途
    老师 问一下 使用全量备份和binlog增量 这个binlog 删除以前的吗?还是保留全量所有的?

    作者回复: 全量备份那个时刻之前的Binlog是可以删除的。

    2020-03-15
    10
  • 刘楠
    binlog 日志中也是有删除库的SQL的,难道,备库或者从库不会执行吗?感觉会执行,所以数据在几个库都删除了。怎么保证备库或者从的数据?

    作者回复: 像我们课程中演示的那样,可以用Binlog恢复到删库之前的那一刻啊

    2020-03-12
    4
    5
  • J.Smile
    老师,如果系统只有一个binlog,而且delete操作就在这个binlog.那应该就不能回放了,因为回放的最后还是delete这个误操作!

    作者回复: 你可以选择不回放这个delete操作呀。

    2020-04-10
    2
  • J.Smile
    一主二从架构下,如果其中一个从宕机,重启后应该可以自动回放binlog吧,不然这个架构也就失去意义了!

    作者回复: 是的。

    2020-04-10
    2
收起评论
显示
设置
留言
34
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部