久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql中如何搭建集群

201次閱讀
沒有評論

共計 6463 個字符,預計需要花費 17 分鐘才能閱讀完成。

mysql 中如何搭建集群,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

MySQL 群集是 MySQL 適合于分布式計算環境的高可用、高冗余版本。它采用了 NDB Cluster 存儲引擎,允許在 1 個群集中運行多個 MySQL 服務器。在 MySQL 5.0 及以上的二進制版本中,以及與最新的 Linux 版本兼容的 RPM 包中提供了該存儲引擎。

  MySQL 群集是一種技術,該技術允許在無共享的系統中部署“內存中”和“磁盤中”數據庫的 Cluster。通過無共享體系結構,系統能夠使用廉價的硬件,而且對軟硬件無特殊要求。此外,由于每個組件有自己的內存和磁盤,不存在單點故障。MySQL Cluster 由一組計算機構成,每臺計算機上均運行著多種進程,包括 MySQL 服務器,NDB Cluster 的數據節點,管理服務器,以及(可能存在的)專門的數據訪問程序。

  管理服務器 (MGM 節點) 負責管理 Cluster 配置文件和 Cluster 日志。Cluster 中的每個節點從管理服務器檢索配置數據。當數據節點內出現新的事件時,節點將關于這類事件的信息傳輸到管理服務器,然后,將這類信息寫入 Cluster 日志。

  目前能夠運行 MySQL Cluster 的操作系統有 Linux、Mac OS X 和 Solaris,最新的版本已經支持 Windows 操作系統。

  MySQL 群集的數據節點之間的通信是不加密的,并且需要高速的帶寬,所以建議把群集建立在一個高速局域網內,不建議跨網段、跨公網的部署這種系統體系。

  MySQL 群集分為三種節點:管理節點,數據節點和 SQL 節點。

  管理節點:主要用于管理各個節點,能夠通過命令對某個節點進行重啟、關閉、啟動等操作。也能夠監視全部節點的工作狀態。

  數據節點:主要是對數據的存儲,不提供其他的服務。

  SQL 節點:主要是對外提供 SQL 功能,類似一臺普通的 MySQL Server。

  而 SQL 節點和數據節點可以是同一臺機器,也就是說這臺機器即是 SQL 節點也是數據節點。它們只是邏輯關系上的劃分,實際部署時,甚至所有的階段都可以位于同一臺物理機器上,只是配置較復雜些。

 

  一、軟件下載機器操作環境

  配置 MySQL 群集必需使用其群集版本,注意和 MySQL Server 版本的區別。本文以 Windows 平臺下的 MySQL 群集版本 MySQL Cluster 7.1.3 為例(截至 2010 年 6 月初的最高版本),這是 MySQL Server 5.1 系列版本之一,添加了群集的功能。下載地址為:http://dev.mysql.com/downloads/cluster,選擇
mysql-cluster-gpl-noinstall-7.1.3-win32.zip 文件,這是一個 for Windows 32 位版本的、免安裝的二進制版本。

  根據自己的操作系統的位數,也可以選擇 64 位版本的。還有一個 27.2M 的 Windows(x86, 32-bit) 版本,下載下來需要自己編譯,有經驗的高級用戶可以選用。

  本實驗在 2 臺安裝 Windows Server 2003(sp2) 的機器上進行。節點分配及 IP 配置如下:

  第一臺機器,IP 為 10.0.0.201,作為管理節點(MGM),SQL 節點 1(SQL1),數據節點 1(NDBD1)。

  第二臺機器,IP 為 10.0.0.202,作為 SQL 節點 2(SQL2),數據節點 2(NDBD2)。

  管理節點最好不要與數據節點部署在同一臺服務器上,否則可能會因為該數據節點服務器的當機,而導致管理節點服務器的問題,從而導致整個群集系統的崩潰。

  二,配置管理節點:

  在第一臺機器上,建文件夾 D:/mysql-cluster,在其下建立文件 config.ini,內容如下:

  [NDBD DEFAULT]

  NoOfReplicas=1

  [MYSQLD DEFAULT]

  [NDB_MGMD DEFAULT]

  [TCP DEFAULT]

  # Managment Server

  [NDB_MGMD]

  hostname=10.0.0.201

  # Storage Engines

  [NDBD]

  hostname=10.0.0.201

  datadir= D:/data

  [NDBD]

  hostname=10.0.0.202

  datadir= D:/data

  # SQL Engines

  [MYSQLD]

  hostname=10.0.0.201

  [MYSQLD]

  hostname=10.0.0.202

  Cluster 管理節點的默認端口是 1186,數據節點的默認端口是 2202。從 MySQL 5.0.3 開始,該限制已被放寬,Cluster 能夠根據空閑的端口自動地為數據節點分配端口。如果你的版本低于 5.0.22,請注意這個細節。

  Cluster 管理節點作為一個服務端(通過運行 db_mgmd.exe 程序讀取本配置文件來啟動),通過本機上的客戶端 ndb_mgm.exe 來連接和操作。

  三、配置 MySQL 數據庫服務器:

  在 2 臺機器上,分別依次操作。

  解壓 mysql-cluster-gpl-noinstall-7.1.3-win32.zip 文件到 D:/mysql-cluster-gpl-noinstall-7.1.3-win32 文件夾下,把 D:/mysql-cluster-gpl-noinstall-7.1.3-win32/bin 加到 Windows 的系統 path 中。

  打開 DOS 命令行窗口(配置完系統 path 后,在再次打開新的命令行窗口),執行以下語句,讓 MySQL 作為 Windows 服務運行:

  mysqld.exe -install mysql

  再在 Windows 服務管理界面里,配置 mysql 服務,手動啟動(不要自動啟動)。

  把 D:/mysql-cluster-gpl-noinstall-7.1.3-win32 下的某個備用的配置文件(例如 my-small.ini)復制為 my.ini 文件。

  建立 D:/tmp 文件夾。

  四、配置 SQL 節點和數據節點:

  在 2 臺機器上,分別依次操作。

  建立文件夾 D:/data。

  編輯 NySQL 配置文件 D:/mysql-cluster-gpl-noinstall-7.1.3-win32/my.ini,在 [mysqld] 節末尾加語句:

  #SQL 群集節點

  ndbcluster

  ndb-connectstring=10.0.0.201

  有了 ndbcluster 語句,mysql 服務將作為群集的 SQL 節點啟動。mysqld.exe 命令帶參數 –ndbcluster 運行是一樣的效果。

  mysql 服務連接到數據節點的 2202 默認端口,或自動分配的別的可用端口。

 (問題:SQL 節點如何獲得數據節點的 IP 地址?是否通過連接管理節點,取得所有數據節點的 IP 地址的列表?)

  這里的連接字符串的值在 MySQL 服務啟動時使用,用于連接到管理節點。

  在末尾加語句:

  #NDB 集群節點

  [mysql_cluster]

  ndb-connectstring=10.0.0.201

  注:好像以下形式也可:

  [ndbd]

  ndb-connectstring=10.0.0.201

  這里的連接字符串的值在數據節點啟動時使用,用于連接到管理節點。

  五,啟動群集各服務器

  啟動順序依次是:管理節點、數據節點、SQL 節點。

  1,啟動管理節點

  在第一臺服務器的 DOS 窗口,運行命令:

  C:/ ndb_mgmd.exe -f d:/mysql-cluster.conf/config.ini –configdir=d:/mysql-cluster

  注:如果不帶 –configdir=d:/mysql-cluster 參數,將默認為 C:/mysql/mysql-cluster 文件夾。

  屏幕顯示:

  C:/ ndb_mgmd.exe -f d:/mysql-cluster.conf/config.ini –configdir=d:/mysql-cluster

  2010-06-10 01:16:57 [MgmtSrvr] INFO  — NDB Cluster Management Server. mysql-5.1.44 ndb-7.1.3

  2010-06-10 01:16:57 [MgmtSrvr] INFO  — Reading cluster configuration from‘d:/mysql-cluster.conf/config.ini’

  2010-06-10 01:16:57 [MgmtSrvr] INFO  — Got initial configuration from‘d:/mysql-cluster.conf/config.ini’, will try to set it when all ndb_mgmd(s) started

  2010-06-10 01:16:57 [MgmtSrvr] INFO  — Mgmt server state: nodeid 1 reserved for ip 10.0.0.201, m_reserved_nodes 1.

  2010-06-10 01:16:57 [MgmtSrvr] INFO  — Id: 1, Command port: *:1186

  ==INITIAL==

  2010-06-10 01:16:57 [MgmtSrvr] INFO  — Starting initial configuration change

  2010-06-10 01:16:57 [MgmtSrvr] INFO  — Configuration 1 commited

  2010-06-10 01:16:57 [MgmtSrvr] INFO  — Config change completed! New generation: 1

  ==CONFIRMED==

  2,啟動數據節點

  分別在 2 臺服務器的 DOS 窗口運行命令。

  第一次,或初始化群集節點時,運行命令:

  ndbd.exe –initial

  初始化之后,只運行 ndbd.exe 即可。若帶參數 –initial 運行,將使正常運行的群集系統中,數據節點的數據全部丟失。

  數據節點依賴管理節點服務器,進行數據的自動復制和同步,使各個數據節點的數據保持一致,并在某個數據節點意外關閉又恢復后,進行數據的恢復重建。

  3,啟動 SQL 節點

  有了 ndbcluster 語句,啟動 mysql 服務,就啟動了 SQL 節點。應在前 2 種節點啟動后,分別在 2 臺服務器上進行。

  六、群集管理

  在所有的數據節點和 SQL 節點未啟動之前,運行群集管理節點服務的客戶端 ndb_mgm.exe,只能獲得以下信息:

  C:/ ndb_mgm.exe

  — NDB Cluster — Management Client –

  ndb_mgm show

  Cluster Configuration

  ———————

  [ndbd(NDB)]  2 node(s)

  id=2 (not connected, accepting connect from 10.0.0.201)

  id=3 (not connected, accepting connect from 10.0.0.202)

  [ndb_mgmd(MGM)] 1 node(s)

  id=1  @10.0.0.201  (mysql-5.1.44 ndb-7.1.3)

  [mysqld(API)]  2 node(s)

  id=4 (not connected, accepting connect from 10.0.0.201)

  id=5 (not connected, accepting connect from 10.0.0.202)

  ndb_mgm

  說明數據節點、SQL 節點均未連接到管理節點服務。

  在所有的數據節點和 SQL 節點正確啟動之后,將獲得以下信息:

  ndb_mgm show

  Cluster Configuration

  ———————

  [ndbd(NDB)]  2 node(s)

  id=2  @10.0.0.201  (mysql-5.1.44 ndb-7.1.3, Nodegroup: 0, Master)

  id=3  @10.0.0.202  (mysql-5.1.44 ndb-7.1.3, Nodegroup: 1)

  [ndb_mgmd(MGM)] 1 node(s)

  id=1  @10.0.0.201  (mysql-5.1.44 ndb-7.1.3)

  [mysqld(API)]  2 node(s)

  id=4  @10.0.0.201  (mysql-5.1.44 ndb-7.1.3)

  id=5  @10.0.0.202  (mysql-5.1.44 ndb-7.1.3)

  ndb_mgm

  關閉群集的 DOS 命令:

  ndb_mgm -e shutdown

  或在 ndb_mgm 環境下執行 shutdown 命令。

  以上命令或關閉管理節點服務和所有的數據節點。隨意、強行關閉群集系統(關機或關閉進程),會導致數據沒有全部寫回磁盤而導致的數據丟失。

  關閉 SQL 節點的 mysqld 服務:

  C:/ net stop mysql,或:

  C:/ mysqladmin -u root shutdown

  七、測試

  正常運行的 MySQL 群集系統,通過 SQL 節點可以對數據節點進行數據庫操作,各數據節點可以自動進行數據同步。某一個數據節點關閉后,不影響 SQL 節點的使用。某些數據節點 出錯后,可以進行恢復。需要注意的是,SQL 節點建立數據庫時,必須選擇“ndbcluster”數據庫引擎。如果不選擇“ndbcluster”引擎,建立的數據庫將不會進入 MySQL 群集系統中,但是可以獨立使用。

  另外,每個 NDB 表必須有一個主鍵。如果在創建表時未定義主鍵,NDB Cluster 存儲引擎將自動生成隱含的主鍵。該隱含的鍵也將占用空間,就像任何其他的表索引一樣。由于沒有足夠的內存來容納這些自動創建的鍵,出現問題并不罕見。

  測試實例:

  在某臺 SQL 節點上登錄 mysql,建表 city,并插入數據:

  C:/ mysql -u root test

  mysql create table city (nId mediumint unsigned not null auto_increment primary key, sName varchar(20) not null)

  engine = ndbcluster default charset utf8;

  mysql insert city values(1,‘city-1′);

  mysql insert city values(1,‘city-2′);

  在另一臺 SQL 節點上登錄 mysql,從表 city 里得到記錄:

  C:/ mysql -u root test

  mysql select * from city;

  在群集系統正常工作的情況下,應當能取到先前插入的所有記錄。

  另外的測試(單點故障測試):

  1,還可以人為停止某一個數據節點(Ctrl+ C 中斷 DOS 命令 ndbd.exe,停止該服務),看看所有的 SQL 節點是不是能正常工作。

  2,在某一個數據節點停止后,進行數據庫操作。然后重新開啟該數據節點,看看群集中的所有的 SQL 節點能不能得到完整的數據。

  八、常見問題與擴展

  配置和管理 MySQL 群集系統并不是一件簡單的事情。由于不合理的配置導致的系統問題非常常見,比如網絡故障、內存限制等,會導致仲裁體統強制關閉數據節點。

  如果機器上原來已經安裝過 MySQL Server,則一定要卸載干凈原來的數據庫系統。注意群集系統中的 mysql.exe 程序與非群集系統的管理 Client 是不同的。

  還可以與負載均衡系統結合,以提供更強的可用性和數據存取效率。

  可能由于未知的 Bug 或別的原因,導致群集系統出現一些意外故障。所以建議選取版本時,選擇已經得到大多數人認可的版本,不一定選取最新的版本,最新的版本往往不太穩定。當然也不要選用太陳舊的功能有限制的版本。

關于 mysql 中如何搭建集群問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注丸趣 TV 行業資訊頻道了解更多相關知識。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-04發表,共計6463字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 玛沁县| 巴里| 孝昌县| 泰顺县| 大城县| 剑阁县| 阳信县| 梅河口市| 犍为县| 汶上县| 醴陵市| 通州区| 东方市| 涟源市| 若尔盖县| 金坛市| 紫云| 东乌珠穆沁旗| 江阴市| 台中县| 鄄城县| 蒲城县| 武鸣县| 鹿泉市| 特克斯县| 肃南| 奇台县| 玉溪市| 大竹县| 河源市| 萝北县| 临西县| 灵宝市| 满洲里市| 黎川县| 天峨县| 晴隆县| 和田县| 平山县| 元江| 定州市|