mysql基礎配置檔案 MySQL 配置基礎

2021-10-18 08:57:26 字數 4705 閱讀 7614

mysql作為一種常見的資料庫管理系統(dbms),其自身的各種配置項極大的影響了其效能。所以有必要進行了解和學習。

配置學習資源途徑

mysql配置

配置檔案位置:

一般來說,mysql服務端配置檔案的預設位置是:/etc/my.cnf 或者 /etc/mysql/my.cnf

【也可以通過mysqld --verbose --help|grep -a 1 'default option'確認配置檔案的位置】和nginx類似,也可以選擇分目錄進行include,便於管理整體配置結構。 (比如 !includedir /etc/my.cnf.d 然後在my.conf.d目錄裡對不同的配置項分檔案。

配置修改基礎:

2、配置項有不同的作用域,有的是全域性,有的是會話。其次,還有動態變數,可在執行時修改。【也就是說,大部分非動態變數需要重啟才能生效】

3、全域性變數:修改後對當前會話及已存在的會話均不生效。可通過show global variables確認。

4、變數的單位:配置時要注意單位,命令列或者配置檔案,可以使用字尾指定單位(比如1m等,但要注意,使用sql的set指令時就不能使用單位。

5、配置檔案管理:最好使用git來進行版本管理,加上充足的注釋。可以避免不少問題。

如何建立乙個靠譜的mysql配置?

1、乙個好的配置,不是從學習配置項開始,也不是詢問怎麼設定或者怎麼修改,更不是觀察伺服器行為和詢問哪個配置可以提公升效能。

【應該是從理解mysql核心和行為開始】

2、保證基礎配置都正確(比如日誌路徑,快取配置,埠號,資料庫儲存位置等。如非必要,盡量使用預設配置。(預設配置經受過的測試是最多的。

3、優先進行語句優化等其他優化,最後考慮修改配置項。

乙個最小配置示例

一般來說,選擇盡量少的配置(或者說最小配置),如無必要,不用宣告(不宣告使用預設值)。當然一些非常重要的配置項,即使使用預設配置,也最好宣告出來。(比如default_storage_engine)[mysqld]

#general

datadir = /var/lib/mysql

socket = /var/lib/mysql/mysql.sock

pid-file = /var/lib/mysql/mysqld.pid

user = mysql

port = 3306

default_storage_engine = innodb

#innodb

innodb_buffer_pool_size = 256m #核心配置,需要根據實際情況調整

innodb_log_file_size = 50m #需要根據實際情況調整

innodb_file_per_table = 1 #需要根據實際情況調整

innodb_flush_method = o_direct #這裡是字母o,不是數字0

#logging

log-error = /var/log/mysql-error.log

slow_query_log = /var/log/mysql-slow.log

#other

tmp_table_size = 32m #需要根據實際情況調整

max_heap_table_size = 32m #需要根據實際情況調整

#query_cache_type = 0 #mysql 8.0有變動,引數名不是這個

#query_cache_size = 0 #mysql 8.0有變動,引數名不是這個

max_connections = 100 #需要根據實際情況調整

thread_cache_size = 50 #根據其餘引數調整執行緒快取

table_open_cache = 10 #根據 opened_tables 調整

open_files_limit = 65535 #盡量調大,配合核心引數

[client]

socket = /var/lib/mysql/mysql.sock

port = 3306

配置檔案解釋:

1、innodb的配置項:innodb_buffer_pool_size 【最核心配置,innodb嚴重依賴緩衝池。索引、行資料快取、雜湊索引,插入快取、鎖等。必須為innodb配置足夠的緩衝池。 一般為記憶體的75%-80%,建議配置的稍低,根據情況增加比例。[ 《高效能mysql》p343

innodb任意時刻可以保持開啟.idb檔案的數量是有限的,由如下兩個引數控制:

innodb_file_per_table:when innodb_file_per_table is enabled, tables are created in file-per-table tablespaces by default.

innodb_open_files:it specifies the maximum number of .ibd files that mysql can keep open at one time.

2、mysql配置項:執行緒快取(thread_cache_size):

[引數]thread_cache_size:可以保持在快取中的執行緒數。

當關閉乙個連線時,會將這個連線的執行緒放入快取(如果快取有空間)。下次可以直接讀快取,而非重新建立連線。

[狀態]thread_cached:當前已經快取了的執行緒數。

[狀態]threads_created:每秒建立的新執行緒數,(如果每秒要建立很多執行緒,那需要考慮增加快取大小

[狀態]threads_connectd:當前正在連線中的執行緒數。

表快取:

[引數]table_open_cache:如果[狀態]opened_tables很大,或者一直在增長。考慮增加這個引數。

[引數]table_definition_cache:通常都可以配置的比較高,最好可以快取下所有表的定義。【除非有上萬張表】

配置修改後的生效與確認

了解了基礎配置,修改了配置檔案。還需要關注配置的生效問題。

有的動態配置修改之後就馬上生效。有的全域性配置需要重啟才能生效。systemctl restart mysqld

重啟後,還需要獲取變數值進行確認,是否配置變數符合預期。

如何確認mysql的配置/狀態?

1、show global status 及 show status

檢視資料庫當前的狀態引數。(確認當前運**況)

2、show variables

檢視資料庫的配置引數。(也可直接進行過濾搜尋,確認預設配置值)

【ps:1和2都可通過where等語句進行篩選過濾。比如:show variables where variable_name like 'inno%pool%size%';

【或者說show語句本質也是在查資料庫。只不過是描述資料庫本身的資料

3、[shell]mysqladmin extended-status -ri60

每60秒檢視狀態變數的增值

具體可參考:

4、status

檢視mysql基礎資訊,包括版本,字符集,socket,執行緒數等。

自己在學習過程中,遇到的其他問題

0、yum安裝mysql的步驟

首先是獲取rpm包,通過如下兩個連線均可。檔名類似這樣mysql57-community-release-el7-3.noarch.rpm。

隨後rpm -ivh ***.rpm匯入包,yum makecache生成快取。最後yum install -y mysql-community-.x86_64即可完成安裝。(一般來說,這4個元件就足夠了。)

1、yum安裝mysql後,初次登入和密碼問題

首先確認/etc/my.cnf配置,確認err-log的配置。(一般預設是/var/log/mysqld.log)然後檢視錯誤日誌,即可發現臨時密碼。再使用sudo mysql -uroot -p'tmp_passwd'即可登入。

參考:5.7.6之後:alter user user() identified by 'newpasswd';

2、[小結]如何修改配置?修改之後何時生效?如何確認修改後的值是否正確?修改配置:通過show variables where *** 確認變數當前數值,確認修改變數是否是動態生效。修改mysql配置檔案並儲存(一般是/etc/my.cnf)

何時生效?:動態變數即時生效,全域性變數重啟生效[對之前的會話和當前會話都不生效],會話變數不確定(?待確認)

如何確認?:也可通過show variables和show status加上where等語句進行篩選(前者為配置變數,後者為當前的狀態),確認配置變數是否符合預期。(比如show variables where variable_name = 'innodb_buffer_pool_size';)

3、mysql內部的help

連線上mysql命令列之後,可以方便的使用help查詢不確定的命令。比如help create檢視可以建立什麼,help create database確認怎麼建立新庫的語法。

建立資料庫表的方法也不難:create table test (

列名 資料型別 限制,

id integer primary key,

4、其他小問題可以通過select database();和status;來確認,自己當前在哪個資料庫。

innodb_flush_method = o_direct這裡是字母o不是數字0

小結本文主要講述了mysql配置的基礎知識,包括配置檔案的位置、配置項的分段([mysqld])、作用域、還有配置變數的查詢及當前狀態變數確認。

而且對少量配置變數進行了解釋。

更多配置項的解釋都可通過官網確認。

mysql簡單配置檔案 MySQL配置檔案

mysql配置檔案 在windows下是my.ini,而在linux下是my.cnf。基本引數 port 3306 埠號 server id 1 basedir c program files mysql mysql server 5.5 基準路徑,其他路徑都相對於這個路徑 datadir c pr...

mysql 配置檔案

max connections 針對所有的賬號所有的客戶端並行連線到mysql辦事的最大並行連線數。簡單說是指mysql辦事可以或許同時接管的最大並行連線數。1 1.25mb記憶體 max user connections 針對某乙個賬號的所有客戶端並行連線到mysql辦事的最大並行連線數。簡單說是...

Mysql 配置檔案

mysql安裝使用 initialize 初始化資料庫,如果想通過配置檔案修改引數,而未通過使用 defaults file filepath 指定配置檔案,則配置檔名一定要為 my.ini windows 或 my.cnf linux mysql缺省會讀取my.ini配置檔案 修改字元編碼為utf...