黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

MySQL 集群

系統(tǒng) 2300 0
http://blog.csdn.net/zhangking/article/details/5670070
?? MySQL 群集是 MySQL 適合于分布式計(jì)算環(huán)境的高可用、高冗余版本。它采用了 NDB Cluster 存儲引擎,允許在 1 個群集中運(yùn)行多個 MySQL 服務(wù)器。在 MySQL 5.0 及以上的二進(jìn)制版本中,以及與最新的 Linux 版本兼容的 RPM 包中提供了該存儲引擎。

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

??? 管理服務(wù)器(MGM節(jié)點(diǎn))負(fù)責(zé)管理 Cluster 配置文件和 Cluster 日志。Cluster 中的每個節(jié)點(diǎn)從管理服務(wù)器檢索配置數(shù)據(jù)。當(dāng)數(shù)據(jù)節(jié)點(diǎn)內(nèi)出現(xiàn)新的事件時,節(jié)點(diǎn)將關(guān)于這類事件的信息傳輸?shù)焦芾矸?wù)器,然后,將這類信息寫入 Cluster 日志。

??? 目前能夠運(yùn)行 MySQL Cluster 的操作系統(tǒng)有 Linux、Mac OS X 和 Solaris,最新的版本已經(jīng)支持 Windows 操作系統(tǒng)。

??? MySQL 群集的數(shù)據(jù)節(jié)點(diǎn)之間的通信是不加密的,并且需要高速的帶寬,所以建議把群集建立在一個高速局域網(wǎng)內(nèi),不建議跨網(wǎng)段、跨公網(wǎng)的部署這種系統(tǒng)體系。

??? MySQL 群集分為三種節(jié)點(diǎn):管理節(jié)點(diǎn),數(shù)據(jù)節(jié)點(diǎn)和SQL節(jié)點(diǎn)。

??? 管理節(jié)點(diǎn):主要用于管理各個節(jié)點(diǎn),能夠通過命令對某個節(jié)點(diǎn)進(jìn)行重啟、關(guān)閉、啟動等操作。也能夠監(jiān)視全部節(jié)點(diǎn)的工作狀態(tài)。
??? 數(shù)據(jù)節(jié)點(diǎn):主要是對數(shù)據(jù)的存儲,不提供其他的服務(wù)。
??? SQL節(jié)點(diǎn):主要是對外提供SQL功能,類似一臺普通的 MySQL Server。

??? 而SQL節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn)可以是同一臺機(jī)器,也就是說這臺機(jī)器即是SQL節(jié)點(diǎn)也是數(shù)據(jù)節(jié)點(diǎn)。它們只是邏輯關(guān)系上的劃分,實(shí)際部署時,甚至所有的階段都可以位于同一臺物理機(jī)器上,只是配置較復(fù)雜些。

? MySQL 集群


??? 一、軟件下載機(jī)器操作環(huán)境

??? 配置 MySQL 群集必需使用其群集版本,注意和 MySQL Server 版本的區(qū)別。本文以 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位版本的、免安裝的二進(jìn)制版本。

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

??? 本實(shí)驗(yàn)在 2 臺安裝 Windows Server 2003(sp2) 的機(jī)器上進(jìn)行。節(jié)點(diǎn)分配及 IP 配置如下:

??? 第一臺機(jī)器,IP 為 10.0.0.201,作為管理節(jié)點(diǎn)(MGM),SQL節(jié)點(diǎn)1(SQL1),數(shù)據(jù)節(jié)點(diǎn)1(NDBD1)。
??? 第二臺機(jī)器,IP 為 10.0.0.202,作為SQL節(jié)點(diǎn)2(SQL2),數(shù)據(jù)節(jié)點(diǎn)2(NDBD2)。

??? 管理節(jié)點(diǎn)最好不要與數(shù)據(jù)節(jié)點(diǎn)部署在同一臺服務(wù)器上,否則可能會因?yàn)樵摂?shù)據(jù)節(jié)點(diǎn)服務(wù)器的當(dāng)機(jī),而導(dǎo)致管理節(jié)點(diǎn)服務(wù)器的問題,從而導(dǎo)致整個群集系統(tǒng)的崩潰。

?

??? 二,配置管理節(jié)點(diǎn):

??? 在第一臺機(jī)器上,建文件夾 D:/mysql-cluster,在其下建立文件 config.ini,內(nèi)容如下:

