'如何理解MySQL數據庫單實例和多實例?'

MySQL 數據庫 SQL Linux 中央處理器 操作系統 設計 技術 程序不就是0和1 2019-08-12
"

數據庫專業領域有兩個名詞容易搞混,數據庫和實例。理解這2個名詞的含義,對我們後續開發和部署mysql都有很大幫助!其中實例又分單實例和多實例,本節重點介紹MySQL多實例!

"

數據庫專業領域有兩個名詞容易搞混,數據庫和實例。理解這2個名詞的含義,對我們後續開發和部署mysql都有很大幫助!其中實例又分單實例和多實例,本節重點介紹MySQL多實例!

如何理解MySQL數據庫單實例和多實例?

mysql實例介紹


數據庫和實例

  1. 數據庫:簡單講是數據的集合,這些數據按照一定的方式存儲在一起,可以給多用戶共享,與應用程序獨立開來。在MYSQL數據庫中,數據庫文件按照存儲引擎的不同,文件後綴也不同,可以是frm、myd、myi、ibd結尾,是一個靜態概念。
  2. 實例:MySQL數據庫由後臺線程及一個共享內存區組成,數據庫實例才是真正用於操作數據庫文件的程序集,是一個動態概念。
  3. 在MySQL中實例和數據庫的關係通常是一一對應的,即一個實例對應一個數據庫,但是現在越來越多的場景使用多實例,也就是一個數據庫被多個數據庫實例使用多情況。
  4. Mysql被設計成一個單進程多線程架構的數據庫,所以在操作系統上表現就是一個進程。

所以在linux上可以用進程查看命令觀察數據庫進程情況

ps -ef |grep mysql
"

數據庫專業領域有兩個名詞容易搞混,數據庫和實例。理解這2個名詞的含義,對我們後續開發和部署mysql都有很大幫助!其中實例又分單實例和多實例,本節重點介紹MySQL多實例!

如何理解MySQL數據庫單實例和多實例?

mysql實例介紹


數據庫和實例

  1. 數據庫:簡單講是數據的集合,這些數據按照一定的方式存儲在一起,可以給多用戶共享,與應用程序獨立開來。在MYSQL數據庫中,數據庫文件按照存儲引擎的不同,文件後綴也不同,可以是frm、myd、myi、ibd結尾,是一個靜態概念。
  2. 實例:MySQL數據庫由後臺線程及一個共享內存區組成,數據庫實例才是真正用於操作數據庫文件的程序集,是一個動態概念。
  3. 在MySQL中實例和數據庫的關係通常是一一對應的,即一個實例對應一個數據庫,但是現在越來越多的場景使用多實例,也就是一個數據庫被多個數據庫實例使用多情況。
  4. Mysql被設計成一個單進程多線程架構的數據庫,所以在操作系統上表現就是一個進程。

所以在linux上可以用進程查看命令觀察數據庫進程情況

ps -ef |grep mysql
如何理解MySQL數據庫單實例和多實例?

可以看到進程號88052就是我本機啟動的mysql進程,我們發現只有一個mysql進程,這就是我們講的數據庫單實例。

mysql多實例介紹

  1. 上節介紹了mysql進程,這種單進程實際上就是mysql的單實例,其實在生產環境中,更為通用的部署方式是多實例部署,那什麼是多實例?
  2. 多實例就是在一臺服務器上同時開啟多個不同的數據庫服務端口(例如3306、3307),同時運行多個MYSQL服務進程,這些服務進程通過不同的socket監聽不同的服務端口來提供服務。
  3. 這些MySQL實例共用一個Mysql數據庫安裝程序,使用不同的my.cnf配置文件啟動,在提供服務時,多實例MySQL在邏輯上看,是各自獨立的,他們根據配置文件的設定來獲得服務器相應數量的資源。
"

數據庫專業領域有兩個名詞容易搞混,數據庫和實例。理解這2個名詞的含義,對我們後續開發和部署mysql都有很大幫助!其中實例又分單實例和多實例,本節重點介紹MySQL多實例!

如何理解MySQL數據庫單實例和多實例?

mysql實例介紹


數據庫和實例

  1. 數據庫:簡單講是數據的集合,這些數據按照一定的方式存儲在一起,可以給多用戶共享,與應用程序獨立開來。在MYSQL數據庫中,數據庫文件按照存儲引擎的不同,文件後綴也不同,可以是frm、myd、myi、ibd結尾,是一個靜態概念。
  2. 實例:MySQL數據庫由後臺線程及一個共享內存區組成,數據庫實例才是真正用於操作數據庫文件的程序集,是一個動態概念。
  3. 在MySQL中實例和數據庫的關係通常是一一對應的,即一個實例對應一個數據庫,但是現在越來越多的場景使用多實例,也就是一個數據庫被多個數據庫實例使用多情況。
  4. Mysql被設計成一個單進程多線程架構的數據庫,所以在操作系統上表現就是一個進程。

所以在linux上可以用進程查看命令觀察數據庫進程情況

ps -ef |grep mysql
如何理解MySQL數據庫單實例和多實例?

可以看到進程號88052就是我本機啟動的mysql進程,我們發現只有一個mysql進程,這就是我們講的數據庫單實例。

mysql多實例介紹

  1. 上節介紹了mysql進程,這種單進程實際上就是mysql的單實例,其實在生產環境中,更為通用的部署方式是多實例部署,那什麼是多實例?
  2. 多實例就是在一臺服務器上同時開啟多個不同的數據庫服務端口(例如3306、3307),同時運行多個MYSQL服務進程,這些服務進程通過不同的socket監聽不同的服務端口來提供服務。
  3. 這些MySQL實例共用一個Mysql數據庫安裝程序,使用不同的my.cnf配置文件啟動,在提供服務時,多實例MySQL在邏輯上看,是各自獨立的,他們根據配置文件的設定來獲得服務器相應數量的資源。
如何理解MySQL數據庫單實例和多實例?

多實例學習

MySQL多實例的優缺點

優點:

  • 可以有效利用服務器資源,當單個服務器資源富裕時,可以充分利用資源提供更多的服務。
  • 節約服務器資源,若公司資金不是充裕,又想數據庫能獨立提供服務,還想用主從複製等技術,那麼只能選擇多實例部署方式。

缺點:

  • 存在資源互享搶佔的問題,當某個數據庫實例併發很高且SQL查詢耗時,那整個實例會消耗大量的系統資源,包括CPU、磁盤IO等,導致同一個服務器的其它數據庫實例可能響應慢,畢竟它不會像虛擬機一樣做到完全隔離。
"

數據庫專業領域有兩個名詞容易搞混,數據庫和實例。理解這2個名詞的含義,對我們後續開發和部署mysql都有很大幫助!其中實例又分單實例和多實例,本節重點介紹MySQL多實例!

如何理解MySQL數據庫單實例和多實例?

mysql實例介紹


數據庫和實例

  1. 數據庫:簡單講是數據的集合,這些數據按照一定的方式存儲在一起,可以給多用戶共享,與應用程序獨立開來。在MYSQL數據庫中,數據庫文件按照存儲引擎的不同,文件後綴也不同,可以是frm、myd、myi、ibd結尾,是一個靜態概念。
  2. 實例:MySQL數據庫由後臺線程及一個共享內存區組成,數據庫實例才是真正用於操作數據庫文件的程序集,是一個動態概念。
  3. 在MySQL中實例和數據庫的關係通常是一一對應的,即一個實例對應一個數據庫,但是現在越來越多的場景使用多實例,也就是一個數據庫被多個數據庫實例使用多情況。
  4. Mysql被設計成一個單進程多線程架構的數據庫,所以在操作系統上表現就是一個進程。

所以在linux上可以用進程查看命令觀察數據庫進程情況

ps -ef |grep mysql
如何理解MySQL數據庫單實例和多實例?

可以看到進程號88052就是我本機啟動的mysql進程,我們發現只有一個mysql進程,這就是我們講的數據庫單實例。

mysql多實例介紹

  1. 上節介紹了mysql進程,這種單進程實際上就是mysql的單實例,其實在生產環境中,更為通用的部署方式是多實例部署,那什麼是多實例?
  2. 多實例就是在一臺服務器上同時開啟多個不同的數據庫服務端口(例如3306、3307),同時運行多個MYSQL服務進程,這些服務進程通過不同的socket監聽不同的服務端口來提供服務。
  3. 這些MySQL實例共用一個Mysql數據庫安裝程序,使用不同的my.cnf配置文件啟動,在提供服務時,多實例MySQL在邏輯上看,是各自獨立的,他們根據配置文件的設定來獲得服務器相應數量的資源。
如何理解MySQL數據庫單實例和多實例?

多實例學習

MySQL多實例的優缺點

優點:

  • 可以有效利用服務器資源,當單個服務器資源富裕時,可以充分利用資源提供更多的服務。
  • 節約服務器資源,若公司資金不是充裕,又想數據庫能獨立提供服務,還想用主從複製等技術,那麼只能選擇多實例部署方式。

缺點:

  • 存在資源互享搶佔的問題,當某個數據庫實例併發很高且SQL查詢耗時,那整個實例會消耗大量的系統資源,包括CPU、磁盤IO等,導致同一個服務器的其它數據庫實例可能響應慢,畢竟它不會像虛擬機一樣做到完全隔離。
如何理解MySQL數據庫單實例和多實例?

MySQL多實例的應用場景

  1. 中小型公司的選擇:公司業務訪問量不大,希望不同的業務使用不同的數據庫服務而互相不受影響,建於資金不足,可食用多實例,比如可以通過3臺服務器部署9-15個實例,交叉做主從複製、數據備份及讀寫分離,這樣也能達到多個服務器只裝1個數據庫的效果。
  2. 併發訪問不是很大的業務:當業務訪問量不大,服務器資源基本都是空閒的,這時很適合多實例應用,如果對sql語句優化較好,多實例是一個很值得使用技術,即使併發打,合理分配資源以及搭配號服務,問題也不大。
  3. 門戶網站應用:門戶網站通常會使用多實例,因為配置硬件好的服務器,可以節省IDC機櫃空間,同時運行多個實例可以減少資源浪費情況,例如一個pc服務器,16核CPU,內存128G內存,可運行3-4個實例綽綽有餘。
"

數據庫專業領域有兩個名詞容易搞混,數據庫和實例。理解這2個名詞的含義,對我們後續開發和部署mysql都有很大幫助!其中實例又分單實例和多實例,本節重點介紹MySQL多實例!

如何理解MySQL數據庫單實例和多實例?

mysql實例介紹


數據庫和實例

  1. 數據庫:簡單講是數據的集合,這些數據按照一定的方式存儲在一起,可以給多用戶共享,與應用程序獨立開來。在MYSQL數據庫中,數據庫文件按照存儲引擎的不同,文件後綴也不同,可以是frm、myd、myi、ibd結尾,是一個靜態概念。
  2. 實例:MySQL數據庫由後臺線程及一個共享內存區組成,數據庫實例才是真正用於操作數據庫文件的程序集,是一個動態概念。
  3. 在MySQL中實例和數據庫的關係通常是一一對應的,即一個實例對應一個數據庫,但是現在越來越多的場景使用多實例,也就是一個數據庫被多個數據庫實例使用多情況。
  4. Mysql被設計成一個單進程多線程架構的數據庫,所以在操作系統上表現就是一個進程。

所以在linux上可以用進程查看命令觀察數據庫進程情況

ps -ef |grep mysql
如何理解MySQL數據庫單實例和多實例?

可以看到進程號88052就是我本機啟動的mysql進程,我們發現只有一個mysql進程,這就是我們講的數據庫單實例。

mysql多實例介紹

  1. 上節介紹了mysql進程,這種單進程實際上就是mysql的單實例,其實在生產環境中,更為通用的部署方式是多實例部署,那什麼是多實例?
  2. 多實例就是在一臺服務器上同時開啟多個不同的數據庫服務端口(例如3306、3307),同時運行多個MYSQL服務進程,這些服務進程通過不同的socket監聽不同的服務端口來提供服務。
  3. 這些MySQL實例共用一個Mysql數據庫安裝程序,使用不同的my.cnf配置文件啟動,在提供服務時,多實例MySQL在邏輯上看,是各自獨立的,他們根據配置文件的設定來獲得服務器相應數量的資源。
如何理解MySQL數據庫單實例和多實例?

多實例學習

MySQL多實例的優缺點

優點:

  • 可以有效利用服務器資源,當單個服務器資源富裕時,可以充分利用資源提供更多的服務。
  • 節約服務器資源,若公司資金不是充裕,又想數據庫能獨立提供服務,還想用主從複製等技術,那麼只能選擇多實例部署方式。

缺點:

  • 存在資源互享搶佔的問題,當某個數據庫實例併發很高且SQL查詢耗時,那整個實例會消耗大量的系統資源,包括CPU、磁盤IO等,導致同一個服務器的其它數據庫實例可能響應慢,畢竟它不會像虛擬機一樣做到完全隔離。
如何理解MySQL數據庫單實例和多實例?

MySQL多實例的應用場景

  1. 中小型公司的選擇:公司業務訪問量不大,希望不同的業務使用不同的數據庫服務而互相不受影響,建於資金不足,可食用多實例,比如可以通過3臺服務器部署9-15個實例,交叉做主從複製、數據備份及讀寫分離,這樣也能達到多個服務器只裝1個數據庫的效果。
  2. 併發訪問不是很大的業務:當業務訪問量不大,服務器資源基本都是空閒的,這時很適合多實例應用,如果對sql語句優化較好,多實例是一個很值得使用技術,即使併發打,合理分配資源以及搭配號服務,問題也不大。
  3. 門戶網站應用:門戶網站通常會使用多實例,因為配置硬件好的服務器,可以節省IDC機櫃空間,同時運行多個實例可以減少資源浪費情況,例如一個pc服務器,16核CPU,內存128G內存,可運行3-4個實例綽綽有餘。
如何理解MySQL數據庫單實例和多實例?

MySQL多實例的部署方案

一般目前流行的部署方案是多配置文件,多啟動程序的部署方式,也就是多個my.cnf文件,啟動程序mysql都是獨立的文件,數據文件也是獨立的。關於更多的部署細節,後續文章會單獨來講解。

總結

本節描述了數據庫的生產部署方式之一,實例的定義及多實例的部署,總之多實例部署也是節省資源的一種手段之一,在配置高的pcserver上,採用多實例可以盡最大化使用服務器的計算能力,所以請你在自己的學習環境上配置多實例mysql。

參考並感謝《跟老男孩學linux運維》系列一書

如果本文對你有用,請加關注,後續會有更多的運維開發經驗。

"

數據庫專業領域有兩個名詞容易搞混,數據庫和實例。理解這2個名詞的含義,對我們後續開發和部署mysql都有很大幫助!其中實例又分單實例和多實例,本節重點介紹MySQL多實例!

如何理解MySQL數據庫單實例和多實例?

mysql實例介紹


