在线观看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)不再提示

干貨:20個(gè)MySQL開(kāi)源數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)原則

如意 ? 來(lái)源:數(shù)據(jù)庫(kù)開(kāi)發(fā) ? 作者:佚名 ? 2020-08-28 10:57 ? 次閱讀

開(kāi)源數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)原則

01. 技術(shù)選型

選擇成熟的平臺(tái)和技術(shù),同時(shí)是最熟悉的,能做到極致的,用好不用壞,用熟不用生。目前業(yè)界的MySQL主流分支版本有Oracle官方版本的MySQL、Percona Server、MariaDB。

02. 高可用選擇

高可用解決方案探討的本質(zhì)上是低宕機(jī)時(shí)間解決方案,可以理解成高可用的反面是不可用,絕大部分情況下數(shù)據(jù)庫(kù)宕機(jī)才會(huì)導(dǎo)致數(shù)據(jù)庫(kù)不可用。隨著技術(shù)發(fā)展,開(kāi)源數(shù)據(jù)庫(kù)方面很多高可用組件(主從復(fù)制、半同步、MGR、MHA、Galera Cluster),對(duì)應(yīng)場(chǎng)景,只有適合的,沒(méi)有萬(wàn)能的,需要理解每個(gè)高可用優(yōu)缺點(diǎn)。

03. 表設(shè)計(jì)

表設(shè)計(jì)方面目前一致堅(jiān)持和提倡的原則:

單表數(shù)據(jù)量

所有表都需要添加注釋,單表數(shù)據(jù)量建議控制在 3000 萬(wàn)以內(nèi)

不保存大字段數(shù)據(jù)

不在數(shù)據(jù)庫(kù)中存儲(chǔ)圖片、文件等大數(shù)據(jù)

表使用規(guī)范

拆分大字段和訪問(wèn)頻率低的字段,分離冷熱數(shù)據(jù)

單表字段數(shù)控制在 20 個(gè)以內(nèi)

索引規(guī)范

1.單張表中索引數(shù)量不超過(guò) 5 個(gè)

2.單個(gè)索引中的字段數(shù)不超過(guò) 5 個(gè)

3.INNODB 主鍵推薦使用自增列,主鍵不應(yīng)該被修改,字符串不應(yīng)該做主鍵,

如果不指定主鍵,INNODB 會(huì)使用唯一且非空值索引代替

4.如果是復(fù)合索引,區(qū)分最大的字段放在索引前面

5. 避免冗余或重復(fù)索引:合理創(chuàng)建聯(lián)合索引(避免冗余)

6. 不在低基數(shù)列上建立索引,例如‘性別’

7. 不在索引列進(jìn)行數(shù)學(xué)運(yùn)算和函數(shù)運(yùn)算

字符集utf8mb4(偏生字,表情符)

04. 優(yōu)化原則

05. 復(fù)制方式

MySQL復(fù)制方式提供異步方式、半同步方式、全局事務(wù)強(qiáng)一致性、binglog同步。需要不同業(yè)務(wù)系統(tǒng)間 或 兩個(gè)數(shù)據(jù)庫(kù)間進(jìn)行同步。異步方式可以防止故障和效率問(wèn)題的蔓延,擴(kuò)大化;但強(qiáng)一致性會(huì)更復(fù)雜,并發(fā)、事務(wù)大小都有求限制。

06. 分離原則

區(qū)分核心的業(yè)務(wù),重要業(yè)務(wù),渠道,內(nèi)部業(yè)務(wù)的業(yè)務(wù)系統(tǒng),對(duì)不同的系統(tǒng)設(shè)置不同的架構(gòu)。為核心業(yè)務(wù)設(shè)置 最佳為分庫(kù),多活 專用高速公路,其他業(yè)務(wù)可以做讀寫分離,緩存。

07. 擴(kuò)展性

