数据库 MySQL 是否需要容器化?

tinayu001   ·   发表于 10天前   ·   默认分类

性能问题

众所周知,MySQL是关系型数据库,对IO的要求很高。当一个物理机运行多个时,IO会累积,导致IO瓶颈,大大降低MySQL的读写性能。

 

在一次关于Docker应用十大难点的专题会议上,一位国有银行的架构师曾提出:“数据库的性能瓶颈通常出现在IO上。如果您遵循Docker的思路,那么许多Docker最终IO请求将再次出现在存储上。目前,互联网上的大多数数据库都是基于不共享的架构。或许这也是一个不考虑迁移到Docker的因素。

 

事实上,有一些相应的策略来解决这个问题,例如:

 

1)数据库程序和数据的分离

如果使用Docker运行MySQL,需要将数据库程序与数据分离,将数据存储在共享存储中,并将程序放入容器中。如果容器异常或者MySQL服务异常,会自动启动一个全新的容器。此外,建议不要将数据存储在主机中。主机和容器共享卷组,对主机的损坏影响很大。

 

2)运行轻量级或分布式数据库。

Docker中部署了一个轻量级或分布式数据库,Docker本身建议挂起服务并自动启动新容器,而不是继续重新启动容器服务。

 

3)合理布局和应用

对于IO要求较高的应用或服务,将数据库部署在物理机或KVM中更为合适。目前腾讯云的TDSQL和阿里的Oceanbase都是直接部署在物理机,而不是Docker

 

陈述问题

Docker中的水平缩放只能用于无状态计算服务,不能用于数据库。

 

Docker快速扩展的一个重要特点就是无状态,那些有数据状态的不适合直接放在Docker中。如果Docker中安装了数据库,则需要单独提供存储服务。

 

另外,如果你正在学习Spring Cloud,推荐一个免费的教程,这个教程已经连续更新了很多年:

 

目前腾讯云的TDSQL(金融分布式数据库)和阿里巴巴云的Oceanbase(分布式数据库系统)都是直接在物理机上运行,而不是使用易于管理的Docker

0 Reply   |  Until 10天前 | 3 View
LoginCan Publish Content