mysql-优化

[client]
port=3306
socket=/tmp/mysql.sock

[mysql]
port=3306
socket=/tmp/mysql.sock
no-auto-rehash
default-character-set=utf8
prompt=\\u@\\d \\R:\\m>

[mysqld]
##GENERAL
port=3306
server_id=164234
socket=/tmp/mysql.sock
datadir=/data/dbdata/mysqldata
basedir=/usr/local/mysql
transaction_isolation = REPEATABLE-READ
back_log=500
#event_scheduler=ON


sql_mode="NO_ENGINE_SUBSTITUTION"

##INNODB DATA
innodb_file_per_table=1    #独享表空间开启
innodb_page_size = 16384 
#innodb_additional_mem_pool_size=20M   #用来设置 InnoDB 存储的数据目录信息和其它内部数据结构的内存池大小
innodb_buffer_pool_size=18G
innodb_data_file_path=ibdata1:1G:autoextend     #表空间文件 重要数据
innodb_data_home_dir=/data/dbdata/mysqldata
innodb_read_io_threads=4      #innodb_data_home_dir
innodb_write_io_threads=4      #文件IO的线程数,一般为 4,但是在 Windows 下,可以设置得较大
innodb_lock_wait_timeout=60    # InnoDB 有其内置的死锁检测机制,能导致未完成的事务回滚。但是,如果结合InnoDB使用MyISAM的lock tables 语句或第三方事务引擎,则InnoDB无法识别死锁。为消除这种可能性,可以将innodb_lock_wait_timeout设置为一个整数值,指示 MySQL在允许其他事务修改那些最终受事务回滚的数据之前要等待多长时间(秒数)
innodb_adaptive_hash_index = 1
innodb_adaptive_flushing = 1
innodb_thread_concurrency=16   #服务器有几个CPU就设置为几,建议用默认设置,一般为8.
innodb_flush_method=O_DIRECT
innodb_file_format = Barracuda
innodb_max_dirty_pages_pct = 75
innodb_io_capacity=500

innodb_log_files_in_group = 3       #为提高性能,MySQL可以以循环方式将日志文件写到多个文件。推荐设置为3M
innodb_flush_log_at_trx_commit = 2   # 如果将此参数设置为1,将在每次提交事务后将日志写入磁盘。为提供性能,可以设置为0或2,但要承担在发生故障时丢失数据的风险。设置为0表示事务日志写入日志文件,而日志文件每秒刷新到磁盘一次。设置为2表示事务日志将在提交时写入日志,但日志文件每次刷新到磁盘一次

##INNODB LOG
innodb_flush_log_at_trx_commit=2
innodb_log_buffer_size=64M
innodb_log_file_size=512M
innodb_log_files_in_group=3
innodb_log_group_home_dir=/data/dbdata/mysqldata


##MyISAM
key_buffer_size=64M
myisam_sort_buffer_size = 128M       # MyISAM表发生变化时重新排序所需的缓冲
myisam_max_sort_file_size = 10G    #MySQL重建索引时所允许的最大临时文件的大小 (当 REPAIR, ALTER TABLE 或者 LOAD DATA INFILE).如果文件大小比此值更大,索引会通过键值缓冲创建(更慢)
concurrent_insert = 2   #并发插入

##[BINARY SLOW RELAY] LOG
sync_binlog=1   
binlog_format=row
max_binlog_size=1G
log_bin=/data/dbdata/mysqllog/binlog/binlog.bin
log_bin_trust_function_creators=1
expire_logs_days=6
slow_query_log
slow_query_log_file=/data/dbdata/mysqllog/slow-query.log
long_query_time=1
relay-log=/data/dbdata/mysqllog/relay-log/relay-log.bin
log_slave_updates=1

