[client] #客戶端設置,即客戶端默認的鏈接參數
port = 3307 #默認鏈接端口
socket = /data/mysqldata/3307/mysql.sock #用於本地鏈接的socket套接字
default-character-set = utf8mb4 #編碼mysql
[mysqld] #服務端基本設置
port = 3307 MySQL監聽端口
socket = /data/mysqldata/3307/mysql.sock #爲MySQL客戶端程序和服務器之間的本地通信指定一個套接字文件
pid-file = /data/mysqldata/3307/mysql.pid #pid文件所在目錄
basedir = /usr/local/mysql-5.7.11 #使用該目錄做爲根目錄(安裝目錄)
datadir = /data/mysqldata/3307/data #數據文件存放的目錄
tmpdir = /data/mysqldata/3307/tmp #MySQL存放臨時文件的目錄
character_set_server = utf8mb4 #服務端默認編碼(數據庫級別)
collation_server = utf8mb4_bin #服務端默認的比對規則,排序規則
user = mysql #MySQL啓動用戶sql
log_bin_trust_function_creators = 1 #This variable applies when binary logging is enabled. It controls whether stored function creators can be trusted not to create stored functions that will cause #unsafe events to be written to the binary log. If set to 0 (the default), users are not permitted to create or alter stored functions unless they have the SUPER #privilege in addition to the CREATE ROUTINE or ALTER ROUTINE privilege. 開啓了binlog後,必須設置這個值爲1.主要是考慮binlog安全數據庫
performance_schema = 0 #性能優化的引擎,默認關閉緩存
secure_auth = 1 #secure_auth 爲了防止低版本的MySQL客戶端(<4.1)使用舊的密碼認證方式訪問高版本的服務器。MySQL 5.6.7開始secure_auth 默認爲啓用值1安全
#ft_min_word_len = 1 #開啓全文索引性能優化
#myisam_recover #自動修復MySQL的myisam表服務器
explicit_defaults_for_timestamp #明確時間戳默認null方式網絡
event_scheduler #計劃任務(事件調度器)
skip-external-locking #跳過外部鎖定;External-locking用於多進程條件下爲MyISAM數據表進行鎖定session
skip-name-resolve #跳過客戶端域名解析;當新的客戶鏈接mysqld時,mysqld建立一個新的線程來處理請求。該線程先檢查是否主機名在主機名緩存中。若是不在,線程試圖解析主機名。併發
#使用這一選項以消除MySQL進行DNS解析的時間。但須要注意,若是開啓該選項,則全部遠程主機鏈接受權都要使用IP地址方式,不然MySQL將沒法正常處理鏈接請求!
#bind-address = 127.0.0.1 #MySQL綁定IP
skip-slave-start #爲了安全起見,複製環境的數據庫仍是設置--skip-slave-start參數,防止複製隨着mysql啓動而自動啓動
slave_net_timeout = 30 #The number of seconds to wait for more data from a master/slave connection before aborting the read. MySQL主從複製的時候,
#當Master和Slave之間的網絡中斷,可是Master和Slave沒法察覺的狀況下(好比防火牆或者路由問題)。
#Slave會等待slave_net_timeout設置的秒數後,才能認爲網絡出現故障,而後纔會重連而且追趕這段時間主庫的數據。
#1.用這三個參數來判斷主從是否延遲是不許確的Slave_IO_Running,Slave_SQL_Running,Seconds_Behind_Master.仍是用pt-heartbeat吧。
#2.slave_net_timeout不要用默認值,設置一個你能接受的延時時間。
local-infile = 0 #設定是否支持命令load data local infile。若是指定local關鍵詞,則代表支持從客戶主機讀文件
back_log = 1024 #指定MySQL可能的鏈接數量。當MySQL主線程在很短的時間內獲得很是多的鏈接請求,該參數就起做用,以後主線程花些時間(儘管很短)檢查鏈接而且啓動一個新線程。
#back_log參數的值指出在MySQL暫時中止響應新請求以前的短期內多少個請求能夠被存在堆棧中。
#sql_mode = 'PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
sql_mode = NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER #sql_mode,定義了mysql應該支持的sql語法,數據校驗等! NO_AUTO_CREATE_USER:禁止GRANT建立密碼爲空的用戶。
#NO_ENGINE_SUBSTITUTION 若是須要的存儲引擎被禁用或未編譯,能夠防止自動替換存儲引擎
key_buffer_size = 32M #索引塊的緩衝區大小,對MyISAM表性能影響最大的一個參數.決定索引處理的速度,尤爲是索引讀的速度。默認值是16M,經過檢查狀態值Key_read_requests
#和Key_reads,能夠知道key_buffer_size設置是否合理
max_allowed_packet = 512M #一個查詢語句包的最大尺寸。消息緩衝區被初始化爲net_buffer_length字節,可是可在須要時增長到max_allowed_packet個字節。
#該值過小則會在處理大包時產生錯誤。若是使用大的BLOB列,必須增長該值。
#這個值來限制server接受的數據包大小。有時候大的插入和更新會受max_allowed_packet 參數限制,致使寫入或者更新失敗。
thread_stack = 256K #線程緩存;主要用來存放每個線程自身的標識信息,如線程id,線程運行時基本信息等等,咱們能夠經過 thread_stack 參數來設置爲每個線程棧分配多大的內存。
sort_buffer_size = 16M #是MySQL執行排序使用的緩衝大小。若是想要增長ORDER BY的速度,首先看是否可讓MySQL使用索引而不是額外的排序階段。
#若是不能,能夠嘗試增長sort_buffer_size變量的大小。
read_buffer_size = 16M #是MySQL讀入緩衝區大小。對錶進行順序掃描的請求將分配一個讀入緩衝區,MySQL會爲它分配一段內存緩衝區。read_buffer_size變量控制這一緩衝區的大小。
#若是對錶的順序掃描請求很是頻繁,而且你認爲頻繁掃描進行得太慢,能夠經過增長該變量值以及內存緩衝區大小提升其性能。
join_buffer_size = 16M #應用程序常常會出現一些兩表(或多表)Join的操做需求,MySQL在完成某些 Join 需求的時候(all/index join),爲了減小參與Join的「被驅動表」的
#讀取次數以提升性能,須要使用到 Join Buffer 來協助完成 Join操做。當 Join Buffer 過小,MySQL 不會將該 Buffer 存入磁盤文件,
#而是先將Join Buffer中的結果集與須要 Join 的表進行 Join 操做,
#而後清空 Join Buffer 中的數據,繼續將剩餘的結果集寫入此 Buffer 中,如此往復。這勢必會形成被驅動表須要被屢次讀取,成倍增長 IO 訪問,下降效率。
read_rnd_buffer_size = 32M #是MySQL的隨機讀緩衝區大小。當按任意順序讀取行時(例如,按照排序順序),將分配一個隨機讀緩存區。進行排序查詢時,MySQL會首先掃描一遍該緩衝,以免磁盤搜索,
#提升查詢速度,若是須要排序大量數據,可適當調高該值。但MySQL會爲每一個客戶鏈接發放該緩衝空間,因此應儘可能適當設置該值,以免內存開銷過大。
net_buffer_length = 16K #通訊緩衝區在查詢期間被重置到該大小。一般不要改變該參數值,可是若是內存不足,能夠將它設置爲查詢指望的大小。
#(即,客戶發出的SQL語句指望的長度。若是語句超過這個長度,緩衝區自動地被擴大,直到max_allowed_packet個字節。)
myisam_sort_buffer_size = 128M #當對MyISAM表執行repair table或建立索引時,用以緩存排序索引;設置過小時可能會遇到」 myisam_sort_buffer_size is too small」
bulk_insert_buffer_size = 32M #默認8M,當對MyISAM非空表執行insert … select/ insert … values(…),(…)或者load data infile時,使用樹狀cache緩存數據,每一個thread分配一個;
#注:當對MyISAM表load 大文件時,調大bulk_insert_buffer_size/myisam_sort_buffer_size/key_buffer_size會極大提高速度
thread_cache_size = 384 #thread_cahe_size線程池,線程緩存。用來緩存空閒的線程,以致於不被銷燬,若是線程緩存在的空閒線程,須要從新創建新鏈接,
#則會優先調用線程池中的緩存,很快就能響應鏈接請求。每創建一個鏈接,都須要一個線程與之匹配。
query_cache_size = 0 #工做原理: 一個SELECT查詢在DB中工做後,DB會把該語句緩存下來,當一樣的一個SQL再次來到DB裏調用時,DB在該表沒發生變化的狀況下把結果從緩存中返回給Client。
#在數據庫寫入量或是更新量也比較大的系統,該參數不適合分配過大。並且在高併發,寫入量大的系統,建系把該功能禁掉。
query_cache_type = 0 #決定是否緩存查詢結果。這個變量有三個取值:0,1,2,分別表明了off、on、demand。
tmp_table_size = 1024M #它規定了內部內存臨時表的最大值,每一個線程都要分配。(實際起限制做用的是tmp_table_size和max_heap_table_size的最小值。)
#若是內存臨時表超出了限制,MySQL就會自動地把它轉化爲基於磁盤的MyISAM表,存儲在指定的tmpdir目錄下
max_heap_table_size = 512M #獨立的內存表所容許的最大容量.# 此選項爲了防止意外建立一個超大的內存表致使永盡全部的內存資源.
open_files_limit = 10240 #mysql打開最大文件數
max_connections = 2000 #MySQL不管如何都會保留一個用於管理員(SUPER)登錄的鏈接,用於管理員鏈接數據庫進行維護操做,即便當前鏈接數已經達到了max_connections。
#所以MySQL的實際最大可鏈接數爲max_connections+1;
#這個參數實際起做用的最大值(實際最大可鏈接數)爲16384,即該參數最大值不能超過16384,即便超過也以16384爲準;
#增長max_connections參數的值,不會佔用太多系統資源。系統資源(CPU、內存)的佔用主要取決於查詢的密度、效率等;
#該參數設置太小的最明顯特徵是出現」Too many connections」錯誤;
max-user-connections = 0 #用來限制用戶資源的,0不限制;對整個服務器的用戶限制
max_connect_errors = 100000 #max_connect_errors是一個MySQL中與安全有關的計數器值,它負責阻止過多嘗試失敗的客戶端以防止暴力破解密碼的狀況。max_connect_errors的值與性能並沒有太大關係。
#當此值設置爲10時,意味着若是某一客戶端嘗試鏈接此MySQL服務器,可是失敗(如密碼錯誤等等)10次,則MySQL會無條件強制阻止此客戶端鏈接。
table_open_cache = 5120 #表描述符緩存大小,可減小文件打開/關閉次數;
interactive_timeout = 86400 #interactive_time -- 指的是mysql在關閉一個交互的鏈接以前所要等待的秒數(交互鏈接如mysql gui tool中的鏈接
wait_timeout = 86400 #wait_timeout -- 指的是MySQL在關閉一個非交互的鏈接以前所要等待的秒數
binlog_cache_size = 16M #二進制日誌緩衝大小
#咱們知道InnoDB存儲引擎是支持事務的,實現事務須要依賴於日誌技術,爲了性能,日誌編碼採用二進制格式。那麼,咱們如何記日誌呢?有日誌的時候,就直接寫磁盤?
#但是磁盤的效率是很低的,若是你用過Nginx,,通常Nginx輸出access log都是要緩衝輸出的。所以,記錄二進制日誌的時候,咱們是否也須要考慮Cache呢?
#答案是確定的,可是Cache不是直接持久化,因而面臨安全性的問題——由於系統宕機時,Cache中可能有殘餘的數據沒來得及寫入磁盤。所以,Cache要權衡,要恰到好處:
#既減小磁盤I/O,知足性能要求;又保證Cache無殘留,及時持久化,知足安全要求。
slow_query_log = 1 #開啓慢查詢
long_query_time = 1 #超過的時間爲1s;MySQL可以記錄執行時間超過參數 long_query_time 設置值的SQL語句,默認是不記錄的。
log-slow-admin-statements
log-queries-not-using-indexes #記錄管理語句和沒有使用index的查詢記錄
# *** Replication related settings ***
binlog_format = ROW #在複製方面的改進就是引進了新的複製技術:基於行的複製。簡言之,這種新技術就是關注表中發生變化的記錄,而非之前的照抄 binlog 模式。
#從 MySQL 5.1.12 開始,能夠用如下三種模式來實現:基於SQL語句的複製(statement-based replication, SBR),基於行的複製(row-based replication, RBR),
混合模式複製(mixed-based replication, MBR)。相應地,binlog的格式也有三種:STATEMENT,ROW,MIXED。MBR 模式中,SBR 模式是默認的。
#max_binlog_cache_size = 102400 # 爲每一個session 最大可分配的內存,在事務過程當中用來存儲二進制日誌的緩存。
log-bin = /data/mysqldata/3307/binlog/mysql-bin #開啓二進制日誌功能,binlog數據位置
log-bin-index = /data/mysqldata/3307/binlog/mysql-bin.index
relay-log = /data/mysqldata/3307/relay/mysql-relay-bin #relay-log日誌記錄的是從服務器I/O線程將主服務器的二進制日誌讀取過來記錄到從服務器本地文件,
#而後SQL線程會讀取relay-log日誌的內容並應用到從服務器
relay-log-index = /data/mysqldata/3307/relay/mysql-relay-bin.index #binlog傳到備機被寫道relaylog裏,備機的slave sql線程從relaylog裏讀取而後應用到本地。
server_id = 100 #服務端ID,用來高可用時作區分
log_slave_updates = 1 #log_slave_updates是將從服務器從主服務器收到的更新記入到從服務器本身的二進制日誌文件中。
expire-logs-days = 15 #二進制日誌自動刪除的天數。默認值爲0,表示「沒有自動刪除」。啓動時和二進制日誌循環時可能刪除。
max_binlog_size = 512M #若是二進制日誌寫入的內容超出給定值,日誌就會發生滾動。你不能將該變量設置爲大於1GB或小於4096字節。 默認值是1GB。
replicate-wild-ignore-table = mysql.% #replicate-wild-ignore-table參數能同步全部跨數據庫的更新,好比replicate-do-db或者replicate-ignore-db不會同步相似
#replicate-wild-do-table = db_name.% #設定須要複製的Table
#slave-skip-errors = 1062,1053,1146 #複製時跳過一些錯誤;不要胡亂使用這些跳過錯誤的參數,除非你很是肯定你在作什麼。當你使用這些參數時候,MYSQL會忽略那些錯誤,
#這樣會致使你的主從服務器數據不一致。
auto_increment_offset = 1
auto_increment_increment = 2 #這兩個參數通常用在主主同步中,用來錯開自增值, 防止鍵值衝突
relay_log_info_repository = TABLE #將中繼日誌的信息寫入表:mysql.slave_realy_log_info
master_info_repository = TABLE #將master的鏈接信息寫入表:mysql.salve_master_info
relay_log_recovery = on #中繼日誌自我修復;當slave從庫宕機後,假如relay-log損壞了,致使一部分中繼日誌沒有處理,則自動放棄全部未執行的relay-log,
#而且從新從master上獲取日誌,這樣就保證了relay-log的完整性
# *** innodb setting ***
innodb_buffer_pool_size = 4G #InnoDB 用來高速緩衝數據和索引內存緩衝大小。 更大的設置可使訪問數據時減小磁盤 I/O。
innodb_data_file_path = ibdata1:1G:autoextend #單獨指定數據文件的路徑與大小
innodb_flush_log_at_trx_commit = 0 #每次commit 日誌緩存中的數據刷到磁盤中。一般設置爲 1,意味着在事務提交前日誌已被寫入磁盤, 事務能夠運行更長以及服務崩潰後的修復能力。
#若是你願意減弱這個安全,或你運行的是比較小的事務處理,能夠將它設置爲 0 ,以減小寫日誌文件的磁盤 I/O。這個選項默認設置爲 0。
#sync_binlog = 1000 #sync_binlog=n,當每進行n次事務提交以後,MySQL將進行一次fsync之類的磁盤同步指令來將binlog_cache中的數據強制寫入磁盤。
innodb_read_io_threads = 8
innodb_write_io_threads = 8 #對於多核的CPU機器,能夠修改innodb_read_io_threads和innodb_write_io_threads來增長IO線程,來充分利用多核的性能
innodb_file_format = Barracuda #Innodb Plugin引擎開始引入多種格式的行存儲機制,目前支持:Antelope、Barracuda兩種。其中Barracuda兼容Antelope格式。
innodb_open_files = 65536 #限制Innodb能打開的表的數量
innodb_purge_threads = 1 #開始碎片回收線程。這個應該能讓碎片回收得更及時並且不影響其餘線程的操做
innodb_support_xa = FALSE #分佈式事務
innodb_log_buffer_size = 256M #InnoDB 將日誌寫入日誌磁盤文件前的緩衝大小。理想值爲 1M 至 8M。大的日誌緩衝容許事務運行時不須要將日誌保存入磁盤而只到事務被提交(commit)。
#所以,若是有大的事務處理,設置大的日誌緩衝能夠減小磁盤I/O。
innodb_log_file_size = 1G #日誌組中的每一個日誌文件的大小(單位 MB)。若是 n 是日誌組中日誌文件的數目,那麼理想的數值爲 1M 至下面設置的緩衝池(buffer pool)大小的 1/n。較大的值,
#能夠減小刷新緩衝池的次數,從而減小磁盤 I/O。可是大的日誌文件意味着在崩潰時須要更長的時間來恢復數據。
innodb_log_files_in_group = 3 #指定有三個日誌組
#innodb_lock_wait_timeout = 120 #在回滾(rooled back)以前,InnoDB 事務將等待超時的時間(單位 秒)
innodb_max_dirty_pages_pct = 75 #innodb_max_dirty_pages_pct做用:控制Innodb的髒頁在緩衝中在那個百分比之下,值在範圍1-100,默認爲90.這個參數的另外一個用處:
#當Innodb的內存分配過大,導致swap佔用嚴重時,能夠適當的減少調整這個值,使達到swap空間釋放出來。建義:這個值最大在90%,最小在15%。
#太大,緩存中每次更新須要致換數據頁太多,過小,放的數據頁過小,更新操做太慢。
innodb_buffer_pool_instances = 4 #innodb_buffer_pool_size 一致 能夠開啓多個內存緩衝池,把須要緩衝的數據hash到不一樣的緩衝池中,這樣能夠並行的內存讀寫。
innodb_io_capacity = 500 #這個參數據控制Innodb checkpoint時的IO能力
innodb_file_per_table = 1 #做用:使每一個Innodb的表,有自已獨立的表空間。如刪除文件後能夠回收那部分空間。
#分配原則:只有使用不使用。但DB還須要有一個公共的表空間。
innodb_change_buffering = inserts #當更新/插入的非彙集索引的數據所對應的頁不在內存中時(對非彙集索引的更新操做一般會帶來隨機IO),會將其放到一個insert buffer中,
#當隨後頁面被讀到內存中時,會將這些變化的記錄merge到頁中。當服務器比較空閒時,後臺線程也會作merge操做
innodb_adaptive_flushing = 1 #該值影響每秒刷新髒頁的操做,開啓此配置後,刷新髒頁會經過判斷產生重作日誌的速度來判斷最合適的刷新髒頁的數量;
transaction-isolation = READ-COMMITTED #數據庫事務隔離級別 ,讀取提交內容
innodb_flush_method = O_DIRECT #innodb_flush_method這個參數控制着innodb數據文件及redo log的打開、刷寫模式
#InnoDB使用O_DIRECT模式打開數據文件,用fsync()函數去更新日誌和數據文件。
#innodb_use_sys_malloc = 1 #默認設置值爲1.設置爲0:表示Innodb使用自帶的內存分配程序;設置爲1:表示InnoDB使用操做系統的內存分配程序。
[mysqldump]
quick #它強制 mysqldump 從服務器查詢取得記錄直接輸出而不是取得全部記錄後將它們緩存到內存中
max_allowed_packet = 512M #限制server接受的數據包大小;指代mysql服務器端和客戶端在一次傳送數據包的過程中數據包的大小
net_buffer_length = 16384 #TCP/IP和套接字通訊緩衝區大小,建立長度達net_buffer_length的行
[mysql]
auto-rehash #auto-rehash是自動補全的意思
[isamchk] #isamchk數據檢測恢復工具
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
[myisamchk] #使用myisamchk實用程序來得到有關你的數據庫桌表的信息、檢查和修復他們或優化他們
key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout #mysqlhotcopy使用lock tables、flush tables和cp或scp來快速備份數據庫.它是備份數據庫或單個表最快的途徑,徹底屬於物理備份,但只能用於備份MyISAM存儲引擎和運行在數據庫目錄所在的機器上.
#與mysqldump備份不一樣,mysqldump屬於邏輯備份,備份時是執行的sql語句.使用mysqlhotcopy命令前須要要安裝相應的軟件依賴包.