在Windows Server 2012 R2中搭建SQL Server 2012故障轉(zhuǎn)移集群
Jun 07, 2016 pm 04:33 PM本文講解下在Windows Server 2012 R2中搭建SQL Server 2012故障轉(zhuǎn)移集群的詳細過程。需要說明的是我們搭建的SQL Server故障轉(zhuǎn)移集
本文講解下在Windows Server 2012 R2中搭建SQL Server 2012故障轉(zhuǎn)移集群的詳細過程。
需要說明的是我們搭建的SQL Server故障轉(zhuǎn)移集群(SQL Server Failover Cluster)是可用性集群,而不是負載均衡集群,其目的是為了保證服務(wù)的連續(xù)性和可用性,而不是為了提高服務(wù)的性能。
SQL Server始終在負載均衡集群方面都缺少自己的產(chǎn)品,多由第三方廠家提供,但SQL Server故障轉(zhuǎn)移集群卻由來已久,在SQL Server 2012還提供了一個可用性組(AlwaysOn High Availability Groups)的新特性,我們知道微軟的故障轉(zhuǎn)移集群(Windows Server Failover Clustering , WSFC)一般需要共享存儲,SQL Server故障轉(zhuǎn)移集群也是建立在WSFC的基礎(chǔ)之上,可用性組卻可以不依賴于共享存儲實現(xiàn)SQL Server的故障轉(zhuǎn)移,這為沒有共享存儲的環(huán)境提供了一個實現(xiàn)SQL Server高可用的解決方案,關(guān)于AlwaysOn特性可以參閱相關(guān)文檔,這里我們實現(xiàn)的是仍是基于共享存儲的包含兩個節(jié)點的SQL Server故障轉(zhuǎn)移集群。
一、搭建Windows故障轉(zhuǎn)移集群(WSFC)
SQL Server故障轉(zhuǎn)移集群是基于WSFC的,因而我們需要事先在兩個節(jié)點中搭建一個WSFC,這里需WSFC僅是一個容器,可以放置多個角色以實現(xiàn)這些角色的故障轉(zhuǎn)移。為搭建一個WSFC,除了需要域環(huán)境,還需要在節(jié)點,存儲,網(wǎng)絡(luò)等方面做準(zhǔn)備。
1、在各節(jié)點中添加Failover Clustering服務(wù)器功能。
2、確保各節(jié)點操作系統(tǒng)的更新一致,新安裝的系統(tǒng)要么更新到最新,要么暫不更新。
3、在各節(jié)點中配置管理網(wǎng)絡(luò)和心跳網(wǎng)絡(luò),雖然一個可用網(wǎng)絡(luò)既可以搭建集群,但是最佳實踐還是分開。
4、在各節(jié)點中配置共享存儲磁盤,初始化并格式化磁盤,分配盤符。這里的共享存儲磁盤可以是基于IP SAN和FC SAN的磁盤,也可以是基于文件服務(wù)器的虛擬磁盤,具體可以參考Windows Server 2012 虛擬化測試:存儲。在節(jié)點中可見磁盤如下:
為搭建SQL Server故障轉(zhuǎn)移集群,至少需要準(zhǔn)備兩塊共享磁盤:集群見證磁盤Q、為存儲SQL Server數(shù)據(jù)庫和日志文件準(zhǔn)備的集群磁盤S。另外我們需要為SQL Server的集群實例配置分布式事務(wù)協(xié)調(diào)器(Distributed Transaction Coordinator, DTC),因而需要為DTC準(zhǔn)備磁盤M。微軟建議將SQL Server各類文件分開存儲,最佳實踐需準(zhǔn)備兩塊以上共享磁盤,分別存儲User Database、Backup和User Database Log文件,這就至少需要另一個集群磁盤L。綜上我們對存儲做如下配置:
另外值得一提的是到SQL Server 2014才提供了對集群共享卷的支持,因而這里只能使用集群磁盤。
5、使用Failover Cluster Manager驗證并創(chuàng)建集群。完成后的集群磁盤視圖如下:
?
二、安裝SQL Server故障轉(zhuǎn)移集群
Windows故障轉(zhuǎn)移集群(WSFC)搭建成功后即完成了SQL Server故障轉(zhuǎn)移集群的基礎(chǔ),接下來我們繼續(xù)完成SQL Server部分。先在一個節(jié)點上安裝SQL Server Failover Cluster,然后再另一個節(jié)點安裝加入集群節(jié)點。
SQL Server集群部分,先通過驗證,這里的警告主要是搭建Windows故障轉(zhuǎn)移集群存在警告的警告,升級警告以及防火墻警告,可以繼續(xù)。
選擇Database Engine Services和管理組件,注意這里只有Database Engine Services和Analysis Services支持集群,其他服務(wù)都不支持。其他組件如需要也可以隨后再添加,但是添加其他組建時選擇Add features to an existing installation,然后選擇Perfom a new installation of SQL Server 2012,而不是Add features to an existing instance of SQL Server 2012,否則最后會出現(xiàn)Existing clustered or cluster-prepared instance的錯誤,具體參考Installing SQL Integration Services after SQL Cluster Setup has Completed。
配置一個網(wǎng)絡(luò)名稱,類似于計算機名稱,今后將通過該名稱訪問數(shù)據(jù)庫實例。
?
?
三、配置DTC和SQL Server 集群
分布式事務(wù)協(xié)調(diào)器(Distributed Transaction Coordinator, DTC)在Windows中是默認安裝并運行的服務(wù)。DTC的主要目的是為了實現(xiàn)分布式事務(wù),確??邕M程通信的一致性,這里的進程可以是同一計算機中的兩個進程,也可以是不同計算機中的進程。因而在微軟的世界里,常??吹紻TC的身影。
如果只是獨立安裝SQL Server數(shù)據(jù)庫引擎則無需配置DTC。但是在同時運行SQL Serve集成服務(wù)(SQL Server Integration Services, SSIS)或者搭建SQL Sever故障轉(zhuǎn)移集群等需要分布式事務(wù)的場景中,則需要配置DTC。不配置DTC并不影響SQL Server集群的安裝,但是DTC沒能正確配置,SQL Server集群的功能將受到影響。
Windows Server 2008及以后版本在一個Windows集群中可以有多個DTC實例,這些DTC實例可以是集群實例也可以是本地實例(這里“實例”概念的類似于SQL Server數(shù)據(jù)庫引擎實例,是作為操作系統(tǒng)服務(wù)運行的,是同一個可執(zhí)行程序的副本,在Windows集群中運行的各類服務(wù)都是以實例的形式存在,這些實例依賴Windows集群實現(xiàn)故障轉(zhuǎn)移),甚至可以為SQL Server集群中每個SQL Server實例配置一個專屬的DTC實例。SQL Server集群實例按照如下的是順序選擇DTC實例:
使用SQL Server實例專屬的DTC實例,該DTC實例作為SQL Server實例以來的資源,如果DTC實例失敗,將造成SQL Server實例的失敗。SQL Server 2008及以后版本才有此項。
使用映射給SQL Server實例的DTC實例,使用命令msdtc可以為SQL Server實例映射DTC實例。

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

