V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
michael2016
V2EX  ›  程序员

面试题:为什么 MySQL 不要使用 Docker 部署。。。。

  •  
  •   michael2016 · 1 天前 · 13011 次点击

    如果你去找工作,遇到我问你以下几个问题如何回答:

    1. 在大厂 MySQL 是不能用 Docker 的,为什么?
    2. 今天业务被 DDoS 了,你如何在 10 分钟内解决问题?
    3. 如果被爬虫爬了,你应该如何解决?
    4. RAG 和 Agent RAG 有什么区别?
    第 1 条附言  ·  22 小时 4 分钟前
    问题一再换个表达方式:在生产环境中不推荐使用 docker 运行 MySQL ,简单简述一下你的经验和最佳实践。
    136 条回复    2025-09-19 09:58:37 +08:00
    1  2  
    deplives
        101
    deplives  
       16 小时 39 分钟前
    @Sendya #100 你帮我算啥啊,op 确实张嘴 5w qps 还要一个人来负责搞定这些问题啊
    Sendya
        102
    Sendya  
       16 小时 36 分钟前 via Android
    @deplives 哈哈就是帮你把 op 的 5w 具象化一下,给其他人参考
    deplives
        103
    deplives  
       16 小时 30 分钟前
    @Sendya #102 所以我不就说,张口闭口 5w qps ,他怕是都不知道意味着什么
    UN2758
        104
    UN2758  
       16 小时 29 分钟前
    这个不是月经贴吗,RAG 和 agent 也是和 ai 应用岗位强相关了,这个问题类似我问你 word2vec embedding matrix 和 llm 里的 embedding matrix 区别在哪?你觉得有啥普通面试场景上的意义吗
    qianyidui5
        105
    qianyidui5  
       16 小时 10 分钟前
    如果你上面的问题都回答上了 面试官也很满意 邀请你入职
    面试官问你还有什么想问我的吗
    你问面试官你们公司服务有监控没
    面试官说他们从来不装监控
    你还去这家公司吗?
    wuhanchu
        106
    wuhanchu  
       16 小时 3 分钟前 via iPhone
    可以。但是会增加风险
    mightybruce
        107
    mightybruce  
       16 小时 2 分钟前
    docker 不等同于 k8s, 如果是能运用 k8s operator 并解决可能出现的问题,那么没问题。

    单独用 docker 的确很难做到 mysql 高可用 高可靠的
    forblackking
        108
    forblackking  
       15 小时 28 分钟前   ❤️ 2
    @deplives #96 看到 op 在上面批判大伙对待技术的态度,好奇翻了下 op 的帖子,提到过是在做运营咨询的,释然了...
    jhdxr
        109
    jhdxr  
       15 小时 20 分钟前
    > 在大厂 MySQL 是不能用 Docker 的,为什么?
    今年是 2025 年吧?哪个大厂?

    容器化不是银弹,问 mysql (或者大部分传统的 stateful 服务)跑在容器里有啥缺点我觉得更合适一些
    justdoit123
        110
    justdoit123  
       15 小时 18 分钟前
    容器一定是有额外开销的。对于这种有状态的服务。用普通的容器化方案能更快、更好的实现高可用与高稳定性吗?我感觉弊大于利。

    抛开服务负载谈这些都是无效讨论。我感觉面试官没把问题问好。

    另外,就算是大厂,也有小负载、低价值的服务。那么也就没必要什么服务都上岗上线,这时候直接使用 docker/k8s 搭建一个 mysql ,这才是务实的做法。
    9hills
        111
    9hills  
       15 小时 12 分钟前
    @michael2016 某度、某里都实现了核心业务(包括数据库)百分之百容器化,做容器圈的都知道。

    请问他们的 QPS 是不是超过了 5 万?
    Fallever
        112
    Fallever  
       14 小时 55 分钟前
    刚好在 cnblogs 首页看到这个
    https://www.cnblogs.com/12lisu/p/19093514
    RedisMasterNode
        113
    RedisMasterNode  
       14 小时 50 分钟前
    @laminux29 哈哈翻下来至少到 8 楼只有你是认真回答问题的,点赞!
    Feiex
        114
    Feiex  
       14 小时 29 分钟前
    @michael2016 #40 这个回答太傲慢油腻了。
    我在京东就职时候,整个业务线都用的是容器化数据库( jed ),es 、hbase 也都是容器化部署。
    当前就职公司也是在逐步下线存量物理机。

    那你所谓的“大厂 MySQL 是不能用 Docker 的”是站不住脚的:
    为什么物理机就稳定安全了,容器化就不稳定安全了?
    物理机架构运维成本相比一键弹性安装的自助化容器岂不是更复杂,成本更高,为什么说是“降低了运维成本”?
    “sla 没有保证”哪家云服务敢不保证容器实例的 SLA ,容器的宕机保护、缩容保护、延迟删除,物理机能做到哪个?
    为什么需要区分设置 prod/stage/test ?为什么这些环境的实例配置做不到软硬件规格统一?很容易配置出错啊

    通篇看来,lz 工作中使用的基础设施只是接入了多家公有云,也仅仅有面向公有云的发布经验,这些独立的云部门不仅超售严重,而且出于成本考量几乎不会做资源隔离。而当前超大规格宿主机完全可以做到各个容器独享各自主板资源,就这方面,我对 lz 的评价是:“年轻有时间还是要多深度学习。”
    huage
        115
    huage  
       14 小时 28 分钟前
    我在宇宙第一大保险公司的科技公司面试过上百人,说真的:面试问题很随机或者说随意,很多问题不是要一个标准答案,而是看你如何回答
    kevinxzhao
        116
    kevinxzhao  
       14 小时 28 分钟前
    看到标题,就想那个垃圾面试官问的,k8s 中跑的都好几年了。
    BadAngel
        117
    BadAngel  
       13 小时 27 分钟前
    @michael2016
    1 、既然稳定性和数据安全说第一位,就不要选择本地盘,一旦坏了数据就没了,本地盘那一点性能优势和价格优势并不存在。
    2 、为啥 DDos 在云厂这里一个产品就能闭环,你考虑的攻击应对只需要买产品就行了,你真的要考虑自行应对,只能说运维工程师的价格买不来安全工程师的服务,可以省钱,但代价是什么。
    3 、反爬虫也早就是云厂的标准产品能力了,只能说你还是小厂或者传统运维的思维方式了,当领导没有大局观可不行。
    4 、我不懂就不献丑了。

    为啥大家反对的居多,还是爹味太重,一看就积重难返,大家也不用跟这位领导掰扯了,没意义。
    dssxzuxc
        118
    dssxzuxc  
       13 小时 18 分钟前
    @michael2016 #33
    >把你的客户数据、商品信息都爬走了
    这咋了,防又防不住。能做的工作也就:
    前端混淆+接口加解密,难度 3 ,拦下 90%
    风控系统,难度 5 ,拦下 99%
    指纹验证 + 特征判断,难度 7 ,拦下 99.9%
    人机验证,难度 9 ,拦下 99.99%
    但是不管怎么做都不是 100%,京东淘宝美团这些应用再怎么加固能拦下逆向扣 so 解密吗,接口数据不照样被各种倒手。
    以数据为核心的业务,创立之初就要设想数据被全部爬走的最坏打算,如果无法承受,那么就不该立项。
    crackidz
        119
    crackidz  
       12 小时 50 分钟前
    最后一个问题一定是你记错了或者打错了,应该问题是 RAG 和 Agentic RAG 的区别。
    w7938940
        120
    w7938940  
       12 小时 34 分钟前
    @maichael OP 明显不是你说的合格的面试官
    pollux
        121
    pollux  
       11 小时 9 分钟前
    如果是新型的分布式数据库,倒是可以容器化的,只好做好底层存储与协议兼容,路由层隔离,如果是传统数据库,容器化并没有提升性能,还引入了不必要的运维排错风险,尤其是在大厂的 SLA 严格考核下,专机专用也是优良传统。
    wheat0r
        122
    wheat0r  
       10 小时 54 分钟前
    @shenlanAZ #42 我真见过最后一种,找我要一个虚拟机,分配 64GB 内存,说是拿来跑数据库。
    我说这个库就跑一个会员卡系统,并发还不到 10 个,怎么测出来的数据库内存需求。
    他说他们的测试服务器 64GB 内存 SQL Server 长期运行会占满,肯定不能更少了。
    我问有没有使用限制实例的内存占用。
    他问怎么限制…
    ivvei
        123
    ivvei  
       10 小时 29 分钟前
    为什么?因为菜
    shenlanAZ
        124
    shenlanAZ  
       10 小时 24 分钟前
    @wheat0r 我之前在某国央企工作过,也是遇到过类似的情况,有两种情况

    1. 他们那种组织架构就不允许弹性伸缩,所以一次性会拿很大的配额保证后面一定是够用的,或者挪作他用。
    2. 因为技术问题写的程序有内存泄露的问题,不敢去动代码或者别的什么原因,最后的解决办法就是定时重启...
    siteshen
        125
    siteshen  
       9 小时 1 分钟前
    1. 不知道啊,我一直都用 PostgreSQL ,MySQL 这东西也能火真是没天理。我的建议是不仅是不要用 Docker 部署,更不要部署。
    SeaTac
        126
    SeaTac  
       6 小时 44 分钟前
    经典命题作文面试
    SeaSaltPepper
        127
    SeaSaltPepper  
       2 小时 15 分钟前
    @Kumo31 点了,看标题以为是讨论贴,进来一看 OP 一股说教的语气,整的好像我是来面试的一样...... 而且 OP 反复强度自己维护大规模集群更有发言权,然而还是不承认这种问题毫无含金量反复在评论区给自己找补
    mengdodo
        128
    mengdodo  
       1 小时 30 分钟前   ❤️ 1
    因为沙雕人 docker run mysql 时没有挂载文件,data 文件全在容器内。删了容器后发现数据库也没了,所以它们在恼羞成怒后也不许别人使用。
    cyrivlclth
        129
    cyrivlclth  
       1 小时 24 分钟前
    为什么大厂不用 docker 部署 MySQL ?答:docker 协议问题,不过我们可以用 k8s, containerd, podman 来代理
    yb2313
        130
    yb2313  
       1 小时 10 分钟前
    @forblackking 这下一切的疑问都有答案了
    mayday526
        131
    mayday526  
       1 小时 10 分钟前
    @junkk 是 io 问题,wsl 也有这个问题,运行的时候会把 php 挂载目录的文件读取到容器/虚拟机环境,是跨文件系统的,贼慢。你直接把 php 文件复制到容器里就会快多了,但是开发环境这么搞太麻烦了
    Vesc
        132
    Vesc  
       1 小时 2 分钟前
    如果被 DDoS 了又没有购买清洗服务,哪个神仙能 10 分钟内解决?
    jadeborner
        133
    jadeborner  
       49 分钟前
    第二个问题也太抽象了,跟开发有什么关系
    guanzhangzhang
        134
    guanzhangzhang  
       37 分钟前
    能问出 mysql 不适合容器的,我估计 nginx 容器都照样玩不转的,云厂商的 rds 实例一定是本地盘吗,既然人家存储计算分离,docker run 选项全部和 host 一样-v bind mount 本地盘/块存储挂载路径/rdma 的路径之类的有啥问题,不会没有加选项用到只用 rootfs 隔离功能吧。
    增加运维成本?,sock 文件落地的目录挂载出去不会吗,容器起不来? mysql 实体进程起不来你不也是 cd 进目录和用 mysql 相关命令看吗,mysql 容器起不来不会 docker run --rm -ti -v data:/var/lib/mysql --entrypoint bash mysql_image_name 进去查和修复吗。
    按照你说的,那我也来喷下 java ,jdk8 不识别 cgroup 限制,不适合上容器,java 好多服务启动内存很高,Pod 容器启动的时候容易超过 limit 被杀掉😅,什么,我一个 java 开发还需要学这么多容器,那我还上容器干啥
    aiyayaya
        135
    aiyayaya  
       33 分钟前
    我有一个具体的案例, 因为安全问题我需要修改完配置之后重启 docker, 这时候如果是容器的 MySQL, 不得不面临重启 MySQL.
    XiLingHost
        136
    XiLingHost  
       21 分钟前
    自己菜不要怪工具难用
    我就是运维岗位,我们团队都习惯把数据库容器化部署,无论是数据可管理性还是可观测性还是部署的方便程度都要比手工部署好。同时 cicd 也好写,配置可以直接部署到自己构建的镜像里,灰度和实例轮替(依靠主备和 binlog )也都比直接手工部署要好,遇到问题也容易复现和解决
    1  2  
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5521 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 02:20 · PVG 10:20 · LAX 19:20 · JFK 22:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.