Hybrid cloud MS SQL 混合 Mirror (地端 + 雲端)
Published in
5 min readFeb 19, 2021
最近很流行地雲混(地端 + 任一套雲端平台),MS-SQL Mirror 算是最簡單的設計,但MS SQL 管理套件”SSMS”眾多的Bug,常讓不少IT被虐的不要不要的
提到雲端,這已經是相當成熟的架構,但混合雲會是大勢所趨,地端、雲端各有各的優缺點,因此混合雲目前發展大致上分兩種分類
- 地雲混 : 私有雲 + 公有雲
- 雲雲混 : 跨雲架構,類似 AWS + Azure + GCP…
至於要選擇哪一種架構,就需要看企業本身的系統架構、財務能力、資料掌控規範、資安規範、IT維運組織架構而定。
本篇算是MS SQL 地雲混的介紹,其實MS SQL地雲混設定很簡單,透過MS SQL內建的鏡像(Mirror)就可以簡單佈署,但最雷的就是Mircosoft 提供的MS SQL管理套件 SQL Management Studio (SSMS),SSMS本身Bug 雷眾多,最近剛好公司有個MS SQL地雲混的小case,看著工程師被SSMS的地雷虐到,有感而發,打這篇教學當作紀念一下 XD
1、前置
- 確定主體 / 鏡像 的 SQL Server 版本一致
- 主體 / 鏡像的SQL login 帳密、權限一致,也要跟 Service login 帳密一致
- SQL Service / SQL Agent Service 都用用一樣的Account Login(從Service 修改)
- Firewall 開通1433、5022
2、流程
- 設定Service權限
- 把Service login 的Account 設定入SQL Login Account
- 在Firewall 上TCP 1433、5022開啟
- 主體SQL上將Data、交易Log “分開”備出
- 到鏡像SQL 上選擇 “RESTORE WITH NORECOVERY” 將備份還原
---- 以上都很簡單,以下是雷區,附上掃雷方式 -----
- 在主體SQL 上 資料庫 → 工作 → 鏡像 → 進入鏡像精靈模式
- 精靈模式內設定主體login 帳密 → 設定鏡像login帳密
地雷1. 主體 / 鏡像 Service login的帳密,以及SQL login的帳密“都要一樣”,不然會出現error 1418 or 102 or 1499
- 隨著鏡像精靈設定完成後,再把鏡像功能打開時 “一定”會出現 sql error 1418, messeng : 伺服器網路位址 “%.*ls” 無法連上或不存在。 請檢查網路位址名稱,並檢查本機和遠端端點的連接埠是否可正常運作。
地雷2. 如果前置準備有確實完成,這邊的1418就不用查了,因為是SSMS的BUG,繼續下面流程做就好,如果沒開firewall port,就要去查一下是不是主體、鏡像之間port 沒通,也有可能是Account 沒有對應好
- 點ok,關掉錯誤訊息
- 到鏡像SQL 上執行以下query,關閉鏡像SQL 上的 mirror status
ALTER DATABASE DBNAME SET PARTNER OFF
- 然後在鏡像SQL 上,再執行以下query,讓鏡像去呼叫主體SQL
ALTER DATABASE DBNAME SET PARTNER = 'TCP://IPADDRESS OR FQDN:5022'DBNAME ==> 資料庫名稱
IPADDRESS OR FQDN ==> 主體SQL的IP 或 FQDN
- 最後到主體SQL上執行以下query,讓mirror 管道串上
ALTER DATABASE DBNAME SET PARTNER = 'TCP://IPADDRESS OR FQDN:5022'DBNAME ==> 資料庫名稱
IPADDRESS OR FQDN ==> 鏡像SQL的IP 或 FQDN
注意 : DBNAME 如果有符號字元的話(-+_!@#%),需要用雙引號,舉例 : "NAME-CD11"
- 做到這部份就大功告成了