MySQL是最受歡迎的關聯式資料庫管理系統之一,但單一MySQL伺服器存在效能瓶頸和可靠性問題。為了滿足高負載和高可靠性的要求,可以使用MySQL叢集解決這些問題。
MySQL叢集是多個MySQL Server執行個體在實體或虛擬設備上一起工作並運行的方式,透過分攤負載和提高可用性,提供了高效能和可靠性。本文將介紹如何建構MySQL叢集。
一、MySQL叢集元件
MySQL叢集主要由下列元件組成:
二、MySQL叢集的建置
在開始之前,請確保已安裝並設定好MySQL Server,並準備好多個電腦節點。為了簡單起見,在以下範例中,將配置一個MySQL集群,其中包括3個MySQL Server節點和2個管理節點。每個節點都安裝了MySQL Server 8.0.25並使用CentOS 8作業系統。
由於MySQL Cluster Manager(MCM)是設定和管理MySQL叢集的關鍵部分,需要先在每個節點上安裝MCM。 MCM可以從MySQL官方網站下載。
下載後,執行以下指令進行安裝:
sudo rpm -ivh mysql-cluster-manager-1.4.10-linux-glibc2.12-x86_64.rpm
安裝MCM後,需要進行初始化設定。在其中一個節點上進行,此節點將成為管理節點。
執行下列指令初始化MCM:
sudo /opt/mysql/mcm/bin/setup --config-file=/etc/mysql/mcm.ini --yes
此指令將建立/etc/mysql/mcm.ini文件,並根據預設設定將MCM初始化為單機模式。如果需要在叢集中使用多個節點,可以在該檔案中新增更多節點。
首先,需要在所有節點上安裝mysql-community-server,然後停止mysqld服務。
接下來,建立一個新的MySQL Server範例,以便將其用作資料節點。可以從已經存在的mysqld安裝建立這個新實例。在此範例中,可以使用8.0.25為版本,使用下列指令建立新的MySQL Server實例:
sudo /usr/sbin/mysqld --defaults-file=/etc/my_node1.cnf -- initialize-insecure --ignore-builtin-innodb
此指令將建立一個新的MySQL Server實例,同時在$datadir/mysql-cluster資料夾中建立所有必要的檔案和目錄。
在所有資料節點上都需要執行此指令。
與資料節點類似,需要為管理節點設定一個新的MySQL Server實例,以便將其用作管理節點。執行下列指令建立新的MySQL Server實例:
sudo /usr/sbin/mysqld --defaults-file=/etc/my_mgmt1.cnf --initialize-insecure --ignore-builtin-innodb
此指令將建立一個新的MySQL Server實例,同時在$datadir/mysql-cluster資料夾中建立所有必要的檔案和目錄。
在所有管理節點上都需要執行此指令。
現在所有準備工作都已完成,可以一個一個啟動MySQL Server實例,並連接到叢集。
先啟動管理節點,然後執行下列指令將節點加入MySQL Cluster:
sudo ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial
該命令啟動ndb_mgmd進程,該進程將讀取配置文件,並作為管理節點將自己加入MySQL Cluster。最後,將列印出訊息,確認管理節點已成功啟動。
接下來,啟動所有資料節點。在每個節點上執行以下指令:
sudo ndbd
該指令啟動一個ndbd進程,連接到已啟動的管理節點,然後加入MySQL Cluster。在使用多個資料節點時,需要在每個節點上執行此命令。
最後,透過啟動一個MySQL Server實例作為SQL節點,測試MySQL Cluster是否正常運作。在此範例中,可以在一個節點上啟動MySQL Server實例,並連接到MySQL Cluster:
sudo mysqld_safe --defaults-file=/etc/my_sql1.cnf &
mysql - u root
此指令將啟動MySQL Server實例,並開啟MySQL客戶端。然後可以執行各種 SQL 查詢操作,測試叢集是否正常運作。
三、總結
這是一個建立MySQL叢集的基礎教學。 MySQL Cluster可以提高效能和可靠性,通常用於需要處理高負載的應用程序,如Web應用程式和電子商務網站。使用MCM工具集,可以輕鬆設定、部署、監控和管理MySQL叢集。對許多公司來說,建立 MySQL 叢集是一項必備工作。
以上是mysql集群的搭建的詳細內容。更多資訊請關注PHP中文網其他相關文章!