首页 > 数据库 > MySQL > Mysql 5.7忧化配置详解
一、客户端参数(mysql)
no-auto-rehash
--
交互式终端命令自动补全
prompt=
"\\u@\\h : \\d\\r:\\m:\\s>" \u是登陆用户名,\h是系统主机名,\d是当前数据库,\r是空格。
default_character_set=utf8 --
设置客户端的字符集
user=root --
设置登陆用户名,如果指定本地登陆就不用输入用户名了。
password=密码 --
设置登陆密码,如果指定本地登陆就不用输入密码。(不安全)
二、服务端参数(mysqld)
1.innodb忧化参数
server_id=10 --server id值。
default_storage_engine=InnoDB --默认存储引擎
innodb_buffer_pool_size=系统内存X75%
innodb_buffer_pool_instances=1 --一般是CPU的个数,总的缓存也除以这个值就是每个缓存池的大小。(默认是1)
innodb_buffer_pool_dump_at_shutdown=ON --数据库关闭时备份缓存池的数据。(默认ON)
innodb_buffer_pool_load_at_startup=ON --数据库启动时加载缓存池的数据。(默认ON)
innodb_buffer_pool_dump_pct=25 --将缓存池前25%的数据备份到磁盘。(默认是25)
innodb_lru_scan_depth=1024 --如果缓存池有1024个脏页立即刷新到磁盘。(默认是1024)
innodb_flush_method=O_DIRECT --控制innodb数据文件,redo文件打开及刷写模式。(建议值是 O_DIRECT)
innodb_flush_neighbors=0 --0表示不刷新邻近页,1表示不刷新邻近页。(默认值)
innodb_use_native_aio=ON --开启异步IO功能
innodb_io_capacity =200 --每秒写入多少iops。默认是200,一般机械盘可以是2000,ssd可以是4000。
innodb_io_capacity_max=200 --最大写入多少iops。
innodb_doublewrite=ON --开启两次写功能。
innodb_flush_log_at_trx_commit=1 --事物提交redo log刷新到磁盘。0 日志刷新到缓存,1 日志直接刷新到磁盘,2 日志刷新到操作系统缓存。
innodb_support_xa=ON --开启分布式事物。
innodb_file_per_table=ON --每张表单独的表空间。
innodb_numa_interleave=OFF --开启numa功能。
2.sql优化参数
show global status like '%sort%'; --可以在数据库状态值查看当前设置的值是否合理。
show global status like '%tmp%';
innodb_sort_buffer_size=1048576 --sql排序缓存大小,默认是1M。(order by语句使用)
tmp_table_size=16777216 --临时表大小。 (group by打开的表)
table_open_cache=2000 --打开临时表缓存。
max_tmp_tables=32 --打开临时表个数
join_buffer_size=262144 --sql连接查询缓存
query_cache_size=1048576 --查询缓存大小
read_buffer_size=131072 --读缓存区,将表顺序扫描读到一个缓存区。
3.重做日志优化
innodb_log_file_size=50331648 -- 默认值是50M。一般可以设置为4G以上,如果值太小会导致频繁日志文件替换影响性能。
innodb_log_files_in_group=2 --重做日志个数。
innodb_log_buffer_size=16777216 --重做日志缓存,默认16M。
innodb_log_group_home_dir=./ --重做日志路径。
innodb_log_compressed_pages=ON --重做日志开启压缩。
4.二进制日志优化
log_bin=OFF -- 默认值是OFF(关闭),是否写入binlog文件。
binlog_format=ROW -- 二进制复制的格式,默认值是statement(语句复制)。statement是记录sql语句,从库直接回放sql就可以。row是记录修改的数据,从库直接同步数据就可以。mixed混合复制默认是语句复制,比如random,now动态数据(函数)采用行复制。
binlog_rows_query_log_events=OFF --默认是OFF,在binlog中记录sql语句。建议值是ON。
log_bin_basename=路径 --二进制文件存放路径。
log_bin_index=路径 --二进制日志文件产生的索引文件,内容是binlog的文件名。
max_binlog_cache_size=1024 --默认值是1M。写入二进制文件时缓存,参考值查看状态信息(Binlog_cache_disk_use,Binlog_cache_use)
max_binlog_size=1048576 --默认大小是1G。可以适当调大。
expire_logs_days=0
--默认值是0。表示不自动删除,生产环境需要设置其值。
sync_binlog=1 --事物提交立即刷新到binlog文件。
log_slave_updates=ON --默认值是OFF,在从库也写binlog日志。(用于从库)
read_only=OFF --默认值是OFF,从库是只读不能写入,建议值是OFF。(用于从库)
relay_log_recovery=ON --默认值是OFF,IO线程高可用,建议值是ON。(用于从库)
relay_log_info_repository=FILE --默认值是FILE,sql线程高可用,建议值是TABLE。(用于从库)
slave_parallel_type=DATABASE --默认是基于数据库并行复制,建议值是logical_clock基于事物组并行复制。
slave_parallel_workers=0 --默认值是0,建议值是CPU的个数,有多少个sql线程回放sql语句。
thread_handling=one-thread-per-connection --建议值是pool-of-threads
thread_cache_size=9 --线程池缓存大小。
gtid_mode=on --默认是关闭,开启GTID事物全局id。一般用于主从复制
enforce-gtid-consistency=1
innodb_purge_threads=4 --purge线程个数,默认值是4。purge线程主要是删除记录和undo log数据。
innodb_read_io_threads=4 --读线程个数。
innodb_write_io_threads=4 --写入线程个数。
5.错误和通用日志
log_error=路径 --记录数据库启动关闭和运行的状态。
log_output=FILE --日志输出格式。
log_queries_not_using_indexes=OFF --没有使用索引的SQL记录到日志。
slow_query_log=OFF --慢查询日志,记录比较慢的SQL语句。
slow_query_log_file=路径 --慢查询日志记录路径。
long_query_time=10.000000 --慢查询日志记录时间。
general_log=OFF --通用日志。
general_log_file=路径 --通用日志记录路径。
6.其他参数优化
open_files_limit=5000 --文件打开数。
connect_timeout=10 --客户端连接超时。
max_connections=151 --最大连接数
innodb_encrypt_online_alter_logs=OFF -- 开启DDL在线定义。
innodb_online_alter_log_max_size=134217728 --此参数默认为关闭,大小为128M。DDL在线定义所产生的日志大小。
innodb_change_buffering=all --提高辅助索引的插入性能。
innodb_adaptive_hash_index=ON --开启自适应哈希索引。(哈希索引是自己创建不是人工创建的,不占磁盘空间,索引是存在内存中的,where字段必须是等值=)
innodb_adaptive_hash_index_parts=8 #自适应哈希分片设置
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25854343/viewspace-2769197/ ,如需转载,请注明出处,否则将追究法律责任。