??? [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 管理節(jié)點(diǎn)的默認(rèn)端口是1186,數(shù)據(jù)節(jié)點(diǎn)的默認(rèn)端口是 2202。從 MySQL 5.0.3開始,該限制已被放寬,Cluster 能夠根據(jù)空閑的端口自動地為數(shù)據(jù)節(jié)點(diǎn)分配端口。如果你的版本低于5.0.22,請注意這個細(xì)節(jié)。

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

?

??? 三、配置 MySQL 數(shù)據(jù)庫服務(wù)器:

??? 在2臺機(jī)器上,分別依次操作。

??? 解壓 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 的系統(tǒng) path 中。

??? 打開DOS命令行窗口(配置完系統(tǒng)path后,在再次打開新的命令行窗口),執(zhí)行以下語句,讓 MySQL 作為 Windows 服務(wù)運(yùn)行:

??? mysqld.exe -install mysql

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

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

??? 建立 D:/tmp 文件夾。

?

??? 四、配置SQL節(jié)點(diǎn)和數(shù)據(jù)節(jié)點(diǎn):

??? 在2臺機(jī)器上,分別依次操作。

??? 建立文件夾 D:/data。

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

??? #SQL群集節(jié)點(diǎn)
??? ndbcluster
??? ndb-connectstring=10.0.0.201

??? 有了 ndbcluster 語句,mysql 服務(wù)將作為群集的 SQL 節(jié)點(diǎn)啟動。mysqld.exe 命令帶參數(shù) –ndbcluster 運(yùn)行是一樣的效果。
??? mysql 服務(wù)連接到數(shù)據(jù)節(jié)點(diǎn)的 2202 默認(rèn)端口,或自動分配的別的可用端口。
??? (問題:SQL節(jié)點(diǎn)如何獲得數(shù)據(jù)節(jié)點(diǎn)的IP地址?是否通過連接管理節(jié)點(diǎn),取得所有數(shù)據(jù)節(jié)點(diǎn)的IP地址的列表?)
??? 這里的連接字符串的值在 MySQL 服務(wù)啟動時使用,用于連接到管理節(jié)點(diǎn)。

??? 在末尾加語句:

??? #NDB集群節(jié)點(diǎn)
??? [mysql_cluster]
??? ndb-connectstring=10.0.0.201

??? 注:好像以下形式也可:
??? [ndbd]
??? ndb-connectstring=10.0.0.201

??? 這里的連接字符串的值在數(shù)據(jù)節(jié)點(diǎn)啟動時使用,用于連接到管理節(jié)點(diǎn)。

?

??? 五,啟動群集各服務(wù)器

??? 啟動順序依次是:管理節(jié)點(diǎn)、數(shù)據(jù)節(jié)點(diǎn)、SQL節(jié)點(diǎn)。

??? 1,啟動管理節(jié)點(diǎn)

??? 在第一臺服務(wù)器的DOS窗口,運(yùn)行命令:

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

??? 注:如果不帶 –configdir=d:/mysql-cluster 參數(shù),將默認(rèn)為 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,啟動數(shù)據(jù)節(jié)點(diǎn)

??? 分別在2臺服務(wù)器的DOS窗口運(yùn)行命令。

??? 第一次,或初始化群集節(jié)點(diǎn)時,運(yùn)行命令:

??? ndbd.exe –initial

??? 初始化之后,只運(yùn)行 ndbd.exe 即可。若帶參數(shù) –initial 運(yùn)行,將使正常運(yùn)行的群集系統(tǒng)中,數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)全部丟失。

??? 數(shù)據(jù)節(jié)點(diǎn)依賴管理節(jié)點(diǎn)服務(wù)器,進(jìn)行數(shù)據(jù)的自動復(fù)制和同步,使各個數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)保持一致,并在某個數(shù)據(jù)節(jié)點(diǎn)意外關(guān)閉又恢復(fù)后,進(jìn)行數(shù)據(jù)的恢復(fù)重建。

??? 3,啟動SQL節(jié)點(diǎn)

??? 有了 ndbcluster 語句,啟動 mysql 服務(wù),就啟動了SQL節(jié)點(diǎn)。應(yīng)在前2種節(jié)點(diǎn)啟動后,分別在2臺服務(wù)器上進(jìn)行。

?

??? 六、群集管理

??? 在所有的數(shù)據(jù)節(jié)點(diǎn)和SQL節(jié)點(diǎn)未啟動之前,運(yùn)行群集管理節(jié)點(diǎn)服務(wù)的客戶端 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>

