mysql數(shù)據(jù)庫(kù),尤其在VPS等資源受限環(huán)境下,可能消耗大量?jī)?nèi)存。本文將介紹如何優(yōu)化docker中的MySQL容器配置,降低其內(nèi)存占用。 近期,筆者在運(yùn)行多個(gè)包含MySQL的wordpress容器時(shí)遭遇內(nèi)存問(wèn)題,MySQL容器消耗約500MB空閑內(nèi)存,通過(guò)以下優(yōu)化后,內(nèi)存占用降低至約150MB。
我們將提供優(yōu)化的my.cnf配置文件示例、docker-compose.yml文件配置以及文件權(quán)限設(shè)置說(shuō)明。
步驟一:創(chuàng)建my.cnf配置文件
在主機(jī)上創(chuàng)建一個(gè)名為mysql-low-memory-my.cnf的配置文件:
[mysqld] # InnoDB緩沖池大小 innodb_buffer_pool_size = 128M # MyISAM鍵緩沖區(qū)大小 key_buffer_size = 8M # 最大并發(fā)連接數(shù) max_connections = 50 # 線程緩存大小 thread_cache_size = 8 # 內(nèi)存臨時(shí)表大小限制 tmp_table_size = 16M max_heap_table_size = 16M # 禁用Performance Schema以節(jié)省內(nèi)存 performance_schema = 0 # InnoDB日志緩沖區(qū)大小 innodb_log_buffer_size = 4M # 打開(kāi)表緩存大小 table_open_cache = 200
步驟二:設(shè)置文件權(quán)限
為確保MySQL能夠正確讀取配置文件且其他進(jìn)程無(wú)法修改,請(qǐng)?jiān)O(shè)置文件權(quán)限:
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 # 請(qǐng)?zhí)鎿Q為您的密碼 volumes: - ./mysql-low-memory-my.cnf:/etc/mysql/conf.d/mysql-low-memory.cnf ports: - "3306:3306"
步驟四:?jiǎn)?dòng)容器
運(yùn)行以下命令啟動(dòng)容器:
docker compose up -d
完成以上步驟后,您的MySQL容器將以更低的內(nèi)存占用率運(yùn)行。 請(qǐng)注意,這些設(shè)置可能會(huì)影響數(shù)據(jù)庫(kù)性能,請(qǐng)根據(jù)實(shí)際情況調(diào)整參數(shù)。
您可以使用以下命令檢查容器的內(nèi)存使用情況:
docker stats mysql-container
相關(guān)代碼已上傳至代碼倉(cāng)庫(kù)。(請(qǐng)補(bǔ)充代碼倉(cāng)庫(kù)鏈接)