0
点赞
收藏
分享

微信扫一扫

mysql8.0配置文件模版注释

西街小学的王 2022-08-02 阅读 48

[client]                                                                               #客户端设置,即客户端默认的连接参数
default-character-set=utf8mb4                                        #默认字符集
socket = /usr/local/mysql/mysql.sock                              #用于本地连接的socket套接字,在[mysqld]下面加入mysql.sock的path

[mysqld]                                                                            #服务端基本设置
#启用admin_port,管理员紧急后门
admin_address = '127.0.0.1'                                              #MySQL 8,用于指定管理员发起tcp连接的主机地址
admin_port = 33015                                                         #MySQL 8,管理员用来连接的端口号,默认33062
lower_case_table_names=1                                             #设置大小写是否敏感,不可动态更改;0:表名存储为给定的大小和比较是区分大小写的 ,1:名存储在磁盘是小写的,但是比较的时候是不区分大小写,2:表名存储为给定的大小写但是比较的时候是小写的
skip_name_resolve=ON                                                   #禁止对连接的客户端进行DNS反向解析(ip解析成域名),可以加快数据库的反应时间,默认值为OFF
default_time_zone = "+8:00"                                            #系统时区,在MySQL启动时会检查当前系统的时区
user=mysql                                                                      #MySQL启动用户。如果是root用户就配置root,mysql用户就配置mysql
character_set_server=utf8mb4                                        #服务端默认编码(数据库级别)
default_authentication_plugin=mysql_native_password  #默认的身份验证插件;mysql_native_password是5.7默认的,caching_sha2_password是MySQL 8.0首选的身份验证插件
port=3305                                                                        #MySQL监听端口,默认3306
server_id=1                                                                       #表示是本机的序号,要唯一
secure_file_priv=/home/mysql/mysql-files                     #用于限制导入和导出的数据目录,比如 LOAD DATA 和 SELECT ... INTO OUTFILE 语句,以及 LOAD_FILE() 函数;默认为NULL,禁止导入和导出
local_infile=OFF                                                               #批量的数据导入操作时,能否使用load data、local infile命令;默认为ON
socket = /usr/local/mysql/mysql.sock                             #为MySQL客户端程序和服务器之间的本地通讯指定一个套接字文件
basedir = /usr/local/mysql                                               #mysql安装目录
datadir = /home/mysql/data                                           #mysql数据目录
tmpdir = /home/mysql/tmp                                            #MySQL存放临时文件的目录

#performance setttings
lock_wait_timeout = 3600                                            #事务等待获取资源等待的最长时间(单位:秒),超过这个时间还未分配到资源则会返回应用失败。InnoDB在它自己的锁定表中自动检测事务死锁并且回滚事务。InnoDB用LOCK TABLES语句注意到锁定设置。默认值是50秒
open_files_limit = 65535                                              #MySQL打开的文件描述符最大数量(范围:0-65535);没有被配置的时候,比较max_connections*5和ulimit -n的值,哪个大用哪个,被配置的时候,比较open_files_limit和max_connections*5的值,哪个大用哪个
back_log = 1024                                                          #在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存在堆栈中;设定back_log高于操作系统的队列大小是无效的。默认值为50
max_connections = 3000                                            #连接MySQL的最大可连接数;MySQL无论如何都会保留一个用于管理员(SUPER)登陆的连接,实际最大可连接数max_connections+1
max_connect_errors = 1000000                                 #某一客户端尝试连接此MySQL服务器,失败(如密码错误等等)达到该次数,MySQL会无条件强制阻止此客户端连接
table_open_cache = 1024                                          #表描述符缓存大小,可减少文件打开/关闭次数;MySQL每打开一个表,都会读入一些数据到table_open_cache缓存中,当MySQL在这个缓存中找不到相应信息时,才会去磁盘上读取。默认值64
table_definition_cache = 1024                                  #内存中可打开的表结构数量,可减少读取表定义的成本,MySQL 8.0 引入了 Data Dictionary , 将表定义放在了表中,不再需要访问 frm 文件;最小400,之后一般依据下面的简单计算来定:400 + (table_open_cache / 2)
thread_stack = 512K                                                 #每一个线程栈分配的内存大小,用来存放每一个线程自身的标识信息,如线程id,线程运行时基本信息等等
sort_buffer_size = 4M                                               #MySQL执行排序使用的缓冲大小;该参数对应的分配内存是每连接独占!如果有100个连接,那么实际分配的总共排序缓冲区大小为100 × 6 = 600MB
join_buffer_size = 4M                                               #联合查询操作所能使用的缓冲区大小,分配内存也是每连接独占
read_buffer_size = 8M                                             #MySQL读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区
read_rnd_buffer_size = 4M                                        #MySQL的随机读缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区
bulk_insert_buffer_size = 64M                                 #批量插入缓存大小,这个参数是针对MyISAM存储引擎来说的。适用于在一次性插入100-1000+条记录时, 提高效率。默认值是8M。可以针对数据量的大小,翻倍增加
thread_cache_size = 4500                                        #线程池大小。用来缓存空闲的线程,以至于不被销毁,如果线程缓存在的空闲线程,需要重新建立新连接,则会优先调用线程池中的缓存,很快就能响应连接请求。每建立一个连接,都需要一个线程与之匹配。
interactive_timeout = 600                                       #服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。默认值:28800秒(8小时)
wait_timeout = 600                                                 #是MySQL在关闭一个非交互的连接之前所要等待的秒数,可以通过show processlist命令查看当前系统的连接状态,如果发现有大量的sleep状态的连接进程,则说明该参数设置的过大
tmp_table_size = 32M                                            #内部内存临时表的最大值,每个线程都要分配,如果内存临时表超出了限制,MySQL就会自动地把它转化为基于磁盘的MyISAM表,存储在指定的tmpdir目录下
max_heap_table_size = 32M                                   #创建的内存表的最大值,防止意外创建一个超大的内存表导致用尽所有的内存资源,可动态修改

