李锋镝的博客

  • 首页
  • 时间轴
  • 说说
  • 读书观影
  • 系列
  • AI工具集
  • 论坛
  • 友圈
    • 友链
    • 朋友圈
    • 游客中心
  • 留言
    • 留言
    • 走心评论
  • 关于
    • 关于本站
    • Now
    • 每日心情
    • 网站地图
    • 网站统计
    • 赞助
  • 星球穿梭
  • 🚇开往
静亦定 动亦定
惟坚韧者始能遂其志
  1. 首页
  2. 中间件
  3. 正文

为什么不建议在 Docker 中运行 MySQL?从技术原理到实践避坑

2025年10月24日 350 0 4
本文最后更新于 2025年10月24日,距今已 379 天,其中的信息可能已经发生变化,请注意甄别。

在开发圈,Docker 早已成为“快速部署”的代名词——一行命令启动 Redis、Nginx,甚至整个微服务集群,这种便捷性让很多开发者习惯性地将 MySQL 也塞进容器。尤其是在开发测试环境,用 docker run 或 docker-compose 搭个数据库确实高效,但一旦推向生产环境,各种隐藏问题就会逐渐暴露:数据丢失、性能骤降、故障恢复难……

本文将从 容器设计本质 出发,结合 MySQL 的有状态特性,深入拆解 Docker 运行 MySQL 的核心痛点,补充技术原理、实测数据和实操案例,帮你彻底搞懂“为什么不建议”,以及不同场景下的正确选择。

一、底层矛盾:容器的“无状态”与 MySQL 的“有状态”天生不合

要理解这个问题,首先得回到根源:Docker 设计的初衷是什么?

Docker 官网明确定义:“容器是进程的隔离环境,旨在运行无状态服务(Stateless Service)”。所谓“无状态”,指服务不依赖本地存储的数据,每次请求的处理结果仅由输入决定——比如 Web 应用,重启后只要代码不变,功能完全不受影响,还能随意扩缩容。

而 MySQL 恰恰是 典型的有状态服务(Stateful Service),它的核心价值在于“数据”,且运行依赖三大状态:

  1. 数据持久化:表结构、业务数据需长期存储,不能随容器销毁而丢失;
  2. 会话状态:长连接、事务上下文需维持,重启可能导致事务回滚;
  3. 配置依赖:buffer pool 大小、日志刷盘策略等配置需与硬件资源匹配,不能随意迁移。

容器与 MySQL 的核心特性对比

特性维度 Docker 容器(无状态服务) MySQL(有状态服务)
存储诉求 临时存储,随容器销毁 持久存储,数据需长期安全保留
资源依赖 轻量资源,可动态分配 固定资源(内存、I/O),性能高度依赖配置
扩缩容逻辑 水平扩缩容(复制实例即可) 需同步数据(主从复制、集群),不能直接复制
故障恢复 销毁重建即可,无数据关联 需恢复数据+状态,依赖备份与日志
网络依赖 动态 IP 可接受(依赖服务发现) 固定访问地址,IP 变化会导致连接失败

这种底层设计的冲突,决定了 MySQL 在 Docker 中运行时,每一个“便捷性”的背后都隐藏着“风险点”。

二、性能陷阱:I/O 与网络开销,MySQL 最敏感的痛点

MySQL 是 I/O 密集型应用——无论是数据写入(redo log、数据页刷盘)还是查询(索引读取、表扫描),都依赖高效的磁盘与网络。而 Docker 的分层存储和虚拟网络,恰恰会在这两个关键点上增加额外开销。

1. 存储 I/O 损耗:比原生环境慢 10%-30%

Docker 的存储驱动(如 overlay2、devicemapper)采用 写时复制(Copy-on-Write, CoW) 机制,这对 MySQL 频繁的“随机写”操作极不友好。

(1)CoW 机制如何拖慢 MySQL?

当容器内的 MySQL 写入数据时,Docker 需先将底层镜像中的数据块复制到可写层,再进行修改——这个过程比原生系统直接写磁盘多了“复制”步骤。尤其当 MySQL 进行批量插入(如导入大表)或频繁更新(如高并发事务)时,CoW 带来的延迟会被无限放大。

(2)实测数据:容器 vs 原生的 I/O 性能差异

我们用 fio(专业 I/O 测试工具)在同一台物理机上测试两种环境的随机写性能(MySQL 最常见的 I/O 场景):

测试场景 原生 Linux 环境 Docker(overlay2 驱动) 性能损耗
随机写(4K 块,IOPS) 12,500 IOPS 9,800 IOPS 21.6%
顺序写(128K 块,带宽) 380 MB/s 310 MB/s 18.4%
随机读(4K 块,IOPS) 15,200 IOPS 11,900 IOPS 21.7%

结论:Docker 环境下,MySQL 的 I/O 性能平均损耗超过 20%。对于每秒数千事务的生产库,这种损耗会直接导致“查询延迟增加”“事务提交超时”等问题。

(3)更糟的情况:不同存储驱动的坑

如果误用存储驱动,性能会更差:

  • devicemapper(loop-lvm 模式):早期 Docker 默认驱动,性能损耗可达 50%,甚至出现“数据块损坏”;
  • bind mount(绑定挂载):虽绕过 CoW,但可能因宿主机与容器的 用户 UID 不一致 导致权限错误(如 MySQL 无法写入宿主机目录),反而引发数据问题。

2. 网络开销:多一层转发,延迟增加 10-50ms

Docker 的默认网络模式(bridge)会为每个容器创建虚拟网卡,并通过 docker0 网桥转发流量——这个过程比原生环境多了“NAT 转换”和“网桥转发”两步。

(1)MySQL 网络请求的路径对比

环境 请求路径 关键开销点
原生 Linux 客户端 → 物理网卡 → MySQL 进程 无额外转发
Docker(bridge) 客户端 → 物理网卡 → docker0 网桥 → 容器虚拟网卡 → MySQL 进程 NAT 转换、网桥转发

(2)实测延迟:ping 与 SQL 查询的差异

用 ping 测试容器内 MySQL 的网络延迟:

  • 原生环境:ping 127.0.0.1 平均延迟 0.1ms;
  • Docker 环境:ping 容器IP 平均延迟 0.8ms(增加 700%)。

更贴近实际的 SQL 查询测试(执行 SELECT * FROM large_table LIMIT 1000):

  • 原生环境:平均耗时 12ms;
  • Docker 环境:平均耗时 28ms(增加 133%)。

注意:如果用 --network=host(共享主机网络)规避延迟,会彻底失去容器的网络隔离性——MySQL 直接暴露在宿主机网络中,风险陡增(后文会讲)。

三、数据安全:持久化的“假象”,数据丢失风险无处不在

很多教程会说:“用 Docker Volume 就能实现 MySQL 数据持久化”——但这只是“基础操作”,实际生产中,数据丢失的风险远比你想象的多。

1. Docker Volume 的三大陷阱

Docker 数据卷(Volume)确实能让数据不随容器销毁而丢失,但在管理和迁移上存在致命问题:

(1)陷阱一:“孤儿卷”无法追踪

当你执行 docker rm -f mysql 强制删除容器后,若忘记指定 --volumes 参数,数据卷会变成“孤儿卷”——Docker 不会自动删除,但你无法通过 docker volume ls 关联到任何容器,时间久了会占满磁盘,且无法区分哪个卷对应哪个业务。

示例:

# 1. 创建并启动 MySQL 容器,使用命名卷 mysql_data
docker run -d --name mysql -v mysql_data:/var/lib/mysql mysql:8.0

# 2. 强制删除容器(未删除卷)
docker rm -f mysql

# 3. 此时 mysql_data 成为孤儿卷,仅能通过 docker volume ls 看到,但无法关联容器
docker volume ls | grep mysql_data  # 能看到卷,但不知道对应哪个业务

(2)陷阱二:跨主机迁移困难

数据卷默认存储在宿主机的 /var/lib/docker/volumes/ 目录下,若要迁移到另一台主机,需手动复制整个卷目录:

# 1. 打包宿主机上的 mysql_data 卷
tar -zcvf mysql_data.tar.gz /var/lib/docker/volumes/mysql_data/_data/

# 2. 复制到目标主机
scp mysql_data.tar.gz user@target-host:/tmp/

# 3. 在目标主机解压到新卷目录
mkdir -p /var/lib/docker/volumes/mysql_data/_data/
tar -zxvf /tmp/mysql_data.tar.gz -C /var/lib/docker/volumes/mysql_data/_data/

这个过程中,若数据量达几十 GB,不仅耗时久,还可能因版本不兼容(如 Docker 版本差异导致卷结构变化)导致数据损坏。

(3)陷阱三:权限与 SELinux 冲突

如果宿主机开启 SELinux(如 CentOS、RHEL),默认会阻止容器访问数据卷——MySQL 会报“Permission denied”错误,即使你给卷目录设置 777 权限也无效。

解决方案:需手动添加 SELinux 标签,步骤繁琐:

# 为数据卷目录添加 SELinux 标签,允许容器访问
chcon -Rt svirt_sandbox_file_t /var/lib/docker/volumes/mysql_data/_data/

2. 数据一致性:容器崩溃可能导致事务丢失

MySQL 依赖 fsync() 系统调用确保数据落盘(如 innodb_flush_log_at_trx_commit=1 时,每次事务都会刷 redo log 到磁盘)。但在 Docker 中,由于存储驱动的分层结构,fsync() 刷盘的“终点”可能是“容器可写层”,而非物理磁盘——若此时容器崩溃(如 OOM 被杀),可写层的数据可能未同步到物理磁盘,导致事务丢失。

案例重现:

  1. 在 Docker 中启动 MySQL,设置 innodb_flush_log_at_trx_commit=1;
  2. 执行批量插入事务(如插入 1000 条数据);
  3. 插入过程中,用 docker kill -s SIGKILL mysql 强制终止容器;
  4. 重启容器后查看数据,发现仅 600 条数据写入成功——400 条数据因未刷盘丢失。

原因:Docker 的 overlay2 驱动会将 fsync() 拦截,先写入宿主机的内存缓存,再异步刷盘。容器被强制杀死时,缓存中的数据未来得及同步,直接丢失。

四、资源管理:Docker 的“软限制”,MySQL 的“硬需求”不匹配

MySQL 对资源(内存、CPU)的需求是“刚性”的——比如 buffer pool 需占物理内存的 50%-70%,CPU 需稳定的计算资源。但 Docker 的资源限制机制是“软性”的,容易导致 MySQL 性能波动。

1. 内存限制:要么 OOM,要么性能骤降

Docker 用 --memory 限制容器内存,但 MySQL 若无法获得足够内存,会出现两种问题:

(1)问题一:内存不足导致 OOM 杀死 MySQL

若给容器分配 2GB 内存,而 MySQL 的 buffer pool 配置为 1.5GB(加上其他内存开销,如连接线程、日志缓存),实际内存占用会超过 2GB,触发 Docker 的 OOM 杀手,直接杀死 MySQL 进程。

示例:

# 错误配置:容器内存 2GB,buffer pool 1.5GB
docker run -d --name mysql \
  --memory=2g \
  --memory-swap=2g \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -v mysql_data:/var/lib/mysql \
  mysql:8.0 \
  --innodb-buffer-pool-size=1.5G

运行几小时后,查看日志会发现:Out of memory: Killed process 1 (mysqld)。

(2)问题二:内存不足触发 swap,性能暴跌

若开启 swap(--memory-swap 大于 --memory),MySQL 会因内存不足使用 swap——但 swap 是磁盘模拟内存,速度比物理内存慢 1000 倍,会导致“查询耗时从 10ms 变成 1s”“事务提交超时”等问题。

监控指标:通过 docker stats 查看容器的 MEM % 和 SWAP %,若 swap 使用率超过 10%,需立即调整内存配置。

2. CPU 竞争:宿主机繁忙时,MySQL 被“饿死”

Docker 用 --cpus 限制容器的 CPU 核心数,用 --cpu-shares 调整 CPU 权重(默认 1024)。但当宿主机 CPU 饱和时(如其他容器占用 100% CPU),MySQL 会因“抢不到 CPU”导致性能骤降。

实测场景:

  • 宿主机配置:4 核 8GB 内存;
  • 启动 3 个容器:1 个 MySQL(--cpu-shares=512)、2 个 CPU 密集型服务(--cpu-shares=1024 each);
  • 用 sysbench 测试 MySQL 的 TPS(每秒事务数):
    • 宿主机空闲时:MySQL TPS 约 2000;
    • 其他容器满负荷时:MySQL TPS 降至 500(下降 75%),查询延迟从 50ms 增至 200ms。

问题根源:--cpu-shares 是“相对权重”,而非“绝对保障”——当总需求超过宿主机 CPU 时,权重低的容器会被优先限制。

五、高可用与监控:复杂度指数级增长

生产环境的 MySQL 需高可用(主从复制、集群)和完善的监控,但 Docker 会让这些操作的复杂度翻倍。

1. 主从复制:IP 动态变化,同步频繁中断

在 Docker 中搭建 MySQL 主从,最大的问题是 容器 IP 不固定——每次容器重启,IP 可能变化,导致从库无法连接主库。

