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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mariadb mysql 配置文件_MariaDB/MySQL配置文件my.cnf解读

發(fā)布時(shí)間:2023/12/3 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mariadb mysql 配置文件_MariaDB/MySQL配置文件my.cnf解读 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

MariaDB/MySQL的默認(rèn)設(shè)置性能非常差,僅僅起一個(gè)功能測試的作用,不能用在生產(chǎn)環(huán)境中,因此要對一些參數(shù)進(jìn)行調(diào)整優(yōu)化。當(dāng)然,對配置文件各參數(shù)的調(diào)整需要根據(jù)實(shí)際環(huán)境,不同時(shí)期不同數(shù)量級(jí)的數(shù)據(jù)進(jìn)行性能優(yōu)化。

MySQL/MariaDB 配置文件位于 /etc/my.cnf。 每次更改此文件后你需要重啟 MySQL 服務(wù),以使更改生效。本文的參數(shù)配置基于MariaDB 10.2,硬件內(nèi)存4G。文中一些選項(xiàng)值的設(shè)置只是推薦值,不要盲目的接受這些建議。每個(gè) MySQL 設(shè)置都是不同的,在進(jìn)行任何更改之前需要慎重考慮。

基本結(jié)構(gòu)

[client]

port = 3306 #客戶端默認(rèn)連接端口

socket = /tmp/mysql.sock #用于本地連接的socket套接字

[mysqld] # 服務(wù)端基本配置

port = 3306 # mysql監(jiān)聽端口

socket = /tmp/mysql.sock #為MySQL客戶端程序和服務(wù)器之間的本地通訊指定一個(gè)套接字文件

user = mariadb # mysql啟動(dòng)用戶

basedir = /usr/local/mariadb # 安裝目錄

datadir = /data/mysql # 數(shù)據(jù)庫數(shù)據(jù)文件存放目錄

log_error = /data/mysql/mariadb.err #記錄錯(cuò)誤日志文件

pid-file = /data/mysql/mariadb.pid #pid所在的目錄

skip-external-locking #不使用系統(tǒng)鎖定,要使用myisamchk,必須關(guān)閉服務(wù)器

...

my.cnf配置文件以方括號(hào)如[client]區(qū)分模塊作用域,其中[client]表示客戶端配置,[mysqld]是服務(wù)端配置。以上幾個(gè)選項(xiàng)是最基礎(chǔ)的,每個(gè)選項(xiàng)有簡單說明,其中有關(guān)路徑的配置是基于本站文章:CentOS7下源碼編譯安裝MariaDB 10.2和Linux下使用二進(jìn)制格式安裝MariaDB的安裝路徑來配置的,所以在配置前可以先按照兩文先安裝好MairaDB。

選項(xiàng)配置及說明

key_buffer_size = 32M 這個(gè)參數(shù)用來緩存MyISAM存儲(chǔ)引擎的索引參數(shù)。MySQL5.5默認(rèn)為InnoDB存儲(chǔ)引擎,所以這個(gè)參數(shù)可以設(shè)置小點(diǎn),64MB即可。

max_allowed_packet = 1M 允許最大接收數(shù)據(jù)包的大小,防止服務(wù)器發(fā)送過大的數(shù)據(jù)包??梢栽O(shè)置為16MB或者更大,但設(shè)置的太大也可能有危險(xiǎn)。

table_open_cache = 128 #MySQL每打開一個(gè)表,都會(huì)讀入一些數(shù)據(jù)到table_open_cache緩存中,當(dāng)MySQL在這個(gè)緩存中找不到相應(yīng)信息時(shí),才會(huì)去磁盤上讀取。默認(rèn)值64,假定系統(tǒng)有200個(gè)并發(fā)連接,則需將此參數(shù)設(shè)置為200*N(N為每個(gè)連接所需的文件描述符數(shù)目);當(dāng)把table_open_cache設(shè)置為很大時(shí),如果系統(tǒng)處理不了那么多文件描述符,那么就會(huì)出現(xiàn)客戶端失效,連接不上。

sort_buffer_size = 768K 在表進(jìn)行order by和group by排序操作時(shí),由于排序的字段沒有索引,會(huì)出現(xiàn)Using filesort,為了提高性能,可用此參數(shù)增加每個(gè)線程分配的緩沖區(qū)大小。默認(rèn)為256KB,這個(gè)參數(shù)不要設(shè)置過大,一般在128~256KB即可。另外,一般出現(xiàn)Using filesort的時(shí)候,要通過增加索引來解決。

net_buffer_length = 8K 包消息緩沖區(qū)初始化為net_buffer_length字節(jié),但需要時(shí)可以增長到max_allowed_packet字節(jié)。

read_buffer_size = 768K 該參數(shù)用于表的順序掃描,表示每個(gè)線程分配的緩沖區(qū)大小。比如在進(jìn)行全表掃描時(shí),MySQL會(huì)按照數(shù)據(jù)的存儲(chǔ)順序依次讀取數(shù)據(jù)塊,每次讀取的數(shù)據(jù)塊首先會(huì)暫存在read_buffer_size中,當(dāng)buffer空間被寫滿或者全部數(shù)據(jù)讀取結(jié)束后,再將buffer中的數(shù)據(jù)返回給上層調(diào)用者,以提高效率。默認(rèn)為128K,這個(gè)參數(shù)不要設(shè)置過大,一般在128~256之間。

read_rnd_buffer_size = 512K 該參數(shù)用于表的隨機(jī)讀取,表示每個(gè)線程分配的緩沖區(qū)大小。比如,按照一個(gè)非索引字段做order by排序操作時(shí),就會(huì)利用這個(gè)緩沖區(qū)來暫存讀取的數(shù)據(jù)。默認(rèn)為256KB,這個(gè)參數(shù)不要設(shè)置過大,一般在128~512KB。

myisam_sort_buffer_size = 8M 當(dāng)對MyISAM表執(zhí)行repair table或創(chuàng)建索引時(shí),用以緩存排序索引;設(shè)置太小時(shí)可能會(huì)遇到” myisam_sort_buffer_size is too small”

thread_cache_size = 16 線程池,線程緩存。用來緩存空閑的線程,以至于不被銷毀,如果線程緩存在的空閑線程,需要重新建立新連接,則會(huì)優(yōu)先調(diào)用線程池中的緩存,很快就能響應(yīng)連接請求。每建立一個(gè)連接,都需要一個(gè)線程與之匹配。

query_cache_size = 16M 緩存select語句和結(jié)果集大小的參數(shù)。查詢緩存會(huì)存儲(chǔ)一個(gè)select查詢的文本與被傳送到客戶端的相應(yīng)結(jié)果。如果之后接收到一個(gè)相同的查詢,服務(wù)器會(huì)從查詢緩存中檢索結(jié)果,而不是再次分析和執(zhí)行這個(gè)同樣的查詢。如果你的環(huán)境中寫操作很少,讀操作頻繁,那么打開query_cache_type=1,會(huì)對性能有明顯提升。如果寫操作頻繁,則應(yīng)該關(guān)閉它(query_cache_type=0)。

tmp_table_size = 32M 臨時(shí)HEAP數(shù)據(jù)表的最大長度(默認(rèn)設(shè)置是32M); 超過這個(gè)長度的臨時(shí)數(shù)據(jù)表將被轉(zhuǎn)換為MyISAM數(shù)據(jù)表并存入一個(gè)臨時(shí)文件。

explicit_defaults_for_timestamp = true 是否顯示默認(rèn)時(shí)間戳

#skip-networking

max_connections = 500 該參數(shù)用來設(shè)置最大連接數(shù),告訴你當(dāng)前你的服務(wù)器允許多少并發(fā)連接。默認(rèn)為100,一般設(shè)置為512-1000即可。請記住,太多的連接會(huì)導(dǎo)致內(nèi)存的使用量過高并且會(huì)鎖住你的 MySQL 服務(wù)器。一般小網(wǎng)站需要 100-200 的連接數(shù),而較大可能需要 500-800 甚至更多。這里的值很大程度上取決于你 MySQL/MariaDB 的使用情況。

