1. 程式人生 > >32G my.cnf配置樣例 包含myisam和innodb配置

32G my.cnf配置樣例 包含myisam和innodb配置

 以下是關於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