一、客户端参数(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-threadsthread_cache_size=9 --线程池缓存大小。 gtid_mode=on --默认是关闭,开启GTID事物全局id。一般用于主从复制enforce-gtid-consistency=1innodb_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 #自适应哈希分片设置
