Docker内置一些轻量级应用或服务,比如web前端和中间件等,但是数据库在Docker中运行的是否比较多,数据库运行在Docker中有什么优势和弊端,数据库程序和数据如何有效分离?
如果使用docker存放数据库,数据库程序与数据肯定得分离,数据存放到共享存储,程序放到容器里,如果容器有损坏或数据库服务挂了,自动启动一个新容器,从共享存储存放数据。
不推荐数据库程序与数据在一个容器,或数据存放到宿主机里,这个宿主机里容器共享卷组,这样宿主机损坏就影响比较大。
收起docker快速扩展的一个重要特征就是stateless,具有数据状态的都不适合直接放在docker里面,因为如果docker中安装数据库,存储需要单独作为一个数据服务进行提供。目前腾讯的TDSQL和阿里的Oceanbase都直接运行中在物理机器上,都没使用docker。
数据库的性能瓶颈一般出现在IO上面,如果docker的思路,那么多个docker最终IO请求又会出现在存储上面。现在互联网的数据库多是share nothing的架构,可能这也是不考虑迁移到docker的一个因素吧
收起