精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

打通MySQL架構和業(yè)務的任督二脈,做個DBA高手!

數(shù)據(jù)庫 MySQL
DBA 作為數(shù)據(jù)庫架構的設計、實施、維護人員,不僅要對各種 MySQL 架構非常熟悉,還要了解業(yè)務,對于不同的業(yè)務有一定的劃分和認識,并根據(jù)業(yè)務特點和架構特點,合理選擇和使用 MySQL,滿足業(yè)務需求。

目前,在很多 OLTP 場景中,MySQL 數(shù)據(jù)庫都有著廣泛的應用,也有很多不同的使用方式。

[[218387]]

從數(shù)據(jù)庫的業(yè)務需求、架構設計、運營維護、再到擴容遷移,不同的 MySQL 架構有不同的特點,適應一定的業(yè)務場景,或者解決一定的業(yè)務問題。

DBA 作為數(shù)據(jù)庫架構的設計、實施、維護人員,不僅要對各種 MySQL 架構非常熟悉,還要了解業(yè)務,對于不同的業(yè)務有一定的劃分和認識,并根據(jù)業(yè)務特點和架構特點,合理選擇和使用 MySQL,滿足業(yè)務需求。

本文從以下三個方面對 MySQL 數(shù)據(jù)庫和業(yè)務場景進行探討和說明:

  • MySQL 數(shù)據(jù)庫常見架構
  • 業(yè)務環(huán)境分類
  • 業(yè)務與架構結合使用原則

讓大家先分別對 MySQL 的架構和業(yè)務分類有所了解,然后再將兩者貫通起來,使得能夠在進行業(yè)務與 MySQL 架構設計時綱舉目張,讓用戶可以用合適的技術解決支撐業(yè)務需求。

MySQL 數(shù)據(jù)庫常見架構

為了對 MySQL 數(shù)據(jù)庫常見架構,能夠有比較清晰的認識,下面先從 MySQL 三種通用基礎架構、五種特殊需求架構、架構組合與綜合使用三個方面進行說明。

MySQL 三種常見基礎架構

MySQL 單實例架構

MySQL 單實例,就是在服務器上部署一個 MySQL 實例來對外提供服務,這是最開始接觸 MySQL 數(shù)據(jù)庫會使用的方式,也是常見學習、研究 MySQL 數(shù)據(jù)庫的使用方式。

MySQL 單實例的使用方式,是 MySQL 數(shù)據(jù)庫使用的***階段,通常這種情況下,MySQL 數(shù)據(jù)庫與應用程序會在同一個服務器上。

這種方式主要好處就是部署和使用簡單,直接通過編譯安裝,或者二進制包解壓安裝,很快就可以有一個可以使用的 MySQL 數(shù)據(jù)庫環(huán)境。

同時,這種方式,依賴性少,不需要依賴其他第三方工具或者軟件,維護和故障定位也比較容易。

熟悉和掌握好 MySQL 單實例環(huán)境的技能,也是維護其他 MySQL 架構的基礎。

需要注意的是,MySQL 單實例在學習和開發(fā)環(huán)境可以使用一下,但這種方式的可用性和災備性較弱,如果作為業(yè)務系統(tǒng)使用的數(shù)據(jù)庫,盡量不要用這種方式。

MySQL master-slave 主從架構

MySQL master-slave 主從環(huán)境,是在 MySQL 單實例環(huán)境的基礎上,將 MySQL 進行全庫備份,再恢復出一個或多個 MySQL 實例。

通過 change maste r命令,指定新恢復出的 MySQL 實例,從那個 MySQL 節(jié)點上讀取變化日志,并在本地應用,使新恢復的實例與原來的 MySQL 實例數(shù)據(jù)保持一致。

所以,原來的數(shù)據(jù)一致變化的實例,叫 master 主節(jié)點;從 master 節(jié)點獲取日志,并在本地應用,使數(shù)據(jù)與 master 階段保持一致的節(jié)點,叫 slave 從節(jié)點;這樣的架構環(huán)境,就叫 master-slave 主從環(huán)境。

master-slave 主從環(huán)境,是 MySQL 數(shù)據(jù)庫非常具有特色的功能,也是 MySQL 數(shù)據(jù)庫應用在生產環(huán)境的常見架構。

通過 master-slave 架構,就可以使線上數(shù)據(jù)庫的數(shù)據(jù)有了多份,起到了一定的數(shù)據(jù)備份功能。

Slave 從庫數(shù)據(jù)變化只通過應用日志實現(xiàn),一般不會主動產生寫數(shù)據(jù)的情況,但可以提供對外數(shù)據(jù)讀服務,這樣通過增加幾個 slave 從庫,讓只進行數(shù)據(jù)讀取的業(yè)務到 slave 從庫上查詢,可以大大提高業(yè)務的讀性能和吞吐量。

在互聯(lián)網(wǎng)行業(yè)中,非常多的數(shù)據(jù)讀操作遠高于數(shù)據(jù)寫操作的業(yè)務場景,通過在 master 主節(jié)點寫數(shù)據(jù),在 slave 節(jié)點上讀數(shù)據(jù),進行這種讀寫分離的架構,可以很好地滿足業(yè)務需求。

當然,MySQL 的 master-slave 主從架構,具體實現(xiàn)也可以非常靈活,1 個 master 主節(jié)點,可以有 1 個或多個 slave 從節(jié)點。

而一個 slave 節(jié)點,也可以當做其他節(jié)點的 slave 節(jié)點,如果一個 slave 節(jié)點后面再有其他節(jié)點當做這個節(jié)點的 slave 從節(jié)點,就叫做級聯(lián)復制。

MySQL 的 master-save 架構,在 MySQL 單實例架構的基礎上,提高了 MySQL 數(shù)據(jù)庫的性能、可用性和可擴展性,同時也為 MySQL 數(shù)據(jù)庫追求更高的可用性,提供了基礎保障。

MySQL MHA 高可用架構

雖然 MySQL 數(shù)據(jù)庫的 master-salve 主從架構,使數(shù)據(jù)庫有了多份,但這些 maste 主節(jié)點和 slave 從節(jié)點之間,仍然是相對獨立的,尤其是 master 主節(jié)點如果出現(xiàn)故障了,仍然是不能對外提供數(shù)據(jù)庫服務的。

為了應對各種故障和特殊情況,實現(xiàn)數(shù)據(jù)庫更高的可用性,就需要在 master-slave 的基礎上,通過其他組件來實現(xiàn)更高的可用性。

MySQL 高可用性的方案比較多,但目前比較主流、比較成熟的方案,還是 MySQL + MHA 高可用架構。

簡單來說,為了實現(xiàn)更高的可用性,就要在 master-slave 主從環(huán)境的基礎上,將業(yè)務連接 master 的 IP,有 master 主機的實際 IP,變成虛擬的 VIP 或者域名。

應用程序通過 VIP 訪問數(shù)據(jù)庫,進行數(shù)據(jù)讀寫,在正常情況下,業(yè)務在 master 上進行讀寫;如果 master 節(jié)點出現(xiàn)故障,高可用組件會監(jiān)測到這個故障,并將 VIP 切換到 slave 從庫上。

同時在 slave 從庫上進行日志的傳輸和應用,保證 slave 上的數(shù)據(jù),與 master 節(jié)點故障前的數(shù)據(jù)盡量一致,這樣切換后新的 slave 節(jié)點就仍然可以對外提供數(shù)據(jù)庫服務。

當然,對于具體實現(xiàn)來說,在 MySQL 的 master-slave 主從結構外,VIP 和數(shù)據(jù)庫日志追平的方案也是有多種實現(xiàn)方式,也可進行各種深入定制,甚至一些公司不使用開源軟件,直接自己開發(fā)來實現(xiàn)高可用組件的各個功能。

目前 MySQL + MHA 這種高可用實現(xiàn)方式,是比較主流和成熟的實現(xiàn)方式,后面也可能會有一些其他更加完善的高可用實現(xiàn)方式,但都可以歸類到實現(xiàn)提高可用性這個范圍。

小結:對于 MySQL 數(shù)據(jù)庫的各種通用性需求,這三種基礎架構都可以很好地滿足,換句話說,這是 MySQL 數(shù)據(jù)庫架構中必須要用到和掌握的三種基礎架構。

五種特殊業(yè)務需求架構

通過 MySQL 中這三種常見基礎架構,絕大多數(shù) MySQL 數(shù)據(jù)庫場景和問題,都可以很好得到滿足和解決。

但一些特殊的場景,或一些特殊的問題,也可以使用除 MySQL 數(shù)據(jù)庫以外的其他數(shù)據(jù)庫、專門某一類或幾類問題的解決方案。

針對這些特殊的業(yè)務需求,接下來我會先從要解決的問題進行描述和說明,然后再提出對應的解決方案。

MySQL + 分布式 Proxy 水平擴展架構

問題:如果業(yè)務規(guī)模進一步擴大,讀寫量級尤其是寫的量級達到非常大的地步。

比如每秒數(shù)據(jù)寫入幾十萬,甚至幾百萬,每天的數(shù)據(jù)量有幾億甚至幾十億的規(guī)模,這樣的讀寫就遠遠不是一個 master 節(jié)點可以支撐的,這時就必須要進行擴展了。

一般來說,MySQL 的擴展可分為:按照不同業(yè)務進行垂直拆分的垂直擴展,和通過一定的分庫分表策略實現(xiàn)的庫表水平擴展兩種方式。

這兩種方式可以單獨使用,也可以結合使用。但如果是解決大量數(shù)據(jù)和高并發(fā)讀寫,主要方式還是 MySQL 水平擴展。

MySQL 水平擴展的思路:在一個服務器上的 database 庫和 table 表,總會受到一臺服務器的資源限制,即使服務器的硬件各方面都達到頂配,也還是會有瓶頸。

對于業(yè)務訪問來說,如果有一個 Proxy 代理層或者中間件層的一個 database 和一個 table,通過代理層按照一定的規(guī)則映射和轉換,轉換成底層多臺服務器上的多個 database 和多個 table,這樣就相當于多臺服務器共同支撐一個業(yè)務,可支持的容量就與底層服務器的數(shù)量有關。

在 Proxy 代理沒有到瓶頸的情況下,底層服務器數(shù)量越多,整個水平擴展集群的性能和容量也會越多,幾乎可以線性擴展。通過這樣的思路,就可以解決大量數(shù)據(jù)存儲和并發(fā)的問題。

具體實現(xiàn)來說,水平擴展集群除了 MySQL 數(shù)據(jù)庫,需要一個分布式 Proxy 中間件,這種水平擴展中間件種類也比較多,MySQL 官方和一些大的的公司都有開發(fā)。

我們用的比較多的是 MyCAT 中間件,對于底層的分片,可以有幾十個、幾百個甚至幾千個。

當然,水平擴展可以解決大數(shù)據(jù)量的問題,需要有分片策略,那相應地,也會有使用這種策略的限制,比如片鍵選擇,跨節(jié)點訪問,分布式事務等問題,需要與業(yè)務進行對應結合和考慮后,才可以很好地使用。

TokuDB/MyRocks/InnoDB 高性能寫入架構

問題:MySQL 數(shù)據(jù)庫水平拆分,可以對于大數(shù)據(jù)量的讀寫進行線性擴展,相應地底層服務器數(shù)量也需要比較多。

但對于數(shù)據(jù)寫入量非常大,數(shù)據(jù)讀很少,數(shù)據(jù)總量大的情況,使用高性能寫入架構,會更合適一些。

業(yè)務數(shù)據(jù)寫入量非常大,讀取量非常高的情況,一般主要對數(shù)據(jù) insert 寫入性能,同時對數(shù)據(jù)壓縮效率有特別高的要求。

這種特殊的寫入要求,需要對數(shù)據(jù)寫入有特殊的優(yōu)化和設計,并且有比較好的壓縮效率和算法,能夠將寫入的大量數(shù)據(jù)進行壓縮,節(jié)省空間。這種寫入架構, 通常可以看做是 MySQL 數(shù)據(jù)庫的一種特殊的存儲引擎。

具體到實現(xiàn)而言,MySQL 的高性能寫入集群,可以使用 TokuDB 存儲引擎。近幾年 Facebook 也開源了其內部實現(xiàn)的 MyRocks,可以作為高性能寫入的存儲引擎。