對(duì)于系統(tǒng)來(lái)說(shuō)擴(kuò)展性很重要,盡量做到水平擴(kuò)展。避免過(guò)度依賴縱向擴(kuò)展,同時(shí)具備縱向,橫向擴(kuò)展的能力,例如無(wú)狀態(tài)應(yīng)用應(yīng)該多套負(fù)載均衡多活部署,數(shù)據(jù)庫(kù)分庫(kù)架構(gòu)。

08. 讀寫分離

讀多寫少場(chǎng)景(10%寫 90%讀)

復(fù)制存在延遲,業(yè)務(wù)對(duì)延遲不敏感的

實(shí)現(xiàn)方式:

1. 通過(guò)應(yīng)用代碼配置讀寫分離,

2. 通過(guò)中間代理方式路由只讀庫(kù) &

3. 業(yè)務(wù)和數(shù)據(jù)庫(kù)為一個(gè)單位

09. 分庫(kù)分表

當(dāng)表中數(shù)據(jù)記錄的數(shù)量超過(guò)3000萬(wàn)條,再好的索引也已經(jīng)不能提高數(shù)據(jù)查詢的速度,這時(shí)需要將表拆分成更多的小表,增加性能,增加彈性,避免發(fā)生垮庫(kù)進(jìn)行操作。

引入中間價(jià)要考慮性能代價(jià),聚合需求。

分庫(kù)原則盡量在app 上層進(jìn)行分庫(kù),就是流量。

分多少合適:可用性和性能滿足TPS。

路由:寫入配置文件 或則 插表 或則 zookeeper。

10. 歸檔原則

歷史數(shù)據(jù)定期進(jìn)行歸檔 或則 移到其他大數(shù)據(jù)平臺(tái)。能讓輕量級(jí)數(shù)據(jù)庫(kù)更多緩存有用的數(shù)據(jù)。

在MySQL分區(qū)表里 注意要避免分區(qū)鎖,只能寫讀的場(chǎng)景。

11. 連接池的要求

長(zhǎng)鏈接,自動(dòng)重鏈,延時(shí)和異常記錄, 彈性鏈接,檢測(cè)滿,異常告警,進(jìn)階要求

是記錄所有訪問(wèn)情況,可以擴(kuò)展出很多能力。

應(yīng)用和數(shù)據(jù)庫(kù)連接池設(shè)置,數(shù)據(jù)庫(kù)允許的連接數(shù)設(shè)置,常見(jiàn)問(wèn)題。

A )應(yīng)用的數(shù)據(jù)庫(kù)連接池設(shè)置偏小,一旦數(shù)據(jù)庫(kù)相應(yīng)慢(新上線應(yīng)用,缺少索引 等)則應(yīng)。

用排隊(duì)嚴(yán)重,甚至雪崩,而遺憾的是數(shù)據(jù)庫(kù)能力還遠(yuǎn)為用盡。

B )不具備失效及時(shí)發(fā)現(xiàn)和重新鏈接數(shù)據(jù)庫(kù)能力。

C )隔離級(jí)別設(shè)置:RR 和 RC下不同的表現(xiàn)。

12. 應(yīng)用解耦

通過(guò)應(yīng)用訪問(wèn)數(shù)據(jù)庫(kù)而不是直接訪問(wèn),重要業(yè)務(wù)不能依賴低保障級(jí)別的系統(tǒng),應(yīng)用層重要業(yè)務(wù)和普通業(yè)務(wù)解耦,關(guān)鍵業(yè)務(wù)要獨(dú)立。

13. 組件失效免疫能力

單一應(yīng)用,單一硬件,甚至單一基礎(chǔ)設(shè)施,單一站點(diǎn)容災(zāi),業(yè)務(wù)影響,故障恢復(fù)能力,要季度級(jí)別進(jìn)行演練。

14. 關(guān)鍵詞組件減負(fù)

特別是數(shù)據(jù)庫(kù)訪問(wèn),數(shù)據(jù)庫(kù)成本最高,擴(kuò)展性最難,可用性保障最難,恢復(fù)難度和時(shí)間最大。