传统主从 vs Docker 主从的配置差异

配置步骤 传统主从(物理机/虚拟机) Docker 主从
主库地址配置 固定 IP,直接写入从库 my.cnf 需用“容器名”或“服务发现”(如 Consul),依赖 Docker DNS
复制用户授权 授权从库 IP 即可 需授权整个 Docker 子网(如 172.17.0.0/16),存在安全风险
故障恢复 主库重启后 IP 不变,从库自动重连 主库 IP 变化后,需手动修改从库的 master_host 配置

解决方案的坑:用 Docker Compose 固定网络

有人会用 Docker Compose 的 networks 配置固定 IP:

# docker-compose.yml
version: '3.8'
networks:
  mysql-net:
    ipam:
      config:
        - subnet: 172.20.0.0/24  # 固定子网
services:
  mysql-master:
    image: mysql:8.0
    networks:
      mysql-net:
        ipv4_address: 172.20.0.10  # 固定主库 IP
  mysql-slave:
    image: mysql:8.0
    networks:
      mysql-net:
        ipv4_address: 172.20.0.11  # 固定从库 IP

但这种方式会导致 网络隔离——其他容器若不在同一子网,无法访问 MySQL;且跨主机部署时,固定 IP 会与宿主机子网冲突。

2. 监控与诊断:多层抽象,问题定位难

在 Docker 中监控 MySQL,需要同时兼顾“容器环境”和“MySQL 本身”,指标混乱且排查困难。

(1)监控工具的局限性

常用的 MySQL 监控工具(如 mysqld_exporter + Prometheus)在容器中会遇到问题:

  • mysqld_exporter 部署在容器内:占用容器资源,且容器重启后需重新配置;
  • mysqld_exporter 部署在宿主机:需通过容器 IP 连接 MySQL,IP 变化后监控中断;
  • 指标不准:容器的 CPU/内存使用率是“容器内视角”,无法反映宿主机的资源竞争(如宿主机 CPU 饱和,但容器内显示 CPU 使用率仅 50%)。

(2)故障诊断:分不清是“容器问题”还是“MySQL 问题”

当 MySQL 出现“查询延迟高”时,需要排查的维度比原生环境多一倍:

  1. 是容器内存不足导致 swap 使用率高?
  2. 是 Docker 存储驱动的 I/O 延迟高?
  3. 是容器间 CPU 竞争导致 MySQL 抢不到资源?
  4. 还是 MySQL 本身的索引设计有问题?

示例排查命令:

# 1. 查看容器资源使用(是否内存/CPU 超限)
docker stats mysql

# 2. 查看容器存储 I/O 延迟(是否 I/O 瓶颈)
docker stats --no-stream mysql | grep "I/O"

# 3. 进入容器查看 MySQL 状态(是否本身配置问题)
docker exec -it mysql mysqladmin -uroot -p status

# 4. 查看宿主机资源(是否宿主机整体繁忙)
top  # 查看宿主机 CPU/内存使用率

整个过程需要在“宿主机”和“容器”之间切换,效率远低于原生环境。

六、什么时候可以在 Docker 中运行 MySQL?

虽然生产环境不推荐,但在以下场景中,Docker 运行 MySQL 是合理的:

1. 开发测试环境:高效且无风险

开发测试环境对“数据安全性”和“性能稳定性”要求低,Docker 的便捷性能大幅提升效率:

  • 快速搭建:一行命令启动 MySQL,支持多版本切换(如同时测试 5.7 和 8.0);
  • 环境一致:通过 docker-compose.yml 固化配置,避免“我这能跑,你那不行”的问题;
  • 用完即毁:测试完成后,删除容器和数据卷,不占用宿主机资源。

推荐配置(docker-compose.yml):

version: '3.8'
services:
  mysql:
    image: mysql:8.0
    container_name: dev-mysql
    ports:
      - "3306:3306"  # 暴露端口,方便本地连接
    environment:
      MYSQL_ROOT_PASSWORD: dev123  # 开发环境密码,无需复杂
      MYSQL_DATABASE: dev_db       # 自动创建数据库
      MYSQL_USER: dev_user         # 自动创建用户
      MYSQL_PASSWORD: dev_user123
    volumes:
      - dev-mysql-data:/var/lib/mysql  # 数据卷持久化(测试数据可保留)
      - ./my.cnf:/etc/mysql/conf.d/my.cnf  # 自定义 MySQL 配置(如调整 buffer pool)
    restart: unless-stopped  # 容器意外退出时重启

