書名: MySQL 8 DBA基礎教程作者名: 孫澤軍 劉華貞本章字數: 2792字更新時間: 2020-11-23 16:40:42
1.4 認識MySQL數據庫
隨著時間的推移,開源數據庫管理系統逐漸流行起來。開源數據庫管理系統之所以能在中低端應用中占據很大的市場份額,是因為開源數據庫具有免費使用、配置簡單、穩定性好、性能優良的特點。本書所介紹的MySQL數據庫管理系統正是開源數據庫中的杰出代表。為了便于講解,后面將用MySQL代替MySQL數據庫管理系統。
1.4.1 MySQL與開源文化
所謂“開源”,就是開放資源(Open Source)的意思,不過在程序界,更多人習慣理解為“開放源代碼”的意思。開放源代碼運動起源于自由軟件和黑客文化,最早來自于1997年在加利福尼亞州召開的一次研討會,參加研討會的有一些黑客和程序員,也有來自于Linux國際協會的人員。在此會議上通過了一個新的術語“開源”。1998年2月,網景公司正式宣布開源其發布的Navigator瀏覽器的源代碼,這一事件成為開源軟件發展歷史的轉折點。
開源即是自由的化身,提倡一種公開的、自由的精神。軟件開源的發展歷程為軟件行業及非軟件行業帶來了巨大的參考價值。雖然獲取開發軟件的源碼是免費的,但是對源碼的使用、修改卻需要遵循該開源軟件所作的許可聲明。開源軟件常用的許可證方式包括BSD(Berkley Software Distribution)、Apache Licence、GPL(General Public License)等,其中GNU的GPL為最常見的許可證之一,為許多開源軟件所采用。
在計算機發展的早期階段,軟件幾乎都是開放的,在程序員的社團中大家互相分享軟件,共同提高知識水平。這種自由的風氣給大家帶來了歡樂和進步。在開源文化的強力帶動下,產生了強大的開源操作系統Linux,其他還有Apache服務器、Perl程序語言、MySQL數據庫、Mozilla瀏覽器等。
1.4.2 MySQL的發展歷史
MySQL從開發人員手中的“玩具”變成如今流行的開源數據庫,其過程伴隨著產品升級和新功能的增加。隨著MySQL 5.0被完美開發,已經很少有人將MySQL稱為“玩具數據庫”了。如今,MySQL又迎來了里程碑式的MySQL 8,我們可以用一張圖來展示MySQL的發展歷史,如圖1-4所示。

圖1-4 MySQL的發展歷史
1.4.3 使用MySQL的優勢
如今很多主流網站都選擇MySQL數據庫來存儲數據,比如阿里巴巴的淘寶。那么,MySQL到底有什么優勢,吸引了這么多用戶?本小節將介紹選擇MySQL數據庫的原因。
1.技術趨勢
互聯網技術發展有一個趨勢,從業人員都喜歡選擇開源產品,再優秀的產品,如果是閉源的,在大行業背景下也會變得越來越小眾。舉一個例子,如果一個互聯網公司選擇Oracle作為數據庫,就會牽扯進來技術壁壘,使用方會很被動,最基本、最核心的框架掌握在別人手里。和Oracle相比,MySQL是開放源代碼的數據庫,這就使得任何人都可以獲取MySQL的源代碼,并修正MySQL的缺陷。任何人都能以任何目的來使用該數據庫,這是一款自由使用的軟件,而對于很多互聯網公司,選擇使用MySQL是一個化被動為主動的過程,無須再因為依賴別人封閉的數據庫產品而受牽制。
2.成本因素
任何人都可以從官方網站下載MySQL,社區版本的MySQL都是免費的,即使有一些附加功能需要收費,也是非常便宜的。相比之下,Oracle、DB2和SQL Server價格不菲,如果考慮到搭載的服務器和存儲設備,那么成本差距是巨大的。
3.MySQL的跨平臺性
MySQL不僅可以在Windows系列的操作系統上運行,還可以在UNIX、Linux和Mac OS等操作系統上運行。因為很多網站都選擇UNIX、Linux作為網站的服務器,所以MySQL具有跨平臺的優勢。雖然微軟公司的SQL Server數據庫是一款很優秀的商業數據庫,但是其只能在Windows系列的操作系統上運行。
4.性價比高,操作簡單
MySQL是一個真正的多用戶、多線程的SQL數據庫服務器,能夠快速、高效、安全地處理大量的數據。MySQL和Oracle的性能并沒有太大的區別,在低硬件環境下,MySQL分布式的方案同樣可以解決問題,而且成本比較經濟,從產品質量、成熟度、性價比來講,MySQL都是非常不錯的。另外,MySQL的管理和維護非常簡單,初學者很容易上手,學習成本較低。
5.MySQL的集群功能
當一個網站的業務量發展得越來越大,Oracle的集群已經不能很好地支撐整個業務時,架構解耦勢在必行。這意味著要拆分業務,繼而要拆分數據庫,如果業務只需要十幾個或者幾十個集群就能承載,Oracle就可以勝任,但是大型互聯網公司的業務常常需要成百上千的機器來承載,對于這樣的規模,MySQL這樣的輕量級數據庫更合適。
以上是MySQL數據庫的一些基本優勢,簡而言之,MySQL好用、開源、免費,使其深受中小企業歡迎。
1.4.4 MySQL集群
MySQL集群(Cluster)頗有“三個臭皮匠,頂個諸葛亮”“眾人拾柴火焰高”的意思,是MySQL適用于分布式計算環境的高實用、高冗余版本。它采用了NDB Cluster存儲引擎,允許在一個集群中運行多個MySQL服務器。目前能夠運行MySQL Cluster的操作系統有Linux、Mac OS X和Solaris。
1.MySQL Cluster概述
MySQL Cluster是一種技術,該技術允許在無共享的系統中部署“內存中”數據庫的Cluster。通過無共享體系結構,系統能夠使用廉價的硬件,而且對軟硬件無特殊要求。此外,由于每個組件都有自己的內存和硬盤,因此不存在單點故障。
MySQL Cluster由一組計算機構成,每臺計算機上均運行著多種進程,包括MySQL服務器、NDB Cluster的數據節點、管理服務器以及(可能)專門的數據訪問程序。Cluster中這些組件的關系如圖1-5所示。