數據庫和實例

  1. 數據庫:簡單講是數據的集合,這些數據按照一定的方式存儲在一起,可以給多用戶共享,與應用程序獨立開來。在MYSQL數據庫中,數據庫文件按照存儲引擎的不同,文件後綴也不同,可以是frm、myd、myi、ibd結尾,是一個靜態概念。
  2. 實例:MySQL數據庫由後臺線程及一個共享內存區組成,數據庫實例才是真正用於操作數據庫文件的程序集,是一個動態概念。
  3. 在MySQL中實例和數據庫的關係通常是一一對應的,即一個實例對應一個數據庫,但是現在越來越多的場景使用多實例,也就是一個數據庫被多個數據庫實例使用多情況。
  4. Mysql被設計成一個單進程多線程架構的數據庫,所以在操作系統上表現就是一個進程。

所以在linux上可以用進程查看命令觀察數據庫進程情況

ps -ef |grep mysql
如何理解MySQL數據庫單實例和多實例?

可以看到進程號88052就是我本機啟動的mysql進程,我們發現只有一個mysql進程,這就是我們講的數據庫單實例。

mysql多實例介紹

  1. 上節介紹了mysql進程,這種單進程實際上就是mysql的單實例,其實在生產環境中,更為通用的部署方式是多實例部署,那什麼是多實例?
  2. 多實例就是在一臺服務器上同時開啟多個不同的數據庫服務端口(例如3306、3307),同時運行多個MYSQL服務進程,這些服務進程通過不同的socket監聽不同的服務端口來提供服務。
  3. 這些MySQL實例共用一個Mysql數據庫安裝程序,使用不同的my.cnf配置文件啟動,在提供服務時,多實例MySQL在邏輯上看,是各自獨立的,他們根據配置文件的設定來獲得服務器相應數量的資源。
如何理解MySQL數據庫單實例和多實例?

多實例學習

MySQL多實例的優缺點

優點:

  • 可以有效利用服務器資源,當單個服務器資源富裕時,可以充分利用資源提供更多的服務。
  • 節約服務器資源,若公司資金不是充裕,又想數據庫能獨立提供服務,還想用主從複製等技術,那麼只能選擇多實例部署方式。

缺點:

  • 存在資源互享搶佔的問題,當某個數據庫實例併發很高且SQL查詢耗時,那整個實例會消耗大量的系統資源,包括CPU、磁盤IO等,導致同一個服務器的其它數據庫實例可能響應慢,畢竟它不會像虛擬機一樣做到完全隔離。
如何理解MySQL數據庫單實例和多實例?

MySQL多實例的應用場景

  1. 中小型公司的選擇:公司業務訪問量不大,希望不同的業務使用不同的數據庫服務而互相不受影響,建於資金不足,可食用多實例,比如可以通過3臺服務器部署9-15個實例,交叉做主從複製、數據備份及讀寫分離,這樣也能達到多個服務器只裝1個數據庫的效果。
  2. 併發訪問不是很大的業務:當業務訪問量不大,服務器資源基本都是空閒的,這時很適合多實例應用,如果對sql語句優化較好,多實例是一個很值得使用技術,即使併發打,合理分配資源以及搭配號服務,問題也不大。
  3. 門戶網站應用:門戶網站通常會使用多實例,因為配置硬件好的服務器,可以節省IDC機櫃空間,同時運行多個實例可以減少資源浪費情況,例如一個pc服務器,16核CPU,內存128G內存,可運行3-4個實例綽綽有餘。
如何理解MySQL數據庫單實例和多實例?

MySQL多實例的部署方案

一般目前流行的部署方案是多配置文件,多啟動程序的部署方式,也就是多個my.cnf文件,啟動程序mysql都是獨立的文件,數據文件也是獨立的。關於更多的部署細節,後續文章會單獨來講解。

總結

本節描述了數據庫的生產部署方式之一,實例的定義及多實例的部署,總之多實例部署也是節省資源的一種手段之一,在配置高的pcserver上,採用多實例可以盡最大化使用服務器的計算能力,所以請你在自己的學習環境上配置多實例mysql。

參考並感謝《跟老男孩學linux運維》系列一書

如果本文對你有用,請加關注,後續會有更多的運維開發經驗。

如何理解MySQL數據庫單實例和多實例?

"

相關推薦

推薦中...