在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

為什么要分庫分表?MySQL分庫分表實(shí)踐

馬哥Linux運(yùn)維 ? 來源:稀土掘金 ? 2023-11-25 17:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、為什么要分庫分表

數(shù)據(jù)庫架構(gòu)演變

剛開始多數(shù)項(xiàng)目用單機(jī)數(shù)據(jù)庫就夠了,隨著服務(wù)器流量越來越大,面對(duì)的請(qǐng)求也越來越多,我們做了數(shù)據(jù)庫讀寫分離, 使用多個(gè)從庫副本(Slave)負(fù)責(zé)讀,使用主庫(Master)負(fù)責(zé)寫,master和slave通過主從復(fù)制實(shí)現(xiàn)數(shù)據(jù)同步更新,保持?jǐn)?shù)據(jù)一致。slave 從庫可以水平擴(kuò)展,所以更多的讀請(qǐng)求不成問題

但是當(dāng)用戶量級(jí)上升,寫請(qǐng)求越來越多,怎么保證數(shù)據(jù)庫的負(fù)載足夠?增加一個(gè)Master是不能解決問題的, 因?yàn)閿?shù)據(jù)要保存一致性,寫操作需要2個(gè)master之間同步,相當(dāng)于是重復(fù)了,而且架構(gòu)設(shè)計(jì)更加復(fù)雜

這時(shí)需要用到分庫分表(sharding),把庫和表存放在不同的MySQL Server上,每臺(tái)服務(wù)器可以均衡寫請(qǐng)求的次數(shù)

二、庫表太大產(chǎn)生的問題

單庫太大:?jiǎn)螏焯幚砟芰τ邢蕖⑺诜?wù)器上的磁盤空間不足、遇到IO瓶頸,需要把單庫切分成更多更小的庫

單表太大:CRUD效率都很低,數(shù)據(jù)量太大導(dǎo)致索引文件過大,磁盤IO加載索引花費(fèi)時(shí)間,導(dǎo)致查詢超時(shí)。所以只用索引還是不行的,需要把單表切分成多個(gè)數(shù)據(jù)集更小的表。MyCat提供的分表算法都在rule.xml,可以根據(jù)不同的分表算法進(jìn)行拆分,比如根據(jù)時(shí)間拆分、一致性哈希、直接用主鍵對(duì)分表的個(gè)數(shù)取模等

拆分策略

單個(gè)庫太大,先考慮是表多還是數(shù)據(jù)多:

如果因?yàn)楸矶喽斐蓴?shù)據(jù)過多,則使用垂直拆分,即根據(jù)業(yè)務(wù)拆分成不同的庫

如果因?yàn)閱螐埍淼臄?shù)據(jù)量太大,則使用水平拆分,即把表的數(shù)據(jù)按照某種規(guī)則(mycat/conf/rule.xml定義的分表算法)拆分成多張表

分庫分表的原則應(yīng)該是先考慮垂直拆分,再考慮水平拆分

三、垂直拆分

分庫分表和讀寫分離可以共同進(jìn)行

1. 垂直分庫

server.xml



123456
USERDB1,USERDB2

配置了USERDB1、USERDB2這兩個(gè)邏輯庫

schema.xml





  
   
  
  
    
    
  
  
    select user()
    
  
  
  
    select user()
    
  

兩個(gè)邏輯庫對(duì)應(yīng)兩個(gè)不同的數(shù)據(jù)節(jié)點(diǎn),兩個(gè)數(shù)據(jù)節(jié)點(diǎn)對(duì)應(yīng)兩個(gè)不同的物理機(jī)器

d78658b6-8b76-11ee-939d-92fbcf53809c.jpg

mytest1和mytest2分成了不同機(jī)器上的不同的庫,各包含一部分表,它們?cè)瓉硎呛显谝粔K的,在一臺(tái)機(jī)器上,現(xiàn)在做了垂直的拆分。

客戶端就需要去連接不同的邏輯庫了,根據(jù)業(yè)務(wù)操作不同的邏輯庫

d79f1cf2-8b76-11ee-939d-92fbcf53809c.jpg

然后配置了兩個(gè)寫庫,兩臺(tái)機(jī)器把庫平分了,分擔(dān)了原來單機(jī)的壓力。分庫伴隨著分表,從業(yè)務(wù)上對(duì)表拆分

2. 垂直分表

垂直分表,基于列字段進(jìn)行。一般是針對(duì)幾百列的這種大表,也避免查詢時(shí),數(shù)據(jù)量太大造成的“跨頁”問題。

一般是表中的字段較多,將不常用的, 數(shù)據(jù)較大,長度較長(比如text類型字段)的拆分到擴(kuò)展表。訪問頻率較高的字段單獨(dú)放在一張表

四、水平分表

針對(duì)數(shù)據(jù)量巨大的單張表(比如訂單表),按照某種規(guī)則(RANGE、HASH取模等),切分到多張表里面去。但是這些表還是在同一個(gè)庫中,所以庫級(jí)別的數(shù)據(jù)庫操作還是有IO瓶頸,不建議采用

將單張表的數(shù)據(jù)切分到多個(gè)服務(wù)器上去,每個(gè)服務(wù)器具有一部分庫與表,只是表中數(shù)據(jù)集合不同。水平分庫分表能夠有效的緩解單機(jī)和單庫的性能瓶頸和壓力,突破IO、連接數(shù)、硬件資源等的瓶頸

分庫分表可以和主從復(fù)制同時(shí)進(jìn)行,但不基于主從復(fù)制;讀寫分離才基于主從復(fù)制

1. 配置水平分表

server.xml



  123456
  USERDB

schema.xml





  
  
    
select user() select user()

d7b7cdec-8b76-11ee-939d-92fbcf53809c.jpg

user表示一個(gè)普通的表,直接放在數(shù)據(jù)節(jié)點(diǎn)dn1上,放在一臺(tái)機(jī)器上,這張表不用進(jìn)行拆分

student表的primaryKey是id,根據(jù)id拆分,放在dn1和dn2上,最終這個(gè)表要分在兩臺(tái)機(jī)器上,在物理上分開了,但是在邏輯上還是一個(gè),往哪張表里增加,在2臺(tái)機(jī)器上查詢?nèi)缓笕绾魏喜⑦@些操作都是由mycat完成的

拆分的規(guī)則是取模(mod - long),每次插入用id模上存在的機(jī)器數(shù)(2)

此外還需要在rule.xml中配置以下拆分算法

找到算法mod-long,因?yàn)槲覀儗⑦壿嫳韘tudent分開映射到兩臺(tái)主機(jī)上,所以修改數(shù)據(jù)節(jié)點(diǎn)的數(shù)量為2

d7c959cc-8b76-11ee-939d-92fbcf53809c.jpg

2. 測(cè)試水平分表

Linux主機(jī)

d7d92852-8b76-11ee-939d-92fbcf53809c.jpg

Windows主機(jī)

d7ed7e2e-8b76-11ee-939d-92fbcf53809c.jpg

登錄到mycat的8066端口

d80afac6-8b76-11ee-939d-92fbcf53809c.jpg

使用MyCat給user表插入兩條數(shù)據(jù)

d818fff4-8b76-11ee-939d-92fbcf53809c.jpg

由于schema.xml配置文件中,邏輯表user只在Linux主機(jī)的mytest1庫中存在,mycat操作的邏輯表user會(huì)影響Linux主機(jī)上的物理表,而不會(huì)影響Windows主機(jī)上的表。我們分別查看一下Linux和Windows主機(jī)的user表:

d82fc40a-8b76-11ee-939d-92fbcf53809c.jpg

d83f9de4-8b76-11ee-939d-92fbcf53809c.jpg

我們?cè)偻ㄟ^MyCat給student表插入兩條數(shù)據(jù)

d848736a-8b76-11ee-939d-92fbcf53809c.jpg

我們知道schema.xml配置文件中,邏輯表student對(duì)應(yīng)兩臺(tái)主機(jī)上的兩個(gè)庫mytest1、mytest2中的兩張表,所以對(duì)邏輯表插入的兩條數(shù)據(jù),會(huì)實(shí)際影響到兩張物理表(用id%機(jī)器數(shù),決定插入到哪張物理表)。我們分別查看一下Linux和Windows主機(jī)的student表:

d85938b2-8b76-11ee-939d-92fbcf53809c.jpg

再通過MyCat插入id=3和id=4的數(shù)據(jù),應(yīng)該插入不同主機(jī)上的不同物理表

d87106e0-8b76-11ee-939d-92fbcf53809c.jpg

d88a09ce-8b76-11ee-939d-92fbcf53809c.jpg

這就相當(dāng)于把student表進(jìn)行水平拆分了

通過MyCat查詢的時(shí)候只需要正常輸入就行,我們配置的是表拆分后放在這2個(gè)數(shù)據(jù)節(jié)點(diǎn)上,MyCat會(huì)根據(jù)配置在兩個(gè)庫上查詢并進(jìn)行數(shù)據(jù)合并

