mysql數據庫,尤其在VPS等資源受限環境下,可能消耗大量內存。本文將介紹如何優化docker中的MySQL容器配置,降低其內存占用。 近期,筆者在運行多個包含MySQL的wordpress容器時遭遇內存問題,MySQL容器消耗約500MB空閑內存,通過以下優化后,內存占用降低至約150MB。
我們將提供優化的my.cnf配置文件示例、docker-compose.yml文件配置以及文件權限設置說明。
步驟一:創建my.cnf配置文件
在主機上創建一個名為mysql-low-memory-my.cnf的配置文件:
[mysqld] # InnoDB緩沖池大小 innodb_buffer_pool_size = 128M # MyISAM鍵緩沖區大小 key_buffer_size = 8M # 最大并發連接數 max_connections = 50 # 線程緩存大小 thread_cache_size = 8 # 內存臨時表大小限制 tmp_table_size = 16M max_heap_table_size = 16M # 禁用Performance Schema以節省內存 performance_schema = 0 # InnoDB日志緩沖區大小 innodb_log_buffer_size = 4M # 打開表緩存大小 table_open_cache = 200
步驟二:設置文件權限
為確保MySQL能夠正確讀取配置文件且其他進程無法修改,請設置文件權限:
chmod 0444 mysql-low-memory-my.cnf
步驟三:配置docker-compose.yml
在docker-compose.yml文件中,將配置文件映射為MySQL容器的卷:
services: mysql: image: mysql:8 container_name: mysql-container environment: MYSQL_ROOT_PASSWORD: yourpassword # 請替換為您的密碼 volumes: - ./mysql-low-memory-my.cnf:/etc/mysql/conf.d/mysql-low-memory.cnf ports: - "3306:3306"
步驟四:啟動容器
運行以下命令啟動容器:
docker compose up -d
完成以上步驟后,您的MySQL容器將以更低的內存占用率運行。 請注意,這些設置可能會影響數據庫性能,請根據實際情況調整參數。
您可以使用以下命令檢查容器的內存使用情況:
docker stats mysql-container
相關代碼已上傳至代碼倉庫。(請補充代碼倉庫鏈接)