減負(fù):能不用就不用,使用最簡(jiǎn)單,成本最低的語(yǔ)句,避免大事務(wù),慎用兩階段事務(wù)。

15. 灰度數(shù)據(jù)庫(kù)

減少發(fā)布時(shí)變更數(shù)據(jù)庫(kù)對(duì)全局的影響,只有應(yīng)用程序灰度是不夠的,還要有專門的灰度數(shù)據(jù)庫(kù)。在分庫(kù)、讀寫分離架構(gòu)下,一套含數(shù)據(jù)庫(kù)的完整應(yīng)用架構(gòu),變的很自然。

所為灰度環(huán)境就是生產(chǎn)環(huán)境,生產(chǎn)數(shù)據(jù),所影響的也是生產(chǎn)環(huán)境,只是范圍比測(cè)試環(huán)境更廣,更真實(shí)。其實(shí)就是小范圍的生產(chǎn)環(huán)境。類似于游戲內(nèi)測(cè)。

16. 高仿真架構(gòu)體系

建立高仿真架構(gòu)體系

數(shù)據(jù)庫(kù),操作系統(tǒng)升級(jí):應(yīng)用是否適應(yīng),性能會(huì)變好, 還是變壞

應(yīng)用上線發(fā)布,系統(tǒng)變更(列如換平臺(tái)),提前判斷業(yè)務(wù)影響和性能瓶頸

應(yīng)對(duì)突發(fā)交易量,例如雙十一,性能極限在哪里,瓶頸在哪里。

17. 容災(zāi)保障

高可用是運(yùn)維核心要求,容災(zāi)是最后屏障

例如 雙活比單活好,MGR比復(fù)制架構(gòu)好,重要系統(tǒng)要做好高可用,容災(zāi)建設(shè)。

18. 多中心建設(shè)

冗余是基礎(chǔ),多中心建設(shè)是為了提升容災(zāi)能力和擴(kuò)展能力,并保障業(yè)務(wù)。

19. 應(yīng)用和數(shù)據(jù)庫(kù)是一個(gè)整體

應(yīng)用和運(yùn)維人員一起,解決應(yīng)用解耦,數(shù)據(jù)庫(kù)解耦,追賬補(bǔ)數(shù),業(yè)務(wù)監(jiān)控,應(yīng)用路由,故障切換等。可用性,效率,故障恢復(fù)等方面都要一起參與。

20. 性能提升

開(kāi)源數(shù)據(jù)庫(kù)使用應(yīng)該合理且有效的結(jié)合周邊的其他類型數(shù)據(jù)庫(kù),做到性能最大化。比如:Redis、MongoDB、ES、ClickHouse等。

總結(jié)

1. 最適合的架構(gòu)是結(jié)合軟件特性和業(yè)務(wù)場(chǎng)景,又能取得成本收益平衡;

2. 大數(shù)據(jù)情況下可以是利用讀寫分離、分庫(kù)分表,但要選擇合適的;

3. 不適合分庫(kù)的應(yīng)該考慮竭盡所能把核心庫(kù)做小,然后通過(guò)垂直擴(kuò)展來(lái)擴(kuò)容;