??? 說明數(shù)據(jù)節(jié)點(diǎn)、SQL節(jié)點(diǎn)均未連接到管理節(jié)點(diǎn)服務(wù)。

??? 在所有的數(shù)據(jù)節(jié)點(diǎn)和SQL節(jié)點(diǎn)正確啟動之后,將獲得以下信息:

??? 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>

??? 關(guān)閉群集的DOS命令:

??? ndb_mgm -e shutdown

??? 或在 ndb_mgm 環(huán)境下執(zhí)行 shutdown 命令。

??? 以上命令或關(guān)閉管理節(jié)點(diǎn)服務(wù)和所有的數(shù)據(jù)節(jié)點(diǎn)。隨意、強(qiáng)行關(guān)閉群集系統(tǒng)(關(guān)機(jī)或關(guān)閉進(jìn)程),會導(dǎo)致數(shù)據(jù)沒有全部寫回磁盤而導(dǎo)致的數(shù)據(jù)丟失。

??? 關(guān)閉SQL節(jié)點(diǎn)的 mysqld 服務(wù):

??? C:/>net stop mysql,或:

??? C:/>mysqladmin -u root shutdown

?

??? 七、測試

?

??? 正常運(yùn)行的 MySQL 群集系統(tǒng),通過SQL節(jié)點(diǎn)可以對數(shù)據(jù)節(jié)點(diǎn)進(jìn)行數(shù)據(jù)庫操作,各數(shù)據(jù)節(jié)點(diǎn)可以自動進(jìn)行數(shù)據(jù)同步。某一個數(shù)據(jù)節(jié)點(diǎn)關(guān)閉后,不影響SQL節(jié)點(diǎn)的使用。某些數(shù)據(jù)節(jié)點(diǎn) 出錯后,可以進(jìn)行恢復(fù)。需要注意的是,SQL節(jié)點(diǎn)建立數(shù)據(jù)庫時,必須選擇“ndbcluster”數(shù)據(jù)庫引擎。如果不選擇“ndbcluster”引擎, 建立的數(shù)據(jù)庫將不會進(jìn)入MySQL群集系統(tǒng)中,但是可以獨(dú)立使用。

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

??? 測試實(shí)例:

??? 在某臺 SQL 節(jié)點(diǎn)上登錄 mysql,建表 city,并插入數(shù)據(jù):
??? 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 節(jié)點(diǎn)上登錄 mysql,從表 city 里得到記錄:
??? C:/>mysql -u root test
??? mysql>select * from city;

??? 在群集系統(tǒng)正常工作的情況下,應(yīng)當(dāng)能取到先前插入的所有記錄。

?

??? 另外的測試(單點(diǎn)故障測試):

??? 1,還可以人為停止某一個數(shù)據(jù)節(jié)點(diǎn)(Ctrl+C中斷DOS命令ndbd.exe,停止該服務(wù)),看看所有的 SQL 節(jié)點(diǎn)是不是能正常工作。
??? 2,在某一個數(shù)據(jù)節(jié)點(diǎn)停止后,進(jìn)行數(shù)據(jù)庫操作。然后重新開啟該數(shù)據(jù)節(jié)點(diǎn),看看群集中的所有的 SQL 節(jié)點(diǎn)能不能得到完整的數(shù)據(jù)。

?

??? 八、常見問題與擴(kuò)展

??? 配置和管理 MySQL 群集系統(tǒng)并不是一件簡單的事情。由于不合理的配置導(dǎo)致的系統(tǒng)問題非常常見,比如網(wǎng)絡(luò)故障、內(nèi)存限制等,會導(dǎo)致仲裁體統(tǒng)強(qiáng)制關(guān)閉數(shù)據(jù)節(jié)點(diǎn)。

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

??? 還可以與負(fù)載均衡系統(tǒng)結(jié)合,以提供更強(qiáng)的可用性和數(shù)據(jù)存取效率。

??? 可能由于未知的Bug或別的原因,導(dǎo)致群集系統(tǒng)出現(xiàn)一些意外故障。所以建議選取版本時,選擇已經(jīng)得到大多數(shù)人認(rèn)可的版本,不一定選取最新的版本,最新的版本往往不太穩(wěn)定。當(dāng)然也不要選用太陳舊的功能有限制的版本。

?

MySQL 集群


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論