圖1-5 MySQL集群體系
所有的這些節點構成一個完整的MySQL集群體系。數據保存在“NDB存儲服務器”的存儲引擎中,表(結構)則保存在“MySQL服務器”中。應用程序通過“MySQL服務器”訪問這些數據表,集群管理服務器通過管理工具(ndb_mgmd)來管理“NDB存儲服務器”。通過將MySQL Cluster引入開放源碼世界,MySQL為所有需要它的人員提供了具有高可用性、高性能和可縮放性的Cluster數據管理。
2.MySQL Cluster基本概念
NDB是一種“內存中”的存儲引擎,它具有可用性高和數據一致性好的特點。
MySQL Cluster能夠使用多種故障切換和負載平衡選項配置NDB存儲引擎,但在Cluster級別上的存儲引擎上做這個最簡單。MySQL Cluster的NDB存儲引擎包含完整的數據集,僅取決于Cluster本身內的其他數據。
目前,MySQL Cluster的Cluster部分可獨立于MySQL服務器進行配置。在MySQL Cluster中,Cluster的每個部分被視為一個節點。
- 管理(MGM)節點:這類節點的作用是管理MySQL Cluster內的其他節點,如提供配置數據、啟動并停止節點、運行備份等。由于這類節點負責管理其他節點的配置,應在啟動其他節點之前首先啟動這類節點。MGM節點是用命令mdb_mgmd啟動的。
- 數據節點:這類節點用于保存Cluster的數據。數據節點的數目與副本的數目相關,是片段的倍數。例如,對于兩個副本,每個副本有兩個片段,就有4個數據節點。不過沒有必要設置多個副本。數據節點是用命令ndbd啟動的。
- SQL節點:這是用來訪問Cluster數據的節點。對于MySQL Cluster,客戶端節點是使用NDB Cluster存儲引擎的傳統MySQL服務器。通常,SQL節點是使用命令mysql-ndbcluster啟動的,或將ndbcluster添加到my.cnf后使用mysqld啟動。
管理服務器(MGM節點)負責管理Cluster配置文件和Cluster日志。Cluster中的每個節點從管理服務器檢索配置數據,并請求確定管理服務器所在位置的方式。當數據節點內出現新的事件時,節點將關于這類事件的信息傳輸到管理服務器,然后將這類信息寫入Cluster日志。
此外,可以有任意數目的Cluster客戶端進程或應用程序,它們分為以下兩種類型。
- 標準MySQL客戶端:對于MySQL Cluster,它們與標準的MySQL沒有區別。換句話說,能夠從用PHP、Perl、C、C++、Java、Python、Ruby等編寫現有MySQL應用程序訪問MySQL Cluster。
- 管理客戶端:這類客戶端與管理服務器相連,并提供了啟動和停止節點、啟動和停止消息跟蹤(僅調試版本)、顯示節點版本和狀態、啟動和停止備份等的命令。
- PyTorch自動駕駛視覺感知算法實戰
- Responsive Web Design with HTML5 and CSS3
- Python Geospatial Development(Second Edition)
- Learning Python Design Patterns(Second Edition)
- PLC編程與調試技術(松下系列)
- Node.js全程實例
- Getting Started with LLVM Core Libraries
- 從零開始學C#
- Android開發三劍客:UML、模式與測試
- 區塊鏈技術進階與實戰(第2版)
- HTML5+CSS3+JavaScript 從入門到項目實踐(超值版)
- 物聯網系統架構設計與邊緣計算(原書第2版)
- Python全棧開發:基礎入門
- 官方 Scratch 3.0 編程趣味卡:讓孩子們愛上編程(全彩)
- Maven for Eclipse