d8a37742-8b76-11ee-939d-92fbcf53809c.jpg






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11499

    瀏覽量

    213331
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    851

    瀏覽量

    27760

原文標(biāo)題:MySQL 分庫分表實(shí)踐

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    數(shù)據(jù)庫分區(qū)、分庫

    今天先說說數(shù)據(jù)庫的數(shù)據(jù)分區(qū),分庫以及的內(nèi)容吧! 數(shù)據(jù)庫分區(qū)、分庫 數(shù)據(jù)庫分區(qū)、
    的頭像 發(fā)表于 09-30 11:24 ?3451次閱讀

    談分布式數(shù)據(jù)庫中間件之分庫   

      分庫,顧名思義就是把原本存儲(chǔ)于一個(gè)庫的數(shù)據(jù)分塊存儲(chǔ)到多個(gè)庫上,把原本存儲(chǔ)于一個(gè)的數(shù)據(jù)分塊存儲(chǔ)到多個(gè)上。那么關(guān)于
    發(fā)表于 08-02 20:19

    分庫是什么?怎么實(shí)現(xiàn)?

    數(shù)據(jù)庫分庫、讀寫分離的原理實(shí)現(xiàn),使用場(chǎng)景
    發(fā)表于 10-25 17:24

    利用Mycat實(shí)現(xiàn)MySQL讀寫分離、分庫最佳實(shí)踐

    利用Mycat實(shí)現(xiàn)MySQL讀寫分離、分庫最佳實(shí)踐
    發(fā)表于 09-08 10:20 ?14次下載
    利用Mycat實(shí)現(xiàn)<b class='flag-5'>MySQL</b>讀寫分離、<b class='flag-5'>分庫</b><b class='flag-5'>分</b><b class='flag-5'>表</b>最佳<b class='flag-5'>實(shí)踐</b>

    結(jié)合實(shí)踐對(duì)水平分庫做一個(gè)系統(tǒng)地剖析

    及實(shí)施落地,這里結(jié)合項(xiàng)目實(shí)踐,對(duì)水平分庫做一個(gè)系統(tǒng)地剖析,希望為大家水平分庫(包括去IOE)改造提供思路,主要內(nèi)容包括: 水平分庫說明分庫
    發(fā)表于 10-11 17:46 ?0次下載
    結(jié)合<b class='flag-5'>實(shí)踐</b>對(duì)水平<b class='flag-5'>分庫</b>做一個(gè)系統(tǒng)地剖析

    數(shù)據(jù)庫分庫基礎(chǔ)和實(shí)踐

    決上述問題?如果僅僅通過增加一個(gè)主實(shí)例來分擔(dān)寫請(qǐng)求,寫操作如何在兩個(gè)主實(shí)例之間同步來保證數(shù)據(jù)一致性,如何避免雙寫,問題會(huì)變的更加復(fù)雜。這時(shí)就需要用到分庫(sharding),對(duì)寫操作進(jìn)行切分
    發(fā)表于 09-05 16:40 ?338次閱讀

    你們知道為什么分庫

    ? 這些問題你都搞清楚了嗎?相信看完這篇文章會(huì)有答案。 為什么分庫? 首先回答一下為什么
    的頭像 發(fā)表于 08-16 10:37 ?1713次閱讀

    優(yōu)化MySQL數(shù)據(jù)庫中樸實(shí)無華的和花里胡哨的分庫

    4、水平分庫 總結(jié) 首先我們要知道分庫都是干啥的,本文主角還是我們的MySQL為第一視角。首先從字面意思來看:
    的頭像 發(fā)表于 08-26 16:33 ?1421次閱讀

    你是否知道分庫需要哪些要素?

    分庫會(huì)重新影響數(shù)據(jù)的分布,無論是全量還是增量,都會(huì)涉及到數(shù)據(jù)遷移,所以Databus是必要的。
    的頭像 發(fā)表于 10-12 10:39 ?1006次閱讀

    什么是分庫?為什么分庫?什么情況下會(huì)用分庫呢?

    分庫是由分庫這兩個(gè)獨(dú)立概念組成的,只不過通常分庫
    的頭像 發(fā)表于 11-30 09:37 ?7970次閱讀

    分庫的21條法則速來碼住(上)

    還是不著急實(shí)戰(zhàn),咱們先介紹下在分庫架構(gòu)實(shí)施過程中,會(huì)接觸到的一些通用概念,了解這些概念能夠幫助理解市面上其他的分庫表工具,盡管它們的實(shí)
    的頭像 發(fā)表于 05-26 17:33 ?751次閱讀
    <b class='flag-5'>分庫</b><b class='flag-5'>分</b><b class='flag-5'>表</b>的21條法則速來碼住(上)

    分庫的21條法則速來碼住(下)

    還是不著急實(shí)戰(zhàn),咱們先介紹下在分庫架構(gòu)實(shí)施過程中,會(huì)接觸到的一些通用概念,了解這些概念能夠幫助理解市面上其他的分庫表工具,盡管它們的實(shí)
    的頭像 發(fā)表于 05-26 17:33 ?792次閱讀
    <b class='flag-5'>分庫</b><b class='flag-5'>分</b><b class='flag-5'>表</b>的21條法則速來碼住(下)

    分庫后復(fù)雜查詢的應(yīng)對(duì)之道:基于DTS實(shí)時(shí)性ES寬構(gòu)建技術(shù)實(shí)踐

    1 問題域 業(yè)務(wù)發(fā)展的初期,我們的數(shù)據(jù)庫架構(gòu)往往是單庫單,外加讀寫分離來快速的支撐業(yè)務(wù),隨著用戶量和訂單量的增加,數(shù)據(jù)庫的計(jì)算和存儲(chǔ)往往會(huì)成為我們系統(tǒng)的瓶頸,業(yè)界的實(shí)踐多數(shù)采用分而治之的思想:分庫
    的頭像 發(fā)表于 06-25 18:30 ?1306次閱讀
    <b class='flag-5'>分庫</b><b class='flag-5'>分</b><b class='flag-5'>表</b>后復(fù)雜查詢的應(yīng)對(duì)之道:基于DTS實(shí)時(shí)性ES寬<b class='flag-5'>表</b>構(gòu)建技術(shù)<b class='flag-5'>實(shí)踐</b>

    軟件系統(tǒng)數(shù)據(jù)庫的分庫設(shè)計(jì)

    軟件系統(tǒng)數(shù)據(jù)庫的分庫設(shè)計(jì) 系統(tǒng)讀寫分離、分庫技術(shù)實(shí)現(xiàn)采用MyCat中間件,MyCat 是
    的頭像 發(fā)表于 08-22 11:39 ?578次閱讀
    軟件系統(tǒng)數(shù)據(jù)庫的<b class='flag-5'>分庫</b><b class='flag-5'>分</b><b class='flag-5'>表</b>設(shè)計(jì)

    或許我們都被分庫約束了思維

    、Polardb、StarDB等等。 國內(nèi)的項(xiàng)目好像很多都聚焦于分庫的概念,包括很多的數(shù)據(jù)庫團(tuán)隊(duì)都在嘗試這個(gè)概念的落地和沉溺于性能的跑。 最近我在預(yù)覽
    的頭像 發(fā)表于 02-21 09:51 ?248次閱讀
    主站蜘蛛池模板: 欧美极品色影院 | 亚洲精品久久婷婷爱久久婷婷 | 色偷偷91久久综合噜噜噜 | 天天做天天玩天天爽天天 | 精品卡1卡2卡三卡免费网站视频 | 五月激情六月 | 五月天毛片| 黄视频免费在线看 | 五月天婷婷在线播放 | 欧美影院一区二区 | 国产精品午夜自在在线精品 | 性视频久久 | 亚洲精品mv在线观看 | 天天色天| 美女扒开尿口给男人桶视频免费 | 大量真实偷拍情侣视频野战 | 上课被同桌摸下面做羞羞 | 很很鲁在线视频播放影院 | 亚洲第一在线播放 | 亚洲免费视频在线观看 | 二区三区在线 | 又黄又粗暴的120秒免费gif视频 | 日日操免费视频 | 5252色欧美在线激情 | 亚洲网站在线看 | 69yywww| 六月丁香婷婷激情国产 | 久草视频资源在线 | 免费视频网站在线观看 | 91拍拍在线观看 | 真实子伦视频不卡 | 高清视频免费观看 | 欧美无遮挡一区二区三区 | 天天摸天天澡天天碰天天弄 | 禁漫画羞羞动漫入口 | 免费一级毛片在线播放 | 色站视频 | 国产专区日韩精品欧美色 | 国产高清色视频免费看的网址 | 亚洲操综合 | 婷婷激情视频 |
    • <tfoot id="cck8g"><delect id="cck8g"></delect></tfoot>
    • <rt id="cck8g"><delect id="cck8g"></delect></rt>
      <bdo id="cck8g"><source id="cck8g"></source></bdo>