这个主题的材料非常丰富,我们把它分成三个子课程:
第3a课:生产数据库应主要是点查询或严格限定范围
生产系统更喜欢平坦、均匀和小的差动负载。就数据库服务器而言,它们喜欢许多非常快速的查询,这些查询可能由索引支持,以便在最坏的情况下控制成本。
为了确保这一点,请将您的任何一批查询放在一个特殊的辅助服务器或一些OLAP系统中。或者转储到CSV和并行grep。无论这些批处理查询有多复杂,也无论它们是否符合您的数据集大小和流程,请执行此操作。
而且如果对查询时间分布了解不够,无法知道尾部是否有疯狂的表扫描,请立即添加相应的监控。
行情
git lab 2017 Postgres宕机第2集:非常昂贵且长时间运行的账户删除操作被放在他们的生产数据库上实时运行,导致拥塞和故障。
在第5集中,Auth0悄悄丢失了一些索引:在创建索引时无监督的失败导致一些查询突然变成了扫描,这大大增加了数据库的负载,最终导致停机。
第8集,Auth0严重拥堵的数据库:生产系统上一些特别昂贵的扫描加剧了数据库问题。
第3b课:避免数据库中的“中间魔法”
什么是中级魔法?让我们大致了解一下。
不错的选择:使用MySQL这样无聊的东西,自己处理碎片。这将会很麻烦,因为你必须在应用层做很多额外的工作,但是当它崩溃时,你可能知道它是如何工作的。这在十年前可能是正确的想法,但现在看来是好的。
更好的选择:只需购买一个更大的服务器,并使用一个unsplit MySQL/PostgreSQL服务器和一两个副本。这个方法一直都是好的,尽量选择。
这可能是2021年后最好的选择:花钱找云服务提供商为你运行数据库,包括所有备份和故障转移服务。如果你真的喜欢,你甚至可以使用非常漂亮的数据库,比如cloud扳手和DynamoDB。过去完全透明地依赖第三方是不可想象的,但这可能是2021年最好的方式。这些大公司在这方面做得非常好。毕竟如果他们做不好,因为你的公司要靠他们运营,估计你就完了。缺点是会花很多钱,因为这些服务的价格很高。
玩火选项:用一些号称能自动解决所有扩展和故障转移问题,但还需要做运维工作的东西,它的生产环境历史比MySQL少很多。当它出错时,很少有人知道如何操作它,或者完全了解它的内部结构来诊断其调度过程的复杂故障模式。我们在这些停机事件中遇到的可能嫌疑人包括MongoDB和Cassandra。
行情
第三集,2019年Monzo的卡珊德拉关机:扩展的卡珊德拉集群有很多无法理解的配置问题。
在第5集中,Auth0悄悄丢失了一些索引:如果不减少实时流量,很难在mongo中重新同步副本。
第3c课:关注恢复,而不是备份,并注意它们需要多长时间
如果你不能证明你可以恢复一些东西,那么备份是没有意义的。你必须恢复到正确的记录。恢复需要太长时间。
让我们看看会发生什么:
备份没有运行...这怎么可能?我显然在监视它!
备份在S3运行并生成一个文件。这可能取决于您的备份的验证程度。文件可能是空,或者它包含的唯一有用的字符串是:。你的公司完蛋了。
备份表面上包含了很多重要数据,但上传时已经损坏。你的公司完蛋了。
备份包含有效的数据库!但是,由于备份脚本中的循环错误,每个切片都是切片0。你公司87.5%的股份已经消失。
每个备份都包含一个正确有效的数据库!但是你只能通过85毫秒的链接从廉价存储类下载,这意味着需要2周才能恢复。你的公司还是没了。
因此,请务必证明您的恢复是有效的-自动化并监控此步骤,不要只是偶尔验证一下-并确保它们将在可接受的时间内恢复。4个小时的停机时间会是糟糕的一天,但是4天的停机时间过后,你的公司就完蛋了。确保你的公司政策可以容忍这样的恢复时间,并让你的领导签字,这样当工程团队在灾难期间需要7个小时恢复数据库时,他们就不会抓狂。
推荐阅读
- 婚姻中,夫妻之间的感情和信任问题
- 豆瓣评分在哪才能评 免费的《囧妈》为何豆瓣评分才6分 问题出在了哪
- 魔兽怀旧服近战崛起多少人被冲昏头了历史“遗留”的问题
- “高分复读”是一个值得深思的问题
- 婚姻危机中的女人,往往无法冷静处理感情问题
- 模具厂是做什么的 40岁的我从模具厂离职了 却发现找不到工作了 该何去何从
- 死神0番队 死神关于零番队的人员选择问题
- 汉中清风 汉中市纪委监委关于深化违规收送礼金问题专项整治举报方式的公告
- 舒芯宝真的能治妇科吗 倩氏舒芯宝可以调理妇科问题吗
- 因彩礼问题不欢而散,男子花光所有积蓄流落街头