[mysqld]
sql_mode = PIPES_AS_CONCAT,ANSI_QUOTES,STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
#PIPES_AS_CONCAT 将||视为字符串链接操做符(+)(同concat()),而不视为OR
#ANSI_QUOTES 将‘"’视为识别符引号(‘`’引号字符),不要视为字符串的引号字符。在ANSI模式,你能够仍然使用‘`’来引用识别符。启用ANSI_QUOTES后,你不能用双引号来引用字符串,由于它被解释为识别符。
#STRICT_TRANS_TABLES 严格模式控制MySQL如何处理非法或丢失的输入值.MySQL将非法值转换为最接近该列的合法值并插入调整后的值。若是值丢失,MySQL在列中插入隐式 默认值。
#NO_ENGINE_SUBSTITUTION 若是须要的存储引擎被禁用或未编译,能够防止自动替换存储引擎。mysql
explicit_defaults_for_timestamp = offsql
1.和其它字段类型不同,这个字段默认为not null.并且不容许设置default null.
2.第一列timestamp字段,若是不强制指定默认值或on update属性的话,就会默认设为DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP。
3.非第一列timestamp字段,若是不强制指定默认值,DEFAULT '0000-00-00 00:00:00'
4.往该列中插入null值,会自动转化为默认值;
若是explicit_defaults_for_timestamp=1,则关闭timestamp default的特性:
1.若是没有被显示指定not null,则默认为null;
2.默认值也会是null而非CURRENT_TIMESTAMP;
3.若是指定了not null属性,inset式不指定该字段的值,strict sql_mode下,会报错。非strict sql_mode下插入'0000-00-00 00:00:00';
event_scheduler=ON
#开启定时任务数据库
## slave
server-id = 2017080204 #
skip-slave-start = 1
#1复制进程不会随着数据库的启动而启动缓存
read_only = 0
#1开启只读 0关闭只读安全
log-slave-updates = 1
# 1从库从主库复制数据时能够写入到binlog日志服务器
relay_log_purge = 1
#若是默认状况 relay_log_purge=1 时,SQL 线程就会自动将以前的 relay log 所有删除。而当 relay_log_purge=0 时,旧的 relay log 则会被保留.架构
relay_log_info_repository = table
master_info_repository = table
#IO thread的执行状态信息保存在master.info文件,SQL thread的执行状态信息保存在relay-log.info文件.
#因为崩溃或中止 MySQL 时,SQL 线程可能没有执行彻底部的 relay log,最后一个 relay log 中的一部分数据会被从新下载到新的文件中。也就是说,这部分数据重复了两次。
#若是 SQL 跟得很紧,则可能在 IO 线程写入 relay log ,但尚未将同步到磁盘时,就已经读取执行了。这时,就会形成新的文件和旧的文件中少了一段数据。
#5.6开始能够设置将这两个信息保存在innodb事务表中,这时执行relay log中的事务和写relay info在一个事务中,就能获得原子性保证。并发
relay_log_recovery = 1
#为了让从库是crash safe的,必须设置relay_log_recovery=1,这个选项的做用是,在 MySQL 崩溃或人工重启后,因为IO 线程没法保证记录的从主库读取的binlog位置的正确性,所以,就无论master_info中记录的位置,而是根据 relay_log_info中记录的已执行的binlog位置从主库下载,并让SQL线程也从这个位置开始执行。MySQL启动时,至关于执行了flush logs,会新开一个relay log文件,新的 relay log会记录在新的文件中.函数
innodb_autoinc_lock_mode=1
#1 auto_inc锁不要一直保持到语句的结束,只要语句获得了相应的值后就能够提早释放锁;
#0 表级的auto_inc锁,在语句结束的时候才释放这把锁,注意是语句级而不是事务级,一个事务能够包含多个语句;
#2 这个模式下已经没有了auto_inc锁,这个模式下的性能是最好的,可是对于同一个语句来讲它获得的auto_increment值可能不是连续的;高并发
auto_increment_offset=1
#从1开始自增加
auto_increment_increment=1
#增加幅度为1,若是是双主架构,须要设置auto_increment_offset分别为1,2,auto_increment_increment=2
query_cache_size = 0
#查询缓存池设置大小为0
query_cache_type = 0
#关闭查询缓存
back_log = 200
#back_log 的值表示监听的TCP/IP链接队列的大小。固然,操做系统也有本身的队列大小限制。Unix手册中对于listen()的系统调用会提供细节。如须要,能够检查操做系统文档中关于该值最大值的说明。back_log 不能大于操做系统限制的最大值。
bulk_insert_buffer_size = 8M # myisam 批量insert
#当咱们使用如 insert … values(…),(…),(…)… 的方式进行批量插入的时候,MySQL 会先将提交的数据放如一个缓存空间中,当该缓存空间被写满或者提交完全部数据以后,MySQL 才会一次性将该缓存空间中的数据写入数据库并清空缓存。此外,当咱们进行 LOAD DATA INFILE 操做来将文本文件中的数据 Load 进数据库的时候,一样会使用到此缓冲区。
character-set-server = utf8
#字符集
lower_case_table_names = 1 # 1:不区分
# 1 表名忽略大小写
## binlog
sync_binlog = 1 # !!!
#0 当事务提交以后,MySQL不作fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定何时来作同步,或者cache满了以后才同步到磁盘。
#1 即便系统Crash,也最多丢失binlog_cache中未完成的一个事务,对实际数据没有任何实质性影响。从以往经验和相关测试来看,对于高并发事务的系统来讲,“sync_binlog”设置为0和设置为1的系统写入性能差距可能高达5倍甚至更多
#n 当每进行n次事务提交以后,MySQL将进行一次fsync之类的磁盘同步指令来将binlog_cache中的数据强制写入磁盘。
binlog_cache_size = 1M
#用来存储二进制日志的缓存
expire_logs_days = 90
#日志过时时间
binlog_format = row
#日志格式
log_bin_trust_function_creators = 1 # 容许function复制
# 1 开启了log-bin的MySQL Server即可以随意建立function。这里存在潜在的数据安全问题,除非明确的知道建立的function在master和slave上的行为彻底一致
#另外若是是在master上建立函数,想经过主从复制的方式将函数复制到slave上则也需在开启了log-bin的slave中设置上述变量的值为ON(变量的设置不会从master复制到slave上,这点须要注意),不然主从复制会报错
## audit
server_audit_logging = 1 # 0 不开启
server_audit_events = QUERY
#server_audit_excl_users = zabbix_mon,monitor
server_audit_incl_users = root
server_audit_output_type = file
server_audit_file_rotate_size = 1G
server_audit_file_rotate_now = 0
server_audit_file_rotations = 0 # 日志不轮转 n保留日志数
server_audit_query_log_limit = 1024
## 基线
local-infile = off
#off 不容许load数据
skip-networking = off
#开启远程访问
skip-name-resolve = on
#on 跳过DNS反向解析
## connect
max_allowed_packet = 32M
max_connect_errors = 1000
max_connections = 3000
wait_timeout = 1800 # 关闭 非交互 链接以前等待活动的秒数 default:8h
interactive_timeout = 1800 # 关闭 交互式 链接以前等待活动的秒数 default:8h
table_open_cache = 4096
thread_cache_size = 64
thread_stack = 192K
transaction-isolation = REPEATABLE-READ #
pid-file = mysql.pid
## slow
slow_query_log = 1 # 0-off 1-on
long_query_time = 1
log-slow-admin-statements
#一些管理指令,也会被记录。好比OPTIMEZE TABLE, ALTER TABLE等等
log_queries_not_using_indexes = 0
slow_launch_time = 1 #若是建立线程的时间超过该秒数,服务器增长Slow_launch_threads状态变量。
read_buffer_size = 4M # 顺序读
read_rnd_buffer_size = 8M # 随机读
sort_buffer_size = 8M
join_buffer_size = 32M
tmp_table_size = 128M
max_heap_table_size = 128M
default-storage-engine = innodb
## innodb
innodb_buffer_pool_size = 20G #
innodb_max_dirty_pages_pct = 80 #
innodb_thread_concurrency = 120 # default: 0
innodb_buffer_pool_instances = 1 #
innodb_flush_log_at_trx_commit = 1 # !!!
innodb_read_io_threads = 20 # 15*4CPU
innodb_write_io_threads = 15 #
innodb_io_capacity = 4000
innodb_io_capacity_max = 8000
innodb_lru_scan_depth = 1024
innodb_use_native_aio = 1
innodb_flush_neighbors = 1
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_data_file_path=ibdata:1G:autoextend
innodb_log_files_in_group = 3
innodb_log_file_size = 1G
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT
innodb_strict_mode = 1
innodb_lock_wait_timeout = 30
innodb_log_buffer_size = 16M
innodb_support_xa = 0
innodb_adaptive_flushing = 1
innodb_change_buffering = all
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_file_format_check = 1
innodb_purge_threads = 4 ## purge thread 线程数上限 mysql5.6 可设置大于1
innodb_purge_batch_size = 300 ## 每次purge 回收提交事务数量
innodb_use_sys_malloc = 1 ## innodb 使用操做系统内存分配器
innodb_old_blocks_time = 1
innodb_fast_shutdown = 0
performance_schema = 1
innodb_print_all_deadlocks = 1
innodb_sort_buffer_size = 4M
## mysql5.6
innodb_page_size = 16k
#gtid_mode = OFF # off
#enforce-gtid-consistency = true
slave_parallel_workers = 0
table_open_cache_instances=16
binlog_rows_query_log_events=1 # row模式下记录完整SQL
# MyISAM
key_buffer_size = 256M
[mysqldump]
quick
max_allowed_packet = 32M
[mysql]
no-auto-rehash
prompt=\p@\d>\_
[mysqld_safe]
open-files-limit = 28192
[mysqlhotcopy]interactive-timeout