高并發(fā)網(wǎng)站集群場(chǎng)景下如何優(yōu)化MySQL數(shù)據(jù)庫(kù)-創(chuàng)新互聯(lián)

本篇文章給大家主要講的是關(guān)于高并發(fā)網(wǎng)站集群場(chǎng)景下如何優(yōu)化MySQL數(shù)據(jù)庫(kù)的內(nèi)容,感興趣的話就一起來(lái)看看這篇文章吧,相信看完高并發(fā)網(wǎng)站集群場(chǎng)景下如何優(yōu)化MySQL數(shù)據(jù)庫(kù)對(duì)大家多少有點(diǎn)參考價(jià)值吧。

創(chuàng)新互聯(lián)是一家專業(yè)從事成都網(wǎng)站建設(shè)、網(wǎng)站制作的網(wǎng)絡(luò)公司。作為專業(yè)網(wǎng)站設(shè)計(jì)公司,創(chuàng)新互聯(lián)依托的技術(shù)實(shí)力、以及多年的網(wǎng)站運(yùn)營(yíng)經(jīng)驗(yàn),為您提供專業(yè)的成都網(wǎng)站建設(shè)、成都營(yíng)銷網(wǎng)站建設(shè)及網(wǎng)站設(shè)計(jì)開(kāi)發(fā)服務(wù)!

1、硬件層面優(yōu)化

1.1數(shù)據(jù)庫(kù)物理機(jī)

a.CPU:64位,服務(wù)器2-16個(gè)CPU,2-4顆,L1,L2越大越好;

b.mem(內(nèi)存):48G-96G-128G-256G(48g 2-3個(gè)實(shí)例;96g 3-4個(gè)實(shí)例 );

c.disk(磁盤IO)數(shù)據(jù)庫(kù)是IO密集應(yīng)用

 機(jī)械盤:SAS(不要選擇SATA),300G*12塊,磁盤數(shù)量越多IO越高,SAS 15K轉(zhuǎn)的硬盤。

 SSD:固態(tài)硬盤

測(cè)試對(duì)比:SAS單盤隨機(jī)IO,300IOPS,SSD單盤隨機(jī)IO達(dá)到上萬(wàn)。

d.raid陣列:選硬件RAID(0>10>5>1),選10

e.網(wǎng)卡至少千兆(bond),萬(wàn)兆交換機(jī)

f.數(shù)據(jù)庫(kù)服務(wù)器盡量不用虛擬化

g.SLAVE服務(wù)器配置最好是大于等于Master

案例:

百度:IBM服務(wù)器,內(nèi)存96-128G,CPU48核,3-4個(gè)實(shí)例

SINA: DELL R510,內(nèi)存48G,磁盤300*12塊,raid10

多實(shí)例:就是一臺(tái)服務(wù)器多個(gè)數(shù)據(jù)庫(kù),比喻一個(gè)房子多個(gè)臥室。

1.2 硬件調(diào)整:

Bios調(diào)整提高CPU性能

1)   打開(kāi)DAPC模式,發(fā)揮CPU性能。

2)   啟動(dòng)Node Interleaving,避免NUMA問(wèn)題(NUMA=0)。

3)   關(guān)鍵C1E和State等選項(xiàng)。

陳列卡:

1)   配置CACHE和BBU模塊(機(jī)械盤)

2)   寫策略調(diào)為(wb)

3)   不用wt策略,關(guān)閉陳列預(yù)讀策略

2、軟件層面優(yōu)化

2.1 操作系統(tǒng)層面優(yōu)化

1)   選擇x86_64位系統(tǒng)

2)   將系統(tǒng)盤和數(shù)據(jù)盤分開(kāi)

3)   盡量避免是用swap

4)   避免使用操作系統(tǒng)軟raid

5)   避免使用LVM

6)   專庫(kù)專用(不要跑LNMP,TOMCAT)

7)   調(diào)整Cache mode

啟動(dòng)wce=1(Write Cache Enable) RCD=0(Read Cache Disable)

