您的位置:新葡亰496net > 网络数据库 > 新葡亰496net生产库MySQL配置文件my,几份常见的

新葡亰496net生产库MySQL配置文件my,几份常见的

发布时间:2019-07-20 12:43编辑:网络数据库浏览(181)

    my3306.cnf

    I assume the MySQL Server as followings. You should tune the variables according to your server.

    1. [mysqld]  

    2. ########basic settings########  

    3. server-id = 11   

    4. port = 3306  

    5. user = mysql  

    6. bind_address = 10.166.224.32  

    7. autocommit = on  

    8. character_set_server=utf8mb4  

    9. skip_name_resolve = 1  

    10. max_connections = 800  

    11. max_connect_errors = 1000  

    12. datadir = /data/mysql_data  

    13. transaction_isolation = READ-COMMITTED  

    14. explicit_defaults_for_timestamp = 1  

    15. join_buffer_size = 134217728  

    16. tmp_table_size = 67108864  

    17. tmpdir = /tmp  

    18. max_allowed_packet = 16777216  

    19. sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"  

    20. interactive_timeout = 1800  

    21. wait_timeout = 1800  

    22. read_buffer_size = 16777216  

    23. read_rnd_buffer_size = 33554432  

    24. sort_buffer_size = 33554432  

    25. ########log settings########  

    26. log_error = error.log  

    27. slow_query_log = 1  

    28. slow_query_log_file = slow.log  

    29. log_queries_not_using_indexes = 1  

    30. log_slow_admin_statements = 1  

    31. log_slow_slave_statements = 1  

    32. log_throttle_queries_not_using_indexes = 10  

    33. expire_logs_days = 90  

    34. long_query_time = 2  

    35. min_examined_row_limit = 100  

    36. ########replication settings########  

    37. master_info_repository = TABLE  

    38. relay_log_info_repository = TABLE  

    39. log_bin = bin.log  

    40. sync_binlog = 1  

    41. gtid_mode = on  

    42. enforce_gtid_consistency = 1  

    43. log_slave_updates  

    44. binlog_format = row   

    45. relay_log = relay.log  

    46. relay_log_recovery = 1  

    47. binlog_gtid_simple_recovery = 1  

    48. slave_skip_errors = ddl_exist_errors  

    49. ########innodb settings########  

    50. innodb_page_size = 8192  

    51. innodb_buffer_pool_size = 6G  

    52. innodb_buffer_pool_instances = 8  

    53. innodb_buffer_pool_load_at_startup = 1  

    54. innodb_buffer_pool_dump_at_shutdown = 1  

    55. innodb_lru_scan_depth = 2000  

    56. innodb_lock_wait_timeout = 5  

    57. innodb_io_capacity = 4000  

    58. innodb_io_capacity_max = 8000  

    59. innodb_flush_method = O_DIRECT  

    60. innodb_file_format = Barracuda  

    61. innodb_file_format_max = Barracuda  

    62. innodb_log_group_home_dir = /redolog/  

    63. innodb_undo_directory = /undolog/  

    64. innodb_undo_logs = 128  

    65. innodb_undo_新葡亰496net生产库MySQL配置文件my,几份常见的mysql生产计划文件记录。tablespaces = 3  

    66. innodb_flush_neighbors = 1  

    67. innodb_log_file_size = 4G  

    68. innodb_log_buffer_size = 16777216  

    69. innodb_purge_threads = 4  

    70. innodb_large_prefix = 1  

    71. innodb_thread_concurrency = 64  

    72. innodb_print_all_deadlocks = 1  

    73. innodb_strict_mode = 1  

    74. innodb_sort_buffer_size = 67108864   

    75. ########semi sync replication settings########  

    76. plugin_dir=/usr/local/mysql/lib/plugin  

    77. plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"  

    78. loose_rpl_semi_sync_master_enabled = 1  

    79. loose_rpl_semi_sync_slave_enabled = 1  

    80. loose_rpl_semi_sync_master_timeout = 5000  

    81.   

    82. [mysqld-5.7]  

    83. innodb_buffer_pool_dump_pct = 40  

    84. innodb_page_cleaners = 4  

    85. innodb_undo_log_truncate = 1  

    86. innodb_max_undo_log_size = 2G  

    87. innodb_purge_rseg_truncate_frequency = 128  

    88. binlog_gtid_simple_recovery=1  

    89. log_timestamps=system  

    90. transaction_write_set_extraction=MURMUR32  

    91. show_compatibility_56=on  

    MySQL my.cnf 配置文件中文注释

    新葡亰496net 1

    以下是my.cnf配置文件参数解释

    [client]

    port = 3309
    socket = /home/longxibendi/mysql/tmp/mysql.sock

    [mysqld]

    !include /home/longxibendi/mysql/etc/mysqld.cnf #包含的配置文件 ,把用户名,密码文件单独存放

    port = 3309
    socket = /home/longxibendi/mysql/tmp/mysql.sock
    pid-file = /longxibendi/mysql/mysql/var/mysql.pid
    basedir = /home/mysql/mysql/
    datadir = /longxibendi/mysql/mysql/var/

    # tmp dir settings
    tmpdir = /home/longxibendi/mysql/tmp/
    slave-load-tmpdir = /home/longxibendi/mysql/tmp/
    #当slave 执行 load data infile 时用

    #
    language = /home/longxibendi/mysql/share/mysql/english/
    character-sets-dir = /home/longxibendi/mysql/share/mysql/charsets/

    # skip options
    skip-name-resolve #grant 时,必须使用ip不能使用主机名
    skip-symbolic-links #不能使用连接文件
    skip-external-locking #不使用系统锁定,要使用myisamchk,必须关闭服务器
    skip-slave-start #启动mysql,不启动复制

    #sysdate-is-now

    # res settings
    back_log = 50 #接受队列,对于没建立tcp连接的请求队列放入缓存中,队列大小为back_log,受限制与OS参数
    max_connections = 1000 #最大并发连接数 ,增大该值需要相应增加允许打开的文件描述符数
    max_connect_errors = 10000 #如果某个用户发起的连接error超过该数值,则该用户的下次连接将被阻塞,直到管理员执行flush hosts ; 命令;防止黑客
    #open_files_limit = 10240

    connect-timeout = 10 #连接超时之前的最大秒数,在Linux平台上,该超时也用作等待服务器首次回应的时间
    wait-timeout = 28800 #等待关闭连接的时间
    interactive-timeout = 28800 #关闭连接之前,允许interactive_timeout(取代了wait_timeout)秒的不活动时间。客户端的会话wait_timeout变量被设为会话interactive_timeout变量的值。

    slave-net-timeout = 600 #从服务器也能够处理网络连接中断。但是,只有从服务器超过slave_net_timeout秒没有从主服务器收到数据才通知网络中断
    net_read_timeout = 30 #从服务器读取信息的超时
    net_write_timeout = 60 #从服务器写入信息的超时
    net_retry_count = 10 #如果某个通信端口的读操作中断了,在放弃前重试多次
    net_buffer_length = 16384 #包消息缓冲区初始化为net_buffer_length字节,但需要时可以增长到max_allowed_packet字节
    max_allowed_packet = 64M #

    #
    table_cache = 512 #所有线程打开的表的数目。增大该值可以增加mysqld需要的文件描述符的数量
    thread_stack = 192K #每个线程的堆栈大小
    thread_cache_size = 20 #线程缓存
    thread_concurrency = 8 #同时运行的线程的数据 此处最好为CPU个数两倍。本机配置为CPU的个数

    # qcache settings
    query_cache_size = 256M #查询缓存大小
    query_cache_limit = 2M #不缓存查询大于该值的结果
    query_cache_min_res_unit = 2K #查询缓存分配的最小块大小

    # default settings
    # time zone
    default-time-zone = system #服务器时区
    character-set-server = utf8 #server级别字符集
    default-storage-engine = InnoDB #默认存储

    # tmp & heap
    tmp_table_size = 512M #临时表大小,如果超过该值,则结果放到磁盘中
    max_heap_table_size = 512M #该变量设置MEMORY (HEAP)表可以增长到的最大空间大小

    log-bin = mysql-bin #这些路径相对于datadir
    log-bin-index = mysql-bin.index
    relay-log = relay-log
    relay_log_index = relay-log.index

    # warning & error log
    log-warnings = 1
    log-error = /home/mysql/mysql/log/mysql.err

    log_output = FILE #参数log_output指定了慢查询输出的格式,默认为FILE,你可以将它设为TABLE,然后就可以查询mysql架构下的slow_log表了

    # slow query log
    slow_query_log = 1
    long-query-time = 1 #慢查询时间 超过1秒则为慢查询
    slow_query_log_file = /home/mysql/mysql/log/slow.log
    #log-queries-not-using-indexes
    #log-slow-slave-statements

    general_log = 1
    general_log_file = /home/mysql/mysql/log/mysql.log
    max_binlog_size = 1G
    max_relay_log_size = 1G

    # if use auto-ex, set to 0
    relay-log-purge = 1 #当不用中继日志时,删除他们。这个操作有SQL线程完成

    # max binlog keeps days
    expire_logs_days = 30 #超过30天的binlog删除

    binlog_cache_size = 1M #session级别

    # replication
    replicate-wild-ignore-table = mysql.% #复制时忽略数据库及表
    replicate-wild-ignore-table = test.% #复制时忽略数据库及表
    # slave_skip_errors=all

    key_buffer_size = 256M #myisam索引buffer,只有key没有data
    sort_buffer_size = 2M #排序buffer大小;线程级别
    read_新葡亰496net生产库MySQL配置文件my,几份常见的mysql生产计划文件记录。buffer_size = 2M #以全表扫描(Sequential Scan)方式扫描数据的buffer大小 ;线程级别
    join_buffer_size = 8M # join buffer 大小;线程级别
    read_rnd_buffer_size = 8M #MyISAM以索引扫描(Random Scan)方式扫描数据的buffer大小 ;线程级别
    bulk_insert_buffer_size = 64M #MyISAM 用在块插入优化中的树缓冲区的大小。注释:这是一个per thread的限制
    myisam_sort_buffer_size = 64M #MyISAM 设置恢复表之时使用的缓冲区的尺寸,当在REPAIR TABLE或用CREATE INDEX创建索引或ALTER TABLE过程中排序 MyISAM索引分配的缓冲区
    myisam_max_sort_file_size = 10G #MyISAM 如果临时文件会变得超过索引,不要使用快速排序索引方法来创建一个索引。注释:这个参数以字节的形式给出.重建MyISAM索引(在REPAIR TABLE、ALTER TABLE或LOAD DATA INFILE过程中)时,允许MySQL使用的临时文件的最大空间大小。如果文件的大小超过该值,则使用键值缓存创建索引,要慢得多。该值的单位为字节
    myisam_repair_threads = 1 #如果该值大于1,在Repair by sorting过程中并行创建MyISAM表索引(每个索引在自己的线程内)
    myisam_recover = 64K#允许的GROUP_CONCAT()函数结果的最大长度

    transaction_isolation = REPEATABLE-READ

    innodb_file_per_table

    #innodb_status_file = 1
    #innodb_open_files = 2048
    innodb_additional_mem_pool_size = 100M #帧缓存的控制对象需要从此处申请缓存,所以该值与innodb_buffer_pool对应
    innodb_buffer_pool_size = 2G #包括数据页、索引页、插入缓存、锁信息、自适应哈希所以、数据字典信息
    innodb_data_home_dir = /longxibendi/mysql/mysql/var/
    #innodb_data_file_path = ibdata1:1G:autoextend
    innodb_data_file_path = ibdata1:500M;ibdata2:2210M:autoextend #表空间
    innodb_file_io_threads = 4 #io线程数
    innodb_thread_concurrency = 16 #InnoDB试着在InnoDB内保持操作系统线程的数量少于或等于这个参数给出的限制
    innodb_flush_log_at_trx_commit = 1 #每次commit 日志缓存中的数据刷到磁盘中

    innodb_log_buffer_size = 8M #事物日志缓存
    innodb_log_file_size = 500M #事物日志大小
    #innodb_log_file_size =100M
    innodb_log_files_in_group = 2 #两组事物日志
    innodb_log_group_home_dir = /longxibendi/mysql/mysql/var/#日志组

    innodb_max_dirty_pages_pct = 90 #innodb主线程刷新缓存池中的数据,使脏数据比例小于90%
    innodb_lock_wait_timeout = 50 #InnoDB事务在被回滚之前可以等待一个锁定的超时秒数。InnoDB在它自己的 锁定表中自动检测事务死锁并且回滚事务。InnoDB用LOCK TABLES语句注意到锁定设置。默认值是50秒
    #innodb_flush_method = O_DSYNC

    [mysqldump]
    quick
    max_allowed_packet = 64M

    [mysql]
    disable-auto-rehash #允许通过TAB键提示
    default-character-set = utf8
    connect-timeout = 3

    声明:本文档可以随意更改,但必须署名原作者

    作者:凤凰舞者qq:578989855

    my.cnf 配置文件中文注释 以下是my.cnf配置文件参数解释 [client] port = 3309 socket = /home/longxibendi/mysql/tmp/mysql.sock [mysqld] !include /home/longxiben...

    OS:CentOS6.3

    [client]
    port = 3306   #端口
    socket = /data/mysql3306/mysql3306.sock   #mysql以socket方式运行的sock文件位置

    32 CPU core

    以下配置文件针对Dell R710,双至强E5620、16G内存的硬件配置。CentOS 5.6 64位系统,MySQL 5.5.x 稳定版。适用于日IP 50-100w,PV 100-300w的站点,主要使用InnoDB存储引擎。其他应用环境请根据实际情况来设置优化。

    DB:5.6.16

    [mysql]
    auto-rehash      #自动补全

    256G Memory

    # 以下选项会被MySQL客户端应用读取。
    # 注意只有MySQL附带的客户端应用程序保证可以读取这段内容。
    # 如果你想你自己的MySQL应用程序获取这些值。
    # 需要在MySQL客户端库初始化的时候指定这些选项。

     

    [mysqld_safe]
    log-error = /data/mysql3306/my3306.err   #错误日志
    pid-file = /data/mysql3306/my3306.pid   #process id文件

    SSD storage with 20000 IOPS in 16K page size

    #
    [client]
    #password = [your_password]
    port = @MYSQL_TCP_PORT@
    socket = @MYSQL_UNIX_ADDR@

    [client] #客户端
    port = 3306 #数据库端口3306
    socket = /my/log/mysql.sock #MySQL套接字,多实例下用socket连接

    [mysqld]
    user = mysql   #mysql以什么用户运行
    port = 3306    #端口
    default_storage_engine = InnoDB   #默认存储引擎
    character-set-server = utf8   #默认utf8字符集
    socket= /data/mysql3306/mysql3306.sock   #mysql以socket方式运行的sock文件位置
    pid-file = /data/mysql3306/mysql3306.pid  #process id文件
    datadir = /data/mysql3306/data   #mysql的数据目录
    basedir = /usr/local/mysql   #安装目录

    # *** 应用定制选项 ***

    [mysql]
    default-character-set = utf8 #字符集

    skip_name_resolve = 1  #禁用DNS主机名查找,启用后使用IP或localhost
    #skip-external-locking   #用于多进程条件下为MyISAM数据表进行锁定
    symbolic-links=0  #是否支持符号链接,数据库或表可以存储在my.cnf中指定datadir之外的分区或目录,为0不开启
    max_connections = 3000    #mysql最大连接数
    max_connect_errors = 100000   #超过其连接错误次数会被屏蔽
    transaction_isolation = READ-COMMITTED  #事物隔离级别
    interactive_timeout=180  #服务器关闭交互式连接前等待活动的秒数
    wait_timeout=180  #服务器关闭非交互连接之前等待活动的秒数
    back_log=600    ##在MYSQL停止响应新请求之前,短时间内的多少个请求可以被存在堆栈中
    #explicit_defaults_for_timestamp = 1  # 如果一行数据中某些列被更新了,如果这一行中有timestamp类型的列,这个列的数据也会自动更新到那个时间点,设置为1关闭自动更新时间点

    [mysql]

    #
    # MySQL 服务端
    #
    [mysqld]

    [mysqld]
    # file
    datadir = /my/data #数据文件路径
    pid-file= /my/log/mysql.pid #MySQL进程
    log_error=/my/log/mysql.err #MySQL错误日志路径
    port = 3306 #数据库端口3306
    socket = /my/log/mysql.sock #MySQL套接字,多实例下用socket连接
    character_set_server = utf8 #字符集
    #skip-grant-tables #忘记root密码时,可通过--skip-grant-tables启动后连接MySQL并重置密码
    slow_query_log = 1 #开启慢查询日志
    slow_query_log_file = /my/log/slowq.log #慢查询日志路径
    long_query_time = 1 #慢查询时间1秒

    # LOGGING #
    log_bin=/data/mysql3306/logbin/mysql-bin   #binlog日志目录
    binlog_format = row    #建议使用row模式
    expire_logs_days = 7  #binlog日志保留天数
    # sync_binlog = 1    #控制数据库的binlog刷到磁盘上去,默认为0
    slow_query_log = 1   #慢查询开启
    slow_query_log_file=/data/mysql3306/my3306slow.log   #慢查询日志文件保存路径
    #log_queries_not_using_indexes = 1  #是否记录未使用索引的语句
    #log_slow_admin_statements = 1   #记录optimize table,analyze table和alter table语句
    #log_slow_slave_statements = 1  #记录由Slave所产生的慢查询
    #log_throttle_queries_not_using_indexes = 10   #设定每分钟记录到日志的未使用索引的语句数目,超过这个数目后只记录语句数量和花费的总时间
    long_query_time = 1   #慢查询时间,单位s
    #min_examined_row_limit = 100    #查询检查返回少于该参数指定行的SQL不被记录到慢查询日志
    #master_info_repository = TABLE  #从机保存主节点信息方式,设成file时 会生成master.info 和 relay-log.info2个文件,设成table,信息就会存在mysql.master_slave_info表中
    #relay_log_info_repository = TABLE  #保存从机读取relay log的位置信息,可选值为FILE,TABLE
    gtid_mode = on  #启用gtid类型
    #enforce_gtid_consistency = 1  #强制GTID的一致性
    #log_slave_updates   #从机更新是否记入日志,在做双主架构时异常重要
    #relay_log =/data/slave/mysql-relay.log   #relay_log保存的位置
    #relay_log_recovery = 1  #当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性
    #binlog_gtid_simple_recovery = 1   #这个参数控制了当mysql启动或重启时,mysql在搜寻GTIDs时是如何迭代使用binlog文件的。 这个选项设置为真,会提升mysql执行恢复的性能。因为这样mysql-server启动和binlog日志清理更快
    #slave_skip_errors = ddl_exist_errors  #跳过错误

    default-character-set=utf8mb4

    # 一般配置选项
    port = @MYSQL_TCP_PORT@
    socket = @MYSQL_UNIX_ADDR@

    # temp
    max_tmp_tables = 64 #打开临时表的最大数量
    max_heap_table_size = 1G #创建内存表的的大小
    tmp_table_size = 512M #内存临时表的最大值
    slave_load_tmpdir = /my/log #Slave临时目录路径
    tmpdir = /my/log #临时目录路径

     

    user = root

    # back_log 是操作系统在监听队列中所能保持的连接数,
    # 队列保存了在MySQL连接管理器线程处理之前的连接.
    # 如果你有非常高的连接率并且出现”connection refused” 报错,
    # 你就应该增加此处的值.
    # 检查你的操作系统文档来获取这个变量的最大值.
    # 如果将back_log设定到比你操作系统限制更高的值,将会没有效果
    back_log = 300

    # session
    back_log = 8192 #MySQL停止新请求前表示有多少请求可以暂时堆栈
    skip-name-resolve #跳过反向解析过程
    max_allowed_packet = 32M #客户端接收最大字节会话值
    max_connections = 16000 #最大连接数
    max_connect_errors = 10000 #最大错误连接数,满了需要通过flush hosts来清楚
    wait_timeout = 28800 #等待超时时间
    binlog_cache_size = 1M #binlog缓存大小

    ####cache#####
    table_open_cache=128    #指定表高速缓存的大小,表的大小一般是(max_connections* 查询同时用到的表数)
    thread_cache_size=300   #线程池,线程缓存
    query_cache_size=128M  #查询缓存大小
    query_cache_min_res_unit=128k     #表示query cache 每个结果集存放的最小内存大小
    sort_buffer_size=8M  #每个连接设置查询排序时所能使用的缓冲区大小
    read_buffer_size=8M    #每个连接读查询操作使用的缓存
    read_rnd_buffer_size=4M  #每个连接随机读查询操作使用的缓存
    join_buffer_size=2M   #每个连接联合查询所使用的缓存大小
    bulk_insert_buffer_size=16M    #为一次插入多条新记录的INSERT命令分配的缓存区长度
    max_heap_table_size=64M    #这个变量定义了用户可以创建的内存表(memory table)的大小.这个值用来计算内存表的最大行数值
    tmp_table_size=64M   #临时表的大小

    password = 123456

    # 不在TCP/IP端口上进行监听.
    # 如果所有的进程都是在同一台服务器连接到本地的mysqld,
    # 这样设置将是增强安全的方法
    # 所有mysqld的连接都是通过Unix sockets 或者命名管道进行的.
    # 注意在windows下如果没有打开命名管道选项而只是用此项
    # (通过 “enable-named-pipe” 选项) 将会导致mysql服务没有任何作用!
    #skip-networking

    table_open_cache = 1024 #表缓冲区大小
    thread_concurrency = 4 #线程并发数
    thread_cache_size = 128 #线程缓冲区大小
    thread_handling = pool-of-threads #开启线程池
    thread_pool_high_prio_mode = none #新的连接根据thread_pool_high_prio_mode分出优先级
    thread_pool_idle_timeout = 28800 #线程闲置超时时间
    thread_pool_oversubscribe = 20 #支持运行的最大任务数
    #max_statement_time = 5000 #控制查询在MySQL的最长执行时间,单位毫秒

    query_cache_type=1  #开启Query Cache 功能,有0,1,2三个值

    port = 3306

    # MySQL 服务所允许的同时会话数的上限
    # 其中一个连接将被SUPER权限保留作为管理员登录.
    # 即便已经达到了连接数的上限.
    max_connections = 3000
    # 每个客户端连接最大的错误允许数量,如果达到了此限制.
    # 这个客户端将会被MySQL服务阻止直到执行了”FLUSH HOSTS” 或者服务重启
    # 非法的密码以及其他在链接时的错误会增加此值.
    # 查看 “Aborted_connects” 状态来获取全局计数器.
    max_connect_errors = 30

    query_cache_type = 0 #查询缓冲区是否开启 0:关闭 1:开启 2:demand
    query_cache_size = 0 #查询缓冲区大小
    key_buffer_size = 128M #索引缓冲区大小
    myisam_sort_buffer_size = 16M #MyISAM排序缓冲大小
    read_buffer_size = 8M #顺序读缓区冲大小
    read_rnd_buffer_size = 4M #随机读缓冲区大小
    sort_buffer_size = 16M #排序缓冲区大小
    join_buffer_size = 16M #join缓冲区大小

     

    socket = /tmp/mysqld.sock

    # 所有线程所打开表的数量.
    # 增加此值就增加了mysqld所需要的文件描述符的数量
    # 这样你需要确认在[mysqld_safe]中 “open-files-limit” 变量设置打开文件数量允许至少4096
    table_cache = 4096

    # innodb
    default_storage_engine = InnoDB #默认存储引擎
    innodb_data_home_dir = /my/log #innodb存储引擎共享表空间路径,即:ibdata
    innodb_data_file_path = ibdata1:256M:autoextend #innodb存储引擎大小,自增
    innodb_log_group_home_dir = /my/log #ib_logfile日志路径
    innodb_log_files_in_group = 2 #ib_logfile两组,每组两个
    innodb_log_file_size = 512M #ib_logfile大小
    innodb_log_buffer_size = 8M #日志缓冲区大小
    innodb_flush_log_at_trx_commit = 2 #等于2时,不写硬盘而是写入系统缓存,日志仍会每秒写到硬盘
    innodb_flush_method = O_DIRECT #向文件写入数据,只有数据写到了磁盘,写入操作完成(write返回成功)
    innodb_lock_wait_timeout = 50 #innodb引擎锁等待超时时间
    #innodb_thread_concurrency = 16 #innodb线程并发数
    innodb_buffer_pool_size = 44G #innodb存储引擎缓冲区大小
    innodb_additional_mem_pool_size = 20M #用来设置 InnoDB 存储的数据目录信息和其它内部数据结构的内存池大小
    innodb_io_capacity = 1500 #控制Innodb checkpoint时的IO能力
    innodb_use_native_aio = 1 #控制是否启用Native AIO,默认开启。官方的测试显示,启用Native AIO,恢复速度可以提高75%
    innodb_file_per_table = 1 #innodb引擎使用独立的表空间
    innodb_open_files = 3000 #innodb打开文件数
    innodb_print_all_deadlocks = 1 #在error中打印锁信息

    ###MyISAM###
    #key_buffer_size=64M   #索引缓存大小
    #key_cache_block_size=4k   指定每个索引缓存的区块大小
    #myisam_sort_buffer_size=2M 

    prompt="u@h d>"

    # 允许外部文件级别的锁. 打开文件锁会对性能造成负面影响
    # 所以只有在你在同样的文件上运行多个数据库实例时才使用此选项(注意仍会有其他约束!)
    # 或者你在文件层面上使用了其他一些软件依赖来锁定MyISAM表
    #external-locking

    # others
    memlock = 1 #MySQL是否使用交换分区

    ########innodb settings########
    #innodb_page_size = 4k  #innodb每个数据页大小
    innodb_buffer_pool_size = 4G  #缓存innodb表的索引,数据,插入数据时的缓冲,专用mysql服务器设置的大小: 操作系统内存的70%-80%最佳
    innodb_buffer_pool_instances = 1   #可以开启多个内存缓冲池,把需要缓冲的数据hash到不同的缓冲池中,这样可以并行的内存读写
    #innodb_buffer_pool_load_at_startup = 1  #默认为关闭OFF。如果开启该参数,启动MySQL服务时,MySQL将本地热数据加载到InnoDB缓冲池中
    #innodb_buffer_pool_dump_at_shutdown = 1  #默认为关闭OFF。如果开启该参数,停止MySQL服务时,InnoDB将InnoDB缓冲池中的热数据保存到本地硬盘
    #innodb_lru_scan_depth = 2000  #会影响page cleaner线程每次刷脏页的数量, 这是一个每1秒 loop一次的线程
    innodb_lock_wait_timeout = 50   事务等待获取资源等待的最长时间,超过这个时间还未分配到资源则会返回应用失败,单位s
    #innodb_io_capacity = 4000 
    #innodb_io_capacity_max = 8000   #这两个设置会影响InnoDB每秒在后台执行多少操作,知道美妙可执行多少次IO操作最好
    #innodb_flush_method = O_DIRECT  #默认值为 fdatasync. 如果使用 硬件RAID磁盘控制器, 可能需要设置为 O_DIRECT,不使用硬件RAID控制器,或者使用SAN存储时, O_DIRECT 可能会导致性能下降

    # 服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小(当与大的BLOB字段一起工作时相当必要)
    # 每个连接独立的大小.大小动态增加
    max_allowed_packet = 32M

    # replication
    server-id = 1137 #server-id 搭建主从时必须配置且唯一
    log-bin = /my/log/mysql-bin #二进制日志文件路径
    #binlog-ignore-db=mysql #过滤mysql库的二进制日志
    binlog_format = mixed #二进制日志模式 分三种,分别为:row,statement,mixed
    expire_logs_days = 7 #删除过期日志时间
    relay_log = /my/log/relay-bin #relay-log文件路径
    #replicate_ignore_db = mysql #复制过滤MySQL库
    #slave_skip_errors = 1062 #主从同步出现问题,从库忽略所有类型为1062的错误
    log_slave_updates = 1 #级联复制使用的参数,为满足M-S-S
    skip-slave-start #Slave不会随MySQL的启动而启动
    #read_only = 1 #只读
    sync_binlog = 1 #将binlog_cache中的数据强制写入磁盘

    #innodb_log_group_home_dir = /data/mysql3306/redolog/     #redolog重做日志存放目录
    #innodb_undo_directory = /data/mysql3306/undolog/   #undolog回滚日志存放目录
    innodb_undo_logs = 128  #undo回滚段的数量, 至少大于等于35,默认128
    #innodb_undo_tablespaces = 3   #用于设定创建的undo表空间的个数,在mysql_install_db时初始化后,就再也不能被改动了;默认值为0,表示不独立设置undo的tablespace,默认记录到ibdata中;
    innodb_flush_neighbors = 1   #InnoDB存储引擎在刷新一个脏页时,会检测该页所在区(extent)的所有页,如果是脏页,那么一起刷新。这样做的好处是通过AIO可以将多个IO写操作合并为一个IO操作。对于传统机械硬盘建议使用,而对于固态硬盘可以关闭。
    innodb_log_file_size = 1G  #定义了日志文件的大小,innodb日志文件的作用是用来保存redo日志
    innodb_log_buffer_size = 8M  #事务在内存中的缓冲。 分配原 则:控制在2-8M.这个值不用太多的。他里面的内存一般一秒钟写到磁盘一次
    innodb_purge_threads = 4   #控制是否使用,使用几个独立purge线程(清除二进制日志)
    innodb_large_prefix = 1  #当改为ON时,允许列索引最大达到3072
    innodb_thread_concurrency = 64  #InnoDB kernel并发最大的线程数
    innodb_print_all_deadlocks = 1  #是否将死锁相关信息保存到MySQL 错误日志中
    innodb_strict_mode = 1  #开启InnoDB严格检查模式,尤其采用了页数据压缩功能后,最好是开启该功能,如果写法有错误,不会有警告信息,而是直接抛出错误
    innodb_sort_buffer_size = 8M  #ORDER BY 或者GROUP BY 操作的buffer缓存大小

    [mysqld]

    # 在一个事务中binlog为了记录SQL状态所持有的cache大小
    # 如果你经常使用大的,多声明的事务,你可以增加此值来获取更大的性能.
    # 所有从事务来的状态都将被缓冲在binlog缓冲中然后在提交后一次性写入到binlog中
    # 如果事务比此值大, 会使用磁盘上的临时文件来替代.
    # 此缓冲在每个连接的事务第一次更新状态时被创建
    binlog_cache_size = 4M

    [mysqldump]
    default-character-set = utf8 #数据库字符集

    ######mysqld-5.7########
    innodb_buffer_pool_dump_pct = 40    #表示转储每个bp instance LRU上最热的page的百分比。通过设置该参数可以减少转储的page数
    innodb_page_cleaners = 4   #引入了多个page cleaner线程。从而达到并行刷脏的效果
    innodb_undo_log_truncate = 1  #是否开启在线回收(收缩)undo log日志文件,支持动态设置
    innodb_max_undo_log_size = 2G  #当超过这个阀值(默认是1G),会触发truncate回收(收缩)动作,truncate后空间缩小到10M
    innodb_purge_rseg_truncate_frequency = 128  #控制回收(收缩)undo log的频率。undo log空间在它的回滚段没有得到释放之前不会收缩, 想要增加释放回滚区间的频率,就得降低设定值
    binlog_gtid_simple_recovery=1  #这个参数控制了当mysql启动或重启时,mysql在搜寻GTIDs时是如何迭代使用binlog文件的。 这个选项设置为真,会提升mysql执行恢复的性能。因为这样mysql-server启动和binlog日志清理更快
    log_timestamps=system   #5.7.2 之后改参数为默认 UTC 这样会导致日志中记录的时间比中国这边的慢,导致查看日志不方便。修改为 SYSTEM 就能解决问题
    #transaction_write_set_extraction=MURMUR32  #用于定义一个记录事务的算法,这个算法使用hash标识来记录事务。如果使用MGR,那么这个hash值需要用于分布式冲突检测何处理#,在64位的系统,官网建议设置该参数使用 XXHASH64 算法。如果线上并没有使用该功能,应该设为off
    #show_compatibility_56=on  #从mysql5.7.6开始information_schema.global_status已经开始被舍弃,为了兼容性,此时需要打开 show_compatibility_56
    [mysqldump]
    quick 
    max_allowed_packet = 32M     #mysql最大接受的数据包大小

    # basic settings #

    # 独立的内存表所允许的最大容量.
    # 此选项为了防止意外创建一个超大的内存表导致永尽所有的内存资源.
    max_heap_table_size = 128M

    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

    user = mysql

    # 排序缓冲被用来处理类似ORDER BY以及GROUP BY队列所引起的排序
    # 如果排序后的数据无法放入排序缓冲,
    # 一个用来替代的基于磁盘的合并分类会被使用
    # 查看 “Sort_merge_passes” 状态变量.
    # 在排序发生时由每个线程分配
    sort_buffer_size = 16M

    #skip-grant-tables   #跳过权限

    bind-address = 0.0.0.0

    # 此缓冲被使用来优化全联合(full JOINs 不带索引的联合).
    # 类似的联合在极大多数情况下有非常糟糕的性能表现,
    # 但是将此值设大能够减轻性能影响.
    # 通过 “Select_full_join” 状态变量查看全联合的数量
    # 当全联合发生时,在每个线程中分配
    join_buffer_size = 16M

    socket = /tmp/mysqld.sock

    # 我们在cache中保留多少线程用于重用
    # 当一个客户端断开连接后,如果cache中的线程还少于thread_cache_size,
    # 则客户端线程被放入cache中.
    # 这可以在你需要大量新连接的时候极大的减少线程创建的开销
    # (一般来说如果你有好的线程模型的话,这不会有明显的性能提升.)
    thread_cache_size = 16

    character_set_server = utf8mb4

    # 此允许应用程序给予线程系统一个提示在同一时间给予渴望被运行的线程的数量.
    # 此值只对于支持 thread_concurrency() 函数的系统有意义( 例如Sun Solaris).
    # 你可可以尝试使用 [CPU数量]*(2..4) 来作为thread_concurrency的值
    thread_concurrency = 8

    transaction_isolation = READ-COMMITTED

    # 查询缓冲常被用来缓冲 SELECT 的结果并且在下一次同样查询的时候不再执行直接返回结果.
    # 打开查询缓冲可以极大的提高服务器速度, 如果你有大量的相同的查询并且很少修改表.
    # 查看 “Qcache_lowmem_prunes” 状态变量来检查是否当前值对于你的负载来说是否足够高.
    # 注意: 在你表经常变化的情况下或者如果你的查询原文每次都不同,
    # 查询缓冲也许引起性能下降而不是性能提升.
    query_cache_size = 128M

    explicit_defaults_for_timestamp = 1

    # 只有小于此设定值的结果才会被缓冲
    # 此设置用来保护查询缓冲,防止一个极大的结果集将其他所有的查询结果都覆盖.
    query_cache_limit = 4M

    max_allowed_packet = 67108864    //限制Server接受的数据包大小。有时候大的插入和更新会受此参数限制,导致大数据写入或者更新失败

    # 被全文检索索引的最小的字长.
    # 你也许希望减少它,如果你需要搜索更短字的时候.
    # 注意在你修改此值之后,
    # 你需要重建你的 FULLTEXT 索引
    ft_min_word_len = 8

    max_long_data_size = 67108864    //设定可以由mysql_stmt_send_long_data()这个C API函数所传送的参数值的最大长度,如果没有在mysqld启动时设定,其默认为max_allowed_packet变量的值

    # 如果你的系统支持 memlock() 函数,你也许希望打开此选项用以让运行中的mysql在在内存高度紧张的时候,数据在内存中保持锁定并且防止可能被swapping out
    # 此选项对于性能有益
    #memlock

    event_scheduler = 1    //事件调度器的总开关

    # 当创建新表时作为默认使用的表类型,
    # 如果在创建表示没有特别执行表类型,将会使用此值
    default_table_type = MYISAM

    default_password_lifetime = 0    //设置密码自动失效的时间,0为永不失效

    # 线程使用的堆大小. 此容量的内存在每次连接时被预留.
    # MySQL 本身常不会需要超过64K的内存
    # 如果你使用你自己的需要大量堆的UDF函数
    # 或者你的操作系统对于某些操作需要更多的堆,
    # 你也许需要将其设置的更高一点.
    thread_stack = 512K

    autocommit = 1

    # 设定默认的事务隔离级别.可用的级别如下:
    # READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE
    transaction_isolation = REPEATABLE-READ

    server-id = 1

    # 内部(内存中)临时表的最大大小
    # 如果一个表增长到比此值更大,将会自动转换为基于磁盘的表.
    # 此限制是针对单个表的,而不是总和.
    tmp_table_size = 128M

    sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"

    # 打开二进制日志功能.
    # 在复制(replication)配置中,作为MASTER主服务器必须打开此项
    # 如果你需要从你最后的备份中做基于时间点的恢复,你也同样需要二进制日志.
    log-bin=mysql-bin

    # 如果你在使用链式从服务器结构的复制模式 (A->B->C),
    # 你需要在服务器B上打开此项.
    # 此选项打开在从线程上重做过的更新的日志,
    # 并将其写入从服务器的二进制日志.
    #log_slave_updates

    # connection #

    # 打开全查询日志. 所有的由服务器接收到的查询 (甚至对于一个错误语法的查询)
    # 都会被记录下来. 这对于调试非常有用, 在生产环境中常常关闭此项.
    #log

    interactive_timeout = 1800    //MySQL服务器关闭交互式连接前等待的秒数

    # 将警告打印输出到错误log文件. 如果你对于MySQL有任何问题
    # 你应该打开警告log并且仔细审查错误日志,查出可能的原因.
    #log_warnings

    wait_timeout = 1800    //MySQL服务器关闭非交互连接之前等待的秒数

    # 记录慢速查询. 慢速查询是指消耗了比 “long_query_time” 定义的更多时间的查询.
    # 如果 log_long_format 被打开,那些没有使用索引的查询也会被记录.
    # 如果你经常增加新查询到已有的系统内的话. 一般来说这是一个好主意,
    log_slow_queries

    lock_wait_timeout = 1800

    # 所有的使用了比这个时间(以秒为单位)更多的查询会被认为是慢速查询.
    # 不要在这里使用”1″, 否则会导致所有的查询,甚至非常快的查询页被记录下来(由于MySQL 目前时间的精确度只能达到秒的级别).
    long_query_time = 6

    skip_name_resolve = 1

    # 在慢速日志中记录更多的信息.
    # 一般此项最好打开.
    # 打开此项会记录使得那些没有使用索引的查询也被作为到慢速查询附加到慢速日志里
    log_long_format

    max_connections = 1024    //针对所有用户连接限制

    # 此目录被MySQL用来保存临时文件.例如,
    # 它被用来处理基于磁盘的大型排序,和内部排序一样.
    # 以及简单的临时表.
    # 如果你不创建非常大的临时文件,将其放置到 swapfs/tmpfs 文件系统上也许比较好
    # 另一种选择是你也可以将其放置在独立的磁盘上.
    # 你可以使用”;”来放置多个路径
    # 他们会按照roud-robin方法被轮询使用.
    #tmpdir = /tmp

    max_user_connections = 256    //针对同一用户的连接限制

    # *** 主从复制相关的设置

    max_connect_errors = 1000000    //当错误连接数超过设定的值后,将无法正常连接

    # 唯一的服务辨识号,数值位于 1 到 2^32-1之间.
    # 此值在master和slave上都需要设置.
    # 如果 “master-host” 没有被设置,则默认为1, 但是如果忽略此选项,MySQL不会作为master生效.
    server-id = 1

    # 复制的Slave (去掉master段的注释来使其生效)
    #
    # 为了配置此主机作为复制的slave服务器,你可以选择两种方法:
    #
    # 1) 使用 CHANGE MASTER TO 命令 (在我们的手册中有完整描述) –
    # 语法如下:
    #
    # CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,
    # MASTER_USER=, MASTER_PASSWORD= ;
    #
    # 你需要替换掉 , , 等被尖括号包围的字段以及使用master的端口号替换 (默认3306).
    #
    # 例子:
    #
    # CHANGE MASTER TO MASTER_HOST=’125.564.12.1′, MASTER_PORT=3306,
    # MASTER_USER=’joe’, MASTER_PASSWORD=’secret’;
    #
    # 或者
    #
    # 2) 设置以下的变量. 不论如何, 在你选择这种方法的情况下, 然后第一次启动复制(甚至不成功的情况下,
    # 例如如果你输入错密码在master-password字段并且slave无法连接),
    # slave会创建一个 master.info 文件,并且之后任何对于包含在此文件内的参数的变化都会被忽略
    # 并且由 master.info 文件内的内容覆盖, 除非你关闭slave服务, 删除 master.info 并且重启slave 服务.
    # 由于这个原因,你也许不想碰一下的配置(注释掉的) 并且使用 CHANGE MASTER TO (查看上面) 来代替
    #
    # 所需要的唯一id号位于 2 和 2^32 – 1之间
    # (并且和master不同)
    # 如果master-host被设置了.则默认值是2
    # 但是如果省略,则不会生效
    #server-id = 2
    #
    # 复制结构中的master – 必须
    #master-host =
    #
    # 当连接到master上时slave所用来认证的用户名 – 必须
    #master-user =
    #
    # 当连接到master上时slave所用来认证的密码 – 必须
    #master-password =
    #
    # master监听的端口.
    # 可选 – 默认是3306
    #master-port =

    # table cache performance settings #

    # 使得slave只读.只有用户拥有SUPER权限和在上面的slave线程能够修改数据.
    # 你可以使用此项去保证没有应用程序会意外的修改slave而不是master上的数据
    #read_only

    table_open_cache = 4096    //指定表高速缓存的大小。每当MySQL访问一个表时,如果在表缓冲区中还有空间,该表就被打开并放入其中,这样可以更快地访问表内容

    #*** MyISAM 相关选项

    table_definition_cache = 4096    //表定义信息缓存

    # 关键词缓冲的大小, 一般用来缓冲MyISAM表的索引块.
    # 不要将其设置大于你可用内存的30%,
    # 因为一部分内存同样被OS用来缓冲行数据
    # 甚至在你并不使用MyISAM 表的情况下, 你也需要仍旧设置起 8-64M 内存由于它同样会被内部临时磁盘表使用.
    key_buffer_size = 128M

    table_open_cache_instances = 64    //指的是 MySQL 缓存 table 句柄的分区的个数,而每一个 cache_instance 可以包含不超过table_open_cache/table_open_cache_instances 的table_cache_element

    # 用来做MyISAM表全表扫描的缓冲大小.
    # 当全表扫描需要时,在对应线程中分配.
    read_buffer_size = 8M

    # 当在排序之后,从一个已经排序好的序列中读取行时,行数据将从这个缓冲中读取来防止磁盘寻道.
    # 如果你增高此值,可以提高很多ORDER BY的性能.
    # 当需要时由每个线程分配
    read_rnd_buffer_size = 64M

    # session memory settings #

    # MyISAM 使用特殊的类似树的cache来使得突发插入
    # (这些插入是,INSERT … SELECT, INSERT … VALUES (…), (…), …, 以及 LOAD DATA
    # INFILE) 更快. 此变量限制每个进程中缓冲树的字节数.
    # 设置为 0 会关闭此优化.
    # 为了最优化不要将此值设置大于 “key_buffer_size”.
    # 当突发插入被检测到时此缓冲将被分配.
    bulk_insert_buffer_size = 256M

    read_buffer_size = 16M    //MySQL读入缓冲区的大小,将对表进行顺序扫描的请求将分配一个读入缓冲区,MySQL会为它分配一段内存缓冲区,read_buffer_size变量控制这一缓冲区的大小,如果对表的顺序扫描非常频繁,并你认为频繁扫描进行的太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能,read_buffer_size变量控制这一提高表的顺序扫描的效率 数据文件顺序

    # 此缓冲当MySQL需要在 REPAIR, OPTIMIZE, ALTER 以及 LOAD DATA INFILE 到一个空表中引起重建索引时被分配.
    # 这在每个线程中被分配.所以在设置大值时需要小心.
    myisam_sort_buffer_size = 256M

    read_rnd_buffer_size = 32M    //

    # MySQL重建索引时所允许的最大临时文件的大小 (当 REPAIR, ALTER TABLE 或者 LOAD DATA INFILE).
    # 如果文件大小比此值更大,索引会通过键值缓冲创建(更慢)
    myisam_max_sort_file_size = 10G

    sort_buffer_size = 32M    //是MySQL的随机读缓冲区大小,当按任意顺序读取行时(列如按照排序顺序)将分配一个随机读取缓冲区,进行排序查询时,MySQL会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要大量数据可适当的调整该值,但MySQL会为每个客户连接分配该缓冲区所以尽量适当设置该值,以免内存开销过大。表的随机的顺序缓冲 提高读取的效率

    # 如果被用来更快的索引创建索引所使用临时文件大于制定的值,那就使用键值缓冲方法.
    # 这主要用来强制在大表中长字串键去使用慢速的键值缓冲方法来创建索引.
    myisam_max_extra_sort_file_size = 10G

    tmp_table_size = 64M    //它规定了内部内存临时表的最大值,每个线程都要分配。(实际起限制作用的是tmp_table_size和max_heap_table_size的最小值。)如果内存临时表超出了限制,MySQL就会自动地把它转化为基于磁盘的MyISAM表,存储在指定的tmpdir目录下。优化查询语句的时候,要避免使用临时表,如果实在避免不了的话,要保证这些临时表是存在内存中的。如果需要的话并且你有很多group by语句,并且你有很多内存,增大tmp_table_size(和max_heap_table_size)的值。这个变量不适用与用户创建的内存表(memory table).

    # 如果一个表拥有超过一个索引, MyISAM 可以通过并行排序使用超过一个线程去修复他们.
    # 这对于拥有多个CPU以及大量内存情况的用户,是一个很好的选择.
    myisam_repair_threads = 1

    你可以比较内部基于磁盘的临时表的总数和创建在内存中的临时表的总数(Created_tmp_disk_tables和Created_tmp_tables),一般的比例关系是:

    # 自动检查和修复没有适当关闭的 MyISAM 表.
    myisam_recover

    Created_tmp_disk_tables/Created_tmp_tables<5%。max_heap_table_size这个变量定义了用户可以创建的内存表(memory table)的大小.这个值用来计算内存表的最大行数值。这个变量支持动态改变,即set @max_heap_table_size=#

    # 默认关闭 Federated
    skip-federated

    ,但是对于已经存在的内存表就没有什么用了,除非这个表被重新创建(create table)或者修改(alter table)或者truncate table。服务重启也会设置已经存在的内存表为全局max_heap_table_size的值。

    # *** BDB 相关选项 ***

    这个变量和tmp_table_size一起限制了内部内存表的大小。

    # 如果你运行的MySQL服务有BDB支持但是你不准备使用的时候使用此选项. 这会节省内存并且可能加速一些事.
    skip-bdb

    join_buffer_size = 128M    //用于表间关联缓存的大小

    # *** INNODB 相关选项 ***

    thread_cache_size = 64    //服务器线程缓存这个值表示可以重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,那么这个线程将被重新创建,如果有很多新的线程,增加这个值可以改善系统性能.通过比较 Connections 和 Threads_created 状态的变量,可以看到这个变量的作用.

    # 如果你的MySQL服务包含InnoDB支持但是并不打算使用的话,
    # 使用此选项会节省内存以及磁盘空间,并且加速某些部分
    #skip-innodb

    # 附加的内存池被InnoDB用来保存 metadata 信息
    # 如果InnoDB为此目的需要更多的内存,它会开始从OS这里申请内存.
    # 由于这个操作在大多数现代操作系统上已经足够快, 你一般不需要修改此值.
    # SHOW INNODB STATUS 命令会显示当先使用的数量.
    innodb_additional_mem_pool_size = 64M

    # log settings #

    # InnoDB使用一个缓冲池来保存索引和原始数据, 不像 MyISAM.
    # 这里你设置越大,你在存取表里面数据时所需要的磁盘I/O越少.
    # 在一个独立使用的数据库服务器上,你可以设置这个变量到服务器物理内存大小的80%
    # 不要设置过大,否则,由于物理内存的竞争可能导致操作系统的换页颠簸.
    # 注意在32位系统上你每个进程可能被限制在 2-3.5G 用户层面内存限制,
    # 所以不要设置的太高.
    innodb_buffer_pool_size = 6G

    log_error = error.log

    # InnoDB 将数据保存在一个或者多个数据文件中成为表空间.
    # 如果你只有单个逻辑驱动保存你的数据,一个单个的自增文件就足够好了.
    # 其他情况下.每个设备一个文件一般都是个好的选择.
    # 你也可以配置InnoDB来使用裸盘分区 – 请参考手册来获取更多相关内容
    innodb_data_file_path = ibdata1:10M:autoextend

    新葡亰496net,log-bin = mysql-bin

    # 设置此选项如果你希望InnoDB表空间文件被保存在其他分区.
    # 默认保存在MySQL的datadir中.
    #innodb_data_home_dir =

    slow_query_log = 1

    # 用来同步IO操作的IO线程的数量. This value is
    # 此值在Unix下被硬编码为4,但是在Windows磁盘I/O可能在一个大数值下表现的更好.
    innodb_file_io_threads = 4

    slow_query_log_file = slow.log

    # 如果你发现InnoDB表空间损坏, 设置此值为一个非零值可能帮助你导出你的表.
    # 从1开始并且增加此值知道你能够成功的导出表.
    #innodb_force_recovery=1

    log_queries_not_using_indexes = 1

    # 在InnoDb核心内的允许线程数量.
    # 最优值依赖于应用程序,硬件以及操作系统的调度方式.
    # 过高的值可能导致线程的互斥颠簸.
    innodb_thread_concurrency = 16

    log_slow_admin_statements = 1    //记录执行缓慢的管理SQL

    # 如果设置为1 ,InnoDB会在每次提交后刷新(fsync)事务日志到磁盘上,
    # 这提供了完整的ACID行为.
    # 如果你愿意对事务安全折衷, 并且你正在运行一个小的食物, 你可以设置此值到0或者2来减少由事务日志引起的磁盘I/O
    # 0代表日志只大约每秒写入日志文件并且日志文件刷新到磁盘.
    # 2代表日志写入日志文件在每次提交后,但是日志文件只有大约每秒才会刷新到磁盘上.
    innodb_flush_log_at_trx_commit = 2
    (说明:如果是游戏服务器,建议此值设置为2;如果是对数据安全要求极高的应用,建议设置为1;设置为0性能最高,但如果发生故障,数据可能会有丢失的危险!默认值1的意思是每一次事务提交或事务外的指令都需要把日志写入(flush)硬盘,这是很费时的。特别是使用电池供电缓存(Battery backed up cache)时。设成2对于很多运用,特别是从MyISAM表转过来的是可以的,它的意思是不写入硬盘而是写入系统缓存。日志仍然会每秒flush到硬盘,所以你一般不会丢失超过1-2秒的更新。设成0会更快一点,但安全方面比较差,即使MySQL挂了也可能会丢失事务的数据。而值2只会在整个操作系统挂了时才可能丢数据。)

    log_slow_slave_statements = 1    //记录从库上执行的慢查询语句 

    # 加速InnoDB的关闭. 这会阻止InnoDB在关闭时做全清除以及插入缓冲合并.
    # 这可能极大增加关机时间, 但是取而代之的是InnoDB可能在下次启动时做这些操作.
    #innodb_fast_shutdown

    log_throttle_queries_not_using_indexes = 10    //每分钟允许记录到slow log的且未使用索引的SQL语句次数

    # 用来缓冲日志数据的缓冲区的大小.
    # 当此值快满时, InnoDB将必须刷新数据到磁盘上.
    # 由于基本上每秒都会刷新一次,所以没有必要将此值设置的太大(甚至对于长事务而言)

    expire_logs_days = 30

    innodb_log_buffer_size = 16M

    long_query_time = 2

    # 在日志组中每个日志文件的大小.
    # 你应该设置日志文件总合大小到你缓冲池大小的25%~100%
    # 来避免在日志文件覆写上不必要的缓冲池刷新行为.
    # 不论如何, 请注意一个大的日志文件大小会增加恢复进程所需要的时间.
    innodb_log_file_size = 512M

    min_examined_row_limit = 100    //查询语句的执行行数检查返回少于该参数指定行的SQL不被记录到慢查询日志

    # 在日志组中的文件总数.
    # 通常来说2~3是比较好的.
    innodb_log_files_in_group = 3

    binlog-rows-query-log-events = 1    //当binlog_fromat=row的时候记录的是event,如果想要在row模式的情况下也记录SQL语句

    # InnoDB的日志文件所在位置. 默认是MySQL的datadir.
    # 你可以将其指定到一个独立的硬盘上或者一个RAID1卷上来提高其性能
    #innodb_log_group_home_dir

    log-bin-trust-function-creators = 1    //此参数仅在启用二进制日志时有效,用于控制创建存储函数时如果会导致不安全的事件记录二进制日志条件下是否禁止创建存储函数。默认值为0,表示除非用户除了CREATE ROUTING或ALTER ROUTINE权限外还有SUPER权限,否则将禁止创建或修改存储函数,同时,还要求在创建函数时必需为之使用DETERMINISTIC属性,再不然就是附带READS SQL DATA或NO SQL属性。设置其值为1时则不启用这些限制。作用范围为全局级别,可用于配置文件,属动态变量。

    # 在InnoDB缓冲池中最大允许的脏页面的比例.
    # 如果达到限额, InnoDB会开始刷新他们防止他们妨碍到干净数据页面.
    # 这是一个软限制,不被保证绝对执行.
    innodb_max_dirty_pages_pct = 90

    log-slave-updates = 1    //一般情况下slave不会把从master接收到的binlog记录写入自己的binlog,这个参数会使slave通过SQL线程把从master接受到的binlog写进自己的binlog,但是前提是slave一定要开启自己的binlog,此参数一般用于级联复制,例如需要A复制到B,B复制到C,那么B就要开启此参数。

    # InnoDB用来刷新日志的方法.
    # 表空间总是使用双重写入刷新方法
    # 默认值是 “fdatasync”, 另一个是 “O_DSYNC”.
    #innodb_flush_method=O_DSYNC

    # 在被回滚前,一个InnoDB的事务应该等待一个锁被批准多久.
    # InnoDB在其拥有的锁表中自动检测事务死锁并且回滚事务.
    # 如果你使用 LOCK TABLES 指令, 或者在同样事务中使用除了InnoDB以外的其他事务安全的存储引擎
    # 那么一个死锁可能发生而InnoDB无法注意到.
    # 这种情况下这个timeout值对于解决这种问题就非常有帮助.
    innodb_lock_wait_timeout = 120

    # innodb settings #

    [mysqldump]
    # 不要在将内存中的整个结果写入磁盘之前缓存. 在导出非常巨大的表时需要此项
    quick

    innodb_page_size = 16384    //参数innodb_page_size可以设置Innodb数据页为8K,4K,默认为16K。这个参数在一开始初始化时就要加入my.cnf里,如果已经创建了表,再修改,启动MySQL会报错。

    max_allowed_packet = 32M

    innodb_buffer_pool_size = 160G    //参数表示缓冲池字节大小,InnoDB缓存表和索引数据的内存区域

    [mysql]
    no-auto-rehash

    innodb_buffer_pool_instances = 16    //默认值是1,表示InnoDB缓存池被划分到一个区域。适当地增加该参数(例如将该参数值设置为2),此时InnoDB被划分成为两个区域,可以提升InnoDB的并发性能。如果InnoDB缓存池被划分成多个区域,建议每个区域不小于1GB的空间

    # 仅仅允许使用键值的 UPDATEs 和 DELETEs .
    #safe-updates

    innodb_buffer_pool_load_at_startup = 1    //在启动时把热数据加载到内存

    [isamchk]
    key_buffer = 2048M
    sort_buffer_size = 2048M
    read_buffer = 32M
    write_buffer = 32M

    innodb_buffer_pool_dump_at_shutdown = 1    //在关闭时把热数据dump到本地磁盘

    [myisamchk]
    key_buffer = 2048M
    sort_buffer_size = 2048M
    read_buffer = 32M
    write_buffer = 32M

    innodb_lru_scan_depth = 4096    //控制LRU列表中可用页的数量,默认值为1024

    [mysqlhotcopy]
    interactive-timeout

    innodb_lock_wait_timeout = 5    //锁等待超时时间

    [mysqld_safe]
    # 增加每个进程的可打开文件数量.
    # 警告: 确认你已经将全系统限制设定的足够高!
    # 打开大量表需要将此值设大
    open-files-limit = 8192

    innodb_io_capacity = 10000    //参数可以动态调整刷新脏页的数量,这在一定程度上解决了这一问题。innodb_io_capacity参数默认是200,单位是页。该参数设置的大小取决于硬盘的IOPS,即每秒的输入输出量

    我自己使用的 在 mmm 结构里面使用的 一些配置.(2主2从,每台机器是8G内存,2个cpu的centos 7 64位操作系统,mysql 5.6.31)。

    innodb_io_capacity_max = 20000    //该参数限制了每秒刷新的脏页上限,调大该值可以增加Page cleaner线程每秒的工作量

    如果不能正常启动 mysql 。 查看 /opt/mysql/log/mysqld.log 日志来定位错误 . 这里的 undolog 和 redolog 目录,需要手工建立,否则mysql 无法启动

    innodb_flush_method = O_DIRECT    //参考链接:

    1.mysql-master-001

    innodb_file_format = Barracuda

    1. [mysqld]  

    2. ########基本设置########  

    3. datadir                                 = /opt/mysql/data  

    4. socket                                  = /opt/mysql/mysql.sock  

    5. default-storage-engine                  = Innodb  

    6. autocommit                              = on  

    7. character_set_server                    = utf8  

    8. skip_name_resolve                       = 1  

    9. max_connections                         = 800  

    10. max_connect_errors                      = 1000  

    11. transaction_isolation                   = READ-COMMITTED  

    12. explicit_defaults_for_timestamp         = 1  

    13. tmp_table_size                          = 2G  

    14. tmpdir                                  = /tmp  

    15. max_allowed_packet                      = 16M  

    16. sql_mode                                = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER"  

    17. interactive_timeout                     = 1800  

    18. wait_timeout                            = 1800  

    19. read_buffer_size                        = 1M  

    20. read_rnd_buffer_size                    = 1M  

    21. sort_buffer_size                        = 1M  

    22. join_buffer_size                        = 2M  

    23. table_open_cache                        = 2048  

    24.   

    25.   

    26.   

    27.   

    28.   

    29.   

    30. ########log settings########  

    31. log_error                               = /opt/mysql/log/error.log  

    32. slow_query_log                          = 1  

    33. slow_query_log_file                     = /opt/mysql/log/slow.log  

    34. log_queries_not_using_indexes           = 1  

    35. log_slow_admin_statements               = 1  

    36. log_slow_slave_statements               = 1  

    37. log_throttle_queries_not_using_indexes  = 10  

    38. expire_logs_days                        = 90  

    39. long_query_time                         = 2  

    40. min_examined_row_limit                  = 100  

    41.   

    42.   

    43. ########replication settings########  

    44. read_only=1  

    45. slave_skip_errors                       = ddl_exist_errors  

    46. master_info_repository                  = TABLE  

    47. relay_log_info_repository               = TABLE  

    48.   

    49.   

    50.     #以下这三个参数一定要同时在my.cnf中配置。否则在mysql.err中会出现如下的报错  

    51. gtid_mode                               = on  

    52. log_slave_updates                       = 1                                                             #当一个主故障,另一个立即接管  

    53. enforce_gtid_consistency                = 1  

    54.     #设置结束  

    55.   

    56.   

    57. replicate-ignore-db                     = mysql,information_schema                                      #不同步的数据库,多个写多行  

    58. replicate-do-db                         = meerkat                                                       #同步的数据库,多个写多行  

    59. binlog-ignore-db                        = mysql,information_schema                                     #不需要记录二进制日志的数据库,多个用逗号隔开  

    60. binlog-do-db                            = meerkat                                                       #需要记录二进制日志的数据库,多个用逗号隔开  

    61.   

    62.   

    63. innodb_flush_log_at_trx_commit          = 2                                                             #指定了 InnoDB 在事务提交后的日志写入频率。可设置0,1,2。 0:MySQL性能最好 . 1:最安全的配置,但由于每次事务都需要进行磁盘I/O,所以也最慢. 2:每次事务提交会写入日志文件,但并不会立即刷写到磁盘,日志文件会每秒刷写一次到磁盘。  

    64. sync_binlog                             = 0                                                             #设置为1的时候,每条自动更新,安全性高.默认是0  

    65.   

    66.   

    67. binlog_format                           = row   

    68.   

    69.   

    70. server-id                               = 1                                                             #server-id在每台服务器上的值都是不一样,在这里依次为1、2、3、4。  

    71. log-bin                                 = /opt/mysql/log/mysql-master-001-bin.log  

    72. log_bin_index                           = /opt/mysql/log/mysql-master-001-bin.log.index  

    73. relay_log                               = /opt/mysql/log/mysql-master-001-bin.relay  

    74. relay_log_index                         = /opt/mysql/log/mysql-master-001-bin.relay.index  

    75.   

    76.   

    77.   

    78.   

    79. relay_log_recovery                      = 1  

    80. binlog_gtid_simple_recovery             = 1  

    81. expire_logs_days                        = 10  

    82. max_binlog_size                         = 100M  

    83. binlog_cache_size                       = 16M  

    84.   

    85.   

    86. ########innodb settings########  

    87. #innodb_page_size                        = 8192  

    88. innodb_additional_mem_pool_size         = 128M  

    89. innodb_buffer_pool_size                 = 5G  

    90. innodb_buffer_pool_instances            = 5  

    91. innodb_buffer_pool_load_at_startup      = 1  

    92. innodb_buffer_pool_dump_at_shutdown     = 1  

    93. innodb_lru_scan_depth                   = 2000  

    94. innodb_lock_wait_timeout                = 5  

    95. innodb_io_capacity                      = 4000  

    96. innodb_io_capacity_max                  = 8000  

    97. innodb_flush_method                     = O_DIRECT  

    98. innodb_file_format                      = Barracuda  

    99. innodb_file_format_max                  = Barracuda  

    100. innodb_log_group_home_dir               = /opt/mysql/redolog/  

    101. innodb_undo_directory                   = /opt/mysql/undolog/  

    102. #innodb_undo_logs                        = 128  

    103. #innodb_undo_tablespaces                 = 3  

    104. innodb_flush_neighbors                  = 1  

    105. innodb_log_file_size                    = 4G  

    106. innodb_log_buffer_size                  = 16777216  

    107. innodb_purge_threads                    = 4  

    108. innodb_large_prefix                     = 1  

    109. innodb_thread_concurrency               = 64  

    110. innodb_print_all_deadlocks              = 1  

    111. innodb_strict_mode                      = 1  

    112. innodb_sort_buffer_size                 = 67108864   

    113.   

    114.   

    115. # Disabling symbolic-links is recommended to prevent assorted security risks  

    116. # symbolic-links=0  

    117.   

    118.   

    119.   

    120.   

    121. [mysqld_safe]  

    122. log-error                               = /opt/mysql/log/mysqld.log  

    123. pid-file                                = /var/run/mysqld/mysqld.pid  

    124.   

    125.   

    126. [mysql]  

    127. socket                                  = /opt/mysql/mysql.sock  

    innodb_file_format_max = Barracuda    //Innodb Plugin引擎开始引入多种格式的行存储机制,目前支持:Antelope、Barracuda两种。其中Barracuda兼容Antelope格式。

    另一个配置

    另外,Innodb plugin还支持行数据压缩特性,不过前提是采用Barracuda行存储格式。

    4核 16G Centos6.5 x64

    表空间启用压缩的前提是innodb表空间文件存储格式修改成:Barracuda,需要修改2个选项:

    [client] port = 3306   socket = /var/lib/mysql/mysql.sock [mysql]#这个配置段设置启动MySQL服务的条件;在这种情况下,no-auto-rehash确保这个服务启动得比较快。no-auto-rehash [mysqld] user = mysql   port = 3306   socket = /var/lib/mysql/mysql.sock   basedir = /usr/local/mysql   datadir = /data/mysql/data/   open_files_limit = 10240 back_log = 600  #在MYSQL暂时停止响应新请求之前,短时间内的多少个请求可以被存在堆栈中。如果系统在短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的监听队列的大小。默认值80。max_connections = 3000  #MySQL允许最大的进程连接数,如果经常出现Too Many Connections的错误提示,则需要增大此值。默认151max_connect_errors = 6000  #设置每个主机的连接请求异常中断的最大次数,当超过该次数,MYSQL服务器将禁止host的连接请求,直到mysql服务器重启或通过flush hosts命令清空此host的相关信息。默认100external-locking = FALSE  #使用–skip-external-locking MySQL选项以避免外部锁定。该选项默认开启max_allowed_packet = 32M  #设置在网络传输中一次消息传输量的最大值。系统默认值 为4MB,最大值是1GB,必须设置1024的倍数。#sort_buffer_size = 2M  # Sort_Buffer_Size 是一个connection级参数,在每个connection(session)第一次需要使用这个buffer的时候,一次性分配设置的内存。#Sort_Buffer_Size 并不是越大越好,由于是connection级的参数,过大的设置 高并发可能会耗尽系统内存资源。例如:500个连接将会消耗 500*sort_buffer_size(8M)=4G内存#Sort_Buffer_Size 超过2KB的时候,就会使用mmap() 而不是 malloc() 来进行内存分配,导致效率降低。 系统默认2M,使用默认值即可#join_buffer_size = 2M  #用于表间关联缓存的大小,和sort_buffer_size一样,该参数对应的分配内存也是每个连接独享。系统默认2M,使用默认值即可thread_cache_size = 300  #默认38# 服务器线程缓存这个值表示可以重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,那么这个线程将被重新创建,如果有很多新的线程,增加这个值可以改善系统性能.通过比较 Connections 和 Threads_created 状态的变量,可以看到这个变量的作用。设置规则如下:1GB 内存配置为8,2GB配置为16,3GB配置为32,4GB或更高内存,可配置更大。#thread_concurrency = 8  #系统默认为10,使用10先观察# 设置thread_concurrency的值的正确与否, 对mysql的性能影响很大, 在多个cpu(或多核)的情况下,错误设置了thread_concurrency的值, 会导致mysql不能充分利用多cpu(或多核), 出现同一时刻只能一个cpu(或核)在工作的情况。thread_concurrency应设为CPU核数的2倍. 比如有一个双核的CPU, 那么thread_concurrency的应该为4; 2个双核的cpu, thread_concurrency的值应为8query_cache_size = 64M  #在MyISAM引擎优化中,这个参数也是一个重要的优化参数。但也爆露出来一些问题。机器的内存越来越大,习惯性把参数分配的值越来越大。这个参数加大后也引发了一系列问题。我们首先分析一下 query_cache_size的工作原理:一个SELECT查询在DB中工作后,DB会把该语句缓存下来,当同样的一个SQL再次来到DB里调用时,DB在该表没发生变化的情况下把结果从缓存中返回给Client。这里有一个关建点,就是DB在利用Query_cache工作时,要求该语句涉及的表在这段时间内没有发生变更。那如果该表在发生变更时,Query_cache里的数据又怎么处理呢?首先要把Query_cache和该表相关的语句全部置为失效,然后在写入更新。那么如果Query_cache非常大,该表的查询结构又比较多,查询语句失效也慢,一个更新或是Insert就会很慢,这样看到的就是Update或是Insert怎么这么慢了。所以在数据库写入量或是更新量也比较大的系统,该参数不适合分配过大。而且在高并发,写入量大的系统,建议把该功能禁掉。query_cache_limit = 4M  #指定单个查询能够使用的缓冲区大小,缺省为1Mquery_cache_min_res_unit = 2k  #默认是4KB,设置值大对大数据查询有好处,但如果你的查询都是小数据查询,就容易造成内存碎片和浪费#查询缓存碎片率 = Qcache_free_blocks / Qcache_total_blocks * 100%#如果查询缓存碎片率超过20%,可以用FLUSH QUERY CACHE整理缓存碎片,或者试试减小query_cache_min_res_unit,如果你的查询都是小数据量的话。#查询缓存利用率 = (query_cache_size – Qcache_free_memory) / query_cache_size * 100%#查询缓存利用率在25%以下的话说明query_cache_size设置的过大,可适当减小;查询缓存利用率在80%以上而且Qcache_lowmem_prunes > 50的话说明query_cache_size可能有点小,要不就是碎片太多。#查询缓存命中率 = (Qcache_hits – Qcache_inserts) / Qcache_hits * 100%#default-storage-engine = MyISAM#default_table_type = InnoDB #开启失败#thread_stack = 192K  #设置MYSQL每个线程的堆栈大小,默认值足够大,可满足普通操作。可设置范围为128K至4GB,默认为256KB,使用默认观察transaction_isolation = READ-COMMITTED  # 设定默认的事务隔离级别.可用的级别如下:READ UNCOMMITTED-读未提交 READ COMMITTE-读已提交 REPEATABLE READ -可重复读 SERIALIZABLE -串行tmp_table_size = 256M  # tmp_table_size 的默认大小是 32M。如果一张临时表超出该大小,MySQL产生一个 The table tbl_name is full 形式的错误,如果你做很多高级 GROUP BY 查询,增加 tmp_table_size 值。如果超过该值,则会将临时表写入磁盘。max_heap_table_size = 256M expire_logs_days = 7   key_buffer_size = 2048M  #批定用于索引的缓冲区大小,增加它可以得到更好的索引处理性能,对于内存在4GB左右的服务器来说,该参数可设置为256MB或384MB。read_buffer_size = 1M  #默认128K# MySql读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区,MySql会为它分配一段内存缓冲区。read_buffer_size变量控制这一缓冲区的大小。如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能。和sort_buffer_size一样,该参数对应的分配内存也是每个连接独享。read_rnd_buffer_size = 16M  # MySql的随机读(查询操作)缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区。进行排序查询时,MySql会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。但MySql会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大。bulk_insert_buffer_size = 64M  #批量插入数据缓存大小,可以有效提高插入效率,默认为8Mmyisam_sort_buffer_size = 128M  # MyISAM表发生变化时重新排序所需的缓冲 默认8Mmyisam_max_sort_file_size = 10G  # MySQL重建索引时所允许的最大临时文件的大小 (当 REPAIR, ALTER TABLE 或者 LOAD DATA INFILE).# 如果文件大小比此值更大,索引会通过键值缓冲创建(更慢)#myisam_max_extra_sort_file_size = 10G 5.6无此值设置#myisam_repair_threads = 1   默认为1# 如果一个表拥有超过一个索引, MyISAM 可以通过并行排序使用超过一个线程去修复他们.# 这对于拥有多个CPU以及大量内存情况的用户,是一个很好的选择.myisam_recover  #自动检查和修复没有适当关闭的 MyISAM 表skip-name-resolve   lower_case_table_names = 1   server-id = 1 innodb_additional_mem_pool_size = 16M  #这个参数用来设置 InnoDB 存储的数据目录信息和其它内部数据结构的内存池大小,类似于Oracle的library cache。这不是一个强制参数,可以被突破。innodb_buffer_pool_size = 2048M  # 这对Innodb表来说非常重要。Innodb相比MyISAM表对缓冲更为敏感。MyISAM可以在默认的 key_buffer_size 设置下运行的可以,然而Innodb在默认的 innodb_buffer_pool_size 设置下却跟蜗牛似的。由于Innodb把数据和索引都缓存起来,无需留给操作系统太多的内存,因此如果只需要用Innodb的话则可以设置它高达 70-80% 的可用内存。一些应用于 key_buffer 的规则有 — 如果你的数据量不大,并且不会暴增,那么无需把 innodb_buffer_pool_size 设置的太大了#innodb_data_file_path = ibdata1:1024M:autoextend 设置过大导致报错,默认12M观察#表空间文件 重要数据#innodb_file_io_threads = 4   不明确,使用默认值#文件IO的线程数,一般为 4,但是在 Windows 下,可以设置得较大。innodb_thread_concurrency = 8  #服务器有几个CPU就设置为几,建议用默认设置,一般为8.innodb_flush_log_at_trx_commit = 2  # 如果将此参数设置为1,将在每次提交事务后将日志写入磁盘。为提供性能,可以设置为0或2,但要承担在发生故障时丢失数据的风险。设置为0表示事务日志写入日志文件,而日志文件每秒刷新到磁盘一次。设置为2表示事务日志将在提交时写入日志,但日志文件每次刷新到磁盘一次。#innodb_log_buffer_size = 16M   使用默认8M#此参数确定些日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,但意外的故障将会丢失数据.MySQL开发人员建议设置为1-8M之间#innodb_log_file_size = 128M  使用默认48M#此参数确定数据日志文件的大小,以M为单位,更大的设置可以提高性能,但也会增加恢复故障数据库所需的时间#innodb_log_files_in_group = 3   使用默认2#为提高性能,MySQL可以以循环方式将日志文件写到多个文件。推荐设置为3M#innodb_max_dirty_pages_pct = 90  使用默认75观察#推荐阅读 Buffer_Pool中Dirty_Page所占的数量,直接影响InnoDB的关闭时间。参数innodb_max_dirty_pages_pct 可以直接控制了Dirty_Page在Buffer_Pool中所占的比率,而且幸运的是innodb_max_dirty_pages_pct是可以动态改变的。所以,在关闭InnoDB之前先将innodb_max_dirty_pages_pct调小,强制数据块Flush一段时间,则能够大大缩短 MySQL关闭的时间。innodb_lock_wait_timeout = 120  #默认为50秒 # InnoDB 有其内置的死锁检测机制,能导致未完成的事务回滚。但是,如果结合InnoDB使用MyISAM的lock tables 语句或第三方事务引擎,则InnoDB无法识别死锁。为消除这种可能性,可以将innodb_lock_wait_timeout设置为一个整数值,指示 MySQL在允许其他事务修改那些最终受事务回滚的数据之前要等待多长时间(秒数)innodb_file_per_table = 0  #默认为No#独享表空间(关闭)[mysqldump] quick  # max_allowed_packet = 32M[mysqld_safe] log-error=/data/mysql/mysql_oldboy.err   pid-file=/data/mysql/mysqld.pid sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

    innodb_file_format = "Barracuda"

    innodb_file_format_max = "Barracuda"

    innodb_undo_logs = 128    //定义在一个事务中innodb使用的系统表空间中回滚段的个数。如果观察到同回滚日志有关的互斥争用,可以调整这个参数以优化性能。早期版本的命名为 innodb_rollback_segments,该变量可以动态调整,但是物理上的回滚段不会减少,只是会控制用到的回滚段的个数;默认为128个回滚段

    innodb_undo_tablespaces = 3    //用于设定创建的undo表空间的个数,在mysql_install_db时初始化后,就再也不能被改动了;默认值为0,表示不独立设置undo的tablespace,默认记录到ibdata中;否则,则在undo目录下创建这么多个undo文件,例如假定设置该值为4,那么就会创建命名为undo001~undo004的undo tablespace文件,每个文件的默认大小为10M。修改该值会导致Innodb无法完成初始化,数据库无法启动,但是另两个参数可以修改

    innodb_flush_neighbors = 0    //默认值为 1. 在SSD存储上应设置为0(禁用) ,因为使用顺序IO没有任何性能收益. 在使用RAID的某些硬件上也应该禁用此设置,因为逻辑上连续的块在物理磁盘上并不能保证也是连续的

    innodb_log_file_size = 200M    //日志组的大小,默认为5M;如果对 Innodb 数据表有大量的写入操作,那么选择合适的 innodb_log_file_size值对提升MySQL性能很重要。然而设置太大了,就会增加恢复的时间,因此在MySQL崩溃或者突然断电等情况会令MySQL服务器花很长时间来恢复

    innodb_log_files_in_group = 2    //日志组的数量,默认为2

    innodb_log_buffer_size = 16M    //日志缓冲池的大小

    innodb_purge_threads = 4    //在innodb 1.2版本开始 innodb支持多个purge thread 这样做的目的是为了进一步加快undo页的回收这样也能更进一步利用磁盘的随机读取性能 用户可以设置4个purge thread

    innodb_large_prefix = 1    //大家应该知道InnoDB单列索引长度不能超过767bytes,联合索引还有一个限制是长度不能超过3072。innodb_large_prefix 这个参数默认值是OFF,当改为ON时,允许列索引最大达到3072

    innodb_thread_concurrency = 64    //参考:

    innodb_print_all_deadlocks = 1    //这样死锁相关信息会保存到MySQL 错误日志中

    innodb_strict_mode = 1    //开启强制检查模式,忽略警告信息,直接抛出错误信息

    innodb_sort_buffer_size = 67108864    //加速ORDER BY 或者GROUP BY 操作

    innodb_write_io_threads = 16

    innodb_read_io_threads = 16    //假如CPU是2颗8核的,那么可以设置:innodb_read_io_threads = 8,innodb_write_io_threads = 8。如果数据库的读操作比写操作多,那么可以设置:innodb_read_io_threads = 10,innodb_write_io_threads = 6

    innodb_file_per_table = 1    //独立表空间模式,每个数据库的每个表都会生成一个数据空间

    innodb_stats_persistent_sample_pages = 64    //控制收集统计信息时采样的page数量,默认是20。收集的page数量越多,每次收集统计信息的实际则越长,但是统计信息也相对比较准确

    innodb_autoinc_lock_mode = 2    //参考:

    innodb_online_alter_log_max_size = 1G    //参考:

    innodb_open_files = 4096    //作用:限制Innodb能打开的表的数据。

    分配原则:这个值默认是300。如果库里的表特别多的情况,可以适当增大为1000。innodb_open_files的大小对InnoDB效率的影响比较小。但是在InnoDBcrash的情况下,innodb_open_files设置过小会影响recovery的效率。所以用InnoDB的时候还是把innodb_open_files放大一些比较合适。

    innodb_flush_log_at_trx_commit = 1    //如果innodb_flush_log_at_trx_commit设置为0,log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行.该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。

    如果innodb_flush_log_at_trx_commit设置为1,每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去.

    如果innodb_flush_log_at_trx_commit设置为2,每次事务提交时MySQL都会把log buffer的数据写入log file.但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作

    innodb_support_xa = 1    //作用是分两类:第一,支持多实例分布式事务(外部xa事务),这个一般在分布式数据库环境中用得较多。第二,支持内部xa事务,说白了也就是说支持binlog与innodb redo log之间数据一致性

    # replication settings #

    master_info_repository = TABLE

    relay_log_info_repository = TABLE    //在MySQL 5.6.2之前,slave记录的master信息以及slave应用binlog的信息存放在文件中,即master.info与relay-log.info。在5.6.2版本之后,允许记录到table中,参数设置如下:master-info-repository  = TABLE,relay-log-info-repository = TABLE,对应的表分别为mysql.slave_master_info与mysql.slave_relay_log_info,且这两个表均为innodb引擎表。

    sync_binlog = 1    //是MySQL 的二进制日志(binary log)同步到磁盘的频率。取值:0-N,sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到磁盘。这个是性能最好的。sync_binlog=1,当每进行1次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。sync_binlog=n,当每进行n次事务提交之后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。

    gtid_mode = on    //是否开启GTID功能

    enforce_gtid_consistency = 1    //enforce_gtid_consistency 强制GTID一致性, 启用后,create table ... select ...命令无法再使用

    log_slave_updates

    binlog_format = ROW

    binlog_rows_query_log_events = 1    //只作用于RBR格式,默认不启用 如果启用,会把用户写直的原生态DML操作记录到binlog中

    relay_log = relay.log

    relay_log_purge = 1

    relay_log_recovery = 1    //当slave从库宕机后,假如relay-log损坏了,导致一部分中继日志没有处理,则自动放弃所有未执行的relay-log,并且重新从master上获取日志,这样就保证了relay-log的完整性。默认情况下该功能是关闭的,将relay_log_recovery的值设置为 1时,可在slave从库上开启该功能,建议开启

    report-port = 3306

    report-host = 10.106.144.11

    slave_skip_errors = ddl_exist_errors

    slave-rows-search-algorithms = 'INDEX_SCAN,HASH_SCAN'    //可以部分解决无主键表导致的复制延迟问题

    # semi sync replication settings #

    plugin_load = "validate_password.so;rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"

    rpl_semi_sync_master_enabled = 1    //控制在主库是否开启了异步复制模式,可以设置为ON,OFF ,默认是off 

    rpl_semi_sync_master_timeout = 3000    //控制主库等待备库反馈已提交事务在备库落地的时间,以毫秒为单位默认是10s 

    rpl_semi_sync_slave_enabled = 1    //控制在从库是否开启了异步复制模式,可以设置为ON,OFF ,默认是off

    # password plugin #

    validate_password_policy=STRONG    //密码安全策略LOW, MEDIUM,STRONG ,其中LOW表示只限制长度;MEDIUM 则为长度,字符,数字,大小写,特殊字符;STRONG则在之前的基础上增加字典目录

    validate-password=FORCE_PLUS_PERMANENT    //该参数是为了防止插件在mysql运行时的时候被卸载

    # perforamnce_schema settings

    performance-schema-instrument='memory/%=COUNTED'

    performance_schema_digests_size = 40000

    performance_schema_max_table_instances = 40000

    performance_schema_max_sql_text_length = 4096

    performance_schema_max_digest_length = 4096

    [mysqld-5.6]

    # metalock performance settings

    metadata_locks_hash_instances = 64    //简单来说 MDL Lock 是 MySQL Server 层中的表锁,主要是为了控制 Server 层 DDL & DML 的并发而设计的, 但是 5.5 的设计中只有一把大锁,所以到5.6中添加了参数 metadata_locks_hash_instances 来控制分区的数量,进而实现大锁的拆分,虽然锁的拆分提高了并发的性能,但是仍然存在着不少的性能问题,所以在 5.7.4 中 MDL Lock 的实现方式采用了 lock free 算法,彻底的解决了 Server 层表锁的性能问题,而参数 metadata_locks_hash_instances 也将会在之后的某个版本中被删除掉

    [mysqld-5.7]

    # new innodb settings #

    loose_innodb_numa_interleave = 1    //缓冲池内存的分配策略采用interleave的方式

    innodb_buffer_pool_dump_pct = 40    //默认为关闭OFF。如果开启该参数,停止MySQL服务时,InnoDB将InnoDB缓冲池中的热数据的百分比保存到本地硬盘,5.7.6以前是100,5.7.7开始是25,也就是保存缓存中的25%热数据

    innodb_page_cleaners = 16    //为了提升扩展性和刷脏效率,在5.7.4版本里引入了多个page cleaner线程。从而达到并行刷脏的效果。在该版本中,Page cleaner并未和buffer pool绑定,其模型为一个协调线程 多个工作线程,协调线程本身也是工作线程。因此如果innodb_page_cleaners设置为8,那么就是一个协调线程,加7个工作线程

    innodb_undo_log_truncate = 1    //设置为ON即可开启undo表空间的自动truncate

    innodb_max_undo_log_size = 2G    //undo表空间文件超过此值即标记为可收缩,默认1G,可在线修改

    innodb_purge_rseg_truncate_frequency = 128    //指定purge操作被唤起多少次之后才释放rollback segments。当undo表空间里面的rollback segments被释放时,undo表空间才会被truncate。由此可见,该参数越小,undo表空间被尝试truncate的频率越高。

    # new replication settings #

    slave-parallel-type = LOGICAL_CLOCK    //可以有两个值:DATABASE 默认值,基于库的并行复制方式;LOGICAL_CLOCK:基于组提交的并行复制方式

    slave-parallel-workers = 16    //在MySQL 5.7中,引入了基于组提交的并行复制(Enhanced Multi-threaded Slaves),设置参数slave_parallel_workers>0并且slave_parallel_type=‘LOGICAL_CLOCK’,即可支持一个schema下,slave_parallel_workers个的worker线程并发执行relay log中主库提交的事务。其核心思想:一个组提交的事务都是可以并行回放(配合binary log group commit)

    slave_preserve_commit_order = 1    //mysql 5.7 后的MTS可以实现更小粒度的并行复制,但需要将slave_parallel_type设置为LOGICAL_CLOCK,但仅仅设置为LOGICAL_CLOCK也会存在问题,因为此时在slave上应用事务的顺序是无序的,和relay log中记录的事务顺序不一样,这样数据一致性是无法保证的,为了保证事务是按照relay log中记录的顺序来回放,就需要开启参数slave_preserve_commit_order

    slave_transaction_retries = 128    //如果SQL线程在执行事务时发生InnoDB死锁且等待超时后,slave重试的次数,默认为10,如果超过此次数,slave将会抛出error且终止replication;此值在“slave_parallel_workers”开启时无效,即为0,不重试。

    # other change settings #

    binlog_gtid_simple_recovery = 1    //MySQL5.7.7之后默认on,这个参数控制了当mysql启动或重启时,mysql在搜寻GTIDs时是如何迭代使用binlog文件。该参数为真时,mysql-server只需打开最老的和最新的这2个binlog文件,gtid_purged参数的值和gtid_executed参数的值可以根据这些文件中的Previous_gtids_log_event或者Gtid_log_event计算得出。这确保了当mysql-server重启或清理binlog时,只需打开2个binlog文件。当这个参数设置为off,在mysql恢复期间,为了初始化gtid_executed,所有以最新文件开始的binlog都要被检查。并且为了初始化gtid_purged,所有的binlog都要被检查。这可能需要非常长的时间,建议开启。注意:MySQL5.6中,默认为off,调整这个选项设置也同样会提升性能,但是在一些特殊场景下,计算gtids值可能会出错。而保持这个选项值为off,能确保计算总是正确

    log_timestamps = system    //该参数主要是控制 error log、genera log,等等记录日志的显示时间参数。在 5.7.2 之后改参数为默认 UTC 这样会导致日志中记录的时间比中国这边的慢,导致查看日志不方便。修改为 SYSTEM 就能解决问题

    show_compatibility_56 = on    //版本高的mysql中show_compatibility_56的默认值为OFF,不让用户访问GLOBAL_STATUS或者GLOBAL_VARIABLES等

    # group replication settings

    plugin-load = "group_replication.so;validate_password.so;semisync_master.so;semisync_slave.so"

    transaction-write-set-extraction = XXHASH64    //server为每个事务收集write set并用XXHASH64哈唏算法编码这个set

    # report_host = 127.0.0.1 # optional for group replication

    # binlog_checksum = NONE # only for group replication

    loose_group_replication = FORCE_PLUS_PERMANENT

    loose_group_replication_group_name = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"    //表示plugin连接、创建的group的名称

    loose_group_replication_compression_threshold = 100    //将其设置为100表示对发送的网络消息(writeset)大于100字节的进行压缩,从而提升性能

    loose_group_replication_flow_control_mode = 0

    loose_group_replication_single_primary_mode = 0    //表示启动了Single-Primary模式,那么修改为OFF就意味着要启动Multi-Primary模式

    loose_group_replication_enforce_update_everywhere_checks = 1    //该参数设置为ON,则禁用了在多主模式下一些可能产生未知数据冲突的操作

    loose_group_replication_transaction_size_limit = 10485760

    loose_group_replication_unreachable_majority_timeout = 120

    loose_group_replication_start_on_boot = 0    //是否随着服务启动集群

    本文由新葡亰496net发布于网络数据库,转载请注明出处:新葡亰496net生产库MySQL配置文件my,几份常见的

    关键词: