日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql my.cnf 官网_MySQL my.cnf 的配置

發布時間:2024/4/18 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql my.cnf 官网_MySQL my.cnf 的配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

客戶端設置

[client]

port = 3306

默認情況下,socket文件應為/usr/local/mysql/mysql.socket,所以可以ln -s xx /tmp/mysql.sock

socket = /tmp/mysql.sock

服務端設置

[mysqld]

##########################################################################################################

基礎信息

Mysql服務的唯一編號 每個mysql服務Id需唯一

server-id = 1

服務端口號 默認3306

port = 3306

啟動mysql服務進程的用戶

user = mysql

##########################################################################################################

安裝目錄相關

mysql安裝根目錄

basedir = /usr/local/mysql-5.7.21

mysql數據文件所在位置

datadir = /usr/local/mysql-5.7.21/data

臨時目錄 比如load data infile會用到,一般都是使用/tmp

tmpdir = /tmp

設置socke文件地址

socket = /tmp/mysql.sock

##########################################################################################################

事務隔離級別,默認為可重復讀(REPEATABLE-READ)。(此級別下可能參數很多間隙鎖,影響性能,但是修改又影響主從復制及災難恢復,建議還是修改代碼邏輯吧)

隔離級別可選項目:READ-UNCOMMITTED READ-COMMITTED REPEATABLE-READ SERIALIZABLE

transaction_isolation = READ-COMMITTED

transaction_isolation = REPEATABLE-READ

##########################################################################################################

數據庫引擎與字符集相關設置

mysql 5.1 之后,默認引擎就是InnoDB了

default_storage_engine = InnoDB

內存臨時表默認引擎,默認InnoDB

default_tmp_storage_engine = InnoDB

mysql 5.7新增特性,磁盤臨時表默認引擎,默認InnoDB

internal_tmp_disk_storage_engine = InnoDB

數據庫默認字符集,主流字符集支持一些特殊表情符號(特殊表情符占用4個字節)

character-set-server = utf8

數據庫字符集對應一些排序等規則,注意要和character-set-server對應

collation-server = utf8_general_ci

設置client連接mysql時的字符集,防止亂碼

init_connect='SET NAMES utf8'

是否對sql語句大小寫敏感,默認值為0,1表示不敏感

lower_case_table_names = 1

##########################################################################################################

數據庫連接相關設置

最大連接數,可設最大值16384,一般考慮根據同時在線人數設置一個比較綜合的數字,鑒于該數值增大并不太消耗系統資源,建議直接設10000

如果在訪問時經常出現Too Many Connections的錯誤提示,則需要增大該參數值

max_connections = 10000

默認值100,最大錯誤連接數,如果有超出該參數值個數的中斷錯誤連接,則該主機將被禁止連接。如需對該主機進行解禁,執行:FLUSH HOST

考慮高并發場景下的容錯,建議加大。

max_connect_errors = 10000

MySQL打開的文件描述符限制,默認最小1024;

當open_files_limit沒有被配置的時候,比較max_connections*5和ulimit -n的值,哪個大用哪個,

當open_file_limit被配置的時候,比較open_files_limit和max_connections*5的值,哪個大用哪個。

open_files_limit = 65535

注意:仍然可能出現報錯信息Can't create a new thread;此時觀察系統cat /proc/mysql進程號/limits,觀察進程ulimit限制情況

過小的話,考慮修改系統配置表,/etc/security/limits.conf和/etc/security/limits.d/90-nproc.conf

MySQL默認的wait_timeout 值為8個小時, interactive_timeout參數需要同時配置才能生效

MySQL連接閑置超過一定時間后(單位:秒,此處為1800秒)將會被強行關閉

interactive_timeout = 1800

wait_timeout = 1800

在MySQL暫時停止響應新請求之前的短時間內多少個請求可以被存在堆棧中

官方建議back_log = 50 + (max_connections / 5),封頂數為900

back_log = 900

##########################################################################################################

數據庫數據交換設置

該參數限制服務器端,接受的數據包大小,如果有BLOB子段,建議增大此值,避免寫入或者更新出錯。有BLOB子段,建議改為1024M

max_allowed_packet = 128M

##########################################################################################################

內存,cache與buffer設置

內存臨時表的最大值,默認16M,此處設置成128M

tmp_table_size = 64M

用戶創建的內存表的大小,默認16M,往往和tmp_table_size一起設置,限制用戶臨師表大小。

超限的話,MySQL就會自動地把它轉化為基于磁盤的MyISAM表,存儲在指定的tmpdir目錄下,增大IO壓力,建議內存大,增大該數值。

max_heap_table_size = 64M

表示這個mysql版本是否支持查詢緩存。ps:SHOW STATUS LIKE 'qcache%',與緩存相關的狀態變量。

have_query_cache

這個系統變量控制著查詢緩存工能的開啟的關閉,0時表示關閉,1時表示打開,2表示只要select 中明確指定SQL_CACHE才緩存。

看業務場景決定是否使用緩存,不使用,下面就不用配置了。

query_cache_type = 0

默認值1M,優點是查詢緩沖可以極大的提高服務器速度, 如果你有大量的相同的查詢并且很少修改表。

缺點:在你表經常變化的情況下或者如果你的查詢原文每次都不同,查詢緩沖也許引起性能下降而不是性能提升。

query_cache_size = 64M

只有小于此設定值的結果才會被緩沖,保護查詢緩沖,防止一個極大的結果集將其他所有的查詢結果都覆蓋。

query_cache_limit = 2M

每個被緩存的結果集要占用的最小內存,默認值4kb,一般不怎么調整。

如果Qcache_free_blocks值過大,可能是query_cache_min_res_unit值過大,應該調小些

query_cache_min_res_unit的估計值:(query_cache_size - Qcache_free_memory) / Qcache_queries_in_cache

query_cache_min_res_unit = 4kb

在一個事務中binlog為了記錄SQL狀態所持有的cache大小

如果你經常使用大的,多聲明的事務,你可以增加此值來獲取更大的性能.

所有從事務來的狀態都將被緩沖在binlog緩沖中然后在提交后一次性寫入到binlog中

如果事務比此值大, 會使用磁盤上的臨時文件來替代.

此緩沖在每個連接的事務第一次更新狀態時被創建

binlog_cache_size = 1M

*** MyISAM 相關選項

指定索引緩沖區的大小, 為MYISAM數據表開啟供線程共享的索引緩存,對INNODB引擎無效。相當影響MyISAM的性能。

不要將其設置大于你可用內存的30%,因為一部分內存同樣被OS用來緩沖行數據

甚至在你并不使用MyISAM 表的情況下, 你也需要仍舊設置起 8-64M 內存由于它同樣會被內部臨時磁盤表使用.

默認值 8M,建議值:對于內存在4GB左右的服務器該參數可設置為256M或384M。注意:該參數值設置的過大反而會是服務器整體效率降低!

key_buffer_size = 64M

為每個掃描MyISAM的線程分配參數設置的內存大小緩沖區。

默認值128kb,建議值:16G內存建議1M,4G:128kb或者256kb吧

注意,該緩沖區是每個連接獨占的,所以總緩沖區大小為 128kb連接數;極端情況128kbmaxconnectiosns,會超級大,所以要考慮日常平均連接數。

一般不需要太關心該數值,稍微增大就可以了,

read_buffer_size = 262144

支持任何存儲引擎

MySQL的隨機讀緩沖區大小,適當增大,可以提高性能。

默認值256kb;建議值:得參考連接數,16G內存,有人推薦8M

注意,該緩沖區是每個連接獨占的,所以總緩沖區大小為128kb連接數;極端情況128kbmaxconnectiosns,會超級大,所以要考慮日常平均連接數。

read_rnd_buffer_size = 1M

order by或group by時用到

支持所有引擎,innodb和myisam有自己的innodb_sort_buffer_size和myisam_sort_buffer_size設置

默認值256kb;建議值:得參考連接數,16G內存,有人推薦8M.

注意,該緩沖區是每個連接獨占的,所以總緩沖區大小為 1M連接數;極端情況1Mmaxconnectiosns,會超級大。所以要考慮日常平均連接數。

