windowssql集群
『壹』 什麼是sqlserver的集群
由二台或更多物理上獨立的伺服器共同組成的「虛擬」伺服器稱之為集群伺服器。一項稱做MicroSoft集群服務(MSCS)的微軟服務可對集群伺服器進行管理。一個SQL Server集群是由二台或更多運行SQL Server的伺服器(節點)組成的虛擬伺服器。如果集群中的一個節點發生故障,集群中的另一個節點就承擔這個故障節點的責任。
認為一個SQL Server集群能夠給集群中的兩個節點帶來負載平衡,這是一種常見的誤解。雖然這似乎很有用,但卻是不正確的。這也意味著集束SQL Server不能真正提高性能。集束SQL Server只能提供故障轉移功能。故障轉移就是當系統中的一台機器發生故障失去其功能時,另一台機器將接手運行它的SQL Server實例。這種功能失效可能是由於硬體故障、服務故障、人工故障或各種其它原因。
為何要集束SQL Server環境?
在實用性方面,集群SQL Server環境令人滿意。在進行故障轉移時,將資料庫實例由一台伺服器轉移到另一台伺服器的時間非常短暫,一般只需要3至7秒鍾。雖然需要重建連接,但對資料庫的終端用戶而言,故障轉移處理通常是透明的。低廉的故障轉移成本還可幫助你對集群中的節點進行維護,而不會造成伺服器完全無法訪問。
SQL Server集群類型
一共有兩種類型的SQL Server集群:主動/被動集群和主動/主動集群。下面分別對它們進行說明(說明以兩個節點的SQL Server集群為基礎)。
主動/被動集群
在這種類型的集群中,一次只有一個節點控制SQL Server資源。另一個節點一直處於備用模式,等待故障發生。進行故障轉移時,備用的節點即取得SQL Server資源的控制權。
優點:由於伺服器上只有一個實例在運行,所以在進行故障轉移時,不需要另外的伺服器來接管兩個SQL Server實例,性能也不會因此降低。
缺點:由於虛擬伺服器上只有一個SQL Server實例在運行,另一台伺服器總是處理備用模式與空閑狀態。這意味著你並沒有充分利用你購買的硬體。
主動/主動集群
在這種類型的集群中,集群中的每個節點運行一個獨立且主動的SQL Server實例。發生節點故障時,另一個節點能夠控制發生故障節點的SQL Server實例。然後這個正常的節點將運行兩個SQL Server實例——它自己的實例和發生故障的實例。
優點:通過這種配置,你能夠充分利用你的硬體。在這樣的系統中,兩個伺服器都在運行,而不是只有一台伺服器運行,而另一台處於等待故障發生的備用模式,因此你能夠充分利用你購買的機器。
缺點:如果進行故障轉移,一台伺服器運行兩個SQL Server實例,性能就會受到不利影響。然而,性能降低總比虛擬伺服器完全失靈要強得多。這種配置的另一故障在於它要求購買的許可要比主動/被動集群多一些。因為集群在運行兩個主動SQL Server實例,這要求你購買兩個單獨的伺服器許可。在某些情況下,這也可能對你形成阻礙。
集群考慮
在高實用性方面,集群SQL Server環境有一定的優勢。然而,高實用性也確實伴隨某種折衷。
首先,建立一個集群SQL Server環境非常昂貴。這是因為集群中的節點必須遵照集群節點的兼容性列表。而且,還需要建立一個復雜的網路,機器的配置必須幾乎相同,同時需要實現資料庫文件磁碟子系統共享。存儲區網路(SAN)是建立這種子系統的不錯選擇,但SAN並非必要,而且十分昂貴。另外,如果你正在運行一個主動/主動集群,你需要為集群中運行SQL Server實例的每台機器的處理器購買一個許可。
因為當地集群主要局限於同一地理區域,自然災難可能會使集群完全失靈。在那種情況下,你需要轉移到災難恢復站點進行繼續操作。你也可以建立地理分散的SQL Server集群,但這樣的系統更加復雜與昂貴。
『貳』 SQLSERVER怎麼搭建伺服器集群實現負載均衡
很多組織機構慢慢的在不同的伺服器和地點部署SQL Server資料庫——為各種應用和目的——開始考慮通過SQL Server集群的方式來合並。
將SQL Server實例和資料庫合並到一個中心的地點可以減低成本,尤其是維護和軟硬體許可證。此外,在合並之後,可以減低所需機器的數量,這些機器就可以用於備用。
當尋找一個備用,比如高可用性的環境,企業常常決定部署Microsoft的集群架構。我常常被問到小的集群(由較少的節點組成)SQL Server實例和作為中心解決方案的大的集群哪一種更好。在我們比較了這兩個集群架構之後,我讓你們自己做決定。
什麼是Microsoft集群伺服器
MSCS是一個Windows Server企業版中的內建功能。這個軟體支持兩個或者更多伺服器節點連接起來形成一個「集群」,來獲得更高的可用性和對數據和應用更簡便的管理。MSCS可以自動的檢查到伺服器或者應用的失效,並從中恢復。你也可以使用它來(手動)移動伺服器之間的負載來平衡利用率以及無需停機時間來調度計劃中的維護任務。
這種集群設計使用軟體「心跳」來檢測應用或者伺服器的失效。在伺服器失效的事件中,它會自動將資源(比如磁碟和IP地址)的所有權從失效的伺服器轉移到活動的伺服器。注意還有方法可以保持心跳連接的更高的可用性,比如站點全面失效的情況下。
MSCS不要求在客戶計算機上安裝任何特殊軟體,因此用戶在災難恢復的經歷依賴於客戶-伺服器應用中客戶一方的本質。客戶的重新連接常常是透明的,因為MSCS在相同的IP地址上重啟應用、文件共享等等。進一步,為了災難恢復,集群的節點可以處於分離的、遙遠的地點。
在集群伺服器上的SQL Server
SQL Server 2000可以配置為最多4個節點的集群,而SQL Server 2005可以配置為最多8個節點的集群。當一個SQL Server實例被配置為集群之後,它的磁碟資源、IP地址和服務就形成了集群組來實現災難恢復。
SQL Server 2000允許在一個集群上安裝16個實例。根據在線幫助,「SQL Server 2005在一個伺服器或者處理器上可以支持最多50個SQL Server實例,」但是,「只能使用25個硬碟驅動器符,因此如果你需要更多的實例,那麼需要預先規劃。」
注意SQL Server實例的災難恢復階段是指SQL Server服務開始所需要的時間,這可能從幾秒鍾到幾分鍾。如果你需要更高的可用性,考慮使用其他的方法,比如log shipping和資料庫鏡像。
單個的大的SQL Server集群還是小的集群
下面是大的、由更多的節點組成的集群的優點:
◆更高的可用新(更多的節點來災難恢復)。
◆更多的負載均衡選擇(更多的節點)。
◆更低廉的維護成本。
◆增長的敏捷性。多達4個或者8個節點,依賴於SQL版本。
◆增強的管理性和簡化環境(需要管理的少了)。
◆更少的停機時間(災難恢復更多的選擇)。
◆災難恢復性能不受集群中的節點數目影響。
下面是單個大的集群的缺點:
◆集群節點數目有限(如果需要第9個節點怎麼辦)。
◆在集群中SQL實例數目有限。
◆沒有對失效的防護——如果磁碟陣列失效了,就不會發生災難恢復。
◆使用災難恢復集群,無法在資料庫級別或者資料庫對象級別,比如表,創建災難恢復集群。
虛擬化和集群
虛擬機也可以參與到集群中,虛擬和物理機器可以集群在一起,不會發生問題。SQL Server實例可以在虛擬機上,但是性能可能會受用影響,這依賴於實例所消耗的資源。在虛擬機上安裝SQL Server實例之前,你需要進行壓力測試來驗證它是否可以承受必要的負載。
在這種靈活的架構中,如果虛擬機和物理機器集群在一起,你可以在虛擬機和物理機器之間對SQL Server進行負載均衡。比如,使用虛擬機上的SQL Server實例開發應用。然後在你需要對開發實例進行壓力測試的時候,將它災難恢復到集群中更強的物理機器上。
集群伺服器可以用於SQL Server的高可用性、災難恢復、可擴展性和負載均衡。單個更大的、由更多的節點組成的集群往往比小的、只有少數節點的集群更好。大個集群允許更靈活環境,為了負載均衡和維護,實例可以從一個節點移動到另外的節點。
『叄』 如何在Windows系統中配置Mysql群集
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 存儲引擎將自動生成隱含的主鍵。該隱含的鍵也將佔用空間,就像任何其他的表索引一樣。由於沒有足夠的內存來容納這些自動創建的鍵,出現問題並不罕見。
『肆』 windows下配置mysql集群,該怎麼解決
windows下配置mysql集群,該怎麼解決
有兩種方法,一種方法使用mysql的check table和repair table 的sql語句,另一種方法是使用MySQL提供的多個myisamchk, isamchk數據檢測恢復工具。前者使用起來比較簡便。推薦使用。
1. check table 和 repair table
登陸mysql 終端:
mysql -uxxxxx -p dbname
check table tabTest;
如果出現的結果說Status是OK,則不用修復,如果有Error,可以用:
repair table tabTest;
進行修復,修復之後可以在用check table命令來進行檢查。在新版本的phpMyAdmin裡面也可以使用check/repair的功能。
2. myisamchk, isamchk
其中myisamchk適用於MYISAM類型的數據表,而isamchk適用於ISAM類型的數據表。這兩條命令的主要參數相同,一般新的系統都使用MYISAM作為預設的數據表類型,這里以myisamchk為例子進行說明。當發現某個數據表出現問題時可以使用:
myisamchk tablename.MYI
進行檢測,如果需要修復的話,可以使用:
myisamchk -of tablename.MYI
關於myisamchk的詳細參數說明,可以參見它的使用幫助。需要注意的時在進行修改時必須確保MySQL伺服器沒有訪問這個數據表,保險的情況下是最好在進行檢測時把MySQL伺服器Shutdown掉。
『伍』 不是同一個區域網的WINDOWS主機,能做MYSQL集群嗎
可以。前提是定義好用戶和密碼,有防火牆的話開放資料庫埠。
sql server需要安裝一下客戶端工具(可以寫sql語句),工具可以直接主機伺服器。
oracle必須安裝oracle客戶端,然後配製本地net服務名和主機伺服器建立連接。然後才可以通過sqlplus訪問主機伺服器
『陸』 我想只用兩台windows server2008R2做SQL server故障轉移集群,域控制器也放在其中一台上,有什麼弊端
域控制器也可以有兩台,這樣兩台就互為備份。任何一台宕機了都不會導致域服務的中斷。這是AD自帶的機制,無需任何三方軟體即可完成。
在生產環境中,我們並不建議將域控制器與其他服務裝在一起。因為域服務是一個基礎服務,一旦其他服務崩潰引起域服務的問題,那整個域內的認證授權以及審計都會受到影響。
此外,資料庫服務也不建議和其他服務裝在一起,理由同上,資料庫服務也是一個相當重要的基礎服務。
關於域控的最佳實踐,可以參考以下文章:
http://technet.microsoft.com/en-us/library/cc778219(v=ws.10).aspx
『柒』 資料庫用SQL2005或者2000,操作系統是WIN2003,請問怎樣將兩台伺服器作集群具體如何操作
可以參考我的文庫Windows2003+SQL2005 雙機群集Cluster部署手冊,SQL2005和SQL2000的故障轉移群集的配置大同小異,2000的更加簡單。
http://wenku..com/view/cfd3c8eb172ded630b1cb611.html
『捌』 如何使用MSCS建立SQL Server集群
集群的類型集群分為兩種類型:負載平衡和失效轉移作為共享硬碟,不同於包含操作系統的硬碟控制器。
MSCS解決方案可以採用主動/被動模式工作。在同一時間集群中只有一個節點是主動的,主動伺服器存儲著集群內的全部資源,並不斷將數據寫入共享硬碟,這就是所謂的quorum驅動器。它可以在故障恢復時,將共享狀態信息從一個節點轉移到另一個節點。定時的發送信號會通過伺服器間的專用網傳遞,當處於被動模式的伺服器沒有受到這個信號,就認為主動伺服器已經失效。此時,它便開始接管集群資源,並從quorum分區上讀取狀態信息。
在集群中安裝 SQL Server
為了在集群上安裝 SQL Server ,你必須首先按以下步驟建立一個可操作的集群:
1. 在每個伺服器上安裝支持MSCS的Windows Server操作系統。
2. 為每個伺服器建立一個"公開的"網路連接。這個連接用來接收外部查詢請求。
3. 在集群的兩個節點間建立一個專用網路,用來傳輸節點狀態信號。
5. 將兩個伺服器。連接到共享驅動器上,並建立磁碟資源。開啟集群中的一號節點(主動模式)。建立並初始化邏輯磁碟空間用來設置quorum驅動器,並建立其它的邏輯分區。
6. 通過控制面板的添加/刪除程序中的Windows組件添加並配置Microsoft Cluster Service。其中包括設置集群的虛擬名稱、IP地址,以及共享磁碟資源。
7. 開啟二號節點(被動模式)。當二號節點在線時,回到一號節點,通過集群管理程序添加二號節點。在集群中添加二號節點非常容易,只要通過在一號節點進行簡單配置就可以完成。
集群建立好後,就按照以下步驟安裝SQL Server了:
1. 插入SQL Server企業版的安裝光碟。如果沒有啟動自動安裝程序,就在光碟上setup.exe。
2. 在確認計算機名界面,選擇虛擬伺服器並輸入一個虛擬名稱。
3. 建立一個運行SQL Server的服務賬號。將集群中每個節點的管理許可權賦給這個賬號。
4. 填寫IP地址、服務賬號,以及共享磁碟資源等內容。
安裝程序會在集群中的每個節點上安裝SQL Server的復本,並在集群中建立虛擬設置。