max_connect_errors = 100 如果有時(shí)網(wǎng)絡(luò)抽風(fēng),或者應(yīng)用配置錯(cuò)誤,或者其他原因?qū)е驴蛻舳硕虝r(shí)間內(nèi)不斷的嘗試連接,客戶端可能會(huì)被列入黑名單,然后將無法連接,直到再次刷新主機(jī)緩存。這個(gè)選項(xiàng)默認(rèn)值太小了,可以考慮設(shè)的足夠大(如果你的服務(wù)器配置夠強(qiáng)大的話)。

open_files_limit = 65535 mysql打開最大文件數(shù)

log-bin=mysql-bin 這些路徑相對于datadir

binlog_format=mixed 日志格式

server-id = 1 給服務(wù)器分配一個(gè)獨(dú)一無二的ID編號(hào); n的取值范圍是1~2的32次方啟用二進(jìn)制日志功能。在復(fù)制數(shù)據(jù)同步的時(shí)候會(huì)用到,Helloweba后面會(huì)有文章介紹。

expire_logs_days = 10 啟用二進(jìn)制日志后,保留日志的天數(shù)。服務(wù)器會(huì)自動(dòng)清理指定天數(shù)前的日志文件,如果不設(shè)置則會(huì)導(dǎo)致服務(wù)器空間耗盡。一般設(shè)置為7~14天。

default_storage_engine = InnoDB 新數(shù)據(jù)表的默認(rèn)存儲(chǔ)引擎(默認(rèn)設(shè)置是MyISAM)。這項(xiàng)設(shè)置還可以通過–default-table-type選項(xiàng)來設(shè)置。

innodb_file_per_table = 1 InnoDB 提供了更靈活的方式,它把每個(gè)數(shù)據(jù)庫的信息保存在一個(gè) .ibd 數(shù)據(jù)文件中。每個(gè) .idb 文件代表它自己的表空間。通過這樣的方式可以更快地完成類似 “TRUNCATE” 的數(shù)據(jù)庫操作,當(dāng)刪除或截?cái)嘁粋€(gè)數(shù)據(jù)庫表時(shí),你也可以回收未使用的空間。這樣配置的另一個(gè)好處是你可以將某些數(shù)據(jù)庫表放在一個(gè)單獨(dú)的存儲(chǔ)設(shè)備。這可以大大提升你磁盤的 I/O 負(fù)載。

innodb_data_home_dir = /data/mysql InnoDB主目錄,所有與InnoDB數(shù)據(jù)表有關(guān)的目錄或文件路徑都相對于這個(gè)路徑。在默認(rèn)的情況下,這個(gè)主目錄就是MySQL的數(shù)據(jù)目錄。

innodb_data_file_path = ibdata1:10M:autoextend 用來容納InnoDB為數(shù)據(jù)表的表空間: 可能涉及一個(gè)以上的文件; 每一個(gè)表空間文件的最大長度都必須以字節(jié)(B)、兆字節(jié)(MB)或千兆字節(jié)(GB)為單位給出; 表空間文件的名字必須以分號(hào)隔開; 最后一個(gè)表空間文件還可以帶一個(gè)autoextend屬性和一個(gè)最大長度(max:n)。

innodb_log_group_home_dir = /data/mysql 用來存放InnoDB日志文件的目錄路徑(如ib_logfile0、ib_logfile1等)。在默認(rèn)的情況下,InnoDB驅(qū)動(dòng)程序?qū)⑹褂?MySQL數(shù)據(jù)目錄作為自己保存日志文件的位置。

innodb_buffer_pool_size = 128M 這個(gè)參數(shù)是InnoDB存儲(chǔ)引擎的核心參數(shù),默認(rèn)為128KB,這個(gè)參數(shù)要設(shè)置為物理內(nèi)存的60%~70%。

