MySQL在默认情况下启动时会占用400多兆内存,对于像VPS等内存较小的应用来说,这会导致内存占用率较高,可能导致MySQL崩溃并自动停止。为了解决这个问题,可以通过编辑/etc/my.cnf文件,在[mysqld]部分添加或修改以下参数来调整内存占用情况:performance_schema_max_table_instances=200、table_definition_cache=100、table_open_cache=100。通过降低这些参数的值,可以显著减少MySQL的内存占用,使其在约60兆左右,大大降低了默认内存使用量。进一步调整参数innodb_buffer_pool_size=2M,可以进一步减小内存占用。此外,MySQL 5.6默认启用了performance_schema,会占用大量内存,可以禁用以降低内存占用。完整的配置文件如下,内存占用可降至22兆。如果使用的是CentOS 64位,并通过yum安装(一键脚本),可以按照以下配置进行设置。
conf
[mysqld]
innodb_buffer_pool_size=128M
log_bin
join_buffer_size=128M
sort_buffer_size=2M
read_rnd_buffer_size=2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
skip-external-locking
key_buffer_size=8M
max_allowed_packet=1M
table_open_cache=4
sort_buffer_size=64K
read_buffer_size=256K
read_rnd_buffer_size=256K
net_buffer_length=2K
thread_stack=240K
innodb_use_native_aio=0
innodb_buffer_pool_size=2M
performance_schema_max_table_instances=50
table_definition_cache=50
table_open_cache=32
max_connections=50
max_user_connections=35
wait_timeout=10
interactive_timeout=15
long_query_time=5
symbolic-links=0
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
这些调整可以帮助在内存较小的环境下有效管理MySQL的内存占用,保证其正常运行。