色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

為什么要分庫分表?MySQL分庫分表實踐

馬哥Linux運維 ? 來源:稀土掘金 ? 2023-11-25 17:47 ? 次閱讀

一、為什么要分庫分表

數據庫架構演變

剛開始多數項目用單機數據庫就夠了,隨著服務器流量越來越大,面對的請求也越來越多,我們做了數據庫讀寫分離, 使用多個從庫副本(Slave)負責讀,使用主庫(Master)負責寫,master和slave通過主從復制實現數據同步更新,保持數據一致。slave 從庫可以水平擴展,所以更多的讀請求不成問題

但是當用戶量級上升,寫請求越來越多,怎么保證數據庫的負載足夠?增加一個Master是不能解決問題的, 因為數據要保存一致性,寫操作需要2個master之間同步,相當于是重復了,而且架構設計更加復雜

這時需要用到分庫分表(sharding),把庫和表存放在不同的MySQL Server上,每臺服務器可以均衡寫請求的次數

二、庫表太大產生的問題

單庫太大:單庫處理能力有限、所在服務器上的磁盤空間不足、遇到IO瓶頸,需要把單庫切分成更多更小的庫

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

拆分策略

單個庫太大,先考慮是表多還是數據多:

如果因為表多而造成數據過多,則使用垂直拆分,即根據業務拆分成不同的庫

如果因為單張表的數據量太大,則使用水平拆分,即把表的數據按照某種規則(mycat/conf/rule.xml定義的分表算法)拆分成多張表

分庫分表的原則應該是先考慮垂直拆分,再考慮水平拆分

三、垂直拆分

分庫分表和讀寫分離可以共同進行

1. 垂直分庫

server.xml



123456
USERDB1,USERDB2

配置了USERDB1、USERDB2這兩個邏輯庫

schema.xml





  
   
  
  
    
    
  
  
    select user()
    
  
  
  
    select user()
    
  

兩個邏輯庫對應兩個不同的數據節點,兩個數據節點對應兩個不同的物理機器

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

mytest1和mytest2分成了不同機器上的不同的庫,各包含一部分表,它們原來是合在一塊的,在一臺機器上,現在做了垂直的拆分。

客戶端就需要去連接不同的邏輯庫了,根據業務操作不同的邏輯庫

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

然后配置了兩個寫庫,兩臺機器把庫平分了,分擔了原來單機的壓力。分庫伴隨著分表,從業務上對表拆分

2. 垂直分表

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

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

四、水平分表

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

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

分庫分表可以和主從復制同時進行,但不基于主從復制;讀寫分離才基于主從復制

1. 配置水平分表

server.xml



  123456
  USERDB

schema.xml





  
  
    
select user() select user()

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

user表示一個普通的表,直接放在數據節點dn1上,放在一臺機器上,這張表不用進行拆分

student表的primaryKey是id,根據id拆分,放在dn1和dn2上,最終這個表要分在兩臺機器上,在物理上分開了,但是在邏輯上還是一個,往哪張表里增加,在2臺機器上查詢然后如何合并這些操作都是由mycat完成的

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

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

找到算法mod-long,因為我們將邏輯表student分開映射到兩臺主機上,所以修改數據節點的數量為2

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

2. 測試水平分表

Linux主機

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

Windows主機

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

登錄到mycat的8066端口

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

使用MyCat給user表插入兩條數據

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

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

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

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

我們再通過MyCat給student表插入兩條數據

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

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

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

再通過MyCat插入id=3和id=4的數據,應該插入不同主機上的不同物理表

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

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

這就相當于把student表進行水平拆分了

通過MyCat查詢的時候只需要正常輸入就行,我們配置的是表拆分后放在這2個數據節點上,MyCat會根據配置在兩個庫上查詢并進行數據合并

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






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11342

    瀏覽量

    210144
  • MySQL
    +關注

    關注

    1

    文章

    829

    瀏覽量

    26674

原文標題:MySQL 分庫分表實踐

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    數據庫分區、分庫

    今天先說說數據庫的數據分區,分庫以及的內容吧! 數據庫分區、分庫 數據庫分區、
    的頭像 發表于 09-30 11:24 ?2904次閱讀

    談分布式數據庫中間件之分庫   

      分庫,顧名思義就是把原本存儲于一個庫的數據分塊存儲到多個庫上,把原本存儲于一個的數據分塊存儲到多個上。那么關于
    發表于 08-02 20:19

    關于MySQL分區和的詳細介紹

    MySQL分區和
    發表于 07-10 07:40

    分庫是什么?怎么實現?

    數據庫分庫、讀寫分離的原理實現,使用場景
    發表于 10-25 17:24

    利用Mycat實現MySQL讀寫分離、分庫最佳實踐

    利用Mycat實現MySQL讀寫分離、分庫最佳實踐
    發表于 09-08 10:20 ?14次下載
    利用Mycat實現<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'>實踐</b>

    結合實踐對水平分庫做一個系統地剖析

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

    數據庫分庫基礎和實踐

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

    你們知道為什么分庫

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

    優化MySQL數據庫中樸實無華的和花里胡哨的分庫

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

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

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

    什么是分庫?為什么分庫?什么情況下會用分庫呢?

    分庫是由分庫這兩個獨立概念組成的,只不過通常分庫
    的頭像 發表于 11-30 09:37 ?7597次閱讀

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

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

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

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

    分庫后復雜查詢的應對之道:基于DTS實時性ES寬構建技術實踐

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

    軟件系統數據庫的分庫設計

    軟件系統數據庫的分庫設計 系統讀寫分離、分庫技術實現采用MyCat中間件,MyCat 是
    的頭像 發表于 08-22 11:39 ?356次閱讀
    軟件系統數據庫的<b class='flag-5'>分庫</b><b class='flag-5'>分</b><b class='flag-5'>表</b>設計
    主站蜘蛛池模板: 亚洲乱码一区二区三区香蕉 | 国产精品久久久久久久久久免费 | 本庄优花aⅴ全部在线影片 被滋润的艳妇疯狂呻吟白洁老七 | 女人张开腿让男人桶爽免 | 性欧美video另类hd高清 | 加勒比一本之道高清视频在线观看 | 日本视频一区二区免费观看 | 无码成A毛片免费 | 俄罗斯女人与马Z00Z视频 | 欧洲美女人 一级毛片 | 亚洲精品在线网址 | 蜜桃传媒一区二区亚洲AV | 男人桶爽女人 | 强奷乱码欧妇女中文字幕熟女 | 中国农村妇女真实BBWBBWBBW | 跪趴式啪啪GIF动态图27报 | 免费乱理伦片在线观看夜 | 毛片在线播放网址 | 免费观看成人www精品视频在线 | 伊人久久丁香色婷婷啪啪 | 青青久久精品 | 在线看片成人免费视频 | 日日色在线影院 | 伊人久久大香线蕉综合高清 | 最近的2019中文字幕HD | 亚洲精品一卡二卡三卡四卡2021 | 亲爱的妈妈6韩国电影免费观看 | 性绞姿始动作动态图 | 日韩AV无码一区二区三区不卡毛片 | 青青草国产自偷拍 | 99国产在线视频 | 精品久久久久久电影网 | 天堂Av亚洲欧美日韩国产综合 | 麻豆成人AV久久无码精品 | 欧美日韩另类在线观看视频 | 亚洲日本一区二区三区在线不卡 | 中文字幕免费在线视频 | 久久ZYZ资源站无码中文动漫 | 一个人的HD高清在线观看 | 性欧美videosex18嫩 | 国产成久久免费精品AV片天堂 |