MySQL 默認的 InnoDB 存儲引擎,在新的 5.7 及以后版本優(yōu)化后,寫入性能和壓縮性能也有了更高的性能,也可以作為數(shù)據(jù)寫入的一種選擇。

MySQL + 緩存(Memcached、Redis等) 高并發(fā)讀架構

問題:如果業(yè)務訪問 MySQL 中的某一些少量熱數(shù)據(jù),訪問的并發(fā)量非常高,訪問的時效性,數(shù)據(jù)的一致性要求都非常高。

這時候使用 MySQL 數(shù)據(jù)庫本身支持這些數(shù)據(jù)讀取,可能會在并發(fā)性、時效性上出現(xiàn)瓶頸,所以就可以使用緩存系統(tǒng)結合 MySQL 來使用。

緩存系統(tǒng)是將 MySQL 數(shù)據(jù)庫中的少量熱數(shù)據(jù)存放到內存當中,由于內存的 IO 效率遠高于硬盤的 IO,相應的 CPU 消耗也會少很多,這樣緩存系統(tǒng)中響應一次業(yè)務請求的時間,會遠少于直接從 MySQL 數(shù)據(jù)庫訪問需要的時間。

于是緩存系統(tǒng)就可以支撐熱數(shù)據(jù)的高并發(fā)訪問,數(shù)據(jù)寫還是寫入 MySQL 數(shù)據(jù)庫中,數(shù)據(jù)讀操作,優(yōu)先讀取緩存。

如果緩存中有,則直接從緩存中返回結果;如果緩存中沒有,則從 MySQL 數(shù)據(jù)庫中讀取數(shù)據(jù)返回應用,并把數(shù)據(jù)結果再放到緩存的內容中。

具體實現(xiàn)來說,緩存系統(tǒng)常用的技術架構有 Memcached 和 Redis:

  • Memcached 是比較經(jīng)典的緩存系統(tǒng),在之前常與 LAMP、LNMP 流行架構結合使用。
  • Redis 是幾年新興的 Key-Value 鍵值型 NoSQL 數(shù)據(jù)庫,除了作為緩存,還可以持久化作為 Key-Value 數(shù)據(jù)庫使用。

MySQL + 小文件系統(tǒng)(MongoDB、Ceph等) 大字段存取架構

問題:在 MySQL 數(shù)據(jù)庫中,通常是存儲符合關系型數(shù)據(jù)庫原理的小字段,比如數(shù)值型、字符型數(shù)據(jù)。

但在實際環(huán)境中,除了這些常用字段,還會有一些大字段,比如用戶頭像這種圖片文件、上傳的音頻、視頻文件、帖子內容等大 text 字段,另外還有一些 JSON 文件、XML 文件等。

這些可以以二進制形式存儲在 MySQL 數(shù)據(jù)庫中,但讀取和管理都會比較麻煩。這時,就可以使用小文件系統(tǒng)來結合 MySQL 來使用。

小文件系統(tǒng),是可以存儲并快速訪問結構化數(shù)據(jù)的系統(tǒng)。對于圖片、音頻、視頻、TXT 文件、JSON 文件、XML 文件等大字段,一般就只有簡單的讀寫操作,將這些字段存入到小文件系統(tǒng)中,并將對應的訪問鏈接存入到 MySQL 數(shù)據(jù)庫的表中。

這樣通過數(shù)據(jù)庫表,可以快速讀寫文件位置信息,在小文件系統(tǒng)中,通過文件位置信息,可以實現(xiàn)對大字段的快速讀寫訪問。

具體實現(xiàn)而言,小文件系統(tǒng)也有很多技術軟件,比較常見的有 MongoDB 文檔型 NoSQL 數(shù)據(jù)庫、Ceph 分布式小文件系統(tǒng)等。

MySQL + Inforbright/Greenplum 統(tǒng)計分析架構

問題:在 MySQL 數(shù)據(jù)庫上實時響應業(yè)務需要的查詢,通常是指 OLTP 業(yè)務,但對于已經(jīng)產生的數(shù)據(jù),通常會在第二天之后,有結果匯總和統(tǒng)計分析需求。

這類 OLAP 需求通常執(zhí)行頻率較低,但每次執(zhí)行消耗的資源很大,如果與 OLTP 一樣在一個系統(tǒng)上運行,就會造成這兩大類業(yè)務的相互影響。這時就可以使用 MySQL 數(shù)據(jù)庫與 OLAP 統(tǒng)計業(yè)務分類結合的架構。

MySQL 產生了業(yè)務數(shù)據(jù)后,通常需要在第二天,要對前一天的數(shù)據(jù)進行各個角度、各個維度的統(tǒng)計、聚合、分析,以體現(xiàn)和反映業(yè)務的運營情況。

這是讓 MySQL 支持線上 OLTP 業(yè)務,通過數(shù)據(jù)流轉程序,將每天產生的數(shù)據(jù)流轉到離線的數(shù)據(jù)倉庫系統(tǒng)中,在數(shù)據(jù)倉庫系統(tǒng)中,進行各種數(shù)據(jù)統(tǒng)計分析、結果匯總,并將數(shù)據(jù)統(tǒng)計結果再流轉到結果展示庫中。這樣就可以很好地實現(xiàn)線上 OLTP 和線下 OLAP 的結合使用和執(zhí)行。

具體實現(xiàn)而言,對于 MySQL 數(shù)據(jù)庫可以結合的 OLAP 數(shù)據(jù)倉庫架構,可以選用 Inforbright 數(shù)據(jù)倉庫,也可以選用 Greenplum 分布式 MPP 數(shù)據(jù)庫倉庫。

相對而言,Inforbright 數(shù)據(jù)倉庫比較輕量級,與 MySQL 使用類似;Greenplum 分布式 MPP 數(shù)據(jù)倉庫可以支撐海量數(shù)據(jù)的統(tǒng)計分析,功能、性能、容量等也比 Inforbright 要更強一下,成本也更大一些。

小結:MySQL 五種特殊業(yè)務架構,可以說是在 MySQL 三種常見的、通用的架構基礎上,面對特殊的業(yè)務場景,遇到特殊的問題,進行針對性解決:

  • 對于大量數(shù)據(jù)讀寫,可以采用水平擴展架構。
  • 對于有大量數(shù)據(jù)寫入需求,可以采用 MySQL 高性能寫入架構。
  • 對于熱數(shù)據(jù)的高并發(fā)、快速響應的需求,可以采用 MySQL+緩存架構。
  • 對于特殊的大字段存取需求,可以采用 MySQL+小文件系統(tǒng)架構。
  • 對于離線統(tǒng)計分析需求,可以采用 MySQL+統(tǒng)計分析架構。

架構組合與綜合使用

MySQL 三種比較通用的基礎架構和五種特殊需求架構,都可以根據(jù)場景單獨使用,也可以根據(jù)特定的場景進行組合幾種架構使用,或者綜合起來一起使用。

架構組合

對于只有一兩種特殊情況的架構,選擇基礎架構和特殊架構的簡單組合就可以了,生產環(huán)境中可用到的架構組合類型有:

  • MySQL+MHA 高可用架構與 MySQL 分布式 Proxy 水平擴展架構組合。
  • MySQL+MHA 高可用架構與 MySQL 小文件系統(tǒng)大字段存取架構組合。
  • MySQL+MHA 高可用架構與 MySQL 緩存高并發(fā)讀架構組合。
  • MySQL 分布式 Proxy 水平擴展架構與 MySQL 小文件系統(tǒng)大字段存取架構組合。
  • MySQL 分布式 Proxy 水平擴展架構與 MySQL 緩存高并發(fā)讀架構組合。
  • MySQL 高性能寫入架構與 MySQL Inforbright/Greenplum 統(tǒng)計分析架構組合。

架構綜合

如果是比較復雜的業(yè)務場景,幾種特殊的數(shù)據(jù)庫架構可以綜合起來使用:

MySQL+MHA 高可用架構 、MySQL 分布式 Proxy 水平擴展架構、MySQL 緩存高并發(fā)讀架構、MySQL 小文件系統(tǒng)大字段存取架構、MySQL  Inforbright/Greenplum 統(tǒng)計分析架構。

業(yè)務環(huán)境分類

***部分對 MySQL 的架構進行了說明,這是對 MySQL 數(shù)據(jù)庫本身的了解,算作“知己”。

所有的數(shù)據(jù)庫系統(tǒng)提供服務的對象都是業(yè)務系統(tǒng),所以 DBA 要對業(yè)務系統(tǒng)進行了解,對業(yè)務的特點和適合的場景,做到心中有數(shù),可以算作是“知彼”。做到知己知彼,就能更好地貫通兩者了。

從數(shù)據(jù)庫使用推導數(shù)據(jù)使用分類

從數(shù)據(jù)庫操作角度看,業(yè)務系統(tǒng)對于數(shù)據(jù)庫的操作,大的方面可以分為“讀數(shù)據(jù)”和“寫數(shù)據(jù)”兩類。

展開來說,寫數(shù)據(jù)也可以具體分為:insert 插入數(shù)據(jù)、update 修改數(shù)據(jù)、delete 刪除數(shù)據(jù)三種情況。

所以,數(shù)據(jù)庫的使用也可以細分為:增 insert、刪 delete、改 update、查 select 四種情況。

依據(jù)業(yè)務系統(tǒng)對數(shù)據(jù)的操作分類,就可以對業(yè)務系統(tǒng)進行歸類:

只讀業(yè)務系統(tǒng)

只讀是指只有查詢 select,沒有數(shù)據(jù)修改的情況。這種情況,是數(shù)據(jù)庫中已經(jīng)存在一些數(shù)據(jù),并且這些數(shù)據(jù)只作查詢或展示用,不會有任何數(shù)據(jù)變化。

比如緩存中的數(shù)據(jù)、歸檔后的數(shù)據(jù)、歷史結果數(shù)據(jù)、統(tǒng)計結果數(shù)據(jù)等,都是只能進行查詢和展示,不會再發(fā)生數(shù)據(jù)變化的。

可讀寫業(yè)務系統(tǒng)

按照寫操作的具體情況,可以對可讀寫業(yè)務系統(tǒng)分成三類:

  • 只有插入 insert,沒有 update 和 delete 的可讀寫業(yè)務系統(tǒng),這種情況是指數(shù)據(jù)表的數(shù)據(jù)只會增加,且表中的數(shù)據(jù)不能再變化,不會再有修改或者刪除操作;比如操作記錄表、狀態(tài)變化記錄表、留言記錄表等。
  • 有 insert 和 update,沒有 delete 的可以讀寫業(yè)務系統(tǒng),這種情況是指數(shù)據(jù)表中的數(shù)據(jù),可以進行增加和修改,但數(shù)據(jù)一旦產生,可以變化,但不能修改。

這也是一種常見的數(shù)據(jù)庫設計思路,即數(shù)據(jù)表可以有失效,但生效刪除,并不是真正從數(shù)據(jù)表中刪除,而是修改了表中表示狀態(tài)位的列值,這樣就可以保證數(shù)據(jù)一直具有可回溯性。

  • insert、update、delete 都有的可讀寫業(yè)務系統(tǒng),這種情況是指數(shù)據(jù)表中的數(shù)據(jù)可進行各種操作,可以查詢,也可以進行各種變化,添刪改除各種操作也都可以進行。

常見業(yè)務表分類

從業(yè)務角度對表進行分類,雖然不同的應用程序對表的使用不同,但還是能夠抽象成為幾大類表。

配置表

這種表通常存放業(yè)務一些基礎的配置信息或者字典信息。表的數(shù)據(jù)量一般都比較小,修改變化的操作不太頻繁,通常都是 select 查詢操作。

狀態(tài)表

這種表通常存放在業(yè)務系統(tǒng)中實體讀象的狀態(tài)信息,常見的有用戶信息表,訂單信息表等。這種表的數(shù)據(jù)量與實體讀象的規(guī)模有直接關系,比如一個 APP 有多少注冊用戶,通常這個 APP 的用戶表都會有多少條記錄。

狀態(tài)表的變化通常比較頻繁,而且 insert、update、select 操作都會有,delete 操作是否有,通常會根據(jù)業(yè)務情況的規(guī)定決定。

日志表

這種表通常用來記錄業(yè)務系統(tǒng)中某種實體的狀態(tài)信息,常見的有用戶登錄表、充值信息記錄表等。

這種表的數(shù)據(jù)規(guī)模通常比較大,而且如果業(yè)務狀態(tài)變化頻繁,記錄的變化信息比較多,這種表的數(shù)據(jù)量和插入性能都要求比較高。