?? ?? ? ?? ?? ??? ??? ??? ?????? ?? ??? ??? ?????? ??? ?????? ?????? ??? ?????. ? ?? ?? ???? ????. ??, ??????, ??? ? ??? ?? ??? UTF8MB4? ???? ???? ShowCreatedAtabase/Table? ???? ? Alter ??? ??????. ??, ?????? ??? ? UTF8MB4 ?? ??? ???? ?? ?? ??? ????? SetNames? ??????. ??, ?? ??? ????? ???? UTF8MB4_UNICODE_CI? ???? ?? ? ????? ???? ???? ?????? ???? ?? ? ? ?? ?? ??? ????? ??????.

MySQL ??????? ???? ?? ???? ??? ?? ? ?????? ???? ????. ?? MySQL -U ??? ?? -P? ???? ????? ???? ???? ??? ?????? ??????. ?? ??????? ???? ?? ??? ??? ????? -h ?? ??? ???????. ??, mysql-u username-p database name ?? mysql-u username-p database name? ?? ??? ? ? ?? ??????? ?? ????? ??? ? ? SQL ??? ??? ? ????.

MySQL? ???? ??? ???? InnoDB ?? ??? ???? ??? ???? ???? ?????. 1. ????? ??? SQL ?? ????, ?? ?? ?? ?? ??? ?????. 2. ? ???? ???, ???, ?? ? ???? ?????. 3. ????? ???? ????? ??? STARTTRANSACTION, CONMING ? ROLLBACK???. 4. 4 ?? ?? ???? ?? ??, ?? ? ??, ?? ??? ?? ? ???? ?????. 5. ????? ???? ???? ?? ??? ??? ?? ??? ?? ?? ? ??? ????? ??????. ??? ????? ?? MySQL? ?? ???? ?? ??? ?? ? ? ????.

MySQL? ?? ?? ? ???? ?? ??? ??? ??, ?? ?? ? ???? ??? ??? ? ?????. ??, ??? ??? UTF8MB4? ?? ?? ??? ?? ??? ?????. ?? ??? UTF8MB4_UNICODE_CI? ?? ?? ?? ??? ???? UTF8MB4_BIN? ?? ?????. ??, ?? ??? ?? ??? ??, ??????, ??? ? ??? ??? ? ????. ??? ??? ?? UTF8MB4 ? UTF8MB4_UNICODE_CI? ?? ? ???? ???? ?? ????. ??, ?? ??? ?? ??? ?? ???? ?? ??, ?? ?? ???? ??? ??? ?? ???? ???? ??? ???? ???? ???????. ?? ?? ??? ???? ?? ???? ? ??? ? ?? ??? ???????.

CTE? MySQL8.0?? ?? ? ???? ??? ??? ??? ? ?? ??? ??????. 1. CTE? ?? ?? ??? ?? ????? ???? ??? ??? ??? ?? ??? ?????. 2. ?? ??? ???? CTE? ? ?? ?? ??? ???? ????????. 3. ?? CTE? ?? ??? ?? ?? ? ???? ?? ? ? ?????, ?? ?? ?? ? ?? ??? ???????. 4. ?? ???? ?? ??, ?? ?? ??, ????? ?? ? ??? ??? ?????.

MySQL ?? ?? ???? ???? ??? ??, SQL ?? ???, ??? ?? ?? ? ???? ??, ?? ? ???? ?? ??? ???? ?? ??? ???????. 1. ??? ?? ????? : ????? ???? ?? ???? ?? ??, ?? ??? ??? ???, ?? ? ??? ?????? ????, ??? ??? ?? ???? ???? ???, ?? ???? ?????. 2. SQL ?? ??? : ??*? ???, ???? ??? ???? ??, ?? ?? ??? ???, ??? ?? ??? ???????. 3. ??? ?? ?? ? ???? : ?? ? ?? ????? ?? ???? ?? ?? ??? ????, ??? ?? ??? ????, ????? ???? ????, ?? ???? ???? ????? ???? ???? ?????. 4. ?? ? ???? ?? : Redis ??? ???? ?????? ??? ??? ?? ??? ???????.

??? ??? MySQL ?? ???? ????? 1. ?? RTO ? RPO ???? ????? ????? ?? ??? ?? ?? ? ??? ?? ??? ???? ?? ?? ? ??? ??????. 2. ?? ?? ? ?? ??? ??? ???? ?? ?? ?? (? : MySQLDump), ??? ?? (? : PerconaxTrabackup) ? Binlog (Binlog) ? Binlog (Binlog)? ???? ????? ?? ??? ?????. 3. ??? ??? ???? ?? ??? ??? ??? ?? ????? ????? ???????. 4. ?? ??? ????, ??? ??, ?? ?? ?? ? ?? ?? ????? ??? ???? ?????? ??????.

toptimizecomplexjoinoperationsinmysql, followfourkeysteps : 1) 1) ?? ComproperIndexingOnbothsidsidesofjoincolumns, ?? ComporIteIndexesFormulti-ColleumnJoinsandavoidinglargeVarCharIndexes; 2) ?? ? ?? ????
