原文:http://www.51ou.com/browse/msyql/58966.html
http://www.cnblogs.com/littlehb/archive/2013/04/06/3001975.html
http://www.jb51.net/article/52531.htm
http://my.oschina.net/liting/blog/387489
http://www.jb51.net/article/50918.htm
http://zhidao.baidu.com/link?url=P8EQv_zNOq1LzuTuFDzSwDH6A9NJzm20YoBWwy4qIPWtFcEN9_Dq09h5rmFeQ57IMsku0qKo3RlfRAz0ZUQmX0OAFeeYQReMNimutbswiQ3
配置如下:
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/var/lib/mysql/mysql.sock
port=3306
server_id=1
#innodb
user=mysql
#设定InnoDB缓存表数据和索引的内存缓冲区大小,一般设置为内存的50%左右
innodb_buffer_pool_size=6G
#默认值为 48M. 有很高写入吞吐量
innodb_log_file_size=2G
#InnoDB 存储引擎的事务日志所使用的缓冲区
innodb_log_buffer_size = 8M
#参数对于InnoDB存储引擎写入操作的性能
innodb_flush_log_at_trx_commit=2
#修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间
innodb_file_per_table=1
#限制Innodb能打开的表的数据
innodb_file_io_threads=4
#如果使用硬件RAID磁盘控制器, 需要设置为 O_DIRECT
innodb_flush_method=O_DIRECT
#设置会影响InnoDB每秒在后台执行多少操作
innodb_io_capacity=2000
innodb_io_capacity_max=6000
#这个参数必须要和innodb_io_capacity设置一样
innodb_lru_scan_depth=2000
#限制了一次有多少线程能进入内核,0表示不限制进入内核的数量,可以跟thread_concurrency一样
innodb_thread_concurrency = 8
#除了缓存表数据和索引外,可以为操作所需的其他内部项分配缓存来提升InnoDB的性能,这些内存就可以通过此参数来分配
innodb_additional_mem_pool_size=16M
#修改为基于行的复制
innodb_autoinc_lock_mode = 2
# Binary log/replication
#二进制日志
log-bin=mysql-bin
#为了在最大程序上保证复制的InnoDB事务持久性和一致性
sync_binlog=1
sync_relay_log=1
#启用此两项,可用于实现在崩溃时保证二进制及从服务器安全的功能
relay-log-info-repository=TABLE
master-info-repository=TABLE
#设置保存日志时间(单位为:天)
expire_logs_days=7
#行复制或混合复制值为(mixed)
binlog_format=ROW
#mysql数据库事务隔离级别有四种(READ UNCOMMITTED,READ COMMITTED,REPEATABLE READ,SERIALIZABLE)
transaction-isolation=READ-COMMITTED
#log-slave-updates这个参数用来配置从服务器的更新是否写入二进制日志,这个选项默认是不打开的,
#但是,如果这个从服务器B是服务器A的从服务器,同时还作为服务器C的主服务器,那么就需要开发这个选#项,这样它的从服务器C才能获得它的二进制日志进行同步操作
log-slave-updates=1
#禁止MySql对外部连接进行DNS解析,使用这一选项可以消除MySQL进行NDS解析的时间。但需要注意的是:如果开启该选项,则所有远程主机连
#接授权都要使用IP地址方式了,否则MYSQL将无法正常处理连接请求。
skip-name-resolve
#所有表明自动转换为小写
lower_case_table_names=1
#这个跳过1062 主键重复错误
slave-skip-errors=1062
#cache
#内部内存临时表的最大值
tmp_table_size=512M
#设置字符编码相关,
character-set-server=utf8
collation-server=utf8_general_ci
#如果是要支持ios、android等移动设备的特殊表情则需要设置另外的编码如下:
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
#即跳过外部锁定
skip-external-locking
#MySQL能暂存的连接数量(根据实际设置)短时间内的多少个请求可以被存在对堆栈中,
#如果系统短时间内有很多连接,则需>要增大该参数的值,
#该参数值指定到来的TCP/IP连接的监听队列的大小。
#不同的操作系统在这个队列的大小有自己的限制,
#如果试图将back_log设定得高于操作系统的限制将是无效的,
#其默认值为50,对于LINUX系统而言,推荐设置为小于512的整数。
back_log=384
#指定索引缓冲区的大小,只对MyISAM表起作用,这里写上也没有关系
key_buffer_size=1024M
#这条指令限定用于每个数据库线程的栈大小
thread_stack=256k
#当一个查询不断地扫描某一个表,MySQL会为它分配一段内存缓冲区
read_buffer_size=8M
#线程缓存
thread_cache_size=64
#查询缓存大小
query_cache_size=128M
#内部内存临时表的最大值,每个线程都要分配
max_heap_table_size=256M
#将查询结果放入查询缓存中
query_cache_type=1
#代表在事务过程中容纳二进制日志SQL语句的缓存大小
binlog_cache_size = 2M
#同样是缓存表大小
table_open_cache=128
#缓存线程
thread_cache=1024
#推荐设置为服务器 CPU核数的2倍
thread_concurrency=8
#指定一个请求的最大连接时间,对于4GB左右内在的服务器来说,可以将其设置为5-10
wait_timeout=25
#表和表联接的缓冲区的大小
join_buffer_size = 1024M
#是一个connection级参数,在每个connection第一次需要使用这个buffer的时候,一次性分配设置的内存
sort_buffer_size=8M
#随机读取数据缓冲区使用内存
read_rnd_buffer_size = 8M
#这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句
slow_query_log = 1
#当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短。
long_query_time = 1
#这个参数设置为ON,可以捕获到所有未使用索引的SQL语句,尽管这个SQL语句有可能执行得挺快。
log_queries_not_using_indexes = 1
#记录慢查询日志的文件名
slow_query_log_file=/data/mysql/log/slow-query.log
#connect
#是一个MySQL中与安全有关的计数器值,它负责阻止过多尝试失败的客户端以防止暴力破解密码
max-connect-errors=20000
#连接数
max-connections=5000
#开启查询缓存
explicit_defaults_for_timestamp=true
#mysql服务器能够工作在不同的模式下,并能针对不同的客户端以不同的方式应用这些模式
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES