mysql編譯安裝參數詳解(mysql的安裝配置)

本文目錄一覽:

MySQL cmake編譯時這些參數是什麼意思

MySQL cMake 常規參數介紹

-DCMAKE_INSTALL_PREFIX= 指向mysql安裝目錄

-DINSTALL_SBINDIR=sbin 指向可執行文件目錄(prefix/sbin)

-DMYSQL_DATADIR=/var/lib/mysql 指向mysql數據文件目錄(/var/lib/mysql)

-DSYSCONFDIR=/etc/mysql 指向mysql配置文件目錄(/etc/mysql)

-DINSTALL_PLUGINDIR=lib/mysql/plugin 指向插件目錄(prefix/lib/mysql/plugin)

-DINSTALL_MANDIR=share/man 指向man文檔目錄(prefix/share/man)

-DINSTALL_SHAREDIR=share 指向aclocal/mysql.m4安裝目錄(prefix/share)

-DINSTALL_LIBDIR=lib/mysql 指向對象代碼庫目錄(prefix/lib/mysql)

-DINSTALL_INCLUDEDIR=include/mysql 指向頭文件目錄(prefix/include/mysql)

-DINSTALL_INFODIR=share/info 指向info文檔存放目錄(prefix/share/info)

prefix官方推薦設為/usr

類型csv,myisam,myisammrg,heap,innobase,archive,blackhole

若想啟用某個引擎的支持:-DWITH_ENGINE_STORAGE_ENGINE=1

如:

-DWITH_INNOBASE_STORAGE_ENGINE=1

-DWITH_ARCHIVE_STORAGE_ENGINE=1

-DWITH_BLACKHOLE_STORAGE_ENGINE=1

若想禁用某個引擎的支持:-DWITHOUT_ENGINE_STORAGE_ENGINE=1

如:

-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1

-DWITHOUT_FEDERATED_STORAGE_ENGINE=1

-DWITHOUT_PARTITION_STORAGE_ENGINE=1

-DWITH_READLINE=1 啟用readline庫支持(提供可編輯的命令行)

-DWITH_SSL=system 啟用ssl庫支持(安全套接層)

-DWITH_ZLIB=system 啟用libz庫支持(zib、gzib相關)

-DWTIH_LIBWRAP=0 禁用libwrap庫(實現了通用TCP包裝的功能,為網絡服務守護進程使用)

-DMYSQL_TCP_PORT=3306 指定TCP端口為3306

-DMYSQL_UNIX_ADDR=/tmp/mysqld.sock 指定mysql.sock路徑

-DENABLED_LOCAL_INFILE=1 啟用本地數據導入支持

-DEXTRA_CHARSETS=all 啟用額外的字符集類型(默認為all)

-DDEFAULT_CHARSET=utf8 指定默認的字符集為utf8

-DDEFAULT_COLLATION=utf8_general_ci 設定默認排序規則(utf8_general_ci快速/utf8_unicode_ci準確)

-DWITH_EMBEDDED_SERVER=1 編譯嵌入式服務器支持

-DMYSQL_USER=mysql 指定mysql用戶(默認為mysql)

-DWITH_DEBUG=0 禁用debug(默認為禁用)

-DENABLE_PROFILING=0 禁用Profiling分析(默認為開啟)

-DWITH_COMMENT=’string’ 一個關於編譯環境的描述性注釋

小內存編譯安裝mysql要加什麼參數

MySQL內存參數配置推薦:

1.慢查詢日誌:

slow_launch_time=2 查詢大於某個時間的值(單位:s)

slow_query_log=on/off 開啟關閉慢查詢日誌

slow_query_log_file=/opt/data/host-slow.log 慢查詢日誌位置

2.連接數:

max_connections MySQL最大連接數

back_log 當連接數滿了後,設置一個值,允許多少個連接進入等待堆棧

max_connect_errors 賬號連接到服務器允許的錯誤次數

connect_timeout 一個連接報文的最大時間(單位:s)

skip-name-resolve 加入my.cnf即可,MySQL在收到連接請求的時候,會根據請求包

中獲得的ip來反向追查請求者的主機名。然後再根據返回

的主機名又一次去獲取ip。如果兩次獲得的ip相同,那麼連接就成功建立了。

加了次參數,即可省去這個步驟

NOTES:

查詢當前連接數:show global status like ‘connections’;

3.key_buffer_size 索引緩存大小,是對MyISAM表性能影響最大的一個參數

32bit平台上,此值不要超過2GB,64bit平台不用做此限制,但也不要超過4GB

根據3點計算:

a.系統索引總大小

b.系統物理內存

c.系統當前keycache命中率

粗略計算公式:

Key_Size =key_number*(key_length+4)/0.67

Max_key_buffer_size

Threads_Usage = max_connections * (sort_buffer_size + join_buffer_size +

read_buffer_size+read_rnd_buffer_size+thread_stack)

key_cache_block_size ,是key_buffer緩存塊的單位長度,以字節為單位,默認值為1024。

key_cache_division_limit 控制着緩存塊重用算法。默認值為100,此值為key_buffer_size中暖鏈所佔的大小百分比(其中有暖鏈和熱鏈),100意味着全是暖鏈。(類似於Oracle Data Buffer Cache中的default、keep、recycle)

key_cache_age_threshold 如果key_buffer里的熱鏈里的某個緩存塊在這個變量所設定的時間裡沒有被訪問過,MySQL服務器就會把它調整到暖鏈里去。這個參數值越大,緩存塊在熱鏈里停留的時間就越長。

這個參數默認值為 300,最小值為100。

Myisam索引默認是緩存在原始key_buffer中的,我們可以手動創建新的key_buffer,如在my.cnf中加入參數new_cache.key_buffer_size=20M。指定將table1和table2的索引緩存到new_cache的key_buffer中:

cache index table1,table2 in new_cache;

(之前默認的key_buffer為default,現在手動創建的為new_cache)

手動將table1和table2的索引載入到key_buffer中:

load index into cache table1,table2;

系統中記錄的與Key Cache相關的性能狀態參數變量: global status

◆Key_blocks_not_flushed,已經更改但還未刷新到磁盤的DirtyCacheBlock;

◆Key_blocks_unused,目前未被使用的CacheBlock數目;

◆Key_blocks_used,已經使用了的CacheBlock數目;

◆Key_read_requests,CacheBlock被請求讀取的總次數;

◆Key_reads,在CacheBlock中找不到需要讀取的Key信息後到“.MYI”文件中(磁盤)讀取的次數;

◆Key_write_requests,CacheBlock被請求修改的總次數;

◆Key_writes,在CacheBlock中找不到需要修改的Key信息後到“.MYI”文件中讀入再修改的次數;

索引命中緩存率:

key_buffer_read_hits=(1-Key_reads/Key_read_requests)*100%

key_buffer_write_hits=(1-Key_writes/Key_write_requests)*100%

該命中率就代表了MyISAM類型表的索引的cache

4.臨時表 tmp_table_size (用於排序)

show global status like ‘created_tmp%’;

| Variable_name | Value |

| Created_tmp_disk_tables | 21197 | #在磁盤上創建臨時表的次數

| Created_tmp_files | 58 | #在磁盤上創建臨時文件的次數

| Created_tmp_tables | 1771587 | #使用臨時表的總次數

TmpTable的狀況主要是用於監控MySQL使用臨時表的量是否過多,

是否有臨時表過大而不得不從內存中換出到磁盤文件上。

a.如果:

Created_tmp_disk_tables/Created_tmp_tables10%,則需調大tmp_table_size

比較理想的配置是:

Created_tmp_disk_tables/Created_tmp_tables=25%

b.如果:

Created_tmp_tables非常大 ,則可能是系統中排序操作過多,或者是表連接方式不是很優化。

相關參數:

tmp_table_size 內存中,臨時表區域總大小

max_heap_table_size 內存中,單個臨時表的最大值,超過的部分會放到硬盤上。

5.table cache相關優化 :

參數table_open_cache,將表的文件描述符打開,cache在內存中

global status:

open_tables 當前系統中打開的文件描述符的數量

opened_tables 系統打開過的文件描述符的數量

如果:

Opened_tables數量過大,說明配置中table_open_cache值可能太小

比較合適的值為:

Open_tables / Opened_tables * 100% = 85%

Open_tables / table_open_cache * 100% = 95%

6.進程的使用情況

在MySQL中,為了儘可能提高客戶端請求創建連接這個過程的性能,實現了一個ThreadCache池,

將空閑的連接線程存放在其中,而不是完成請求後就銷毀。這樣,當有新的連接請求的時候,

MySQL首先會檢查ThreadCache池中是否存在空閑連接線程,如果存在則取出來直接使用,

如果沒有空閑連接線程,才創建新的連接線程。

參數:thread_cache_size

thread cache 池中存放的最大連接數

調整參考:

在短連接的數據庫應用中,數據庫連接的創建和銷毀是非常頻繁的,

如果每次都需要讓MySQL新建和銷毀相應的連接線程,那麼這個資源消耗實際上是非常大的,因此

thread_cache_size的值應該設置的相對大一些,不應該小於應用系統對數據庫的實際並發請求數。

參數:thread_stack – 每個連接線程被創建的時候,MySQL給他分配的內存大小,

類似PGA中存放數據的內存部分(不包括排序的空間)

show status like ‘connections’;

+—————+——-+

| Variable_name | Value |

+—————+——-+

| Connections | 80 | #接受到的來自客戶端的總連接數,包括以前和現在的連接。

+—————+——-+

show status like ‘thread%’;

+——————-+——-+

| Variable_name | Value |

+——————-+——-+

| Threads_cached | 0 | #當前系統中,緩存的連接數

| Threads_connected | 1 | #當前系統中正連接的線程數

| Threads_created | 77 | #創建過的總線程數

| Threads_running | 1 |

+——————-+——-+

a.如果:

Threads_created 值過大,說明MySQL一直在創建線程,這是比較消耗資源的,應該適當增大

thread_cache_size的值

b.如果:

Threads_cached的值比參數thread_cache_size小太多,則可以適當減小thread_cache_size的值

ThreadCache命中率:

Threads_Cache_Hit=(Connections-Threads_created)/Connections*100%

一般來說,當系統穩定運行一段時間之後,我們的ThreadCache命中率應該保持在90%

左右甚至更高的比率才算正常。

7.查詢緩存(Query Cache) — optional

將客戶端的SQL語句(僅限select語句)通過hash計算,放在hash鏈表中,同時將該SQL的結果集

放在內存中cache。該hash鏈表中,存放了結果集的內存地址以及所涉及到的所有Table等信息。

如果與該結果集相關的任何一個表的相關信息發生變化後(包擴:數據、索引、表結構等),

就會導致結果集失效,釋放與該結果集相關的所有資源,以便後面其他SQL能夠使用。

當客戶端有select SQL進入,先計算hash值,如果有相同的,就會直接將結果集返回。

Query Cache的負面影響:

a.使用了Query Cache後,每條select SQL都要進行hash計算,然後查找結果集。對於大量SQL

訪問,會消耗過多額外的CPU。

b.如果表變更比較頻繁,則會造成結果集失效率非常高。

c.結果集中保存的是整個結果,可能存在一條記錄被多次cache的情況,這樣會造成內存資源的

過度消耗。

Query Cache的正確使用:

a.根據表的變更情況來選擇是否使用Query Cache,可使用SQL Hint:SQL_NO_CACHE和SQL_CACHE

b.對於 變更比較少 或 數據基本處於靜態 的表,使用SQL_CACHE

c.對於結果集比較大的,使用Query Cache可能造成內存不足,或擠占內存。

可使用1.SQL_NO_CACHE 2.query_cache_limit控制Query Cache的最大結果集(系統默認1M)

mysql show variables like ‘%query_cache%’;

+——————————+———+

| Variable_name | Value |

+——————————+———+

| have_query_cache | YES | #是否支持Query Cache

| query_cache_limit | 1048576 | #單個結果集的最大值,默認1M

| query_cache_min_res_unit | 4096 | #每個結果集存放的最小內存,默認4K

| query_cache_size | 0 | #Query Cache總內存大小,必須是1024的整數倍

| query_cache_type | ON | #ON,OFF,DEMAND(包含SQL_CACHE的查詢中才開啟)

| query_cache_wlock_invalidate | OFF |

+——————————+———+

#query_cache_wlock_invalidate:

針對於MyISAM存儲引擎,設置當有WRITELOCK在某個Table上面的時候,

