zoukankan      html  css  js  c++  java
  • 配置解析

     

    [mysqld]
    sql_mode = PIPES_AS_CONCAT,ANSI_QUOTES,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
    #PIPES_AS_CONCAT 将||视为字符串连接操作符(+)(同concat()),而不视为OR
    #ANSI_QUOTES 将‘"’视为识别符引号(‘`’引号字符),不要视为字符串的引号字符。在ANSI模式,你可以仍然使用‘`’来引用识别符。启用ANSI_QUOTES后,你不能用双引号来引用字符串,因为它被解释为识别符。
    #STRICT_TRANS_TABLES 严格模式控制MySQL如何处理非法或丢失的输入值.MySQL将非法值转换为最接近该列的合法值并插入调整后的值。如果值丢失,MySQL在列中插入隐式 默认值。
    #NO_ENGINE_SUBSTITUTION 如果需要的存储引擎被禁用或未编译,可以防止自动替换存储引擎。

    
    

    explicit_defaults_for_timestamp = off

    1.和其它字段类型不一样,这个字段默认为not null(默认not null加default null修饰会报错,往该列中插入null值,会自动转化为默认值).
    2.第一列timestamp字段,如果不强制指定默认值或on update属性的话,就会默认设为DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP。
    3.非第一列timestamp字段,如果不强制指定默认值,DEFAULT '0000-00-00 00:00:00'
    4.如果不想使用timestamp的默认值,允许为空的字段可定义为:timestamp null default null;不允许为空的字段定义为:timestamp not null default '无业务含义的时间定值';
    如果explicit_defaults_for_timestamp=1,则关闭timestamp default的特性:
    1.如果没有被显示指定not null,则默认为null;
    2.默认值也会是null而非CURRENT_TIMESTAMP;
    3.如果指定了not null属性,insert式不指定该字段的值,strict sql_mode下,会报错。非strict sql_mode下插入'0000-00-00 00:00:00';

    event_scheduler=ON
    #开启定时任务

    
    

    ## slave
    server-id = 2017080204 #
    skip-slave-start = 1
    #1复制进程不会随着数据库的启动而启动

    
    

    read_only = 0
    #1开启只读 0关闭只读

    
    

    log-slave-updates = 1
    # 1从库从主库复制数据时可以写入到binlog日志

    
    

    relay_log_purge = 1
    #如果默认情况 relay_log_purge=1 时,SQL 线程就会自动将之前的 relay log 全部删除。而当 relay_log_purge=0 时,旧的 relay log 则会被保留.

    
    

    relay_log_info_repository = table
    master_info_repository = table
    #IO thread的执行状态信息保存在master.info文件,SQL thread的执行状态信息保存在relay-log.info文件.
    #由于崩溃或停止 MySQL 时,SQL 线程可能没有执行完全部的 relay log,最后一个 relay log 中的一部分数据会被重新下载到新的文件中。也就是说,这部分数据重复了两次。
    #如果 SQL 跟得很紧,则可能在 IO 线程写入 relay log ,但还没有将同步到磁盘时,就已经读取执行了。这时,就会造成新的文件和旧的文件中少了一段数据。
    #5.6开始可以设置将这两个信息保存在innodb事务表中,这时执行relay log中的事务和写relay info在一个事务中,就能得到原子性保证。

    
    

    relay_log_recovery = 1
    #为了让从库是crash safe的,必须设置relay_log_recovery=1,这个选项的作用是,在 MySQL 崩溃或人工重启后,由于IO 线程无法保证记录的从主库读取的binlog位置的正确性,因此,就不管master_info中记录的位置,而是根据 relay_log_info中记录的已执行的binlog位置从主库下载,并让SQL线程也从这个位置开始执行。MySQL启动时,相当于执行了flush logs,会新开一个relay log文件,新的 relay log会记录在新的文件中.

    
    

    innodb_autoinc_lock_mode=1
    #1 auto_inc锁不要一直保持到语句的结束,只要语句得到了相应的值后就可以提前释放锁;
    #0 表级的auto_inc锁,在语句结束的时候才释放这把锁,注意是语句级而不是事务级,一个事务可以包含多个语句;
    #2 这个模式下已经没有了auto_inc锁,这个模式下的性能是最好的,但是对于同一个语句来说它得到的auto_increment值可能不是连续的;

    
    

    auto_increment_offset=1
    #从1开始自增长
    auto_increment_increment=1
    #增长幅度为1,如果是双主架构,需要设置auto_increment_offset分别为1,2,auto_increment_increment=2

    
    

    query_cache_size = 0
    #查询缓存池设置大小为0

    
    

    query_cache_type = 0
    #关闭查询缓存

    
    

    back_log = 200
    #back_log 的值表示监听的TCP/IP连接队列的大小。当然,操作系统也有自己的队列大小限制。Unix手册中对于listen()的系统调用会提供细节。如需要,可以检查操作系统文档中关于该值最大值的说明。back_log 不能大于操作系统限制的最大值。

    
    

    bulk_insert_buffer_size = 8M # myisam 批量insert
    #当我们使用如 insert … values(…),(…),(…)… 的方式进行批量插入的时候,MySQL 会先将提交的数据放如一个缓存空间中,当该缓存空间被写满或者提交完所有数据之后,MySQL 才会一次性将该缓存空间中的数据写入数据库并清空缓存。此外,当我们进行 LOAD DATA INFILE 操作来将文本文件中的数据 Load 进数据库的时候,同样会使用到此缓冲区。

    
    

    character-set-server = utf8
    #字符集

    
    

    lower_case_table_names = 1 # 1:不区分
    # 1 表名忽略大小写

    
    

    ## binlog
    sync_binlog = 1 # !!!
    #0 当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。
    #1 即使系统Crash,也最多丢失binlog_cache中未完成的一个事务,对实际数据没有任何实质性影响。从以往经验和相关测试来看,对于高并发事务的系统来说,“sync_binlog”设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多
    #n 当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。

    
    

    binlog_cache_size = 1M
    #用来存储二进制日志的缓存

    
    

    expire_logs_days = 90
    #日志过期时间

    binlog_format = row
    #日志格式

    log_bin_trust_function_creators = 1 # 允许function复制
    # 1 开启了log-bin的MySQL Server便可以随意创建function。这里存在潜在的数据安全问题,除非明确的知道创建的function在master和slave上的行为完全一致
    #另外如果是在master上创建函数,想通过主从复制的方式将函数复制到slave上则也需在开启了log-bin的slave中设置上述变量的值为ON(变量的设置不会从master复制到slave上,这点需要注意),否则主从复制会报错

    
    

    ## audit
    server_audit_logging = 1 # 0 不开启
    server_audit_events = QUERY
    #server_audit_excl_users = zabbix_mon,monitor
    server_audit_incl_users = root
    server_audit_output_type = file
    server_audit_file_rotate_size = 1G
    server_audit_file_rotate_now = 0
    server_audit_file_rotations = 0 # 日志不轮转 n保留日志数
    server_audit_query_log_limit = 1024

    
    

    ## 基线
    local-infile = off
    #off 不允许load数据
    skip-networking = off
    #开启远程访问
    skip-name-resolve = on
    #on 跳过DNS反向解析

    
    

    ## connect
    max_allowed_packet = 32M
    max_connect_errors = 1000
    max_connections = 3000
    wait_timeout = 1800 # 关闭 非交互 连接之前等待活动的秒数 default:8h
    interactive_timeout = 1800 # 关闭 交互式 连接之前等待活动的秒数 default:8h

    
    

    table_open_cache = 4096
    thread_cache_size = 64
    thread_stack = 192K
    transaction-isolation = REPEATABLE-READ #
    pid-file = mysql.pid

    
    


    ## slow
    slow_query_log = 1 # 0-off 1-on
    long_query_time = 1
    log-slow-admin-statements
    #一些管理指令,也会被记录。比如OPTIMEZE TABLE, ALTER TABLE等等
    log_queries_not_using_indexes = 0
    slow_launch_time = 1 #如果创建线程的时间超过该秒数,服务器增加Slow_launch_threads状态变量。

    
    

    read_buffer_size = 4M # 顺序读
    read_rnd_buffer_size = 8M # 随机读
    sort_buffer_size = 8M
    join_buffer_size = 32M
    tmp_table_size = 128M
    max_heap_table_size = 128M

    
    

    default-storage-engine = innodb

    
    

    ## innodb
    innodb_buffer_pool_size = 20G #
    innodb_max_dirty_pages_pct = 80 #
    innodb_thread_concurrency = 120 # default: 0
    innodb_buffer_pool_instances = 1 #
    innodb_flush_log_at_trx_commit = 1 # !!!
    innodb_read_io_threads = 20 # 15*4CPU
    innodb_write_io_threads = 15 #
    innodb_io_capacity = 4000
    innodb_io_capacity_max = 8000
    innodb_lru_scan_depth = 1024
    innodb_use_native_aio = 1
    innodb_flush_neighbors = 1
    innodb_buffer_pool_load_at_startup = 1
    innodb_buffer_pool_dump_at_shutdown = 1

    
    

    innodb_data_file_path=ibdata:1G:autoextend
    innodb_log_files_in_group = 3
    innodb_log_file_size = 1G
    innodb_file_per_table = 1

    
    

    innodb_flush_method = O_DIRECT
    innodb_strict_mode = 1
    innodb_lock_wait_timeout = 30
    innodb_log_buffer_size = 16M
    innodb_support_xa = 0
    innodb_adaptive_flushing = 1
    innodb_change_buffering = all
    innodb_file_format = Barracuda
    innodb_file_format_max = Barracuda
    innodb_file_format_check = 1
    innodb_purge_threads = 4 ## purge thread 线程数上限 mysql5.6 可设置大于1
    innodb_purge_batch_size = 300 ## 每次purge 回收提交事务数量

    
    

    innodb_use_sys_malloc = 1 ## innodb 使用操作系统内存分配器
    innodb_old_blocks_time = 1
    innodb_fast_shutdown = 0
    performance_schema = 1
    innodb_print_all_deadlocks = 1
    innodb_sort_buffer_size = 4M

    
    

    ## mysql5.6
    innodb_page_size = 16k
    #gtid_mode = OFF # off
    #enforce-gtid-consistency = true
    slave_parallel_workers = 0
    table_open_cache_instances=16
    binlog_rows_query_log_events=1 # row模式下记录完整SQL

    
    


    # MyISAM
    key_buffer_size = 256M

    
    


    [mysqldump]
    quick
    max_allowed_packet = 32M

    
    

    [mysql]
    no-auto-rehash
    prompt=p@d>\_

    
    

    [mysqld_safe]
    open-files-limit = 28192

    
    

    [mysqlhotcopy]
    interactive-timeout

     
  • 相关阅读:
    Android View 的绘制流程
    Android Studio 注释模板
    Flutter https://flutter.cn/docs学习之 工作原理
    Android 手机兼容差异
    Flutter plugin的两种方式
    本周总结
    mapreduce程序开发简单实例 WordCount
    《需求工程——软件建模与分析》阅读笔记之一
    本周总结
    本周总结
  • 原文地址:https://www.cnblogs.com/janehoo/p/7816058.html
Copyright © 2011-2022 走看看