日志表的操作,通常會以 insert 操作為主,個別業(yè)務會對日志表進行查詢。MySQL 五種特殊需求架構中的高性能寫入架構,主要就是應用這種表的需求。

歸檔表

這種表,是將上面三種 OLTP 業(yè)務表的數(shù)據(jù)進行歸檔或者冷熱分離的表。對線上業(yè)務三類表進行數(shù)據(jù)歸檔、冷熱分離。

一方面可以控制線上業(yè)務表的數(shù)據(jù)規(guī)模,保證業(yè)務表性能;另一方面進行歸檔后,可用于對歸檔歷史數(shù)據(jù)進行更好的查詢反映和支持。

歸檔表的數(shù)據(jù)量大小與對應的線上表大小、歸檔周期有關。歸檔表的操作,除了歸檔過程的數(shù)據(jù)加載外,主要就是 select 查詢操作了,歸檔后就算是只讀表。

統(tǒng)計數(shù)據(jù)表

統(tǒng)計數(shù)據(jù)表,是指業(yè)務有離線統(tǒng)計分析需求時,需要將各種線上表和歸檔表的數(shù)據(jù),通過ETL過程流轉到線上 OLAP 統(tǒng)計分析系統(tǒng)中的原始數(shù)據(jù)表。

這類表通常數(shù)據(jù)量會非常大,一個 OLAP 統(tǒng)計分析平臺會匯總多個線上業(yè)務系統(tǒng)的數(shù)據(jù)進行統(tǒng)計分析。統(tǒng)計數(shù)據(jù)表的操作,除了數(shù)據(jù)流轉動作外,主要就是各種統(tǒng)計分析程序的訪問計算。

統(tǒng)計結果表

統(tǒng)計結果表是在業(yè)務有離線統(tǒng)計分析需求時,各種統(tǒng)計分析過程訪問統(tǒng)計數(shù)據(jù)表中的數(shù)據(jù),按照一定的邏輯進行統(tǒng)計分析后的結果數(shù)據(jù)。

這種統(tǒng)計結果數(shù)據(jù),通常數(shù)據(jù)量會比較小。統(tǒng)計結果表的操作,處理結果流轉動作外,主要就是供訪問接口進行 select 查詢。

通過對業(yè)務表類型的梳理,可以對所有的業(yè)務系統(tǒng)進行一個大體的劃分,做到心中有數(shù)。

DBA 對業(yè)務的把握

通過數(shù)據(jù)使用方式將業(yè)務系統(tǒng)劃分為四類,再通過業(yè)務常見表類型劃分,就可以對通用的業(yè)務使用數(shù)據(jù)庫有一個整體的了解。但對于具體的業(yè)務場景,還需要根據(jù)每個公司具體的實際情況進行具體確認和考慮。

大多數(shù)情況下,某一種具體的業(yè)務都可以根據(jù)情況歸入某一種業(yè)務類型中,只是每個業(yè)務具體的量級會有不同,大家需要先了解具體業(yè)務環(huán)境中的量級,再根據(jù)業(yè)務類型與 MySQL 架構的使用情況,進行對應就可以了。

如果實際環(huán)境中確認有不在現(xiàn)有分類中的情況,則可以通過現(xiàn)有的思路,進行新的類型劃分和架構對應。

業(yè)務與架構結合使用原則

上面兩部分通過對 MySQL 各種架構進行說明,并通過對業(yè)務環(huán)境的分類,可以讓大家對 MySQL 架構和業(yè)務環(huán)境本身有一定的了解。

下面我將就我在架構設計和運維當中兩者結合的使用原則,對 MySQL 業(yè)務和架構的結合使用進行說明。

適用性原則

適用性原則就是在考慮某一個具體業(yè)務場景具體使用哪一種或者幾種業(yè)務場景時,我們要盡量使用合適的技術架構解決合適的問題。

需求與場景

MySQL 的三種通用基礎架構,適用的場景多一些。但通用業(yè)務場景在數(shù)據(jù)量級、訪問規(guī)模、讀寫方式等發(fā)生比較大的變化時,就變成了有特殊需求的場景,可以考慮使用某種特定場景對應的 MySQL 架構技術,盡量保證適用性。

反之,如果實際業(yè)務在量級、規(guī)模、讀寫方式還沒有達到非常特殊的場景時,盡量使用通用的基礎架構就可以滿足業(yè)務需求,也可以降低系統(tǒng)復雜度和隱患。

整體與部分

不論對于一個業(yè)務系統(tǒng),還是 MySQL 數(shù)據(jù)庫架構而言,都要從整體和部分兩個角度進行看待和考慮。

一個業(yè)務系統(tǒng),首先是一個整體,從整體上看各種業(yè)務需求和使用方式,把握好整體,然后再考慮具體的需求。

如果沒有特殊的需求,則可以按照通用場景來設計和考慮;如果某一部分有特殊的需求,則可以把這部分內容單獨劃分出來,進行對應的架構設計。

多個通用和特殊的架構,相互組合,完成一個對業(yè)務系統(tǒng)支撐的架構總體。

穩(wěn)定與升級

一般情況下,業(yè)務系統(tǒng)都是先用通用架構進行數(shù)據(jù)支持,在通用架構適用時,業(yè)務系統(tǒng)也可以穩(wěn)定運行。

在業(yè)務系統(tǒng)不斷運行過程中,有新業(yè)務場景需求產生時,要綜合考慮保證現(xiàn)有業(yè)務穩(wěn)定性、以及升級業(yè)務系統(tǒng)到新架構的步驟和階段。

一般不要一下子全部升級,建議采用先測試、再上線、分批次逐步過渡和升級的方式。

階段性原則

業(yè)務系統(tǒng)的發(fā)展是有階段的,MySQL 數(shù)據(jù)庫架構的發(fā)展也是有階段的。不同階段關注的信息和主要處理思路都是不同的,從不同維度考慮階段性也是使用架構和業(yè)務的重要原則。

數(shù)量階段

數(shù)量是一個比較明顯的階段判斷指標。業(yè)務系統(tǒng)通常會有 DAU、UV、PV 等指標,來幫助判斷業(yè)務系統(tǒng)的規(guī)模。