##PRIVITE CACHE
read_buffer_size = 4M     # MySql读入缓冲区大小。对表进行顺序扫描的请求将分配一个读入缓冲区,MySql会为它分配一段内存缓冲区。read_buffer_size变量控制这一缓冲区的大小。如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能。和sort_buffer_size一样,该参数对应的分配内存也是每个连接独享
read_rnd_buffer_size = 4M   # MySql的随机读(查询操作)缓冲区大小。当按任意顺序读取行时(例如,按照排序顺序),将分配一个随机读缓存区。进行排序查询时,MySql会首先扫描一遍该缓冲,以避免磁盘搜索,提高查询速度,如果需要排序大量数据,可适当调高该值。但MySql会为每个客户连接发放该缓冲空间,所以应尽量适当设置该值,以避免内存开销过大。
bulk_insert_buffer_size = 64M      #批量插入数据缓存大小,可以有效提高插入效率,默认为8M
sort_buffer_size = 6M
join_buffer_size = 4M   #用于表间关联缓存的大小,和sort_buffer_size一样,该参数对应的分配内存也是每个连接独享。

##[QUERY THREAD TABLE]CACHE
query_cache_type = 0
query_cache_size = 0
query_cache_limit = 2M
tmp_table_size = 64M     # tmp_table_size 的默认大小是 32M。内部内存临时表的最大大小,如果一张临时表超出该大小,MySQL产生一个 The table tbl_name is full 形式的错误,如果你做很多高级 GROUP BY 查询,增加 tmp_table_size 值。如果超过该值,则会将临时表写入磁盘。
table_open_cache = 5120
#thread_cache=8
thread_cache_size=8    # 服务器线程缓存这个值表示可以重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,那么这个线程将被重新创建,如果有很多新的线程,增加这个值可以改善系统性能.通过比较 Connections 和 Threads_created 状态的变量,可以看到这个变量的作用。设置规则如下:1GB 内存配置为8,2GB配置为16,3GB配置为32,4GB或更高内存,可配置更大。
thread_concurrency=8   #服务器有几个CPU就设置为几,建议用默认设置,一般为8.
open_files_limit=65535   # 设置thread_concurrency的值的正确与否, 对mysql的性能影响很大, 在多个cpu(或多核)的情况下,错误设置了thread_concurrency的值, 会导致mysql不能充分利用多cpu(或多核), 出现同一时刻只能一个cpu(或核)在工作的情况。thread_concurrency应设为CPU核数的2倍. 比如有一个双核的CPU, 那么thread_concurrency的应该为4; 2个双核的cpu, thread_concurrency的值应为8,属重点优化参数

##MAX LIMIT
max_connections=1000
max_length_for_sort_data=8096      #决定使用哪种算法,超过指定字节使用另外一种算法
max_heap_table_size = 64M    #max_heap_table_size比tmp_table_size小时,则系统会把max_heap_table_size的值作为最大的内存临时表的上限,大于这个时,改写硬盘
max_allowed_packet=1G
max_connect_errors=100   #如果某个客户端的连接达到了max_connect_errors的限制,将被禁止访问

##TIME OUT
wait_timeout=28800
interactive_timeout=28800    #交互式等待超时时间(s)

##REPLICATE
#只复制某个表
replicate-ignore-db=mysql  
#不复制某些表(可用匹配符) 
replicate-wild-ignore-table=mysql.%     #跨库跟新保证主上执行的语句会同步到从上
#replicate-do-db=test
#replicate-wild-do-table=test.%


##OTHER
skip-external-locking     #跳过外部锁,多台机器调用一台数据库及其的话,容易造成死锁,这个参数会让请求排队,防止死锁
skip_name_resolve=1     #禁止域名解析
##slave_skip_errors = all
#auto_increment_increment = 2
#auto_increment_offset = 2
explicit_defaults_for_timestamp = true
secure_file_priv=''

[mysqldump]
max_allowed_packet=512M
quick

mysql参数:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_interactive_timeout
主从复制参数:https://dev.mysql.com/doc/refman/5.7/en/replication-options-slave.html http://www.ningoo.net/html/2007/mysql_replication_configuration.html
http://www.cnblogs.com/ivictor/p/5311607.html

你可能感兴趣的:(mysql-优化)