几份常见的mysql生产配置文件记录

  1. [mysqld]  html

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

  3. server-id = 11   sql

  4. port = 3306  数据库

  5. user = mysql  windows

  6. bind_address = 10.166.224.32  centos

  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_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  


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

# 如下选项会被MySQL客户端应用读取。
# 注意只有MySQL附带的客户端应用程序保证能够读取这段内容。
# 若是你想你本身的MySQL应用程序获取这些值。
# 须要在MySQL客户端库初始化的时候指定这些选项。

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

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

#
# MySQL 服务端
#
[mysqld]

# 通常配置选项
port = @MYSQL_TCP_PORT@
socket = @MYSQL_UNIX_ADDR@

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

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

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

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

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

# 服务所能处理的请求包的最大大小以及服务所能处理的最大的请求大小(当与大的BLOB字段一块儿工做时至关必要)
# 每一个链接独立的大小.大小动态增长
max_allowed_packet = 32M

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

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

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

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

# 咱们在cache中保留多少线程用于重用
# 当一个客户端断开链接后,若是cache中的线程还少于thread_cache_size,
# 则客户端线程被放入cache中.
# 这能够在你须要大量新链接的时候极大的减小线程建立的开销
# (通常来讲若是你有好的线程模型的话,这不会有明显的性能提高.)
thread_cache_size = 16

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

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

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

# 被全文检索索引的最小的字长.
# 你也许但愿减小它,若是你须要搜索更短字的时候.
# 注意在你修改此值以后,
# 你须要重建你的 FULLTEXT 索引
ft_min_word_len = 8

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

# 当建立新表时做为默认使用的表类型,
# 若是在建立表示没有特别执行表类型,将会使用此值
default_table_type = MYISAM

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

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

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

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

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

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

# 将警告打印输出到错误log文件. 若是你对于MySQL有任何问题
# 你应该打开警告log而且仔细审查错误日志,查出可能的缘由.
#log_warnings

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

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

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

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

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

# 惟一的服务辨识号,数值位于 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 =

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

#*** MyISAM 相关选项

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

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

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

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

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

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

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

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

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

# 默认关闭 Federated
skip-federated

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

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

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

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

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

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

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

# 设置此选项若是你但愿InnoDB表空间文件被保存在其余分区.
# 默认保存在MySQL的datadir中.
#innodb_data_home_dir =

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

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

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

# 若是设置为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只会在整个操做系统挂了时才可能丢数据。)

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

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

innodb_log_buffer_size = 16M

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

# 在日志组中的文件总数.
# 一般来讲2~3是比较好的.
innodb_log_files_in_group = 3

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

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

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

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

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

max_allowed_packet = 32M

[mysql]
no-auto-rehash

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

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

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

[mysqlhotcopy]
interactive-timeout

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


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

若是不能正常启动 mysql 。 查看 /opt/mysql/log/mysqld.log 日志来定位错误 . 这里的 undolog 和 redolog 目录,须要手工创建,不然mysql 没法启动

1.mysql-master-001

  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在每台服务器上的值都是不同,在这里依次为一、二、三、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  

另外一个配置

4核 16G Centos6.5 x64

[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观察#推荐阅读 http://www.taobaodba.com/html/221_innodb_max_dirty_pages_pct_checkpoint.html# 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

相关文章
相关标签/搜索