innodb_numa_interleave = ON                             #用于分配 InnoDB 缓冲池。当设置为on的时候,启用NUMA间存策略,对于mysqld进程的numa内存分配策略设置为MPOL_INTERLEAVE,而一旦Innodb buffer pool分配完毕,则策略重新设置回MPOL_DEFAULT.
                                                                              #这个参数生效,必须建立在mysql是在支持numa特性的linux系统上编译的基础上。可选值:off、on,默认off。
#log settings
log_timestamps = SYSTEM                                    #值有:UTC 和 SYSTEM,默认使用 UTC。UTC使得日志中记录的时间比中国这边的慢了 8 个小时,导致查看日志不方便,修改为 SYSTEM 就能解决问题。可动态修改
log_error=/home/mysql/data/mysql-error.log      #开启错误日志及错误日志路径
log_error_verbosity = 3                                          #将某些信息写入错误日志中。1:错误信息,2:错误信息和告警信息,3:错误信息、告警信息和通知信息,默认值为2,可动态修改
slow_query_log = 1                                               #开启慢日志
log_slow_extra = 1                                                #开启额外字段输出,MySQL 8.0.14开始可用,默认OFF,可动态修改
slow_query_log_file = /home/mysql/data/mysql/slow.log #慢查询路径
long_query_time = 0.15                                         #慢查询时间,超过0.15秒则为慢查询,默认10
log_queries_not_using_indexes = 1                      #开启,记录没有使用索引查询语句
log_throttle_queries_not_using_indexes = 60       #限制每分钟内,在慢查询日志中,去记录没有使用索引的SQL语句的次数,默认0。没有使用索引的SQL可能会短时间重复执行,为了避免日志快速增大
min_examined_row_limit = 100                            # 对于查询扫描行数小于此参数的SQL,将不会记录到慢查询日志中
log_slow_admin_statements = 1                          #管理语句执行时间大于阈值也将写入到慢查询日志中,管理语句包括alter table, check table等等
log_slow_slave_statements = 1                            #从库应用binlog,如果binlog格式是statement,执行时间超过阈值时,将写入从库的慢查询日志, 对于ROW格式binlog,不管执行时间有没有超过阈值,都不会写入到从库的慢查询日志
log-bin=/home/mysql/data/mysql-bin.log           #开启二进制日志功能及路径
binlog_format = ROW                                           #binlog的格式,有三种:STATEMENT,ROW,MIXED。STATEMENT,直接记录原始语句,存在nondeterministic的问题(如AUTO_INCREMENT,UUID等),因此容易造成主从数据不一致;
                                                                              #ROW ,推荐的配置方式,将对数据修改的SQL语句转换成对应的行改变;MIXED ,默认情况下为STATEMENT,遇到特殊的SQL语句时转换为ROW格式
sync_binlog = 1                                                    #sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。默认为0,不做任何强制性的磁盘刷新指令。MGR环境中由其他节点提供容错性,可不设置双1以提高本地节点性能
binlog_cache_size = 4M                                       #二进制日志缓冲大小。设置大小要合适,减少磁盘I/O,满足性能要求;又保证Cache无残留,及时持久化,满足安全要求。默认4M
max_binlog_cache_size = 2G                                #为每个session 最大可分配的内存,在事务过程中用来存储二进制日志的缓存
max_binlog_size = 1G                                          #bin log日志每达到设定大小后,会使用新的bin log日志
binlog_rows_query_log_events = 1                      #对binlog_format=row有效,设为1启用后,可以在binary log中记录原始的语句
binlog_expire_logs_seconds = 604800                 #MySQL 8.0.12版本中默认开启binlog日志并设置为binlog_format=row,binlog失效日期参数为 binlog_expire_logs_seconds,默认30天过期(单位:秒)
 #MySQL 8.0.22前,想启用MGR的话,需要设置binlog_checksum=NONE才行
binlog_checksum = CRC32                                    #写binlog时,会将内容生成校验位,之后存储在binlog中,验证事件是否正确写入。有效值:CRC32、NONE,默认:CRC32
gtid_mode = ON                                                   #开启GTID功能
enforce_gtid_consistency = ON                            #有效值:OFF、ON、WARN;默认:OFF。OFF: 所有交易都允许违反 GTID 一致性。ON: 任何交易都不允许违反 GTID 一致性。WARN:所有交易都允许违反 GTID 一致性,但在这种情况下会生成警告。


#innodb settings
transaction_isolation=READ-COMMITTED             #MySQL支持4种事务隔离级别,他们分别是:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE.默认: REPEATABLE-READ
#专用数据库服务器建议服务器物理内存70%-80%
innodb_buffer_pool_size = 65536M                      #InnoDB 用来高速缓冲数据和索引内存缓冲大小。
#逻辑cpus大于64时设置64,否则设置为逻辑cpus
innodb_buffer_pool_instances = 8                        #InnoDB 缓冲池划分为的区域数,把需要缓冲的数据hash到不同的缓冲池中,这样可以并行的内存读写。
innodb_data_file_path = ibdata1:12M:autoextend #指定innodb 共享表空间文件,默认在datadir下建立ibdata1。文件ibdata1的大小为,该文件可以自动增长(autoextend)
                                                                                #ib_logfile的刷新方式(记录的是redo log和undo log的信息),默认的日志文件是ib_logfile0,ib_logfile1
                                                                                #0:表示每隔一秒把log buffer刷到文件系统中(os buffer)去,并且调用文件系统的“flush”操作将缓存刷新到磁盘上去。也就是说一秒之前的日志都保存在日志缓冲区,也就是内存上,如果机器宕掉,可能丢失1秒的事务数据。
                                                                                #1:默认,保证完整的ACID,表示在每次事务提交的时候,都把log buffer刷到文件系统中(os buffer)去,并且调用文件系统的“flush”操作将缓存刷新到磁盘上去。对io要求比较高
                                                                                #2:表示在每次事务提交的时候会把log buffer刷到文件系统中去,但并不会立即刷写到磁盘。
