32G my.cnf配置樣例 包含myisam和innodb配置
阿新 • • 發佈:2018-11-06
以下是關於mysql 在32G實體記憶體,6核cpu下的配置,僅供參考。
innodb和myisam的配置根據實際資料庫中表引擎使用的頻率來做具體的調整。
如果innodb使用的多,那麼innodb相應的引數就需要調大些。如:innodb_buffer_pool_size,innodb_buffer_pool_instances
如果myisam使用的多,那麼myisam相應的引數就需要調大些。如:key_buffer_size
另外如果物理機除了執行mysql還有其他的程式,需要根據實際mysql能使用的記憶體來調整引數。
[mysqld] server-id = 3 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #lower_case_table_names=1 #預設值為0.如果開啟可能會影響資料庫執行。修改該值最好重新到匯入備份的資料庫資料 #不允許datadir路徑為軟連線 symbolic-links=0 #skip-name-resolve #mysql主機查詢DNS很慢或是有很多客戶端主機時會導致連線很慢,該種情況需要開啟此選項。開啟狀態下mysql的授權表中的host欄位就不能夠使用域名而只能夠使用 ip地址 log_bin = mysql-bin slow_query_log = 1 slow_query_log=on slow_query_log_file=mysqld3306_slow.log #min_examined_row_limit=100 #SQL語句檢測的記錄數少於設定值的語句不會被記錄到慢查詢日誌,即使這個語句執行時間超過了long_query_time的閾值 #log_queries_not_using_indexes=1 #將沒有使用索引的語句記錄到慢查詢日誌 #log_throttle_queries_not_using_indexes=10 #設定每分鐘記錄到日誌的未使用索引的語句數目,超過這個數目後只記錄語句數量和花費的總時間 #log-slow-admin-statements=0 #記錄執行緩慢的管理SQL,如alter table,analyze table, check table, create index, drop index, optimize table, repair table等。 log_slow_slave_statements=1 #記錄從庫上執行的慢查詢語句 log_output=FILE #指定慢查詢日誌的輸出方式,從5.5版本開始可以記錄到日誌檔案(FILE,慢查詢日誌)和資料庫表(TABLE,mysql.slow_log)中 max_allowed_packet=200M ### 該引數限制伺服器端,接受的資料包大小,如果有BLOB子段,建議增大此值,避免寫入或者更新出錯。有BLOB子段,建議改為1024M wait_timeout=3600 ###等待超時預設s interactive_timeout=3600 ###活動超時 expire_logs_days = 180 #binlog儲存的天數 character_set_server = utf8 #init-connect只會在連線時執行,不會對資料庫產生大的效能影響 #init-connect是在連線時執行的動作命令,故可以用它來完成其它的功能,如:init_connect='SET autocommit=0' #init-connect不會記錄擁有super許可權的使用者記錄,為了防止init_connect語句由於語法錯誤或許可權問題而所有使用者都登陸不了的情況,保證至少super使用者能登陸並修改此值 #init_connect='SET NAMES utf8' 相當於:SET character_set_client = utf8; SET character_set_results = utf8; SET character_set_connection = utf8; init_connect='SET NAMES utf8' max_connections = 1000 tmp_table_size = 64M # 記憶體臨時表的最大值,預設16M max_heap_table_size = 64M # 使用者建立的記憶體表的大小,預設16M,往往和tmp_table_size一起設定,限制使用者臨時表大小。 #*** MyISAM 相關選項 key_buffer_size = 512M # 預設值 8M,建議值:對於記憶體在4GB左右的伺服器該引數可設定為256M或384M read_buffer_size = 262144 # 預設值128kb,建議值:16G記憶體建議1M;為每個掃描MyISAM的執行緒分配引數設定的記憶體大小緩衝區。 # 支援任何儲存引擎 read_rnd_buffer_size = 1M # 預設值256kb;建議值:得參考連線數;MySQL的隨機讀緩衝區大小,適當增大,可以提高效能。 sort_buffer_size = 1M # 預設值256kb;建議值:得參考連線數,極端情況1M*maxconnectiosns join_buffer_size = 1M # 預設值256kb;建議值:得參考連線數,極端情況1M*maxconnectiosns table_open_cache_instances = 6 # 預設值1,建議值:cpu核數,並且<=16,該引數是myssql 5.6後引入的,目的是提高併發。 metadata_locks_hash_instances=32 #performance_schema=OFF #要求極致效能或者記憶體不足的時候可以將此項設定為off; # innodb選項 # 說明:InnoDB使用一個緩衝池來儲存索引和原始資料, 不像MyISAM.這裡你設定越大,你在存取表裡面數據時所需要的磁碟I/O越少. # 在一個獨立使用的資料庫伺服器上,你可以設定這個變數到伺服器實體記憶體大小的60%-80% # 注意別設定的過大,會導致system的swap空間被佔用,導致作業系統變慢,從而減低sql查詢的效率 # 預設值:128M,建議值:實體記憶體的60%-80% innodb_buffer_pool_size = 1G # 說明:只有當設定 innodb_buffer_pool_size 值大於1G時才有意義,小於1G,instances預設為1,大於1G,instances預設為8 # 但是網路上有評價,最佳效能,每個例項至少1G大小。 # 預設值:1或8,建議值:innodb_buffer_pool_size/innodb_buffer_pool_instances >= 1G innodb_buffer_pool_instances = 1 innodb_log_files_in_group = 3 # 預設值2,建議值:根據你係統的磁碟空間和日誌增長情況調整大小 innodb_log_file_size = 256M # 預設值:48M,建議值:根據你係統的磁碟空間和日誌增長情況調整大小 innodb_additional_mem_pool=16M #default:8M [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid