# mkdir -p /home/mysql/3306/{data,binlog,logs}
[client] port = 3306 socket=/tmp/my3306.sock [mysql] no-auto-rehash [mysqld] user = mysql port = 3306 bind_address = * socket=/tmp/my3306.sock character_set_server = utf8 log-error = /data/mysql/3306/logs/my3306_error.log pid-file=/data/mysql/3306/logs/my3306.pid datadir=/data/mysql/3306/data basedir=/opt/mysql default-storage-engine=InnoDB #MyISAM open_files_limit = 10240 autocommit = 1 sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER" secure_file_priv='' lower_case_table_names=1 skip-grant skip-name-resolve =on log-bin = /data/mysql/3306/binlog/binlog binlog_cache_size = 32M binlog_format = ROW #MIXED binlog_row_image = FULL max_binlog_cache_size = 2048M max_binlog_size = 512M expire_logs_days = 90 key_buffer_size = 1024M max_allowed_packet = 1024M table_open_cache = 1024 sort_buffer_size = 8M read_buffer_size = 8M read_rnd_buffer_size = 8M join_buffer_size = 8M myisam_sort_buffer_size = 128M thread_cache_size = 128 query_cache_size= 128M thread_concurrency = 8 interactive_timeout = 1800 wait_timeout = 1800 max_connections = 1000 max_user_connections = 1000 max_connect_errors = 6000 back_log = 600 long_query_time=3 slow_query_log=1 slow_query_log_file=/data/mysql/3306/logs/my3306-slow-query.log skip_external_locking=1 innodb_file_per_table = on innodb_buffer_pool_size = 2048M innodb_thread_concurrency = 8 innodb_flush_log_at_trx_commit = 1
[client]
port = 3306
socket=/tmp/my3306.sock
[mysql]
#这个配置段设置启动MySQL服务的条件;在这种情况下,no-auto-rehash确保这个服务启动得比较快。
no-auto-rehash
[mysqld]
#########base############
user = mysql
port = 3306
bind_address = *
socket=/tmp/my3306.sock
character_set_server = utf8
log-error = /home/mysql/3306/logs/my3306_error.log
pid-file=/home/mysql/3306/logs/my3306.pid
datadir=/home/mysql/3306/data
basedir=/opt/mysql
default-storage-engine=InnoDB #MyISAM
#文件打开数
open_files_limit = 10240
#自动提交
autocommit = 1
sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER"
#表名不区分大小写
lower_case_table_names=1
#跳过密码验证
skip-grant
#关闭域名解析
skip-name-resolve =on
#secure_file_prive=null -- 限制mysqld 不允许导入导出
#secure_file_priv=/tmp/ -- 限制mysqld的导入导出只能发生在/tmp/目录下
secure_file_priv=' ' -- 不对mysqld 的导入 导出做限制
########binlog配置####################
log-bin = /home/mysql/3306/binlog/binlog
binlog_cache_size = 32M
binlog_format = ROW #MIXED
binlog_row_image = FULL
max_binlog_cache_size = 2048M
#binlog文件大小
max_binlog_size = 512M
#binlog保留90天
expire_logs_days = 90
####调优配置###############
#buffer内存的配置参数,索引缓冲区(1G以下内存设定128M;2G/256M; 4G/384M;8G/1024M;16G/2048M)
key_buffer_size = 1024M
#设置在网络传输中一次消息传输量的最大值。系统默认值 为4MB,最大值是1GB,必须设置1024的倍数
max_allowed_packet = 1024M
#打开一个表的时候,会临时把表里面的数据放到这部分内存中,一般设置成1024就够了
table_open_cache = 1024
# 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,使用默认值即可
sort_buffer_size = 8M
#读数据的时候的缓冲区
read_buffer_size = 8M
#随机读的缓冲区
read_rnd_buffer_size = 8M
join_buffer_size = 8M #以上4项 4g内存给4-8M
#myisam配置的缓冲区 一般4G内存给64M即可
myisam_sort_buffer_size = 128M
#缓存可重用的线程数和内存有关系,1G内存设置为8,2G内存设置为16,4G以上设置为64。
thread_cache_size = 128
#查询的缓存大小,存放查询结果 一般情况下4G内存设置64M足够了
query_cache_size= 128M
#设置thread_concurrency的值的正确与否, 对mysql的性能影响很大。最大并发线程数,cpu核数的2倍
thread_concurrency = 16
#连接时间
interactive_timeout = 1800
#断开时间跟连接时间一起开才生效 跟interactive_timeout 一起配置
wait_timeout = 1800
######与性能并无太大关系。为了避免一些错误我们一般都设置比较大########
#最大的连接数,根据业务请求量适当调整,设置500足够
max_connections = 1000
#是指同一个账号能够同时连接到mysql服务的最大连接数。设置为0表示不限制。通常我们设置为100足够
max_user_connections = 1000
#设置每个主机的连接请求异常中断的最大次数,当超过该次数,MYSQL服务器将禁止host的连接请求,直到mysql服务器重启或通过flush hosts命令清空此host的相关信息。默认100
max_connect_errors = 6000
#在MYSQL暂时停止响应新请求之前,短时间内的多少个请求可以被存在堆栈中。如果系统在短时间内有很多连接,则需要增大该参数的值,该参数值指定到来的TCP/IP连接的监听队列的大小。默认值80。
back_log = 600
#####慢查询##########
long_query_time=3
#开启慢查询
slow_query_log=1
slow_query_log_file=/home/mysql/3306/logs/my3306-slow-query.log
#记录没有索引的查询
log_queries_not_using_indexes = 1
#使用skip_external_locking MySQL选项以避免外部锁定。该选项默认开启
skip_external_locking=1
######innodb配置================
#独立表空间 1=on 0=off
innodb_file_per_table = on
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观察
#服务器有几个CPU就设置为几,建议用默认设置,一般为8
innodb_thread_concurrency = 8
# 如果将此参数设置为1,将在每次提交事务后将日志写入磁盘。为提供性能,可以设置为0或2,但要承担在发生故障时丢失数据的风险。设置为0表示事务日志写入日志文件,而日志文件每秒刷新到磁盘一次。设置为2表示事务日志将在提交时写入日志,但日志文件每次刷新到磁盘一次。(使用默认值1)
innodb_flush_log_at_trx_commit = 1
#innodb_force_recovery=1 #修复数据库的时候用