數(shù)據(jù)庫系統(tǒng)、QPS、TPS、一個表的數(shù)據(jù)量、一個庫下的表數(shù)量、一個實例下的庫數(shù)量、總的實例數(shù)量、服務器數(shù)量,都是與架構結合比較緊密的指標。

以表數(shù)據(jù)量舉例:如果一個表運行一年,數(shù)量在 10 萬以下,就可以認為是小表了;數(shù)據(jù)量在 10 萬-1000 萬以上的,可以認為是中表。

數(shù)據(jù)量在 1000 萬以上,就可以認為是大表,這時就需要考慮歸檔或水平拆分了;如果數(shù)據(jù)量在 1 億以上,就必須要用特殊架構進行單獨處理了。

統(tǒng)一組織

在業(yè)務規(guī)模和數(shù)據(jù)規(guī)模都比較小的時候,若存在多種不同的架構,還是可以維護的。

但如果數(shù)據(jù)庫實例數(shù)量和業(yè)務模塊都大起來之后,統(tǒng)一一種或少數(shù)幾種數(shù)據(jù)架構就非常重要了。統(tǒng)一架構組織,可以讓業(yè)務系統(tǒng)和架構,更加容易控制和維護。

規(guī)模控制

業(yè)務發(fā)展到一定規(guī)模,底層架構中的數(shù)據(jù)庫都必須要控制規(guī)模,一個實例不能太大,一個表也不能太大,如果超過了約定好的規(guī)模,需要進行實力拆分,或者表拆分,以使實例和庫表都保持在統(tǒng)一設定的規(guī)模當中。

擴展性原則

應用業(yè)務隨著時間會不斷變化,底層的 MySQL 架構也需要隨著業(yè)務的變化能夠具有一定的擴展性,保持變化和擴展的空間,以不斷支持業(yè)務的發(fā)展。

架構之間的打通

從 MySQL 的三種基礎架構就可以看出來,MySQL 單實例架構→MySQL master-slave 主從架構→MySQL MHA 高可用架構,這中間是逐步演進的,有直接的依賴關系。

后續(xù) Oracle 推出的 InnoDB Cluster 架構,也與這些基礎架構有直接演進關系。

其他五種特殊需求的架構,隨著業(yè)務分類的變化,特殊情況也可能發(fā)生變化,可根據(jù)這些變化從一種特殊架構調整成為另一種特殊的架構。

OLTP 與 OLAP

數(shù)據(jù)庫系統(tǒng)一般分為 OLTP 和 OLAP 兩大類,但實際在目前的業(yè)務系統(tǒng)和架構設計中,這兩種需求都是需要支持的。

只要建立好一個比較穩(wěn)定、可靠的數(shù)據(jù)流轉體系,將這兩者打通,就可以很容易地實現(xiàn) OLTP 和 OLAP 的互通,OLTP 的業(yè)務數(shù)據(jù)傳送到 OLAP 中進行統(tǒng)計,OLAP 的統(tǒng)計結果,再返回到 OLTP 中進行展示。

新架構的使用

MySQL 架構中除了常見的三種基礎架構和五種特殊架構,還有一些新的技術和趨勢來嘗試完善和解決現(xiàn)有架構的一些問題,比如 InnoDB Cluster 等技術,對 MySQL 的擴展和高可用會有更好的解決方式。

雖然目前這些新技術還沒有完全穩(wěn)定和成熟,但在后續(xù)新技術架構穩(wěn)定成熟后,可以很容易地將現(xiàn)有架構擴展成新的技術架構,這樣就可以更好地解決業(yè)務問題了。

后記

本文嘗試從 MySQL 架構,業(yè)務環(huán)境分類,MySQL 業(yè)務和架構結合使用原則三個方面對 MySQL 架構和業(yè)務進行了說明。

希望能夠從架構角度讓大家對架構和業(yè)務的理解,能夠更深一層、觸類旁通地面對和解決各種業(yè)務問題。

其中某些與架構關聯(lián)性不太大的具體細節(jié),在本文中沒有完全展開,會在以后的文章中再進行說明。

作者:趙飛祥

介紹:現(xiàn)在競技世界從事數(shù)據(jù)庫相關工作, Oracle 10G OCP,11G OCM,Oracle YEP 年輕專家,8 年數(shù)據(jù)庫運維和架構經(jīng)驗,對 MySQL、Oracle、PostgreSQL、Greenplum、MongoDB 等多種常見數(shù)據(jù)庫有豐富的運維實踐經(jīng)驗,掌握與數(shù)據(jù)庫相關的前后端架構和 DevOps 實現(xiàn)技術,擅長數(shù)據(jù)庫架構設計、維護優(yōu)化、數(shù)據(jù)流轉、Shell 和 Python 開發(fā);樂于技術交流,以網(wǎng)名 yumushui 進行了大量的技術總結和思考分享。

 

責任編輯:武曉燕 來源: DBAplus社群
相關推薦

2021-02-26 21:59:22

Git版本系統(tǒng)

2016-10-20 09:29:38

云極星創(chuàng)云計算

2021-04-20 19:20:57

Kafka架構設計

2010-05-04 17:58:22

云計算

2015-07-14 09:00:16

DR Rapid戴爾DR系列

2009-06-24 15:21:00

路由器下載速度

2013-10-28 15:29:49

數(shù)字家庭三網(wǎng)融合

2016-02-22 14:28:52

2010-12-20 15:00:43

2014-04-01 09:31:47

打通任督二脈:用友NC

2021-06-10 07:49:27

Kafka 架構設計

2019-01-07 19:49:31

Oracle NetS一體化管理

2018-08-13 18:13:00

大數(shù)據(jù)

2010-05-20 11:30:47

OA協(xié)作平臺寶時得鼎捷軟件

2021-12-13 07:02:47

硬件軟件CPU

2009-09-18 14:03:24

IT運維

2020-05-20 14:41:11

微軟機器學習Windows

2025-08-28 11:55:15

智能體AI開發(fā)

2025-04-02 09:00:00

DeepSeek人工智能AI
點贊
收藏

51CTO技術棧公眾號

免费网站黄在线观看| 亚洲欧美日韩偷拍| 国产素人视频在线观看| 国产精品中文字幕日韩精品| 久久久视频精品| 欧美特级黄色录像| 国产精品白丝久久av网站| 亚洲一二三四区| 色婷婷精品国产一区二区三区| 国产精品久久久久久在线| 99精品欧美| 精品国产视频在线| 国产一区二区网| 国产十八熟妇av成人一区| 三级中文字幕在线观看| 中文字幕中文字幕中文字幕亚洲无线| 亚洲自拍偷拍网址| 人人妻人人爽人人澡人人精品| 91精品动漫在线观看| 亚洲精品狠狠操| 免费网站在线观看黄| 日韩脚交footjobhd| 亚洲素人一区二区| 日产精品一线二线三线芒果| 亚洲高清在线观看视频| 免费精品视频在线| 91tv亚洲精品香蕉国产一区7ujn| 国产精品精品软件男同| 国产精品欧美在线观看| 精品粉嫩aⅴ一区二区三区四区| 日韩不卡一二三| 欧美日韩在线观看首页| 午夜久久影院| 中文字幕久精品免费视频| 亚洲精品久久一区二区三区777| 欧美色片在线观看| 福利一区福利二区微拍刺激| 午夜探花在线观看| a天堂中文在线| 91欧美激情一区二区三区成人| 99re国产| 午夜免费福利视频| 国精品**一区二区三区在线蜜桃| 国产999精品久久久| 欧美精品二区三区| 亚洲成色精品| 久久久久国产精品www| 成年人一级黄色片| 99久久综合狠狠综合久久aⅴ| 在线观看视频亚洲| 欧美福利第一页| 久操国产精品| 亚洲日韩视频| 自拍偷拍亚洲一区| www.狠狠爱| 国产精品一线天粉嫩av| 亚洲视频日韩精品| 亚洲一区二区三区日韩| 欧美日韩国产一区二区三区不卡 | 在线观看免费黄色小视频| 久久中文精品| 国产精品美乳一区二区免费| 最好看的日本字幕mv视频大全| 视频在线观看一区| 国产精品小说在线| 亚洲天堂视频网| 激情综合色播五月| 成人黄色在线免费观看| 俄罗斯嫩小性bbwbbw| 不卡区在线中文字幕| 久久精品日产第一区二区三区| 人成免费电影一二三区在线观看| 久久久国产精华| 亚洲一区三区在线观看| 久久精品视频观看| 亚洲午夜一区二区三区| 国产特级黄色大片| 九九热线视频只有这里最精品| 欧美在线|欧美| 性生活一级大片| 麻豆精品少妇| 亚洲香蕉成人av网站在线观看| 国产精品69久久久久孕妇欧美| 91精品91| 奇米4444一区二区三区| 伊人免费在线观看高清版| 国产一区二区中文字幕| 黑人中文字幕一区二区三区| 久久久久久久影视| 成人欧美一区二区三区小说| www.国产在线播放| 视频二区不卡| 欧美一级视频精品观看| 黄色录像a级片| 色999日韩| 午夜精品国产精品大乳美女| 日本一区二区三区久久| 国产不卡一区视频| 亚洲精品第一区二区三区| 男男gaygays亚洲| 在线观看不卡一区| 催眠调教后宫乱淫校园| 成人区精品一区二区婷婷| 欧美精品xxx| 国产精品成人久久久| 高清视频一区二区| 日韩一区二区三区资源| 超黄网站在线观看| 91精品国产综合久久久久久久久久| 又色又爽又黄18网站| 精品视频久久| 欧日韩在线观看| 国产成a人亚洲精v品无码| 久久精品夜色噜噜亚洲aⅴ| 国产91视频一区| 四虎精品在线观看| 亚洲欧美日韩精品久久奇米色影视| 日本少妇高清视频| 美女视频网站久久| 欧美精品二区三区四区免费看视频 | 天堂网免费视频| 粉嫩aⅴ一区二区三区四区五区 | 尹人成人综合网| 成人免费网站在线观看| 黄色片视频在线观看| 亚洲午夜激情av| 波多野吉衣在线视频| 99国产精品免费视频观看| 国产精品pans私拍| 天堂在线一二区| 亚洲福利电影网| 永久看看免费大片| 国产精品国产一区| 国产精品一区久久| www.中文字幕久久久| 色婷婷综合激情| 女人被狂躁c到高潮| 狠狠色狠狠色综合日日tαg| 3d精品h动漫啪啪一区二区| 午夜在线播放| 欧美色图在线观看| 日本高清www| 毛片一区二区| 欧美日韩亚洲在线 | 精品久久香蕉国产线看观看亚洲 | 日韩一区中文字幕| 国产精品嫩草影院8vv8| 色一区二区三区四区| 国产精品视频最多的网站| yiren22亚洲综合伊人22| 91福利视频网站| 干b视频在线观看| 视频一区二区三区入口| 日本午夜精品电影| 草莓视频成人appios| 在线观看亚洲视频| 国产三级第一页| 亚洲精品第一国产综合野| 日本黄色www| 亚洲国产精品一区| 欧美系列一区| 国内欧美日韩| 美女黄色丝袜一区| 欧美一区二不卡视频| 亚洲a一区二区| 人妻精品久久久久中文字幕| 日韩国产欧美三级| 日本不卡一区二区三区四区| 久久国际精品| 97视频在线播放| 国产永久免费高清在线观看| 欧美日韩一区在线观看| 日韩精品一区二区亚洲av性色| 国产毛片精品国产一区二区三区| 日本黄大片在线观看| 色婷婷综合久久久久久| 国产精品激情自拍| 蜜桃视频在线观看www社区| 日韩午夜在线播放| 国产农村妇女aaaaa视频| 国产欧美日韩在线看| 99久久99精品| 亚洲视频播放| 中文一区一区三区免费| 盗摄牛牛av影视一区二区| 日韩免费av在线| 在线免费观看a视频| 亚洲国产精品中文| 在线视频 中文字幕| 亚洲一卡二卡三卡四卡| 一卡二卡三卡四卡| 精品综合免费视频观看| 国产3p露脸普通话对白| 日本不卡高清| 国产在线精品一区| 99视频有精品高清视频| 2021国产精品视频| gogogogo高清视频在线| 亚洲美女又黄又爽在线观看| 国产毛片一区二区三区va在线| 日韩欧美在线网址| 福利所第一导航| 国产农村妇女毛片精品久久麻豆 | 亚洲永久精品唐人导航网址| 91精品在线影院| 亚洲欧美小说色综合小说一区| 久久精品国产69国产精品亚洲 | 91麻豆精品一区二区三区| 99日在线视频| 丝袜美腿成人在线| 免费看欧美黑人毛片| 久久五月天小说| 久久精品国产精品国产精品污 | 亚洲乱码一区| 国产精品日日做人人爱| 日韩av影片| 久久久久成人精品| 超碰在线caoporen| 在线播放国产一区二区三区| 蜜臀av中文字幕| 欧美一区二区久久| 亚洲自拍偷拍另类| xxx在线免费观看| 久久久国产精品免费| 国产有码在线| 亚洲男人天天操| 日本波多野结衣在线| 日韩一区二区三区视频在线观看 | 美腿丝袜亚洲一区| 黄在线观看网站| 亚洲区一区二| www.国产在线播放| 亚洲性感美女99在线| 免费看啪啪网站| 久久免费av| 亚洲一区二区在线看| 成人羞羞网站入口免费| 欧美一二三四五区| 免费视频国产一区| 久久久久久国产精品免费免费| 牛牛影视久久网| 久久99九九| 欧美福利在线播放网址导航| 国产伦精品一区二区三区视频黑人 | 日韩理论片在线观看| 九九综合九九| 日韩精品资源| 久久国产亚洲精品| 伊人天天久久大香线蕉av色| 婷婷六月综合| 玖玖精品在线视频| 亚洲天堂男人| 97成人在线免费视频| 国产精品入口66mio| 欧美色图色综合| 丝袜亚洲精品中文字幕一区| 久久久久久久久久久久久国产精品| 午夜在线观看免费一区| 97xxxxx| 日韩在线卡一卡二| jizz大全欧美jizzcom| 麻豆高清免费国产一区| 天天综合成人网| 国产福利一区在线| 美女黄色一级视频| 久久欧美一区二区| 在线看片中文字幕| 亚洲欧美一区二区不卡| 久操视频免费在线观看| 欧美日韩国产中文精品字幕自在自线| 一区二区三区福利视频| 欧美主播一区二区三区美女| 亚洲自拍偷拍另类| 精品对白一区国产伦| 欧美精品久久久久久久久久丰满| 中文国产成人精品| 亚洲大胆人体大胆做受1| 亚州精品天堂中文字幕| 成人国产精选| aaa级精品久久久国产片| 极品束缚调教一区二区网站| 日韩美女一区| 国产精品v亚洲精品v日韩精品 | 天堂网免费视频| 欧美一级国产精品| 欧美日韩免费做爰大片| 久久精品国产亚洲精品2020| 国产蜜臀在线| 国产精品情侣自拍| 久久精品色播| 亚洲一区二区三区精品在线观看 | 久久乐国产精品| 素人一区二区三区| 产国精品偷在线| 国产99亚洲| 丁香色欲久久久久久综合网| 天堂久久久久va久久久久| 免费欧美一级片| 久久久91精品国产一区二区精品 | 粉嫩av免费一区二区三区| 国产精品片aa在线观看| 99er在线视频| 久久99精品国产麻豆婷婷洗澡| 中文字幕精品视频在线| 国产精品初高中害羞小美女文| 成人毛片在线播放| 日韩精品中文字幕在线不卡尤物| 国产高清视频在线| 4p变态网欧美系列| 亚洲精品午夜| 中文字幕中文字幕在线中一区高清 | 国产91精品不卡视频| 日韩成人视屏| 一区二区精品国产| 日韩经典中文字幕一区| 99久久免费看精品国产一区| 一区二区三区日本| 亚洲综合一区中| 在线观看久久av| 性欧美18一19sex性欧美| 国内视频一区二区| 欧美激情在线| 中文字幕55页| **欧美大码日韩| 亚洲无码久久久久| 一本色道久久综合狠狠躁篇怎么玩 | 中文字幕亚洲一区二区va在线| 国产免费一区二区三区四区五区| 精品久久人人做人人爽| 国产黄a三级三级三级av在线看 | 亚洲国产剧情在线观看| 精品国偷自产在线视频| 日韩av一级| 色狠狠久久av五月综合| 久久综合导航| 四虎永久免费在线观看| 欧美视频裸体精品| 日本在线视频1区| 韩国日本不卡在线| 粉嫩av一区二区| 欧美大黑帍在线播放| 高清不卡在线观看av| 精品99久久久久成人网站免费 | 人人妻人人澡人人爽人人精品| 亚洲福利国产精品| 五月婷婷六月激情| 538国产精品一区二区免费视频| 岛国精品一区| 欧美a v在线播放| 91麻豆产精品久久久久久| av资源免费观看| 亚洲欧美日韩精品久久| 国产私拍福利精品视频二区| 视频一区二区三区在线观看| 麻豆成人免费电影| 一区视频免费观看| 精品国产人成亚洲区| 激情aⅴ欧美一区二区欲海潮| 久久综合九色综合网站| 丝袜a∨在线一区二区三区不卡| 日本爱爱爱视频| 在线播放中文字幕一区| 在线观看a级片| 精品在线一区| 日韩国产成人精品| 99国产精品免费| 欧美一区二区在线不卡| av老司机免费在线| 欧美激情第一页在线观看| 奇米在线7777在线精品 | 午夜免费福利在线观看| 91久久国产精品| 一区二区亚洲精品| 亚洲理论片在线观看| 精品视频色一区| 国产www视频在线观看| 欧美一区二视频在线免费观看| 看片网站欧美日韩| 国产精品2020| 国产一区二区三区视频 | 日本黑人久久| 国产在线精品一区二区三区不卡| 天天操天天射天天爽| 中文字幕日韩欧美在线视频| 一区二区三区四区精品视频| 国内性生活视频| 亚洲精选视频免费看| 日韩私人影院| 91成人免费看| 三级影片在线观看欧美日韩一区二区| 91手机视频在线观看| 在线中文一区| 国产精品成人一区二区三区电影毛片 | 中文字幕91爱爱| 久久久亚洲福利精品午夜| jiujiure精品视频播放| 丰满少妇xbxb毛片日本| 欧美日韩国产免费一区二区| 国产白浆在线免费观看| 中文字幕成人一区|