sort_buffer_size = 1M

此緩沖被使用來優化全聯合(full JOINs 不帶索引的聯合)

類似的聯合在極大多數情況下有非常糟糕的性能表現,但是將此值設大能夠減輕性能影響.

通過 “Select_full_join” 狀態變量查看全聯合的數量

注意,該緩沖區是每個連接獨占的,所以總緩沖區大小為 1M連接數;極端情況1Mmaxconnectiosns,會超級大。所以要考慮日常平均連接數。

默認值256kb;建議值:16G內存,設置8M.

join_buffer_size = 1M

緩存linux文件描述符信息,加快數據文件打開速度

它影響myisam表的打開關閉,但是不影響innodb表的打開關閉。

默認值2000,建議值:根據狀態變量Opened_tables去設定

table_open_cache = 2000

緩存表定義的相關信息,加快讀取表信息速度

默認值1400,最大值2000,建議值:基本不改。

table_definition_cache = 1400

該參數是myssql 5.6后引入的,目的是提高并發。

默認值1,建議值:cpu核數,并且<=16

table_open_cache_instances = 2

當客戶端斷開之后,服務器處理此客戶的線程將會緩存起來以響應下一個客戶而不是銷毀。可重用,減小了系統開銷。

默認值為9,建議值:兩種取值方式,方式一,根據物理內存,1G —> 8;2G —> 16; 3G —> 32; >3G —> 64;

方式二,根據show status like 'threads%',查看Threads_connected值。

thread_cache_size = 16

默認值256k,建議值:16/32G內存,512kb,其他一般不改變,如果報錯:Thread stack overrun,就增大看看,

注意,每個線程分配內存空間,所以總內存空間。。。你懂得。

thread_stack = 512k

##########################################################################################################

日志文件相關設置,一般只開啟三種日志,錯誤日志,慢查詢日志,二進制日志。普通查詢日志不開啟。

普通查詢日志,默認值off,不開啟

general_log = 0

普通查詢日志存放地址

general_log_file = /usr/local/mysql-5.7.21/log/mysql-general.log

全局動態變量,默認3,范圍:1~3

表示錯誤日志記錄的信息,1:只記錄error信息;2:記錄error和warnings信息;3:記錄error、warnings和普通的notes信息。

log_error_verbosity = 2

錯誤日志文件地址

log_error = /usr/local/mysql-5.7.21/log/mysql-error.log

開啟慢查詢

slow_query_log = 1

開啟慢查詢時間,此處為1秒,達到此值才記錄數據

long_query_time = 3

檢索行數達到此數值,才記錄慢查詢日志中

min_examined_row_limit = 100

mysql 5.6.5新增,用來表示每分鐘允許記錄到slow log的且未使用索引的SQL語句次數,默認值為0,不限制。

log_throttle_queries_not_using_indexes = 0

慢查詢日志文件地址

slow_query_log_file = /usr/local/mysql-5.7.21/log/mysql-slow.log

開啟記錄沒有使用索引查詢語句

log-queries-not-using-indexes = 1

開啟二進制日志

log_bin = /usr/local/mysql-5.7.21/log/mysql-bin.log

mysql清除過期日志的時間,默認值0,不自動清理,而是使用滾動循環的方式。

expire_logs_days = 0

如果二進制日志寫入的內容超出給定值,日志就會發生滾動。你不能將該變量設置為大于1GB或小于4096字節。 默認值是1GB。

max_binlog_size = 1000M

binlog的格式也有三種:STATEMENT,ROW,MIXED。mysql 5.7.7后,默認值從 MIXED 改為 ROW

關于binlog日志格式問題,請查閱網絡資料

binlog_format = row

默認值N=1,使binlog在每N次binlog寫入后與硬盤同步,ps:1最慢

sync_binlog = 1

##########################################################################################################

innodb選項

說明:該參數可以提升擴展性和刷臟頁性能。

默認值1,建議值:4-8;并且必須小于innodb_buffer_pool_instances

innodb_page_cleaners = 4

說明:一般8k和16k中選擇,8k的話,cpu消耗小些,selcet效率高一點,一般不用改

默認值:16k;建議值:不改,

innodb_page_size = 16384

說明:InnoDB使用一個緩沖池來保存索引和原始數據, 不像MyISAM.這里你設置越大,你在存取表里面數據時所需要的磁盤I/O越少.

在一個獨立使用的數據庫服務器上,你可以設置這個變量到服務器物理內存大小的60%-80%

注意別設置的過大,會導致system的swap空間被占用,導致操作系統變慢,從而減低sql查詢的效率

默認值:128M,建議值:物理內存的60%-80%

innodb_buffer_pool_size = 512M

說明:只有當設置 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

說明:mysql 5.7 新特性,defines the chunk size for online InnoDB buffer pool resizing operations.

實際緩沖區大小必須為innodb_buffer_pool_chunk_sizeinnodb_buffer_pool_instances倍數,取略大于innodb_buffer_pool_size

默認值128M,建議值:默認值就好,亂改反而容易出問題,它會影響實際buffer pool大小。

innodb_buffer_pool_chunk_size = 128M

在啟動時把熱數據加載到內存。默認值為on,不修改

innodb_buffer_pool_load_at_startup = 1

在關閉時把熱數據dump到本地磁盤。默認值為on,不修改

innodb_buffer_pool_dump_at_shutdown = 1

說明:影響Innodb緩沖區的刷新算法,建議從小到大配置,直到zero free pages;innodb_lru_scan_depth * innodb_buffer_pool_instances defines the amount of work performed by the page cleaner thread each second.

默認值1024,建議值: 未知

innodb_lru_scan_depth = 1024

說明:事務等待獲取資源等待的最長時間,單位為秒,看具體業務情況,一般默認值就好

默認值:50,建議值:看業務。

innodb_lock_wait_timeout = 60

說明:設置了Mysql后臺任務(例如頁刷新和merge dadta from buffer pool)每秒io操作的上限。

默認值:200,建議值:方法一,單盤sata設100,sas10,raid10設200,ssd設2000,fushion-io設50000;方法二,通過測試工具獲得磁盤io性能后,設置IOPS數值/2。

innodb_io_capacity = 2000

說明:該參數是所有緩沖區線程io操作的總上限。

默認值:innodb_io_capacity的兩倍。建議值:例如用iometer測試后的iops數值就好

innodb_io_capacity_max = 4000

說明:控制著innodb數據文件及redo log的打開、刷寫模式,三種模式:fdatasync(默認),O_DSYNC,O_DIRECT

fdatasync:數據文件,buffer pool->os buffer->磁盤;日志文件,buffer pool->os buffer->磁盤;

O_DSYNC: 數據文件,buffer pool->os buffer->磁盤;日志文件,buffer pool->磁盤;

O_DIRECT: 數據文件,buffer pool->磁盤; 日志文件,buffer pool->os buffer->磁盤;

默認值為空,建議值:使用SAN或者raid,建議用O_DIRECT,不懂測試的話,默認生產上使用O_DIRECT

innodb_flush_method = O_DIRECT

說明:mysql5.7之后默認開啟,意思是,每張表一個獨立表空間。

默認值1,開啟

innodb_file_per_table = 1

說明:The path where InnoDB creates undo tablespaces.通常等于undo log文件的存放目錄。

默認值./;自行設置

innodb_undo_directory = /usr/local/mysql-5.7.21/log

說明:The number of undo tablespaces used by InnoDB.等于undo log文件數量。5.7.21后開始棄用

默認值為0,建議默認值就好,不用調整了。

innodb_undo_tablespaces = 0

說明:定義undo使用的回滾段數量。5.7.19后棄用

默認值128,建議不動,以后棄用了。

innodb_undo_logs = 128

說明:5.7.5后開始使用,在線收縮undo log使用的空間。

默認值:關閉,建議值:開啟

innodb_undo_log_truncate = 1

說明:結合innodb_undo_log_truncate,實現undo空間收縮功能

默認值:1G,建議值,不改。

innodb_max_undo_log_size = 1G

說明:重作日志文件的存放目錄

innodb_log_group_home_dir = /usr/local/mysql-5.7.21/log

說明:日志文件的大小