innodb_log_file_size = 32M 事務(wù)日志文件寫操作緩存區(qū)的最大長度(默認(rèn)設(shè)置是1MB)。

innodb_log_buffer_size = 8M 事務(wù)日志所使用的緩存區(qū)。InnoDB在寫事務(wù)日志的時(shí)候,為了提高性能,先將信息寫入Innodb Log Buffer中,當(dāng)滿足innodb_flush_log_trx_commit參數(shù)所設(shè)置的相應(yīng)條件(或者日志緩沖區(qū)寫滿)時(shí),再將日志寫到文件(或者同步到磁盤)中??梢酝ㄟ^innodb_log_buffer_size參數(shù)設(shè)置其可以使用的最大內(nèi)存空間。默認(rèn)是8MB,一般為16~64MB即可。

innodb_flush_log_at_trx_commit = 1 這個(gè)選項(xiàng)決定著什么時(shí)候把日志信息寫入日志文件以及什么時(shí)候把這些文件物理地寫(術(shù)語稱為”同步”)到硬盤上。設(shè)置值0的意思是每隔一秒寫一次日 志并進(jìn)行 同步,這可以減少硬盤寫操作次數(shù),但可能造成數(shù)據(jù)丟失; 設(shè)置值1(設(shè)置設(shè)置)的意思是在每執(zhí)行完一條COMMIT命令就寫一次日志并進(jìn)行同步,這可以防止數(shù)據(jù)丟失,但硬盤寫操作可能會(huì)很頻繁; 設(shè)置值2是一般折衷的辦法,即每執(zhí)行完一條COMMIT命令寫一次日志,每隔一秒進(jìn)行一次同步。

innodb_lock_wait_timeout = 50 如果某個(gè)事務(wù)在等待n秒(s)后還沒有獲得所需要的資源,就使用ROLLBACK命令放棄這個(gè)事務(wù)。這項(xiàng)設(shè)置對于發(fā)現(xiàn)和處理未能被InnoDB數(shù)據(jù)表驅(qū)動(dòng) 程序識(shí)別出來的死鎖條件有著重要的意義。這個(gè)選項(xiàng)的默認(rèn)設(shè)置是50s。

示例:內(nèi)存4G的my.cnf配置

[client]

port = 3306

socket = /tmp/mysql.sock

[mysqld]

port = 3306

socket = /tmp/mysql.sock

user = mariadb

basedir = /usr/local/mariadb

datadir = /data/mysql

log_error = /data/mysql/mariadb.err

pid-file = /data/mysql/mariadb.pid

skip-external-locking

key_buffer_size = 64M

max_allowed_packet = 1M

table_open_cache = 256

sort_buffer_size = 1M

net_buffer_length = 8K

read_buffer_size = 1M

read_rnd_buffer_size = 512K

myisam_sort_buffer_size = 16M

thread_cache_size = 32

query_cache_size = 32M

tmp_table_size = 64M

explicit_defaults_for_timestamp = true

#skip-networking

max_connections = 500

max_connect_errors = 100

open_files_limit = 65535

log-bin=mysql-bin

binlog_format=mixed

server-id = 1

expire_logs_days = 10

default_storage_engine = InnoDB

innodb_file_per_table = 1

innodb_data_home_dir = /data/mysql

innodb_data_file_path = ibdata1:10M:autoextend

innodb_log_group_home_dir = /data/mysql

innodb_buffer_pool_size = 256M

innodb_log_file_size = 64M

innodb_log_buffer_size = 8M

innodb_flush_log_at_trx_commit = 1

innodb_lock_wait_timeout = 50

[mysqldump]

quick

max_allowed_packet = 16M

[mysql]

no-auto-rehash

[myisamchk]

key_buffer_size = 64M

sort_buffer_size = 1M

read_buffer = 2M

write_buffer = 2M

[mysqlhotcopy]

interactive-timeout

總結(jié)

以上是生活随笔為你收集整理的mariadb mysql 配置文件_MariaDB/MySQL配置文件my.cnf解读的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。