mysql系列之多實例介紹


介紹:

  • mysql多實例,簡單理解就是在一台服務器上,mysql服務開啟多個不同的端口(如3306、3307),運行多個服務進程。這些 mysql 服務進程通過不同的 socket來監聽不同的數據端口,進而互不干涉的提供各自的服務。

  • 在同一台服務器上,mysql 多實例會去共用一套 mysql 應用程序,因此你在部署 mysql 的時候只需要部署一次 mysql程序即可,無需多次部署。但是,mysql多實例之間會各自使用不同的 my.cnf 配置文件、啟動程序和數據文件。在提供服務方面,mysql多實例在邏輯上看起來是各自獨立,互不干涉的,並且多個實例之間是根據配置文件的設定值,來獲取相關服務器的硬件資源。

  • 下面用一個比喻,來幫助大家理解 mysql 多實例的本質。

    • mysql 多實例相當於合租房,合租房里面有多個租客,每個租客都租有一個卧室,這個卧室就相當於我們的 mysql 的一個實例。整個合租房就相當於一台服務器。合租房里面的洗衣機、衛生間、陽台就相當於我們服務器上的各種硬件資源,比如CPU、MEM、DISK等,這些東西都是公共資源,大家共用的。
    • 另外,多實例並不僅僅是 mysql才有,其實我們日常運維中碰到的很多服務都可以部署使用多實例,並且在生產環境中也非常熱衷去使用,甚至在門戶網站應用也很廣泛,例如nginx多實例、apache多實例、redis多實例等等。
    • 既然大家都去用 mysql 多實例這種技術,那么mysql 多實例都能為企業帶來什么或者說有什么優缺點呢?

優點如下:

  • 1、有效利用服務器資源
    • 當單個服務器資源過剩時,可以充分利用剩余的資源來提供更多的服務
  • 2、節約服務器資源
    • 當公司資金緊張,但數據庫又需要數據庫之間各自提供服務時,並且還想使用主從同步等技術,此時多實例就再好不過了
  • 3、方便后期架構擴展
    • 當公司的某個項目才啟動時,啟動初期並不一定有很大的用戶量,因此可以先用一組物理數據庫服務器,在上面部署多個實例,方便后續架構擴展、遷移

缺點如下:

  • 1、資源互相搶占問題
    • 當某個服務實例並發很高或者有慢查詢時,整個實例會消耗更多的內存、CPU和IO資源,這將導致服務器上的其它實例提供服務的質量下降。這就比如說合租房的各個租客,每當早晨上班時,都會洗漱,此時衛生間的占用率就大,各個租客總會發生等待。

多實例的應用場景

下面在重復一下,mysql 多實例在生產環境下的應用場景!

  • 1、當一個公司業務訪問量不太大,又想節儉成本,並且還希望不同業務的數據庫服務能夠各自盡量獨立,提供服務能夠互相不受影響。另外還需要應用主從同步等技術來提供數據庫備份或讀寫分離服務,以及方便后期業務量增大時,數據庫架構的擴展和遷移。此時,Mysql 多實例就再好不過了。比如,我們可以通過在 3 台服務器部署 6-9 個實例,然后交叉做主從同步備份及讀寫分離,來實現 6-9 台服務器才能夠達到的效果
  • 2、公司業務訪問量不是太大的時候,服務器的資源基本都是過剩狀態。此時就很適合 mysql 多實例的應用。如果對 SQL語句 優化做的比較好,mysql 多實例 是一個很值得去使用的技術。即使后期業務並發很大,只要合理分配好系統資源,也不會有太大的問題
  • 3、為了規避 mysql 對 SMP 架構不支持的缺陷,我們可以使用 mysql 多實例綁定處理器的辦法(NUMA處理器必須支持,不過現在大部分處理器都支持的)將不同的數據庫分配到不同的實例上提供數據服務;
  • 4、傳統游戲行業的 MMO/MMORPG以及Web Game,會將每個服都對應一個數據庫,而且可能經常要做很多數據查詢和數據訂正工作。此時,為了減少維護而出錯的概率,我們也可以采用多實例的部署方式,按區的概念來分配數據庫。

說了這么多,mysql 多實例要如何去部署呢?部署方法有哪些哪些呢?

Mysql多實例實現的3種方式

mysql 多實例常規來講,有三種方案可以實現,這三種方案各有利弊,如下:

1、基於多配置文件

通過使用多個配置文件來啟動不同的進程,以此來實現多實例。

優點:邏輯簡單,配置簡單

缺點:管理起來不方便

2、基於mysqld_multi

通過官方自帶的 mysqld_multi 工具,使用單獨配置文件來實現多實例

優點: 便於集中管理管理

缺點: 不方便針對每個實例配置進行定制

3、基於IM

使用 MySQL 實例管理器(MYSQLMANAGER),這個方法好像比較好不過也有點復雜

優點:便於集中管理

缺點:耦合度高。IM一掛,實例全掛

不方便針對每個實例配置進行定制

<針對第三種方案,基於IM的,個人測試不論 5.1 和 5.5 安裝出來,都有沒帶 mysqlmanager,因此暫時沒有針對該方案做實施,還望見諒>

以上,即為針對 mysql 多實例的介紹,下一篇博文將開始針對 mysql 的不同實現方案進行逐一實現。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM