//
MySQL之my.cnf文件常用参数
//
MySQL的配置文件,想必大家都不陌生,今天再来说说配置文件中的一些常用配置,并非最合理的配置,仅供参考,只有了解自己的生产环境,才能根据环境找到最适合你的配置文件参数。
首先,我们知道,配置文件中包含了很多个配置的组,如下:
[server]
(具体的启动选项,作用于所有的服务器程序)
[mysqld]
(具体的启动选项,作用于mysqld服务器程序)
[mysqld-5.7]
(具体的启动选项,作用于mysqld5.7版本服务器程序)
[mysqld_safe]
(具体的启动选项,作用于mysqld_safe服务器程序)
[mysql]
(具体的启动选项,作用于mysql客户端程序)
[mysqladmin]
(具体的启动选项,作用于mysqladmin客户端程序)
[client]
(具体的启动选项,作用于所有的客户端程序)
不同的程序可以读取不同的组,以下是具体内容:
mysqld [server],[mysqld]
mysqld_safe [mysqld]、[server]、[mysqld_safe]
mysql.server [mysqld]、[server]、[mysql.server]
mysql [mysql]、[client]
mysqladmin [mysqladmin]、[client]
mysqldump [mysqldump]、[client]
左侧的程序,分别可以读取右侧的参数组的内容。
--loose前缀
这里,在重点强调一个loose的参数,在MySQL中,如果一个参数前面加上了loose这个限定,那么该参数及时在某个版本中不存在了,那么MySQL程序不会报错,只会给出一个警告,这个特点在单机多实例多版本的时候特别有用,当你复制别人的配置文件的时候也比较有用,详细的介绍,大家可以看MySQL的官方文档,这里我截了个图,供大家参考。
https://dev.mysql.com/doc/refman/5.7/en/option-modifiers.html
说句题外话,如果大家想看阿里云服务器的配置文件,不防购买一台rds,直接在上面使用show variables like '%%';这个语句会输出阿里云rds的配置文件。
下面开始正题,常见的配置文件都包含哪些内容(注意,有与参数太多,这里配置文件参数不再做一一解释,想了解更加详细的内容,请参阅官方文档,里面有更细致的说明):
[client]
###客户端使用utf8字符集###
loose-default-character-set = utf8 [mysqld] #服务器一些通用参数#
# 连接相关参数# user = mysql port = 4316 socket = /data/mysql_4316/tmp/mysql.sock pid-file = /data/mysql_4316/tmp/mysql.pid max_allowed_packet = 64M default-storage-engine = InnoDB max_connections = 650 max_user_connections = 640 max_connect_errors = 1000000 back_log = 200 thread_cache_size = 100 open-files-limit = 16384
#文件导出的参数# secure_file_priv=''
# 超时相关参数# interactive_timeout = 28800 wait_timeout = 28800
#服务器目录和数据文件目录 basedir = /usr/local/mysql datadir=/data/mysql_4316/data tmpdir = /data/mysql_4316/tmp
#服务器字符集#
character-set-server = utf8
#查询缓存(比较鸡肋的功能,基本弃用) query_cache_type = 0 query_cache_size = 0M
# 查询常见的一些buffer参数,需要根据实际情况调整,不可直接照搬# sort_buffer_size = 2M join_buffer_size = 2M tmp_table_size = 64M thread_stack = 192K key_buffer_size = 2M sort_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 16M join_buffer_size = 2M
# 表缓存# table_open_cache = 2048 table_definition_cache = 1400
#内存变量# max_heap_table_size = 64M memlock #错误日志参数# log_error=/data/mysql_4316/log/mysql.err log-warnings = 2 该参数之前写过一篇文章,要了解可以查看:
#慢日志参数# slow_query_log = 1 slow_query_log_file=/data/mysql_4316/log/slowquery.log long_query_time = 1 log_queries_not_using_indexes = 1(是否开启索引检测) # 通用日志参数 general_log = 0 general_log_file=/data/mysql_4316/log/general.log
#binlog和复制相关的参数#
log-bin=/data/mysql_4316/innodblog/mysqlbin binlog_cache_size = 4M max_binlog_cache_size = 4294967296 max_binlog_size = 1G expire_logs_days = 7 sync_binlog = 1 binlog_format = ROW binlog_rows_query_log_events=on
# 如果你的服务器作为从库,则需要配置下面参数 log_slave_updates =1 read_only = 0 relay-log = /data/mysql_4316/log/slave-relay-bin relay-log-index = /data/mysql_4316/log/slave-relay-bin.index master_info_repository=TABLE relay_log_info_repository=TABLE
#安全相关参数
skip-name-resolve = 1 safe-user-create = 1 secure_auth = 1 skip-symbolic-links
###innodb相关参数### # 缓存相关的参数 innodb_buffer_pool_size=200M innodb_buffer_pool_instances = 1 innodb_max_dirty_pages_pct = 75 #IO相关的参数,有些是默认的,不需要配置 innodb_use_native_aio = 1 innodb_flush_method = O_DIRECT innodb_adaptive_flushing = 1 innodb_io_capacity = 200 innodb_read_io_threads = 4 innodb_write_io_threads = 4 innodb_purge_threads = 4 innodb_lru_scan_depth=1000 #目录相关参数 innodb_data_home_dir=/data/mysql_4316/data innodb_data_file_path = ibdata1:1G:autoextend innodb_file_per_table = 1 # redo log相关参数 innodb_log_group_home_dir=/data/mysql_4316/innodblog innodb_log_files_in_group = 2 innodb_log_file_size = 1G innodb_log_buffer_size = 16M innodb_flush_log_at_trx_commit = 1 # 锁、并发、事务相关参数# innodb_table_locks = 1 innodb_lock_wait_timeout = 50 innodb_thread_concurrency = 0 innodb_rollback_on_timeout=1 innodb_print_all_deadlocks=on
#数据恢复相关 innodb_fast_shutdown = 1 #innodb_force_recovery=1(看名字就知道很厉害) #是否开启全局事务id gtid_mode=ON enforce_gtid_consistency=ON #从节点复制并行度相关配置 slave_parallel_type=LOGICAL_CLOCK slave_parallel_workers=8 [mysqldump] quick max_allowed_packet = 64M [mysql] no-auto-rehash max_allowed_packet = 64M prompt=mysql--\\u@\\h:\\d \\R:\\m:\\s>> init-command="set interactive_timeout=28800;set wait_timeout=28800;"
以上为常用的MySQL参数,再次强调,不一定适合所有人,不理解的参数,请到官方文档查询。