mysql 设置参数解读
一 mysql的参数分为几类
1 session级别可以设置
2 global级别可以设置
3 session+global级别可以设置
4 read_only必须加入配置文件才可以设置
二 在此制定下5.6的模板各位可以观测下
#innodb
innodb_additional_mem_pool_size=32M(用来存储元数据,表越多,需要的越大,此参数在5.7.4中已经移除) =>不支持在线修改
innodb_buffer_pool_size=linux_memoryX70%(推荐单实例服务器内存的70%) =>不支持在线修改
innodb_data_file_path = ibdata1:1024M:autoextend (独立表空间启动)=> 不支持在线修改
innodb_flush_log_at_trx_commit=1(日志刷新方式,如果不是压力很大,建议设置为1,保证事务的安全)
innodb_log_buffer_size=16M (redo log的缓存) =>不支持在线修改
innodb_log_file_size=256M (redo log实际的大小,关于redo不适合设置太大或者太小,太小会切换频繁,太大会导致恢复困难) =>不支持在线修改
innodb_log_files_in_group=3 (redo log日志组的个数) =>不支持在线修改
innodb_flush_method=O_DIRECT(写入磁盘方式) =>不支持在线修改
innodb_read_io_threads=8(读线程) =>不支持在线修改
innodb_write_io_threads=8(写线程) =>不支持在线修改
innodb_io_capacity=2000(并发IO,针对RAID磁盘组,SSD可以设置更高)
#binlog
sync_binlog=1 (设置为1 保证binlog的写入成功)
log_bin = mysql-bin =>不支持在线修改
常规
back_log=500 =>不支持在线修改
max_connections=3000(看情景设置)
max_connect_errors=1000
binlog_format=ROW
skip-name-resolve =>不支持在线修改
character_set_server=utf-8 =>不支持在线修改
max_allowed_packet=20M(看情景设置)
thread_cache_size=64(会话缓存线程数)
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES(看情景设置)
#与查询有关的参数(看情景设置)
tmp_table_size = 256M
sort_buffer_size = 4M
read_buffer_size = 4M
join_buffer_size = 8M
三 总结如下
1 可以看到mysql一些不能重启生效的参数最好在初始化mysql时候添加,否则以后调节就很难了
2 此份配置仅仅代表我的个人见解(暂时没有考虑高并发),有些参数需要看情景设置,如果有问题可以留言,我会立马改正
3 mysql的参数列表请参考5.6官方文档
4 mysql全局理论使用内存的计算公式
mysqlused mem =key_buffer_size + query_cache_size+innodb_buffer_pool_size + innodb_additional_mem_pool_size+innodb_log_buffer_size
+max_connections * (read_buffer_size+ read_rnd_buffer_size+sort_buffer_size+ join_buffer_size+binlog_cache_size + thread_stack+ tmp_table_size)