SQL Server 2008R2 Mirroring with No Domain (SQL 鏡像)
SQL Service跟Agent的啟動帳號皆為StartSQL,Mirroring會使用這一個帳號,由於是在沒有網域的環境中,故兩部SQL Server的帳號要設定成一樣(StartSQL)。
鏡像『主體端』先做一次『完整備份』。
鏡像『主體端』再做一次『交易記錄備份』。
『鏡像端』點選資料庫按下右鍵選『還原資料庫』(注意此時『鏡像端』尚無MirrorTest資料庫)
還原時請手動鍵入資料庫的名稱(實驗命名MirrorTest),選擇BAK檔案,勾選還原的備份組。
在還原的『選項』頁面,如下圖紅色圈選處,請點選RESTORE WITH NORECOVERY
完成還原後,我們可以看見下圖多了一個MirrorTest資料庫,狀態為(正在還原…)
同之前還原完整備份的方式,我們也將交易記錄檔還原,注意在還原的『選項』頁面,也請點選RESTORE WITH NORECOVERY,在此就不附圖檔,做完這一個步驟則『鏡像端』就算完成。
回到『主體端』,我們點選資料庫後啟用『鏡像』功能。
點選『設定安全性』後會出現設定精靈。
由於本實驗單純的只有兩部SQL,所以本選項請選否然後按『下一步』。
設定『主體端』的鏡像執行個體,預設通訊PORT為5022,本實驗端點名稱設定成Mirror,完成後按『下一步』。
設定『鏡像端』的鏡像執行個體,此處需要按下『連接』按鈕,然後輸入可登入『鏡像端』的帳密,預設通訊PORT為5022,本實驗端點名稱設定成Mirror,完成後按『下一步』。
如同說明,沒有網域,我們留白後,按『下一步』。
精靈成功在兩端建立鏡像要用的端點。
精靈結束後會彈跳出啟動鏡像的視窗,此時我們先點選『不要啟動鏡像』,因為我們接下來要修改鏡像主機位址。
如下圖紅色圈選處,主體位址為TCP://SQL1:5022,鏡像位址為TCP://SQL2:5022(您可以先在命令提示字元中下telnet指令來確認主機彼此是否認的到,例:telnet SQL1 5022)設定完我們的需求後在手動按下『啟動鏡像』按鈕來啟動。
由於我們輸入的位址格式不符合FQDN,所以會跳出下圖的視窗,不用管它直接按下『是』。
歐歐!MyGod發生錯誤!看訊息感覺像是找不到對方,無法鏡像(錯誤碼1418),這裡讓我卡關卡好久,一直爬文一直TRY,試著找出問題,後來偶然想起不如去『鏡像端』看看LOG,也許會看出一些端倪。
『鏡像端』的錯誤訊息看來,感覺是『主體端』有找到『鏡像端』但要建立CONNECT時卻發生權限不足的問題。
此時上SUPER SQL SERVER尋求協助,楊志強老師馬上回覆GRANT CONNECT ON ENDPOINT::你的端點名稱 TO 你在兩邊設定的LOGIN帳號。
馬上利用老師的方法,將端點Mirror的CONNECT權限給StartSQL帳號。
『主體端』也一樣將端點Mirror的CONNECT權限給StartSQL帳號。
經過授權動作後,重新啟動鏡像,YA………..成功了。
『主體端』跟『鏡像端』,鏡像中資料庫的圖示。
資料庫鏡像監試器的畫面
本次的鏡像實做真的很不順,卡關卡的很久,建議大家ERROR LOG去『鏡像端』看,我一直在『主體端』打轉,一直以為是位址寫法的問題(以為要FQDN寫法才可以),導致建立失敗,結果是權限問題,感謝楊志強老師及SUPER SQL SERVER社團的社友提點。
我是ROCK
rockchang@mails.fju.edu.tw