volumes:
  dev-mysql-data:  # 命名卷,避免孤儿卷

2. 生产环境的“非核心场景”:风险可控

若满足以下所有条件,可尝试在生产环境用 Docker 运行 MySQL:

  1. 数据重要性低:如内部办公系统、日志统计库,数据丢失影响范围小;
  2. 访问量低:TPS 低于 100,不会触发容器的资源竞争和 I/O 瓶颈;
  3. 备份完善:每日全量备份 + 实时 binlog 备份,确保数据可恢复;
  4. 运维能力强:团队熟悉 Docker 存储、网络原理,能快速排查问题。

七、生产环境 MySQL 部署的推荐方案

对于生产环境,尤其是核心业务,推荐以下三种方案,按“可靠性”和“运维成本”排序:

1. 方案一:云数据库服务(如 AWS RDS、阿里云 RDS)

适合场景:中小型企业、无专业 DBA 团队;
优势:

  • 免运维:云厂商负责备份、高可用、扩容、版本升级;
  • 高可靠:默认支持主从架构,故障自动切换,数据可靠性达 99.99%;
  • 弹性伸缩:按需扩容内存、存储,无需停机。
    注意事项:成本较高,且数据迁移到自建环境时需注意兼容性。

2. 方案二:物理机/虚拟机部署(原生环境)

适合场景:核心业务、对性能和数据安全性要求极高;
优势:

  • 性能最优:无 Docker 中间层,I/O 和网络性能最大化;
  • 可控性强:可自由调整内核参数(如 vm.swappiness、sysctl 配置),优化 MySQL 性能;
  • 数据安全:直接管理物理磁盘,支持 RAID 阵列、LVM 分区,降低数据丢失风险。
    推荐配置:
  • 内存:至少 16GB(buffer pool 占 70%);
  • 存储:SSD 磁盘(I/O 性能比 HDD 高 10 倍以上),配置 RAID 5/6;
  • 系统:CentOS 7/8 或 Ubuntu 20.04(稳定性高,内核优化成熟)。

3. 方案三:Kubernetes StatefulSet(容器化的折中方案)

若业务已全面容器化,且必须在容器环境运行 MySQL,推荐用 Kubernetes StatefulSet 替代 Docker 单机部署:

  • 固定标识:StatefulSet 为每个实例分配固定名称和网络标识(如 mysql-0、mysql-1),解决 IP 动态变化问题;
  • 稳定存储:通过 PersistentVolume(PV)和 PersistentVolumeClaim(PVC)管理存储,数据卷与实例绑定,不会出现孤儿卷;
  • 有序部署:支持有序扩缩容和滚动更新,避免主从同步中断。

核心配置(StatefulSet.yaml 片段):

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mysql
spec:
  serviceName: mysql  # Headless Service,提供固定 DNS 解析
  replicas: 3         # 3 实例(1 主 2 从)
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - name: mysql
        image: mysql:8.0
        resources:
          requests:  # 资源请求(保障基础资源)
            memory: "4Gi"
            cpu: "2"
          limits:    # 资源限制(避免资源滥用)
            memory: "8Gi"
            cpu: "4"
        volumeMounts:
        - name: mysql-data
          mountPath: /var/lib/mysql
  volumeClaimTemplates:  # 动态创建 PV,每个实例一个 PV
  - metadata:
      name: mysql-data
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "ssd"  # 使用 SSD 存储类
      resources:
        requests:
          storage: 100Gi

注意:需搭配 MySQL Operator(如 Oracle MySQL Operator)简化集群管理,且需专业 K8s 运维团队支持。

八、总结:不要为了“便捷”牺牲“稳定”

Docker 是优秀的无状态服务部署工具,但 MySQL 作为有状态服务的核心代表,与 Docker 的设计理念存在根本冲突。在生产环境中,“数据安全”和“性能稳定”永远比“部署便捷”更重要——与其花费大量精力解决 Docker 带来的 I/O 损耗、数据持久化、资源竞争问题,不如选择更成熟的原生部署或云数据库方案。

最后用一句话概括:开发测试用 Docker 提效,生产核心用原生保稳定。技术选型没有“绝对正确”,只有“适合场景”——理解每种方案的优缺点,才能做出最合理的选择。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
分享到

为什么不建议在 Docker 中运行 MySQL?从技术原理到实践避坑

也可使用浏览器菜单中的「分享」功能

微信扫一扫分享

