spr1ngs
V2EX  ›  Docker

数据库到底能不能部署在容器中?

  •  
  •   spr1ngs · Feb 8, 2023 · 4912 views
    This topic created in 1366 days ago, the information mentioned may be changed or developed.

    知乎的文章都是抄过来抄过去,还很老

    最根本的 决定能不能部署在容器中的原因是什么

    23 replies  •  2023-04-17 10:00:05 +08:00
    scyuns
    scyuns
    Feb 8, 2023 via Android
    1
    数据库可以部署到容器中,开发环境经常这样干。
    生产环境没有试过,开发摸不到线上的机器。
    建议问一下专业运维的意见。
    opengps
    opengps
    Feb 8, 2023
    2
    能,不提倡。因为磁盘性能被打了一层折扣,当你 io 用的多的时候会明显慢,承载能力下降
    AS4694lAS4808
    AS4694lAS4808
    Feb 8, 2023
    3
    主要还是考虑 I/O 效率和容器编排吧,dev 和 stage 环境用 k8s 部署集群那效率真是爽歪歪。
    但是生产不敢这么用,缩容扩容都得小心翼翼的。如果有能力从底层优化数据库,比如 AWS ,AZURE 的云平台,肯定是容器化数据库效率更高。或者使用类似 Mysql Operator 这样的插件管理,但还是有风险的。
    tf2
    tf2
    Feb 8, 2023
    4
    有的数据库为了性能连文件系统都要用专用的。LZ 理解一下。
    loading
    loading
    Feb 8, 2023
    5
    文件都挂载在外部,数据是安全的,主要就是 io 性能。
    如果是 redis 或者其他内存为主的,问题不大。
    Tinet
    Tinet
    Feb 8, 2023
    6
    性能方面,如果数据库的数据是存放在 pvc 中的,而 pvc 的后端是腾讯云或者阿里云的云盘,那 IO 这块也没什么损耗,跟你在虚拟机上挂个云硬盘性能差不多。所以我觉得数据库运行在 k8s 中相比于直接运行在虚拟机上在公有云的场景下不存在什么性能问题。事实上我们公司的生产环境数据库早已经运行在 k8s 中了。
    运维方面,部署在容器和虚拟机上差别还是很大的,很多 dba 可能都还不太适应。
    长远来看,我认为会有越来越多的公司选择把数据库(有状态服务)运行在 k8s 中。DBA 也会越来越习惯于运维容器中的数据库。
    Illusionary
    Illusionary
    Feb 8, 2023
    7
    我们非生产环境的数据库都是 K8s 部署,存储用 ceph ,备份用 PVC 快照

    生产环境用阿里云 RDS MySQL
    paranoiagu
    paranoiagu
    Feb 8, 2023 via Android
    8
    为啥不能
    hhjswf
    hhjswf
    Feb 8, 2023 via Android
    9
    @Illusionary 阿里的云服务万一也是部在容器呢
    lovelylain
    lovelylain
    Feb 8, 2023 via Android
    10
    @opengps 磁盘性能为什么打折了啊,bind 映射外部目录到容器会有不可忽略的性能损失吗?
    cpstar
    cpstar
    Feb 8, 2023
    11
    跟 DBMS 有关,像 Oracle 这种,某种程度上就是 OS 。还容器?而 mysql 之类的甚至 nosql ,本质上容器与否,就看数据尺寸、性能需求以及运维难度了。
    Tink
    Tink
    Feb 8, 2023 via Android
    12
    当然能呀,数据文件挂载出来
    nkidgm
    nkidgm
    Feb 8, 2023
    13
    容器部署数据库真的爽歪歪,数据库的容器数据 volume 都是外挂的,用的还是企业级 ssd ,怕毛。

    至于云主机都可以选择高 iops 的 ssd 云盘作为数据卷。
    IvanLi127
    IvanLi127
    Feb 8, 2023 via Android
    14
    我感觉,少做少错,不做不错。。。不过我自己玩都是丢容器,省事。
    蹲运维大佬解答
    fuxinya
    fuxinya
    Feb 8, 2023 via Android
    15
    我都是 docker 一把梭,运维?追求极致性能?不存在的
    lingly02
    lingly02
    Feb 8, 2023
    16
    这个要根据应用的规模,访问的数据量大小,访问频率等来说吧。一般的企业应用,不是那种非常高强度存取的,部署在容器没啥问题。主要是挂载到本地磁盘,不要用 NFS 之类的就行了。互联网应用当然不建议这么干。
    lingly02
    lingly02
    Feb 8, 2023
    17
    再说性能问题应该用发展的眼光去看,SAS 盘损失一点性能和以前的 SCSI ,SATA 比,还是快得多,更不用说 SSD 盘了。纠结那点性能损失没意义。还不如优化一下索引和 SQL 语句来的实在。当然稳定性方面是否有影响,目前也没看到有明确的测试报告。
    adoal
    adoal
    Feb 8, 2023
    18
    https://www.talkwithtrend.com/Article/253491

    这篇讲得比较现实。

    个人浅见,在考虑这个问题时,需要问自己的实际问题:为什么要部署到容器?想针对传统方式的什么痛点(这里只说生产环境,开发环境一句命令拉起来的便利性是另外一回事)?部署到容器后解决痛点了吗?需要为容器化的数据库运维改变什么思维方式和配套工具,这些付出否合算?
    kingjpa
    kingjpa
    Feb 8, 2023
    19
    用当然是可以用,测试环境没问题啊。

    但是到了生产环境,会涉及扩容 读写分离 增量备份什么的, 那维护难度和复杂程度就大大提升了。有点因小失大的感觉
    wxyrrcj
    wxyrrcj
    Feb 9, 2023
    20
    本地开发环境 docker 一把梭
    julyclyde
    julyclyde
    Feb 9, 2023
    21
    @adoal 很少有人问为什么
    cutiechi
    cutiechi
    Feb 9, 2023
    22
    现在不都是
    hyperbin
    hyperbin
    Apr 17, 2023 via Android
    23
    @cpstar Oracle 有官方 docker 镜像
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1312 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 62ms · UTC 21:22 · PVG 05:22 · LAX 13:22 · JFK 16:22
    ♥ Do have faith in what you're doing.