innodb_flush_log_at_trx_commit=1                        #MGR环境中由其他节点提供容错性,可不设置双1以提高本地节点性能
innodb_log_buffer_size = 32M                               #InnoDB 将日志写入日志磁盘文件前的缓冲大小;大的日志缓冲允许事务运行时不需要将日志保存入磁盘而只到事务被提交,缓冲区更大能提高性能,但意外的故障将会丢失数据
#如果线上环境的TPS较高,建议加大至1G以上,如果压力不大可以调小
innodb_log_file_size = 2048M                                #单个 redo log 文件设置大小。更大的设置可以提高性能,但也会增加恢复故障数据库所需的时间
innodb_log_files_in_group = 9                               #redo log 文件的个数,默认2个。为提高性能,MySQL可以以循环方式将日志文件写到多个文件
innodb_max_undo_log_size = 4G                          #控制最大 undo tablespace 文件的大小
# 根据您的服务器IOPS能力适当调整
# 一般配普通SSD盘的话,可以调整到 10000 - 20000
# 配置高端PCIe SSD卡的话,则可以调整的更高,比如 50000 - 80000
innodb_io_capacity = 2011                                      #在从缓冲区刷新脏页时(checkpoint),每秒刷新脏页的数量就等于该值;合并插入缓冲时,每秒合并插入缓冲的数量为 innodb_io_capacity值的5%
innodb_open_files = 65535                                      #限制Innodb能打开的表的数量
innodb_flush_method=O_DIRECT_NO_FSYNC         #innodb数据文件及redo log的打开、刷写模式。有效值:fsync、O_DSYNC、littlesync、nosync、O_DIRECT、O_DIRECT_NO_FSYNC
innodb_lru_scan_depth = 4000                                #每个缓冲池实例,缓冲池LRU列出的页面清理器线程扫描的脏页面的深度。默认1024。主要用于写密集型的工作负载。对于大量DML活动,如果刷新不够激烈,则刷新可能会滞后;如果刷新太激烈,磁盘写可能会使I/O容量饱和。
innodb_lock_wait_timeout = 10                               #InnoDB事务在被回滚之前可以等待一个锁定的超时秒数。InnoDB在它自己的锁定表中自动检测事务死锁并且回滚事务
innodb_rollback_on_timeout = 1                             #默认值为 OFF ,在 OFF 的时候事务超时后会回滚事务内最新执行的一条语句.如果值为 ON 会回滚整个事务。
innodb_print_all_deadlocks = 1                               #记录死锁日志,当发生死锁时,死锁日志会记录到 MySQL 的错误日志文件中
innodb_online_alter_log_max_size = 4G                  #控制在用于在Online DDL操作时的一个临时的日志文件的上限值大小。
innodb_print_ddl_logs = 1                                       #打印改写系统表的DDL日志(现在DDL是原子的,有一个mysql.innodb_ddl_log系统表记录)
innodb_status_file = 1                                             #启用,在data文件夹下面自动创建innodb_status.<pid>的文件。每15s将show engine innodb status信息打印到innodb_status.pid文件
#注意: 开启 innodb_status_output & innodb_status_output_locks 后, 可能会导致log_error文件增长较快
innodb_status_output = 0                                      #开启后会周期性向error log输出show engine innodb status
innodb_status_output_locks = 1                            #这个参数配合innodb_status_file或innodb_status_output使用时,当前两者开启,则会向前两者输出位置输出锁信息
innodb_sort_buffer_size = 67108864                     #在创建InnoDB索引时用于指定对数据排序的排序缓冲区的大小。利用这块内存把数据读进来进行内部排序然后写入磁盘。创建完后free掉
innodb_file_per_table = 1                                      #InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间
innodb_max_dirty_pages_pct = 81                        #控制Innodb的脏页在缓冲中在那个百分比之下,值在范围1-100,默认为90

#建议为逻辑cpus
innodb_write_io_threads = 32                              #innodb使用后台线程处理数据页上的读写 I/O(输入输出)请求,默认是4
innodb_read_io_threads = 32
#建议为逻辑cpus/4
innodb_purge_threads = 8                                  #选择清除操作,是否使用单独线程(用的几个·)定期回收无用数据
innodb_page_cleaners = 8                                  #从缓冲池实例中冲洗脏页的页面清洁线程数,刷新后,redo log就可以覆盖,循环使用

#myisam settings
key_buffer_size = 32M                                        #索引块的缓冲区大小,对【MyISAM表性能影响最大的一个参数】.决定索引处理的速度,尤其是索引读的速度
myisam_sort_buffer_size = 128M                       #MyISAM设置恢复表之时使用的缓冲区的尺寸,当在REPAIR TABLE或用CREATE INDEX创建索引或ALTER TABLE过程中排序 MyISAM索引分配的缓冲区

#加载插件
plugin_load='rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so;mysql_clone.so'

#clone相关
loose-clone=FORCE_PLUS_PERMANENT

#replication settings
binlog_transaction_dependency_tracking = WRITESET  #影响MySQL如何追踪事务操作,最终影响Binlog中last_committed值。COMMIT_ORDER(默认参数),依赖信息根据源上事务提交的时间顺序产生;WRITESET,依赖信息根据源上WRITESET产生,写入不同元组(Tuples)的事务可以并发执行;
                                                                                        #WRITESET_SESSION,依赖信息根据源上WRITESET产生,写入不同元组(Tuples)的事务可以并发执行,但相同会话的操作不能并发执行。
transaction_write_set_extraction = XXHASH64               #在参数transaction_write_set_extraction被设置为XXHASH64后,对于WRITESET和WRITESET_SESSION两种方式,MySQL不再按照事务提交时间来计算事务是否可以并发执行
                                                                                        #而是根据事务中修改记录的唯一性来判定事务是否可以执行;当两个事务修改的数据在主键索引或唯一索引上不存在冲突时,则可认为这两个事务可以并发执行。