4. 用盡各種技術(shù), 高可用 和 容災(zāi)手段保證其可用。

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

    關(guān)注

    7

    文章

    3876

    瀏覽量

    65500
  • MySQL
    +關(guān)注

    關(guān)注

    1

    文章

    839

    瀏覽量

    27285
  • 系統(tǒng)架構(gòu)
    +關(guān)注

    關(guān)注

    1

    文章

    71

    瀏覽量

    23725
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    干貨分享:MySQL零基礎(chǔ)入門視頻教程!

    維工程師的一個(gè)分支,主要負(fù)責(zé)業(yè)務(wù)數(shù)據(jù)庫(kù)從設(shè)計(jì)、測(cè)試到部署交付的全生命周期管理。數(shù)據(jù)庫(kù)工程師的核心目標(biāo)是保證數(shù)據(jù)庫(kù)管理系統(tǒng)的穩(wěn)定性、安全性、完整性和高性能。今天在這里給大家分享一
    發(fā)表于 06-22 14:22

    干貨:38個(gè)MySQL數(shù)據(jù)庫(kù)的必備知識(shí)和小技巧

    干貨:38個(gè)MySQL數(shù)據(jù)庫(kù)的必備知識(shí)和小技巧
    的頭像 發(fā)表于 08-31 13:08 ?2583次閱讀

    Mysql和Oracle數(shù)據(jù)庫(kù)之間的誤區(qū)

    Mysql 和Oracle 在開(kāi)發(fā)中的使用是隨處可見(jiàn)的,那就簡(jiǎn)單去了解一下這倆款火的不行的數(shù)據(jù)庫(kù)。 本質(zhì)區(qū)別: Oracle數(shù)據(jù)庫(kù)是一個(gè)對(duì)象關(guān)系數(shù)據(jù)
    的頭像 發(fā)表于 11-13 09:35 ?2055次閱讀
    <b class='flag-5'>Mysql</b>和Oracle<b class='flag-5'>數(shù)據(jù)庫(kù)</b>之間的誤區(qū)

    華為云數(shù)據(jù)庫(kù)-RDS for MySQL數(shù)據(jù)庫(kù)

    (for MySQL)為輔。 MySQL數(shù)據(jù)庫(kù)是全球最受歡迎的一種數(shù)據(jù)庫(kù),它是屬于 Oracle旗下的一款產(chǎn)品,MySQL是一種關(guān)系型
    的頭像 發(fā)表于 10-27 11:06 ?1687次閱讀

    華為云數(shù)據(jù)庫(kù)\-GaussDB for MySQL數(shù)據(jù)庫(kù)

    華為云更可靠,技術(shù)強(qiáng)、創(chuàng)新快、資源多的特點(diǎn)。華為云采用了最新的DFV分布式存儲(chǔ)技術(shù),架構(gòu)方面使用了計(jì)算存儲(chǔ)分離架構(gòu),存儲(chǔ)還最高支持128TB的海量存儲(chǔ),可以實(shí)現(xiàn)超百萬(wàn)級(jí)QPS吞吐,還支持跨AZ部署,故障秒級(jí)切換,既擁有商業(yè)數(shù)據(jù)庫(kù)
    的頭像 發(fā)表于 10-27 14:56 ?1436次閱讀

    MongoDB開(kāi)源文檔數(shù)據(jù)庫(kù)的安裝

    MongoDB開(kāi)源文檔數(shù)據(jù)庫(kù)。它屬于一個(gè)稱為NoSQL的數(shù)據(jù)庫(kù)家族,它與傳統(tǒng)關(guān)系型基于表的SQL數(shù)據(jù)庫(kù)不同,如
    的頭像 發(fā)表于 12-06 17:00 ?1216次閱讀

    基于樹(shù)莓派的開(kāi)源庫(kù)存管理系統(tǒng)和MySQL數(shù)據(jù)庫(kù)

    我準(zhǔn)備使用?Raspberry Pi 設(shè)置一個(gè)用 PHP 編寫的開(kāi)源庫(kù)存管理系統(tǒng)和 MySQL 數(shù)據(jù)庫(kù)。用 PHP 編寫的帶有 MySQL/
    發(fā)表于 12-19 16:58 ?0次下載

    MySQL數(shù)據(jù)庫(kù)管理與應(yīng)用

    MySQL數(shù)據(jù)庫(kù)管理與應(yīng)用 MySQL是一種廣泛使用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),被認(rèn)為是最流行和最常見(jiàn)的開(kāi)源
    的頭像 發(fā)表于 08-28 17:15 ?1137次閱讀

    mysql是一個(gè)什么類型的數(shù)據(jù)庫(kù)

    強(qiáng)、易于使用和管理。在本文中,我們將詳盡、詳實(shí)、細(xì)致地介紹MySQL的功能、優(yōu)勢(shì)、架構(gòu)、語(yǔ)法等方面。 一、MySQL的功能: 數(shù)據(jù)庫(kù)管理:MySQL
    的頭像 發(fā)表于 11-16 14:43 ?2051次閱讀

    數(shù)據(jù)庫(kù)mysql基本增刪改查

    MySQL是一種開(kāi)源的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),常用于Web應(yīng)用程序的數(shù)據(jù)存儲(chǔ)和管理。通過(guò)使用MySQL,用戶可以進(jìn)行
    的頭像 發(fā)表于 11-16 16:35 ?1728次閱讀

    MySQL數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)

    MySQL 是一種開(kāi)源的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它是目前最流行的數(shù)據(jù)庫(kù)之一。MySQL 提供了一種結(jié)構(gòu)化的方法來(lái)管理大量的
    的頭像 發(fā)表于 11-21 11:09 ?1124次閱讀

    mysql數(shù)據(jù)庫(kù)基礎(chǔ)命令

    MySQL是一個(gè)流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),經(jīng)常用于存儲(chǔ)、管理和操作數(shù)據(jù)。在本文中,我們將詳細(xì)介紹MySQL的基礎(chǔ)命令,并提供與每個(gè)命令相關(guān)
    的頭像 發(fā)表于 12-06 10:56 ?750次閱讀

    mysql怎么新建一個(gè)數(shù)據(jù)庫(kù)

    mysql怎么新建一個(gè)數(shù)據(jù)庫(kù) 如何新建一個(gè)數(shù)據(jù)庫(kù)MySQL中 創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)MySQL中的基
    的頭像 發(fā)表于 12-28 10:01 ?1092次閱讀

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—Mysql數(shù)據(jù)庫(kù)表記錄丟失的數(shù)據(jù)恢復(fù)流程

    Mysql數(shù)據(jù)庫(kù)故障: Mysql數(shù)據(jù)庫(kù)表記錄丟失。 Mysql數(shù)據(jù)庫(kù)故障表現(xiàn): 1、
    的頭像 發(fā)表于 12-16 11:05 ?430次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—<b class='flag-5'>Mysql</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>表記錄丟失的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)流程

    MySQL數(shù)據(jù)庫(kù)的安裝

    MySQL是一個(gè)開(kāi)源免費(fèi)的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB 公司開(kāi)發(fā),目前屬于 Oracle 旗下公司。
    的頭像 發(fā)表于 01-14 11:25 ?373次閱讀
    <b class='flag-5'>MySQL</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>的安裝
    主站蜘蛛池模板: 国产小福利 | 日韩毛片在线视频 | 婷婷综合网站 | 亚洲国产精品嫩草影院 | 亚洲高清日韩精品第一区 | 五月天婷婷网站 | 男女视频在线看 | 国产免费的野战视频 | 亚洲成人免费在线 | 视频在线一区二区 | xx性欧美| 女人被狂躁视频网站免费 | 久久久久国产精品免费免费 | 五月婷婷深爱五月 | 国产毛片久久国产 | 天堂在线链接 | 最近高清在线视频观看免费 | 久久午夜视频 | 在线观看黄色一级片 | 天天干天天玩天天操 | 在线视频免费播放 | 五月天婷婷视频在线观看 | 4hc44四虎www亚洲 | 91啪免费网站在线观看 | 久久草精品 | 欧美爽爽 | 天堂色| 亚洲一本之道在线观看不卡 | 亚洲视频精品 | 日日操夜夜 | 中文字幕人成不卡一区 | 亚洲一区不卡视频 | 色婷婷久久免费网站 | 欧美系列在线观看 | 美女被免网站在线视频 | 综合免费视频 | 欧美视频不卡一区二区三区 | 在线观看s色 | 在线观看中文字幕一区 | 91噜噜噜 | 久久综合九色综合欧美狠狠 |