8)   調(diào)度算法默認(rèn)cfq,noop,deadline。針對(duì)deadline可以調(diào)參(內(nèi)核參數(shù))

9)   Centos6.8默認(rèn)ext4可以作為數(shù)據(jù)為的文件系統(tǒng),訪問(wèn)量大的話,XFS就更好。Centos7默認(rèn)也選了XFS,調(diào)整XFS日志,緩沖參數(shù)。

10)            mount參數(shù)很重要,async,noatime,nodirname,nobarrier等。

2.2 文件系統(tǒng)層優(yōu)化

2.3 內(nèi)核層面優(yōu)化

1)   vm.swappiness設(shè)置0,或者0-5,讓數(shù)據(jù)庫(kù)盡量不使用swap.

2)   Vm.dirty_background_ration設(shè)置5-10,vm.dirty_ration設(shè)置前面的2倍。持續(xù)將系統(tǒng)臟數(shù)據(jù)刷到磁盤。

3)   net.ipv4.tcp_tw_recyle=1,net.ipv4.tcp_reuse=1, net.ipv4.tcp_fin_timeout=2,net.ipv4.tcp_keepalived_time=600減少time_wait

4)   內(nèi)核優(yōu)化,參考老男孩博客;

3、MySQL層面優(yōu)化

3.1 my.conf參數(shù)的優(yōu)化

1)   如果采用myisam引擎,key_buffer_szie加大。盡量采用innnodb.

2)   推薦使用innodb,5.5.5以后默認(rèn)就是innodb引擎

3)   innodb_buffer_pool_szie,調(diào)整為內(nèi)存的50%,單實(shí)例。

4)   innodb_flush_log_at_trx_commit,sync_binlog,設(shè)置為1,數(shù)據(jù)可以丟,設(shè)置0,從庫(kù)設(shè)置為0。

5)   使用獨(dú)立表空間。innodb_file_per_table=1

6)   innodb_log_file_size=256M

7)   log_query_time=1 ,超過(guò)1秒的語(yǔ)句記錄LOG。

8)   一些session參數(shù)不要設(shè)置過(guò)大,一個(gè)連接就會(huì)占用參數(shù)設(shè)置的大小。Sort_buffer_size,join_buffer_size這類參數(shù)都是session級(jí)別參數(shù)。

9)   查詢緩存參數(shù)要設(shè)置小一些:query_cache_size=64M,要想緩存,前端加mc,redis。

3.2 庫(kù)和表的設(shè)計(jì)優(yōu)化

1)   字符集UTF-8

2)   固定字符串的內(nèi)容,可以選擇char

3)   數(shù)據(jù)庫(kù)都要給一個(gè)自增的主鍵,沒(méi)有什么業(yè)務(wù)用途

4)   字段長(zhǎng)度,在滿足需求前提下,用最短的。Varchar(16)

5)   省份,性別,這類內(nèi)容字段可以設(shè)置ENUM類型,mysql系統(tǒng)表(char ,ENUM)

6)   盡可能不用text/blob,如果使用的話,放到子表里。

7)   針對(duì)字段索引,盡量采用字段的前N個(gè)字符索引,不要整個(gè)字段索引。

8)   多用聯(lián)合索引,前綴特性,少用獨(dú)立索引,性別列不要建立獨(dú)立索引了。

3.3 SQL語(yǔ)句的優(yōu)化

A、索引優(yōu)化

 1)抓出來(lái)慢查詢

 百度:白名單的方法,設(shè)計(jì)程序時(shí)候參與設(shè)計(jì),程序上線連接數(shù)據(jù)庫(kù),有個(gè)控制查庫(kù)的東西,請(qǐng)示放我?guī)炖铮拍懿樵?,?shù)據(jù)庫(kù)沒(méi)有或者減少慢查詢。

  給常給開(kāi)發(fā)做培訓(xùn),DB水平更高。

  現(xiàn)在網(wǎng)站慢了,show full processlist;抓慢查詢,連續(xù)執(zhí)行兩下。間隔1-2秒,如果還有,懷疑他是慢查詢。

日常:把慢查詢語(yǔ)句記錄到log。

 My.cnf

 Long_query_time=2

 Log_queryies_not_using_indexes

 Log-slow-queries=/data/3306/slow.log

每天生成slow.log,按天切割slow.log,切割以后用分析軟件分析(mysqlsla,-pt-query-digest)

Mysqldumpslow,myprofi。優(yōu)化的語(yǔ)句不一定是單條占用時(shí)間長(zhǎng)的,頻率高單條不長(zhǎng),但是總時(shí)間很長(zhǎng)的,這些可能也是優(yōu)化的重點(diǎn)。

運(yùn)維來(lái)講,慢查詢SQL發(fā)給開(kāi)發(fā)。

Explain測(cè)試語(yǔ)句是否走索引。Set profile深度查看語(yǔ)句執(zhí)行情況。

檢查刪除重復(fù)的索引,pt-duplicate-key-checker,效率很低的索引檢查刪除,pt-index-usage

2)盡量不用子查詢,用join替代

數(shù)據(jù)庫(kù)是存放數(shù)據(jù)的地方,不是計(jì)算數(shù)據(jù)的地方,計(jì)算放在前面Web。搜索功能,like “%daf%”,不用數(shù)據(jù)庫(kù)搜索。

3)語(yǔ)句中盡量去掉in or <>

4、網(wǎng)站集群架構(gòu)上優(yōu)化數(shù)據(jù)庫(kù)

1)   服務(wù)器跑多實(shí)例2-4個(gè)

2)   主從復(fù)制最多9個(gè),1主5從,采用mixed,不要跨機(jī)房復(fù)制(遠(yuǎn)程寫,本地讀)

3)   業(yè)務(wù)拆分:搜索功能,like “%daf%”,不用數(shù)據(jù)庫(kù)搜索。

搜索軟件:Sphinx,Xapian,Solr

4)   粉絲關(guān)注,好關(guān)系,統(tǒng)計(jì)這類應(yīng)用比較簡(jiǎn)單,不用數(shù)據(jù),放到redis。

5)   數(shù)據(jù)庫(kù)前端加緩存

6)   動(dòng)態(tài)內(nèi)轉(zhuǎn)靜態(tài)化(數(shù)據(jù)庫(kù)的數(shù)據(jù),轉(zhuǎn)成html文件,放到存儲(chǔ)上)使用CDN。

7)   數(shù)據(jù)庫(kù)采用讀寫分離,MyCat,atlas,cobar,amoeba,MySQL-proxy

8)   單表超過(guò)800萬(wàn),拆庫(kù)拆表。自動(dòng)擴(kuò)容,自動(dòng)收縮。

9)   選擇從庫(kù)備份,鎖表,備份時(shí)間很長(zhǎng),影響數(shù)據(jù)訪問(wèn)。

10) 備份時(shí)采用分表分庫(kù)。

5、流程、制度、安全:50%的故障都是人為造成的。

1)   操作流程:開(kāi)發(fā)-核心開(kāi)發(fā)—運(yùn)維或DBA

2)   測(cè)試流程:辦公室測(cè)試-IDC測(cè)試-IDC正式

以上關(guān)于高并發(fā)網(wǎng)站集群場(chǎng)景下如何優(yōu)化MySQL數(shù)據(jù)庫(kù)詳細(xì)內(nèi)容,對(duì)大家有幫助嗎?如果想要了解更多相關(guān),可以繼續(xù)關(guān)注我們的行業(yè)資訊板塊。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站名稱:高并發(fā)網(wǎng)站集群場(chǎng)景下如何優(yōu)化MySQL數(shù)據(jù)庫(kù)-創(chuàng)新互聯(lián)
文章位置:http://muchs.cn/article30/djgepo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、企業(yè)建站、定制開(kāi)發(fā)App開(kāi)發(fā)、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)