[mysqld] port = xxxx MySQL通信的端口 user = myxxxx MySQL 默认的用户,即目录用户的用户名,用户组是mysql datadir = /data1/mysqlxxxx 数据目录的位置 basedir = /usr/local/mysql-5.7.24 MySQL server 的安装目录 tmpdir = /data1/mysqlxxxx 存放一些临时文件,比如使用了file sort,文件名以MY开头;大事务的binary log 缓存 文件名以ML开头;临时表,#table.frm/idb; slave-load-tmpdir = /data1/mysqlxxxx load数据的临时空间,比如主库load一大份数据,会直接将该数据文件copy到slave-load-tmpdir目录下 socket = /tmp/mysqlxxxx.sock mysql.sock文件的存放位置,用于本地连接MySQL key_buffer_size = 128M 索引块(index block)缓存大小,影响索引处理速度,尤其是索引读 max_allowed_packet = 16M 限制mysql server接受的数据包大小,比如导入大文件时容易被限制导致失败 table_open_cache = 4000 打开表的数量限制,一般不调整,和open_files_limit联动 ,经验公式open_files_limit= Table_open_cache*2 join_buffer_size = 16M join缓存,用于缓存驱动表的数据,此值越大,驱动表分段越少,被驱动表全表扫描越少,join语句效率越高。上限是驱动表的大小。 sort_buffer_size = 16M 排序缓存,connect级别的参数,所以不是越大越好,否则高并发会暂用大量内存资源,一般够用,不用可以调整 read_buffer_size = 16M 读取缓冲区大小,当对表进行顺序扫描时使用,仅用于MyISAM引擎 read_rnd_buffer_size = 32M 用在sort查询之后 ,以保证获取以顺序的方式获取到查询的数据。与read_buffer_size类似,不过可以用于所有引擎 myisam_sort_buffer_size = 128M MyISAM表发生变化时重新排序所需的缓冲 query_cache_type = 0 查询缓冲类型,0:关闭。1:开启。2,只有select 中明确指定SQL_CACHE才缓存,目前一般建议关闭。 query_cache_size = 0 query_cache_size 查询缓冲区大小 max_tmp_tables = 256 内存临时表最大的数量 tmp_table_size = 128M 内存临时表的大小限制,比如sort时,内存临时表不够,就会写磁盘临时文件了 max_heap_table_size = 128M 内存表的大小限制 thread_cache_size = 64 线程缓存数,客户端端口后,会缓存此线程以复用, max_connect_errors = 99999999 同一主机联系N次建联失败,则MySQL阻塞此客户端的链接 long_query_time = 0 slow log记录的sql耗时阈值,设为0就是所有sql都记录 slow-query-log = 1 是否开启slow log ;1开启。0关闭 slow-query-log-file = slow.log slow log 的文件名,一般不用改 back_log = 600 mysql链接数满以后,堆栈里可以暂存的请求数 myisam_repair_threads = 1 该值大于1,在Repair by sorting过程中并行创建MyISAM表索引(每个索引在自己的线程内),等于1,则串行 myisam_recover_options = DEFAULT default 代表每次访问myisam表时判断是否需要进行修复,如果需要则自动进行修复,并从key cache里面找需要修复的数据,如果没有key cache则不修复,如果该值为 force,则即使没有key cache也会进行修复,此时可能丢数据 expire_logs_days = 30 binlog 保留的天数,超过的binlog会自动删除 interactive_timeout = 30 交互式连接超时时间,比如使用mysql客户端 wait_timeout = 30 非交互式连接超时时间,比如jdbc连接mysql等 skip-slave-start = 1 数据库启动时,不自动启动复制进行,生产环境应当为1,便于管理 skip-name-resolve 禁止mysql对客户端进行DNS反向解析,此时授权Host不可为域名,必须为ip max_user_connections = 8000 对某个用户最大连接数 max_connections = 8000 对全局的最大连接数 character-set-server = utf8mb4 服务端默认字符集 read_only = 1 只读模式,从库设为1,主库设为0,注意super权限在read only=1时依然可写 log-slave-updates = 1 同步主库的sql是否计入本身的binlog,1为记入,出现级联复制时需要注意此参数 #------------- innodb -------------- default-storage-engine = InnoDB 默认的存储引擎,如无特殊需求,均为innodb innodb_buffer_pool_size = 8G innodb缓冲池大小,重要参数,基本控制mysql实例使用的内存多少,一般来说越大性能越好 innodb_data_file_path = ibdata1:100M:autoextend innodb tablespace文件,ibdata1为表空间文件名,100M为文件大小,autoextend表示自动扩充文件大小 innodb_flush_log_at_trx_commit = 0 提交事务时,是否把redo log刷到磁盘,0表示不管,1表示必须等刷,2表示写入系统缓存就成 innodb_log_buffer_size = 8M redo log 日志缓冲区 innodb_log_file_size = 1300M 事务日志(redo log)文件大小,即ib_logfile0 innodb_log_files_in_group = 3 redo log组的大小,3意味着有三个事务日志文件,为ib_logfile0,ib_logfile1,ib_logfile2,这三个日志循环写, innodb_max_dirty_pages_pct = 90 buffer pool内最大的脏页百分比,意味着脏页超过90%会触发强制flush innodb_lock_wait_timeout = 20 锁超时时间,超时未拿到锁就会报错,如果配置了innodb_rollback_on_timeout,事务就会回滚 innodb_file_per_table = 1 每张表都单独保存表数据,包括结构文件和数据文件,否则数据文件(ibd)会保存在一个文件中 innodb_flush_method = O_DIRECT flush数据的操作,默认是 fdatasync:只写系统缓存,脏数据和redolog都如此,O_DSYNC:脏数据同前,redolog直接写入磁盘,O_DIRECT:脏数据直接写磁盘,redolog同前前。 innodb_io_capacity = 500 决定InnoDB后台任务的每秒 I/O 操作数 (IOPS),io压力大时,可以适当提高 innodb_buffer_pool_instances = 10 innodb_buffer_pool的个数 他们的总容量就是innodb_buffer_pool_size的大小,多个缓冲池实例可以进行并发内存读写 #------------- undo -------------- innodb_undo_tablespaces = 3 undo log文件数量,设置后不可更改 innodb_max_undo_log_size = 10G undo log 文件大小限制,超过限制会触发自动回收 innodb_undo_log_truncate = ON 开启undo log空间自动回收 #------------- Performance -------------- max_execution_time = 0 select 语句执行的超时时间,设置未0意味着不启用超时 #------------- replication -------------- slave_parallel_type = logical_clock 并行复制策略 如为database,则不同库事务并行回放,如为logical_clock,则同binlog group提交的事务可以并行回放 slave_parallel_workers = 0 并行回放线程数,该值为0 ,意味着禁用并行复制 slave_preserve_commit_order = 1 从库提交顺序控制,为1意味着 事务在从库应用的顺序与在relay log中顺序一致 # Crash Safe relay_log_info_repository = table 决定slave同步的位置信息记录存放位置,table意味着信息放在mysql.slave_relay_info表里;file意味着放在relay-log.info文件 master_info_repository = table 同上,记录的时slave 同步master的信息 sync_master_info = 10000 从库同步主库数据后,何时刷盘。0代表不刷,1代表每条数据都刷,n代表n条数据再刷 relay_log_recovery = ON 数据库启动后,自动开始relay log修复 server-id = 281235472 集群中实例的唯一标识,集群内唯一 log-bin = mysql-bin binlog name relay-log = relay-bin relay log name log-error = error.log error log name gtid-mode = ON 是否开启gtid模式 enforce-gtid-consistency = 1 启动后,只允许事务安全且可被记录的sql执行, log_timestamps = SYSTEM 控制记录到error log和slow log的时间,可为UTC或system secure-file-priv = '' 此为导出数据是的目录限制,为''意味着不限制 [client] port = xxxx 实例使用的通信端口号 socket = /tmp/mysqlxxxx.sock sock文件的位置 no-auto-rehash 自动补全开关,auto-rehash意味着开启自动补全,开启后可用tab键补全命令 character_set_client = utf8mb4 客户端的默认字符集 [myisamchk] 以下为各种buffer key_buffer = 64M sort_buffer_size = 32M read_buffer = 16M write_buffer = 16M