用于 mysql 的多个 docker 容器或具有多个数据库的一个实例
Posted
技术标签:
【中文标题】用于 mysql 的多个 docker 容器或具有多个数据库的一个实例【英文标题】:Multiple docker containers for mysql or one instance with multiple databases 【发布时间】:2017-06-12 12:33:13 【问题描述】:我有一个关于使用 docker 容器的最佳实践的问题。
我开发的每个应用程序都需要一个数据库。现在我的问题是我应该使用一个内部有多个数据库的 mysql docker 实例,还是应该为每个数据库创建一个实例。我看到为每个数据库创建一个实例的缺点是我不能拥有可以访问所有数据库的用户。我知道这是出于安全原因的专业人士,但是当我尝试从客户端备份时,我需要在每个实例中进行备份。并且不是多个实例使用过多的资源开销(虽然mysql可能使用较少的资源,但使用exit更大的例如mssql实例可能会在以后导致资源问题)
我的问题是使用 docker 的常用方法是什么,优缺点是什么?
【问题讨论】:
【参考方案1】:Docker 特别适合微服务的部署。以下链接讨论了有关使用数据库的两种策略:
-
Database per service
Shared database
我个人倾向于为每个服务使用单个数据库,并将其扩展到数据库服务器的单独实例的部署。这确保了服务是松散耦合的,如果一个服务遭受数据库中断,它不会影响另一个服务。
【讨论】:
感谢您的回答。当您开发一堆服务(不在生产中)时,您是否也使用这种方法? @BukharovSergey 当然可以。在我的情况下,启动单个数据库实例并不困难,应用程序容器的多个副本连接到该实例。以上是关于用于 mysql 的多个 docker 容器或具有多个数据库的一个实例的主要内容,如果未能解决你的问题,请参考以下文章
如何将具有多个 Docker 容器的应用程序部署到 AWS Elastic Beanstalk?
Docker-compose 多个Docker容器管理:以MYSQL和Wordpress为例