首页 数据库 mysql教程 减少 Docker 中的 MySQL 内存使用

减少 Docker 中的 MySQL 内存使用

Jan 27, 2025 am 02:11 AM

Reduzindo o Uso de Memória do MySQL no Docker

优化 Docker 容器中的 MySQL 内存使用情况,尤其是在 VPS 等资源受限的环境中。 我最近解决了使用 MySQL 运行多个 WordPress 容器的 VPS 上的内存问题;空闲消耗约为 500MB,经过此处描述的优化后减少至 150MB 左右。

本指南演示了如何在 Docker 中设置 MySQL 容器以最小化内存消耗。 包括优化的 my.cnf 文件示例、具有卷映射的 docker-compose.yml 文件以及有关文件权限的说明。

第1步:创建配置文件my.cnf

在主机上您的首选目录中创建一个名为 mysql-low-memory-my.cnf 的文件。 该文件将包含优化设置以减少内存使用。

<code>[mysqld]
# Tamanho do buffer principal do InnoDB
innodb_buffer_pool_size = 128M

# Tamanho do buffer de chave (MyISAM)
key_buffer_size = 8M

# Número máximo de conexões simultâneas
max_connections = 50

# Cache de threads
thread_cache_size = 8

# Tamanho de tabelas temporárias em memória
tmp_table_size = 16M
max_heap_table_size = 16M

# Desativa o Performance Schema
performance_schema = 0

# Tamanho do buffer de log
innodb_log_buffer_size = 4M

# Cache de tabelas abertas
table_open_cache = 200</code>

第 2 步:设置文件权限

创建文件mysql-low-memory-my.cnf后,将权限设置为MySQL只读,防止其他进程或用户修改。

chmod 0444 mysql-low-memory-my.cnf

第 3 步:配置 docker-compose.yml

在文件docker-compose.yml中,将包含配置文件的卷映射到MySQL容器:

services:
  mysql:
    image: mysql:8
    container_name: mysql-container
    environment:
      MYSQL_ROOT_PASSWORD: sua_senha
    volumes:
      - './mysql-low-memory-my.cnf:/etc/mysql/conf.d/mysql-low-memory-my.cnf'
    ports:
      - "3306:3306"

第 4 步:启动容器

运行以下命令以分离模式启动容器:

docker compose up -d

您的 MySQL 容器现在正在以优化的内存消耗运行! 请记住,这些设置会影响数据库性能,请根据需要进行调整。

使用以下命令监控容器的内存使用情况:

docker stats mysql-container

[包含所使用代码的存储库](存储库链接)

以上是减少 Docker 中的 MySQL 内存使用的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Laravel 教程
1605
29
PHP教程
1510
276
使用SSL/TLS加密保护MySQL连接 使用SSL/TLS加密保护MySQL连接 Jul 21, 2025 am 02:08 AM

为什么需要SSL/TLS加密MySQL连接?因为不加密的连接可能导致敏感数据被截取,启用SSL/TLS可防止中间人攻击并满足合规要求;2.如何为MySQL配置SSL/TLS?需生成证书和私钥,修改配置文件指定ssl-ca、ssl-cert和ssl-key路径并重启服务;3.客户端连接时如何强制使用SSL?通过创建用户时指定REQUIRESSL或REQUIREX509实现;4.SSL配置容易忽略的细节包括证书路径权限、证书过期问题以及客户端配置需求。

将MySQL部署自动化为代码 将MySQL部署自动化为代码 Jul 20, 2025 am 01:49 AM

要实现MySQL部署自动化,关键在于选用Terraform定义资源、Ansible管理配置、Git进行版本控制,并强化安全与权限管理。1.使用Terraform定义MySQL实例,如AWSRDS的版本、类型、访问控制等资源属性;2.通过AnsiblePlaybook实现数据库用户创建、权限设置等细节配置;3.所有配置文件纳入Git管理,支持变更追踪与协作开发;4.避免硬编码敏感信息,使用Vault或AnsibleVault管理密码,并设置访问控制与最小权限原则。

如何在MySQL中创建枢轴表 如何在MySQL中创建枢轴表 Jul 21, 2025 am 01:47 AM

在MySQL中实现类似Excel透视表功能的方法主要包括使用CASE或IF语句配合聚合函数进行行转列。1.使用CASEWHEN实现静态行转列,适用于已知需转换的列值的情况,通过SUM(CASEWHEN...)对不同值生成新列并汇总数据;2.动态生成列,适用于不确定具体值的情况,需先获取唯一值再构建CASE表达式,通常结合存储过程或应用层逻辑拼接并执行SQL字符串;3.使用IF函数简化语法,实现与CASE相同的效果但写法更紧凑;实际应用中若维度固定可直接硬编码列,若维度变化频繁则建议用脚本或存储过

如何在MySQL中审核数据库活动? 如何在MySQL中审核数据库活动? Aug 05, 2025 pm 01:34 PM

UseMySQLEnterpriseAuditPluginifonEnterpriseEditionbyenablingitinconfigurationwithserver-audit=FORCE_PLUS_PERMANENTandcustomizeeventsviaserver_audit_events;2.Forfreealternatives,usePerconaServerorMariaDBwiththeiropen-sourceauditpluginslikeaudit_log;3.

故障排除常见的mysql复制错误 故障排除常见的mysql复制错误 Jul 17, 2025 am 02:11 AM

MySQL主从复制问题常见于连接异常、数据不一致、GTID或binlog错误及复制延迟。1.检查主从连接是否正常,确保网络通、权限对、账号密码正确;2.排查数据不一致导致的复制失败,查看错误日志,必要时跳过错误并使用工具校验一致性;3.处理GTID或binlog问题,确保主库未清理所需事务日志,正确配置GTID模式;4.优化复制延迟,提升从库性能,启用并行复制,减少从库负载。遇到问题应优先查看SHOWSLAVESTATUS输出并分析日志定位根源。

优化MySQL用于财务数据存储 优化MySQL用于财务数据存储 Jul 27, 2025 am 02:06 AM

MySQL用于金融系统需优化四个关键点:1.金融数据必须使用DECIMAL类型确保精度,时间字段使用DATETIME避免时区问题;2.索引设计要合理,避免频繁更新字段建索引,组合索引按查询顺序排列并定期清理无用索引;3.使用事务确保一致性,控制事务粒度,避免长事务和非核心操作嵌入其中,并根据业务选择合适隔离级别;4.对历史数据按时间分区、归档冷数据并使用压缩表,提升查询效率并优化存储。

故障排除MySQL崩溃恢复过程 故障排除MySQL崩溃恢复过程 Jul 17, 2025 am 01:51 AM

MySQL崩溃恢复的关键在于理解日志机制并做好预防措施。1.崩溃后首先检查errorlog和InnoDBredolog以确定原因;2.多数情况下MySQL重启后会自动通过redo和undo阶段恢复数据一致性;3.若出现日志损坏、空间不足或配置错误需手动介入,可使用innodb_force_recovery强制启动并导出数据;4.日常应定期备份、监控资源使用、避免大事务并部署高可用架构以降低恢复难度。

优化MySQL以实时欺诈检测 优化MySQL以实时欺诈检测 Jul 21, 2025 am 01:59 AM

TooptimizeMySQLforreal-timefrauddetection,configuresmartindexing,chooseInnoDBasthestorageengine,andtunesystemsettingsforhighthroughput.1)Usecompositeandcoveringindexestospeedupfrequentquerieswithoutover-indexing.2)SelectInnoDBforrow-levellocking,ACID

See all articles