1 [client] 2 #客戶端設置,即客戶端默認的連接參數 3 # password = 你的密碼 4 port = 3306 5 #默認連接端口 6 socket = /usr/local/mysql/data/mysql.sock 7 #用於本地連接的socket套接字 8 default-character-set = utf8 9 #編碼 10 11 [mysqld] 12 #服務端基本設置 13 port = 3306 14 #MySQL監聽端口 15 socket = /usr/local/mysql/data/mysql.sock 16 #為MySQL客戶端程序和服務器之間的本地通訊指定一個套接字文件 17 pid-file = /usr/local/mysql/data/mysql.pid 18 #pid文件所在目錄 19 basedir = /usr/local/mysql 20 #使用該目錄作為根目錄(安裝目錄) 21 datadir = /usr/local/mysql/database 22 #數據文件存放的目錄 23 tmpdir = /usr/local/mysql/data/tmp 24 #MySQL存放臨時文件的目錄 25 character_set_server = utf8 26 #服務端默認編碼(數據庫級別) 27 collation_server = utf8_general_ci 28 #服務端默認的比對規則,排序規則 29 user = root 30 #MySQL啟動用戶。如果是root用戶就配置root,mysql用戶就配置mysql 31 log-error=/usr/local/mysql/data/error.log 32 #錯誤日志配置文件(configure file) 33 secure-file-priv = null 34 35 log_bin_trust_function_creators = 1 36 #開啟了binlog后,必須設置這個值為1.主要是考慮binlog安全 37 #此變量適用於啟用二進制日志記錄的情況。它控制是否可以信任存儲函數創建者,而不是創建將導致 38 #要寫入二進制日志的不安全事件。如果設置為0(默認值),則不允許用戶創建或更改存儲函數,除非用戶具有 39 #除創建例程或更改例程特權之外的特權 40 41 performance_schema = 0 42 #性能優化的引擎,默認關閉 43 44 #ft_min_word_len = 1 45 #開啟全文索引 46 47 #myisam_recover 48 #自動修復MySQL的myisam表 49 50 explicit_defaults_for_timestamp 51 #明確時間戳默認null方式 52 53 event_scheduler 54 #計划任務(事件調度器) 55 skip-external-locking 56 #跳過外部鎖定;External-locking用於多進程條件下為MyISAM數據表進行鎖定 57 58 skip-name-resolve 59 #跳過客戶端域名解析;當新的客戶連接mysqld時,mysqld創建一個新的線程來處理請求。該線程先檢查是否主機名在主機名緩存中。如果不在,線程試圖解析主機名。 60 #使用這一選項以消除MySQL進行DNS解析的時間。但需要注意,如果開啟該選項,則所有遠程主機連接授權都要使用IP地址方式,否則MySQL將無法正常處理連接請求! 61 62 63 1.這個bind-address強烈推薦不配置 64 2.如果要配置bind-address的話,這個localhost不能修改,否則在初始化數據庫(執行/opt/cloudera/cm/schema/scm_prepare_database.sh mysql cm cm password)時便會報錯 65 如果配置了localhost的話,那么在CDH的安裝頁面中,配置連接數據庫的主機名稱必須為localhost 66 3.強烈不推薦寫bind-address=xxx,那么后面的CDH安裝對應的組件時要填寫的“數據庫主機名稱”默認使用主機名。 67 4.如果/etc/my.cnf中配置了bind-address=localhost 的話,那么在CDH的安裝頁面中,配置連接數據庫的主機名稱必須為localhost。 68 缺點:但是在安裝hue時,“數據庫主機名稱”並無法使用localhost或任何主機名,所以造成無法安裝hue 69 5.不配置 bind-address=localhost 的話,則使用主機名(NDOE1)作為此處的數據庫主機名稱 70 #bind-address=localhost 71 #MySQL綁定IP 72 73 skip-slave-start 74 #為了安全起見,復制環境的數據庫還是設置--skip-slave-start參數,防止復制隨着mysql啟動而自動啟動 75 76 slave_net_timeout = 30 77 #在中止讀取之前等待來自主/從連接的更多數據的秒數。 MySQL主從復制的時候, 78 #當Master和Slave之間的網絡中斷,但是Master和Slave無法察覺的情況下(比如防火牆或者路由問題)。 79 #Slave會等待slave_net_timeout設置的秒數后,才能認為網絡出現故障,然后才會重連並且追趕這段時間主庫的數據。 80 #1.用這三個參數來判斷主從是否延遲是不准確的Slave_IO_Running,Slave_SQL_Running,Seconds_Behind_Master.還是用pt-heartbeat吧。 81 #2.slave_net_timeout不要用默認值,設置一個你能接受的延時時間。 82 83 local-infile = 0 84 #設定是否支持命令load data local infile。如果指定local關鍵詞,則表明支持從客戶主機讀文件 85 86 back_log = 1024 87 #指定MySQL可能的連接數量。當MySQL主線程在很短的時間內得到非常多的連接請求,該參數就起作用,之后主線程花些時間(盡管很短)檢查連接並且啟動一個新線程。 88 #back_log參數的值指出在MySQL暫時停止響應新請求之前的短時間內多少個請求可以被存在堆棧中。 89 90 #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' 91 92 sql_mode = NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER 93 #sql_mode,定義了mysql應該支持的sql語法,數據校驗等! NO_AUTO_CREATE_USER:禁止GRANT創建密碼為空的用戶。 94 #NO_ENGINE_SUBSTITUTION 如果需要的存儲引擎被禁用或未編譯,可以防止自動替換存儲引擎 95 96 key_buffer_size = 32M 97 #索引塊的緩沖區大小,對MyISAM表性能影響最大的一個參數.決定索引處理的速度,尤其是索引讀的速度。默認值是16M,通過檢查狀態值Key_read_requests 98 #和Key_reads,可以知道key_buffer_size設置是否合理 99 100 max_allowed_packet = 512M 101 #一個查詢語句包的最大尺寸。消息緩沖區被初始化為net_buffer_length字節,但是可在需要時增加到max_allowed_packet個字節。 102 #該值太小則會在處理大包時產生錯誤。如果使用大的BLOB列,必須增加該值。 103 #這個值來限制server接受的數據包大小。有時候大的插入和更新會受max_allowed_packet 參數限制,導致寫入或者更新失敗。 104 105 thread_stack = 256K 106 #線程緩存;主要用來存放每一個線程自身的標識信息,如線程id,線程運行時基本信息等等,我們可以通過 thread_stack 參數來設置為每一個線程棧分配多大的內存。 107 108 sort_buffer_size = 16M 109 #是MySQL執行排序使用的緩沖大小。如果想要增加ORDER BY的速度,首先看是否可以讓MySQL使用索引而不是額外的排序階段。 110 #如果不能,可以嘗試增加sort_buffer_size變量的大小。 111 112 read_buffer_size = 16M 113 #是MySQL讀入緩沖區大小。對表進行順序掃描的請求將分配一個讀入緩沖區,MySQL會為它分配一段內存緩沖區。read_buffer_size變量控制這一緩沖區的大小。 114 #如果對表的順序掃描請求非常頻繁,並且你認為頻繁掃描進行得太慢,可以通過增加該變量值以及內存緩沖區大小提高其性能。 115 116 join_buffer_size = 16M 117 #應用程序經常會出現一些兩表(或多表)Join的操作需求,MySQL在完成某些 Join 需求的時候(all/index join),為了減少參與Join的“被驅動表”的 118 #讀取次數以提高性能,需要使用到 Join Buffer 來協助完成 Join操作。當 Join Buffer 太小,MySQL 不會將該 Buffer 存入磁盤文件, 119 #而是先將Join Buffer中的結果集與需要 Join 的表進行 Join 操作, 120 #然后清空 Join Buffer 中的數據,繼續將剩余的結果集寫入此 Buffer 中,如此往復。這勢必會造成被驅動表需要被多次讀取,成倍增加 IO 訪問,降低效率。 121 122 read_rnd_buffer_size = 32M 123 #是MySQL的隨機讀緩沖區大小。當按任意順序讀取行時(例如,按照排序順序),將分配一個隨機讀緩存區。進行排序查詢時,MySQL會首先掃描一遍該緩沖,以避免磁盤搜索, 124 #提高查詢速度,如果需要排序大量數據,可適當調高該值。但MySQL會為每個客戶連接發放該緩沖空間,所以應盡量適當設置該值,以避免內存開銷過大。 125 net_buffer_length = 16K 126 #通信緩沖區在查詢期間被重置到該大小。通常不要改變該參數值,但是如果內存不足,可以將它設置為查詢期望的大小。 127 #(即,客戶發出的SQL語句期望的長度。如果語句超過這個長度,緩沖區自動地被擴大,直到max_allowed_packet個字節。) 128 129 myisam_sort_buffer_size = 128M 130 #當對MyISAM表執行repair table或創建索引時,用以緩存排序索引;設置太小時可能會遇到” myisam_sort_buffer_size is too small” 131 132 bulk_insert_buffer_size = 32M 133 #默認8M,當對MyISAM非空表執行insert … select/ insert … values(…),(…)或者load data infile時,使用樹狀cache緩存數據,每個thread分配一個; 134 #注:當對MyISAM表load 大文件時,調大bulk_insert_buffer_size/myisam_sort_buffer_size/key_buffer_size會極大提升速度 135 136 thread_cache_size = 384 137 #thread_cahe_size線程池,線程緩存。用來緩存空閑的線程,以至於不被銷毀,如果線程緩存在的空閑線程,需要重新建立新連接, 138 #則會優先調用線程池中的緩存,很快就能響應連接請求。每建立一個連接,都需要一個線程與之匹配。 139 140 query_cache_size = 32M 141 #工作原理: 一個SELECT查詢在DB中工作后,DB會把該語句緩存下來,當同樣的一個SQL再次來到DB里調用時,DB在該表沒發生變化的情況下把結果從緩存中返回給Client。 142 #在數據庫寫入量或是更新量也比較大的系統,該參數不適合分配過大。而且在高並發,寫入量大的系統,建系把該功能禁掉。 143 144 query_cache_type = 1 145 #決定是否緩存查詢結果。這個變量有三個取值:0,1,2,分別代表了off、on、demand。 146 147 tmp_table_size = 1024M 148 #它規定了內部內存臨時表的最大值,每個線程都要分配。(實際起限制作用的是tmp_table_size和max_heap_table_size的最小值。) 149 #如果內存臨時表超出了限制,MySQL就會自動地把它轉化為基於磁盤的MyISAM表,存儲在指定的tmpdir目錄下 150 151 max_heap_table_size = 512M 152 #獨立的內存表所允許的最大容量.# 此選項為了防止意外創建一個超大的內存表導致永盡所有的內存資源. 153 154 open_files_limit = 10240 155 #mysql打開最大文件數 156 157 max_connections = 2000 158 #MySQL無論如何都會保留一個用於管理員(SUPER)登陸的連接,用於管理員連接數據庫進行維護操作,即使當前連接數已經達到了max_connections。 159 #因此MySQL的實際最大可連接數為max_connections+1; 160 #這個參數實際起作用的最大值(實際最大可連接數)為16384,即該參數最大值不能超過16384,即使超過也以16384為准; 161 #增加max_connections參數的值,不會占用太多系統資源。系統資源(CPU、內存)的占用主要取決於查詢的密度、效率等; 162 #該參數設置過小的最明顯特征是出現”Too many connections”錯誤; 163 164 max-user-connections = 0 165 #用來限制用戶資源的,0不限制;對整個服務器的用戶限制 166 167 max_connect_errors = 100000 168 #max_connect_errors是一個MySQL中與安全有關的計數器值,它負責阻止過多嘗試失敗的客戶端以防止暴力破解密碼的情況。max_connect_errors的值與性能並無太大關系。 169 #當此值設置為10時,意味着如果某一客戶端嘗試連接此MySQL服務器,但是失敗(如密碼錯誤等等)10次,則MySQL會無條件強制阻止此客戶端連接。 170 171 table_open_cache = 5120 172 #表描述符緩存大小,可減少文件打開/關閉次數; 173 174 interactive_timeout = 86400 175 #interactive_time -- 指的是mysql在關閉一個交互的連接之前所要等待的秒數(交互連接如mysql gui tool中的連接 176 wait_timeout = 86400 177 #wait_timeout -- 指的是MySQL在關閉一個非交互的連接之前所要等待的秒數 178 179 binlog_cache_size = 16M 180 #二進制日志緩沖大小 181 #我們知道InnoDB存儲引擎是支持事務的,實現事務需要依賴於日志技術,為了性能,日志編碼采用二進制格式。那么,我們如何記日志呢?有日志的時候,就直接寫磁盤? 182 #可是磁盤的效率是很低的,如果你用過Nginx,,一般Nginx輸出access log都是要緩沖輸出的。因此,記錄二進制日志的時候,我們是否也需要考慮Cache呢? 183 #答案是肯定的,但是Cache不是直接持久化,於是面臨安全性的問題——因為系統宕機時,Cache中可能有殘余的數據沒來得及寫入磁盤。因此,Cache要權衡,要恰到好處: 184 #既減少磁盤I/O,滿足性能要求;又保證Cache無殘留,及時持久化,滿足安全要求。 185 186 187 slow_query_log = true 188 #開啟慢查詢 189 slow_query_log_file = /usr/local/mysql/data/slow_query_log.log 190 #慢查詢地址 191 long_query_time = 1 192 #超過的時間為1s;MySQL能夠記錄執行時間超過參數 long_query_time 設置值的SQL語句,默認是不記錄的。 193 log_output = FILE 194 log-slow-admin-statements 195 log-queries-not-using-indexes 196 #記錄管理語句和沒有使用index的查詢記錄 197 198 # 主從復制配置 ***************************************************** 199 200 # *** Replication related settings *** 201 binlog_format = ROW 202 #在復制方面的改進就是引進了新的復制技術:基於行的復制。簡言之,這種新技術就是關注表中發生變化的記錄,而非以前的照抄 binlog 模式。 203 #從 MySQL 5.1.12 開始,可以用以下三種模式來實現:基於SQL語句的復制(statement-based replication, SBR),基於行的復制(row-based replication, RBR),混合模式復制(mixed-based replication, MBR)。相應地,binlog的格式也有三種:STATEMENT,ROW,MIXED。MBR 模式中,SBR 模式是默認的。 204 205 #max_binlog_cache_size = 102400 206 # 為每個session 最大可分配的內存,在事務過程中用來存儲二進制日志的緩存。 207 log-bin = /usr/local/mysql/data/binlog/mysql-bin 208 #開啟二進制日志功能,binlog數據位置 209 log-bin-index = /usr/local/mysql/data/binlog/mysql-bin.index 210 relay-log = /usr/local/mysql/data/relay/mysql-relay-bin 211 #relay-log日志記錄的是從服務器I/O線程將主服務器的二進制日志讀取過來記錄到從服務器本地文件, 212 #然后SQL線程會讀取relay-log日志的內容並應用到從服務器 213 214 relay-log-index = /usr/local/mysql/data/relay/mysql-relay-bin.index 215 #binlog傳到備機被寫道relaylog里,備機的slave sql線程從relaylog里讀取然后應用到本地。 216 217 # *******************主要配置********************* 218 # 主服務器配置 219 server-id = 1 220 #服務端ID,用來高可用時做區分 221 #binlog-ignore-db = mysql 222 #binlog-ignore-db = sys 223 #binlog-ignore-db = binlog 224 #binlog-ignore-db = relay 225 #binlog-ignore-db = tmp 226 #binlog-ignore-db = test 227 #binlog-ignore-db = information_schema 228 #binlog-ignore-db = performance_schema 229 # 不同步哪些數據庫 230 #binlog-do-db = game 231 # 只同步哪些數據庫,除此之外,其他不同步 232 233 234 # 從服務器配置 235 #server-id = 2 236 #服務端ID,用來高可用時做區分 237 #replicate-ignore-db = mysql 238 #replicate-ignore-db = sys 239 #replicate-ignore-db = relay 240 #replicate-ignore-db = tmp 241 #replicate-ignore-db = test 242 #replicate-ignore-db = information_schema 243 #replicate-ignore-db = performance_schema 244 # 不同步哪些數據庫 245 #replicate-do-db = game 246 # 只同步哪些數據庫,除此之外,其他不同步 247 248 # *******************主要配置********************* 249 250 log_slave_updates = 1 251 #log_slave_updates是將從服務器從主服務器收到的更新記入到從服務器自己的二進制日志文件中。 252 expire-logs-days = 15 253 #二進制日志自動刪除的天數。默認值為0,表示“沒有自動刪除”。啟動時和二進制日志循環時可能刪除。 254 max_binlog_size = 128M 255 #如果二進制日志寫入的內容超出給定值,日志就會發生滾動。你不能將該變量設置為大於1GB或小於4096字節。 默認值是1GB。 256 257 #replicate-wild-ignore-table = mysql.% 258 #replicate-wild-ignore-table參數能同步所有跨數據庫的更新,比如replicate-do-db或者replicate-ignore-db不會同步類似 259 #replicate-wild-do-table = db_name.% 260 #設定需要復制的Table 261 262 #slave-skip-errors = 1062,1053,1146 263 #復制時跳過一些錯誤;不要胡亂使用這些跳過錯誤的參數,除非你非常確定你在做什么。當你使用這些參數時候,MYSQL會忽略那些錯誤, 264 #這樣會導致你的主從服務器數據不一致。 265 266 auto_increment_offset = 1 267 auto_increment_increment = 2 268 #這兩個參數一般用在主主同步中,用來錯開自增值, 防止鍵值沖突 269 270 relay_log_info_repository = TABLE 271 #將中繼日志的信息寫入表:mysql.slave_realy_log_info 272 master_info_repository = TABLE 273 #將master的連接信息寫入表:mysql.salve_master_info 274 relay_log_recovery = on 275 #中繼日志自我修復;當slave從庫宕機后,假如relay-log損壞了,導致一部分中繼日志沒有處理,則自動放棄所有未執行的relay-log, 276 #並且重新從master上獲取日志,這樣就保證了relay-log的完整性 277 278 # 主從復制配置結束 ***************************************************** 279 280 # *** innodb setting *** 281 innodb_buffer_pool_size = 128M 282 #InnoDB 用來高速緩沖數據和索引內存緩沖大小。 更大的設置可以使訪問數據時減少磁盤 I/O。 283 284 innodb_data_file_path = ibdata1:10M:autoextend 285 #單獨指定數據文件的路徑與大小 286 287 innodb_flush_log_at_trx_commit = 2 288 #每次commit 日志緩存中的數據刷到磁盤中。通常設置為 1,意味着在事務提交前日志已被寫入磁盤, 事務可以運行更長以及服務崩潰后的修復能力。 289 #如果你願意減弱這個安全,或你運行的是比較小的事務處理,可以將它設置為 0 ,以減少寫日志文件的磁盤 I/O。這個選項默認設置為 0。 290 291 #sync_binlog = 1000 292 #sync_binlog=n,當每進行n次事務提交之后,MySQL將進行一次fsync之類的磁盤同步指令來將binlog_cache中的數據強制寫入磁盤。 293 294 innodb_read_io_threads = 8 295 innodb_write_io_threads = 8 296 #對於多核的CPU機器,可以修改innodb_read_io_threads和innodb_write_io_threads來增加IO線程,來充分利用多核的性能 297 innodb_open_files = 1000 298 #限制Innodb能打開的表的數量 299 innodb_purge_threads = 1 300 #開始碎片回收線程。這個應該能讓碎片回收得更及時而且不影響其他線程的操作 301 302 innodb_log_buffer_size = 8M 303 #InnoDB 將日志寫入日志磁盤文件前的緩沖大小。理想值為 1M 至 8M。大的日志緩沖允許事務運行時不需要將日志保存入磁盤而只到事務被提交(commit)。 304 #因此,如果有大的事務處理,設置大的日志緩沖可以減少磁盤I/O。 305 306 innodb_log_file_size = 128M 307 #日志組中的每個日志文件的大小(單位 MB)。如果 n 是日志組中日志文件的數目,那么理想的數值為 1M 至下面設置的緩沖池(buffer pool)大小的 1/n。較大的值, 308 #可以減少刷新緩沖池的次數,從而減少磁盤 I/O。但是大的日志文件意味着在崩潰時需要更長的時間來恢復數據。 309 310 innodb_log_files_in_group = 3 311 #指定有三個日志組 312 313 #innodb_lock_wait_timeout = 120 314 #在回滾(rooled back)之前,InnoDB 事務將等待超時的時間(單位 秒) 315 316 innodb_max_dirty_pages_pct = 75 317 #innodb_max_dirty_pages_pct作用:控制Innodb的臟頁在緩沖中在那個百分比之下,值在范圍1-100,默認為90.這個參數的另一個用處: 318 #當Innodb的內存分配過大,致使swap占用嚴重時,可以適當的減小調整這個值,使達到swap空間釋放出來。建義:這個值最大在90%,最小在15%。 319 #太大,緩存中每次更新需要致換數據頁太多,太小,放的數據頁太小,更新操作太慢。 320 321 innodb_buffer_pool_instances = 4 322 #innodb_buffer_pool_size 一致 可以開啟多個內存緩沖池,把需要緩沖的數據hash到不同的緩沖池中,這樣可以並行的內存讀寫。 323 324 innodb_io_capacity = 500 325 #這個參數據控制Innodb checkpoint時的IO能力 326 327 innodb_file_per_table = 1 328 #作用:使每個Innodb的表,有自已獨立的表空間。如刪除文件后可以回收那部分空間。 329 #分配原則:只有使用不使用。但DB還需要有一個公共的表空間。 330 331 innodb_change_buffering = inserts 332 #當更新/插入的非聚集索引的數據所對應的頁不在內存中時(對非聚集索引的更新操作通常會帶來隨機IO),會將其放到一個insert buffer中, #當隨后頁面被讀到內存中時,會將這些變化的記錄merge到頁中。當服務器比較空閑時,后台線程也會做merge操作 333 334 innodb_adaptive_flushing = 1 335 #該值影響每秒刷新臟頁的操作,開啟此配置后,刷新臟頁會通過判斷產生重做日志的速度來判斷最合適的刷新臟頁的數量; 336 337 transaction-isolation = READ-COMMITTED 338 #數據庫事務隔離級別 ,讀取提交內容 339 340 innodb_flush_method = fsync 341 #innodb_flush_method這個參數控制着innodb數據文件及redo log的打開、刷寫模式 342 #InnoDB使用O_DIRECT模式打開數據文件,用fsync()函數去更新日志和數據文件。 343 344 #innodb_use_sys_malloc = 1 345 #默認設置值為1.設置為0:表示Innodb使用自帶的內存分配程序;設置為1:表示InnoDB使用操作系統的內存分配程序。 346 347 348 [mysqldump] 349 quick 350 #它強制 mysqldump 從服務器查詢取得記錄直接輸出而不是取得所有記錄后將它們緩存到內存中 351 352 max_allowed_packet = 512M 353 #限制server接受的數據包大小;指代mysql服務器端和客戶端在一次傳送數據包的過程當中數據包的大小 354 net_buffer_length = 16384 355 #TCP/IP和套接字通信緩沖區大小,創建長度達net_buffer_length的行 356 357 [mysql] 358 auto-rehash 359 default-character-set = utf8 360 #auto-rehash是自動補全的意思 361 362 [isamchk] 363 #isamchk數據檢測恢復工具 364 key_buffer = 256M 365 sort_buffer_size = 256M 366 read_buffer = 2M 367 write_buffer = 2M 368 369 370 371 [myisamchk] 372 #使用myisamchk實用程序來獲得有關你的數據庫桌表的信息、檢查和修復他們或優化他們 373 key_buffer = 256M 374 sort_buffer_size = 256M 375 read_buffer = 2M 376 write_buffer = 2M 377 378 379 [mysqlhotcopy] 380 interactive-timeout 381 #mysqlhotcopy使用lock tables、flush tables和cp或scp來快速備份數據庫.它是備份數據庫或單個表最快的途徑,完全屬於物理備份,但只能用於備份MyISAM存儲引擎和運行在數據庫目錄所在的機器上. 382 #與mysqldump備份不同,mysqldump屬於邏輯備份,備份時是執行的sql語句.使用mysqlhotcopy命令前需要要安裝相應的軟件依賴包.
配置更多http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html