在Docker中扩展MySQL

6

我希望能够扩展可能涉及多台服务器的swarm上的mysql。如何确保不同服务器上的容器之间的数据同步是最好的方式?

我意识到在没有docker的标准配置下,我必须设置复制。我想知道是否有一种更适合使用docker进行部署的方法。

3个回答

6
是在Docker环境中进行扩展的好工具。但目前,。原因如下:
  • 适用于无状态容器的扩展

  • 在docker swarm中不可能为主从配置

  • 在docker overlay网络中没有可用的复制方法

也许在未来,我们会有这样的技术来实现RDBMS扩展。


那么像 Redis 这样的服务呢?如果我们只谈论缓存(不涉及 pub-sub 和其他 Redis 工作),在重新连接之后可能会出现缺失,对吗?只有当负载均衡器决定将您切换到另一个节点时... - QtRoS
我还没有测试过,但是使用Galera集群怎么样?这应该可以运行大多数MySQL应用程序。一个实现:https://github.com/colinmollenhour/mariadb-galera-swarm - Trendfischer
如果我尝试在单台机器上使用创建的卷来扩展mysql会怎样呢?我已经在主机上创建了一个卷,并期望所有复制的mysql容器都使用同一个,但到目前为止还没有实现。 - Tara Prasad Gurung
@Tara Prasad,如果你只在单台机器上运行,那么缩放有什么用呢? - Manoj Sahu
实际上,我们有一台足够好的机器,正在尝试在其中扩展容器。@ManojSahu - Tara Prasad Gurung
这是用于生产还是测试? - Manoj Sahu

1

1
这就是我在非Docker化环境中肯定会这样做的方式。我只是想知道是否有一种更针对容器的方法来完成它。 - kevin.coyle
@kevin.coyle:我不明白为什么在Docker内部会有任何不同。 - Lightness Races in Orbit
1
这个回答对我来说似乎有些过时了 :-) 虽然我同意这就是数据库复制的作用,但是,如果我们在Docker Swarm中使用它,并且主实例崩溃了,切换是否可以自动进行呢?好奇的人想知道... - JoeG
@JoeG:这是自动的!更好的是,它是隐式的。 - Lightness Races in Orbit

0
你可以尝试使用Mariadb Galera Cluster,在Docker下进行设置,但是你需要其他步骤来提供和负载均衡,并且一个节点监视你的容器状态(这需要很多工作,而且不容易)。 如果你在Docker Swarm上有多个节点,你需要设置NFS服务器以便Docker共享文件。 有一个叫做Cluster Control的工具,有免费和付费版本。 https://severalnines.com/product/clustercontrol/docker-mysql-database-management

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接