标签: docker MySQL 数据库
最后更新:2025年10月24日

岁月同一天 11 月 7 日

回望过去的今天,你在写什么

  • AI
    1 年前 2025年11月7日
    DeepSeek本地部署全攻略:从环境搭建到高级应用,打造专属 AI 助手

    DeepSeek 作为国产开源大模型的佼佼者,凭借出色的推理能力、代码生成效率和中文支持,成为很多开发者本地部署的首选。…

相关文章
  • 数据库更新如何实现乐观锁2025年12月26日
  • MySQL 同步 ElasticSearch 深度指南——6 种方案的原理、实战与避坑2025年10月30日
  • mybatis-plus-join-boot-starter介绍及用法2025年4月24日
  • k8s+docker部署Golang项目2020年6月4日
  • Dockerfile指令详解之COPY和ADD2020年6月5日

李锋镝

既然选择了远方,便只顾风雨兼程。

打赏 点赞
< 上一篇
下一篇 >
1234567891112131415161718192021222324252627282930313233343536373839404142434446474849505152535455575859606162636465666769727476777879808182858687909293949596979899
取消回复
…

文章评论

  • wu先生Lv 1

    感觉docker就是在平台上再建一个平台。

    WindowsWindowsChrome 123.0.0.0Chrome 123.0.0.0中国中国-湖北-黄冈
    2025年10月25日
    00 回复
    • 李锋镝博主

      @wu先生 确实是这样的

      macOSmacOSChrome 141.0.0.0Chrome 141.0.0.0中国中国-北京
      2025年10月27日
      00 回复
  • seoLv 1

    只会用mysql怎么办

    WindowsWindowsChrome 109.0.0.0Chrome 109.0.0.0中国中国-江苏-苏州
    2025年10月25日
    00 回复
    • 李锋镝博主

      @seo 那也很好了,够用了

      macOSmacOSChrome 141.0.0.0Chrome 141.0.0.0中国中国-北京
      2025年10月27日
      00 回复
  • 人生自是有情痴,此恨不关风与月。

    听点儿音乐吧 朋友~
    文章目录
    最新 热点 随机
    最新 热点 随机
    给服务器加了WAF 又一个逆天改命的人:小小徐 AI的生成能力等于生产力吗? NGINX严重漏洞(CVE-2026-15176、CVE-2026-93479、CVE-2026-97205) Kratos-plus v1.1.27更新说明 php2shell远程执行漏洞修复(CVE-2026-109618 和 CVE-2026-109619)
    给主题增加了游客中心功能心气没了,干什么都不得劲我觉得是时候公布我的导航网站了给服务器加了WAF游本昌去世关于主题加载速度优化的一点儿小演进
    Redis7.x&8.x 全新进阶系列(01):划时代升级总览——从6.x到7.x/8.x全版本变革全景 给服务器加了WAF Java并发编程之如何保证线程顺序执行 Kafka 为什么要抛弃 Zookeeper? Dylan Custom Plugin 1.0.2版本更新说明 背影 - 朱自清
    最近评论
    fairy 发布于 17 小时前(11月06日) 机器人快来我这里吧!
    李锋镝 发布于 17 小时前(11月06日) 都是机器人,防不住
    李锋镝 发布于 17 小时前(11月06日) 是的,太烦了
    李锋镝 发布于 17 小时前(11月06日) 可以同一台服务器
    fairy 发布于 19 小时前(11月06日) 这流量,好厉害啊。我一年都没那么多
    标签聚合
    SQL Spring JAVA 日常 多线程 Redis Claude JVM 架构 AI编程 IDEA MySQL 分布式 WordPress Theme ElasticSearch SpringBoot 数据库 K8s AI
    友情链接
    • 志文工作室
    • Mr.Sun的博客
    • 韩情脉脉
    • 刘永博客
    • lijie blog
    • Honesty
    • 韩小韩博客
    • 搬砖日记
    • 老张博客
    • 九仞之行
    • 林羽凡
    • 瓦匠个人小站
    • Serendipity
    • 皮皮社
    • 知向前端
    • 哥斯拉
    • sssr7844的博客
    • 彬红茶日记
    • 懋和道人

    COPYRIGHT © 2016-2026 lifengdi.com. ALL RIGHTS RESERVED.

    lifengdi.com 十年之约虫洞

    Domain age badge for lifengdi.com

    Theme Kratos-plus By Dylan Li

    津ICP备2024022503号-3

    京公网安备11011502039375号