slave-parallel-type = LOGICAL_CLOCK                           #并行复制方式。有两个值:DATABASE 默认值,基于库的并行复制方式;LOGICAL_CLOCK:基于组提交的并行复制方式
#建议设置为逻辑cpus/2
slave-parallel-workers = 16                                            #进行并行复制SQL线程数量,并发执行relay log中主库提交的事务(避免主从延迟)
master_info_repository='TABLE'                                     #将master的连接信息写入表:mysql.salve_master_info
relay_log_info_repository='TABLE'                                  #将中继日志的信息写入表:mysql.slave_realy_log_info
relay_log_recovery='ON'                                                #开启中继日志自我修复:当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,重新从master上获取日志(重新同步),这样就保证了relay-log的完整性(主从一致)
binlog_gtid_simple_recovery = 1                                   #Mysql重启扫描binlog的设置(跟gtid是否开启有关)
slave_preserve_commit_order = 1                                 #在多线程复制环境下才起作用,能够保证从库回放relay log事务的顺序与这些事务在relay log中的顺序完全一致,也就是与主库提交的顺序完全一致
slave_checkpoint_period = 2                                         #从库经过多少毫秒执行checkpoint,默认300ms
skip_slave_start                                                             #启动slave从库的时候,io、sql复制线程不会随着mysql进程启动而开启,如果你需要启动就需要手动执行start slave命令。默认off
#级联复制场景开启
#log_slave_updates='ON'

#在8.0.26和8.0.27上面测试发现开启该参数会导致首次登录时卡住
#loose-rpl_semi_sync_master_timeout = 99999999     #半同步复制参数,控制主库等待备库响应的消息时间(单位ms),如果超过该阀值,则认为备库存在问题,将半同步复制修改为异步复制,避免主库的执行事务长时间等待
loose-rpl_semi_sync_master_enabled = 'ON'               #表示主上是否开启半同步复制功能,可以动态修改。可选值:ON\OFF
loose-rpl_semi_sync_slave_enabled = 'ON'                  #表示从上是否开启半同步复制功能,可以动态修改。可选值:ON\OFF
loose-rpl_semi_sync_master_wait_point = AFTER_SYNC  #控制主库等待ack的逻辑处于整个事务提交过程的哪个阶段。AFTER_COMMIT:在接收到备库确认信息前将事务提交;AFTER_SYNC:在接收到备库确认信息后将事务提交
loose-rpl_semi_sync_master_wait_no_slave = 'ON'      #是否允许master 每个事务提交后都要等待slave的receipt信号。默认为on,每一个事务都会等待,如果slave宕掉后,当slave追赶上master的日志时,可以自动的切换为半同步方式。为off,则slave追赶上后,也不会采用半同步的方式复制。
loose-rpl_semi_sync_master_wait_for_slave_count= 1 #设置需要应答的Slave的数量。在半同步复制模式下,默认Master发送事务默认至少需要一个Slave的响应才能继续下一个事务

#奔溃输出core_file
core_file
#innodb monitor settings
innodb_monitor_enable = "module_innodb"              #INNODB_METRICS表将所有InnoDB性能和资源相关计数器合并到一个INFORMATION_SCHEMA表中。启用一个或多个计数器。
innodb_monitor_enable = "module_server"                #启用与server子系统关联的计数器
innodb_monitor_enable = "module_dml"                    #启用与dml子系统关联的计数器
innodb_monitor_enable = "module_ddl"                    #启用与server子系统关联的计数器
innodb_monitor_enable = "module_trx"                     #启用与 transaction子系统关联的计数器
innodb_monitor_enable = "module_os"
innodb_monitor_enable = "module_purge"
innodb_monitor_enable = "module_log"
innodb_monitor_enable = "module_lock"
innodb_monitor_enable = "module_buffer"
innodb_monitor_enable = "module_index"
innodb_monitor_enable = "module_ibuf_system"
innodb_monitor_enable = "module_buffer_page"
innodb_monitor_enable = "module_adaptive_hash"
#pfs settings
performance_schema = 1                                            #要使用MySQL的performance_schema,需要在mysqld启动时启用,以启用事件收集功能,监控MySQL server在一个较低级别的运行过程中的资源消耗、资源等待等情况。performance_schema 数据库中的表使用performance_schema存储引擎
performance_schema_instrument = '%memory%=on' #是否在MySQL Server启动时就启用某些采集器,由于instruments配置项多达数千个,所以该配置项支持key-value模式,还支持%号进行通配等。
performance_schema_instrument = '%lock%=on'

[mysqld_safe]
core-file-size=unlimited                                             #core_file文件大小

[mysql]
no-auto-rehash                                                          #mysql命令行不开启命令自动补全功能,auto-rehash表示开启命令自动补全功能,默认是禁用的
default-character-set=utf8mb4                                  #默认字符集
prompt = (\u@\h) \R:\m:\s [\d]>\_                            #登入mysql数据库后,mysql的提示符只是一个很简单内容 mysql>,该项对其进行美化


举报

相关推荐

0 条评论