[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