讀請求是要等待WRITE LOCK釋放資源之後再查詢還是允許直接從QueryCache中讀取結果,

默認為FALSE(可以直接從QueryCache中取得結果)

此為部分內容,附上原文出處:

目前最新版的mysql在Linux下源碼編譯安裝的方法。具體參數的含義一併說明

有話好說,以下是CentOS Linux 5的配置經驗:

添加mysql帳號

groupadd mysql

useradd -r -g mysql mysql

編譯必需先安裝

cmake-2.8.4 和 bison-2.4.3

安裝成功後解壓mysql-5.5.15.tar.gz:

在源碼根目錄打開終端輸入以下配置參數並回車

cmake -DCMAKE_INSTALL_PREFIX=/etc/mysql \

-DMYSQL_UNIX_ADDR=/etc/mysql/mysql.sock \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_EXTRA_CHARSETS:STRING=utf8,gbk \

-DWITH_MYISAM_STORAGE_ENGINE=1 \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_MEMORY_STORAGE_ENGINE=1 \

-DWITH_READLINE=1 \

-DENABLED_LOCAL_INFILE=1 \

-DMYSQL_DATADIR=/var/mysql/data \

-DMYSQL_USER=mysql

成功執行以下命令後在最後會見到 (/root/Desktop/是你的源碼目錄,視你的情況定)

— Build files have been written to: /root/Desktop/mysql-5.5.15

運行make安裝:

make

make install

以下步驟就不一一解說了:

cd /mysql/mysql

chown -R mysql:mysql .

scripts/mysql_install_db –user=mysql

chown -R root .

chown -R mysql data

cp ./support-files/my-small.cnf ./my.cnf

cp support-files/mysql.server mysql; chmod +x mysql

chown -R mysql:root .

./mysql start

./bin/mysqladmin -u root -p 123456

添加開機啟動服務

chkconfig –add mysql

chkconfig mysql on

service mysql start

順利的話到這裡完成了,祝你成功。

原創文章,作者:EQIYM,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/128888.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
EQIYM的頭像EQIYM
上一篇 2024-10-03 23:25
下一篇 2024-10-03 23:25

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • 三星內存條參數用法介紹

    本文將詳細解釋三星內存條上面的各種參數,讓你更好地了解內存條並選擇適合自己的一款。 一、容量大小 容量大小是內存條最基本的參數,一般以GB為單位表示,常見的有2GB、4GB、8GB…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變量時顯示的指定變量類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python input參數變量用法介紹

    本文將從多個方面對Python input括號里參數變量進行闡述與詳解,並提供相應的代碼示例。 一、基本介紹 Python input()函數用於獲取用戶輸入。當程序運行到inpu…

    編程 2025-04-29
  • Spring Boot中發GET請求參數的處理

    本文將詳細介紹如何在Spring Boot中處理GET請求參數,並給出完整的代碼示例。 一、Spring Boot的GET請求參數基礎 在Spring Boot中,處理GET請求參…

    編程 2025-04-29
  • Python Class括號中的參數用法介紹

    本文將對Python中類的括號中的參數進行詳細解析,以幫助初學者熟悉和掌握類的創建以及參數設置。 一、Class的基本定義 在Python中,通過使用關鍵字class來定義類。類包…

    編程 2025-04-29
  • Python函數名稱相同參數不同:多態

    Python是一門面向對象的編程語言,它強烈支持多態性 一、什麼是多態多態是面向對象三大特性中的一種,它指的是:相同的函數名稱可以有不同的實現方式。也就是說,不同的對象調用同名方法…

    編程 2025-04-29
  • Hibernate日誌打印sql參數

    本文將從多個方面介紹如何在Hibernate中打印SQL參數。Hibernate作為一種ORM框架,可以通過打印SQL參數方便開發者調試和優化Hibernate應用。 一、通過配置…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • 全能編程開發工程師必知——DTD、XML、XSD以及DTD參數實體

    本文將從大體介紹DTD、XML以及XSD三大知識點,同時深入探究DTD參數實體的作用及實際應用場景。 一、DTD介紹 DTD是文檔類型定義(Document Type Defini…

    編程 2025-04-29

發表回復

登錄後才能評論