默認值:48M,建議值:根據你系統的磁盤空間和日志增長情況調整大小

innodb_log_file_size = 128M

說明:日志組中的文件數量,mysql以循環方式寫入日志

默認值2,建議值:根據你系統的磁盤空間和日志增長情況調整大小

innodb_log_files_in_group = 3

此參數確定些日志文件所用的內存大小,以M為單位。緩沖區更大能提高性能,但意外的故障將會丟失數據。MySQL開發人員建議設置為1-8M之間

innodb_log_buffer_size = 16M

說明:可以控制log從系統buffer刷入磁盤文件的刷新頻率,增大可減輕系統負荷

默認值是1;建議值不改。系統性能一般夠用。

innodb_flush_log_at_timeout = 1

說明:參數可設為0,1,2;

參數0:表示每秒將log buffer內容刷新到系統buffer中,再調用系統flush操作寫入磁盤文件。

參數1:表示每次事物提交,將log buffer內容刷新到系統buffer中,再調用系統flush操作寫入磁盤文件。

參數2:表示每次事物提交,將log buffer內容刷新到系統buffer中,隔1秒后再調用系統flush操作寫入磁盤文件。

innodb_flush_log_at_trx_commit = 1

說明:限制Innodb能打開的表的數據,如果庫里的表特別多的情況,請增加這個。

值默認是2000,建議值:參考數據庫表總數再進行調整,一般夠用不用調整。

innodb_open_files = 8192

innodb處理io讀寫的后臺并發線程數量,根據cpu核來確認,取值范圍:1-64

默認值:4,建議值:與邏輯cpu數量的一半保持一致。

innodb_read_io_threads = 4

innodb_write_io_threads = 4

默認設置為 0,表示不限制并發數,這里推薦設置為0,更好去發揮CPU多核處理能力,提高并發量

innodb_thread_concurrency = 0

默認值為4,建議不變。InnoDB中的清除操作是一類定期回收無用數據的操作。mysql 5.5之后,支持多線程清除操作。

innodb_purge_threads = 4

說明:mysql緩沖區分為new blocks和old blocks;此參數表示old blocks占比;

默認值:37,建議值,一般不動

innodb_old_blocks_pct = 37

說明:新數據被載入緩沖池,進入old pages鏈區,當1秒后再次訪問,則提升進入new pages鏈區。

默認值:1000

innodb_old_blocks_time=1000

說明:開啟異步io,可以提高并發性,默認開啟。

默認值為1,建議不動

innodb_use_native_aio = 1

說明:默認為空,使用data目錄,一般不改。

innodb_data_home_dir=/usr/local/mysql-5.7.21/data

說明:Defines the name, size, and attributes of InnoDB system tablespace data files.

默認值,不指定,默認為ibdata1:12M:autoextend

innodb_data_file_path = ibdata1:12M:autoextend

說明:設置了InnoDB存儲引擎用來存放數據字典信息以及一些內部數據結構的內存空間大小,除非你的數據對象及其多,否則一般默認不改。

innodb_additional_mem_pool_size = 16M

說明:The crash recovery mode。只有緊急情況需要恢復數據的時候,才改為大于1-6之間數值,含義查下官網。

默認值為0;

innodb_force_recovery = 0

##########################################################################################################

其他。。。。

skip-external-locking

禁止MySQL對外部連接進行DNS解析,使用這一選項可以消除MySQL進行DNS解析的時間。

缺點:所有遠程主機連接授權都要使用IP地址方式,因為只認得ip地址了。

skip_name_resolve = 0

默認值為off,timestamp列會自動更新為當前時間,設置為on|1,timestamp列的值就要顯式更新

explicit_defaults_for_timestamp = 1

[mysqldump]

quick選項強制 mysqldump 從服務器查詢取得記錄直接輸出而不是取得所有記錄后將它們緩存到內存中

quick

max_allowed_packet = 16M

[mysql]

mysql命令行工具不使用自動補全功能,建議還是改為

no-auto-rehash

auto-rehash

socket = /tmp/mysql.sock

總結

以上是生活随笔為你收集整理的mysql my.cnf 官网_MySQL my.cnf 的配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。