当前位置: 首页 > 知识库问答 >
问题:

微服务体系结构数据库备份和恢复

黄宏毅
2023-03-14

我正在从事一个基于微服务架构的大型项目,所以考虑一下我有10个服务,其中一些有自己的数据库,这些数据库采用不同的技术(mysql、mongodb、elastic等)

那么,备份和恢复服务集合的最佳做法是什么?

真正的问题是这些数据库相互关联,例如,在我的逻辑后端服务器中,我保留来自oauth服务器的每个用户的oauhId,

现在考虑分别恢复这两个数据库,现在logic server中的my users db包含一些在oauth服务器上没有任何相关记录的用户,

仅供参考,我正在使用docker、docker compose、docker swarm进行服务编排。

共有1个答案

公西俊能
2023-03-14

作为一个想法:检查您的服务如何相互依赖。如果您的依赖项是非循环的,您可能能够从外到内或从内到外备份所有数据,而不会遇到一致性问题。

这样做可以保证恢复后服务中没有依赖于内部元素的元素。

如果您的服务显示出循环依赖性,那么最好让每个服务都冗余(例如,主从复制)。然后,您可以删除从属实例,在所有从属实例脱机时从它们中获取备份。这将允许您跨所有服务创建原子备份帐户。但是,备份质量取决于每个服务的主从复制质量。

最后,您可以保留每个服务的更改记录,以及完整备份。因此,您可以编写回滚并开始应用更改记录,直到服务实例达到一致状态为止。我认为,这要求您具有逻辑依赖关系(请求标识符),允许您关联更改元素的记录(即,在服务中应用它们,而不必冒风险,以违背客户端实际与您的服务交互时发生的逻辑依赖关系的方式应用它们)。

我希望这些想法可以帮助你解决你的问题:)

 类似资料:
  • 我经常听说,在微服务架构中,对于每一个微服务,我们都必须创建单独的数据库。 但是,如果我必须在不同的数据库中维护外键约束,这是不可能的。就像我在身份验证微服务中有一个用户表,我想在我的目录服务中使用它(用户表中的用户 ID 列) 那么如何解决呢。 感谢提前

  • 我最近开始使用Node.js,我必须构建一个应该使用多个Express.js服务的体系结构。其中一些服务必须位于一台服务器上,另一台则位于其他服务器上。我想构建一个基础服务(像API网关),但是我不知道在这个网关和微服务之间,或者在两个微服务之间进行通信的合适方式是什么。 目前我正在研究一个基于此的解决方案:

  • 我们有一个单片应用程序,我们现在正在使用容器将其转换为微服务架构。 每种方法的利弊是什么?根据微服务最佳实践,什么是最佳方法?*

  • 我不清楚如何取回购买服务不保存的数据--例如:用户的全名。当试图通过购买用户名进行更复杂的搜索购买时,问题会变得更严重。 我认为,显然可以通过在两个服务之间同步用户来解决这个问题,方法是在用户创建时广播某种类型的事件(并在购买服务端只保存相关的用户属性)。在我看来,这远非理想。当你有数百万用户时,你如何处理这个问题?您会在每个使用用户数据的服务中创建数百万条记录吗? 另一个明显的选择是在用户服务端

  • 我有一个微服务体系结构,它的日志必须发送到远程Kafka主题。在它旁边,本主题的使用者将把日志发送到麋鹿堆栈(另一个团队) 我想要一个专用的微服务(fwk proxy elasticsearch),其职责是收集其他人的日志,并将其发送到远程Kafka主题。 将从我的微服务聚合的所有日志分派到fwk-代理-弹性搜索微服务的最佳协议是什么? 我希望这个模式不会重复远程Kafka主题的安全配置。我想把它

  • 本文向大家介绍数据库备份与恢复,包括了数据库备份与恢复的使用技巧和注意事项,需要的朋友参考一下 必须备份数据库,以防原始数据库由于任何原因损坏或丢失。使用此备份,可以恢复故障之前的数据库。 数据库备份基本上意味着为了安全起见,将创建数据库信息和数据的副本并将其存储在备份服务器中。事务日志也与数据库数据一起存储在备份中,因为没有它们,数据将无用。 数据库失败的原因 数据库故障可能有多种原因,因此需要