Docker:一个MySQL数据库的多个实例

3

我们能否在Docker中创建多个容器来托管一个共享数据库?如果我们可以创建,那么在选择事件(例如)上会不会遇到多个实例的问题?

谢谢。


1
抱歉,但您需要使用正确的术语,并以使您的问题清晰的方式将它们组合在一起。 Docker具有容器。容器可以运行mysql数据库。您可以拥有运行1000个mysql容器的群集。这与运行1000个mysql服务器没有区别。如果您这样做,那么您的应用程序会遇到什么问题? Docker不会改变由多个mysql服务器创建的问题。 - gview
1个回答

1

请允许我稍微改述一下您的问题。如果我有任何误解,请纠正我。

问:我能使用Docker技术运行多个MySQL数据库实例吗?

答:简短回答:可以,因为Docker容器只是您机器上的一个进程

问:如果我在同一主机上运行多个MySQL数据库实例,它如何知道我在哪个实例上执行查询

答:这完全取决于您为数据库客户端设置的连接字符串

每个数据库实例都将有一个相应的监听器进程,绑定到主机的特定端口

现在,每个端口只能绑定到一个进程。这是一对一的关系。

如果您安装了10个SQL实例,它们将分别绑定到唯一的端口。因此,在连接字符串中定义的端口号确定您将要访问的数据库实例。

需要注意的是,Docker 容器是自包含的。你可以把它们看作传统的虚拟机,但它们更加轻量级。也就是说,一个容器将有自己的网络基础设施,类似于您的物理主机。因此,为了让您的物理主机能够看到容器化的数据库,您需要端口转发绑定端口。

如果上面的段落对您来说没有任何意义,那么我建议您探索Docker的端口-p选项。

参见:https://docs.docker.com/engine/userguide/networking/default_network/binding/


感谢@Samuel Toh的回复。假设我有3个MySQL容器,它们托管相同的数据库架构(表和关系)以及一个代理。那么我的应用程序将与代理进行通信,代理将根据每个容器的资源可用性将请求重定向到这三个实例之一,假设我有一个“从特定表中选择请求”,代理将如何交互? - AHmedRef

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