非域環境下SQL Server搭建Mirror(鏡像)的詳細步驟

来源:https://www.cnblogs.com/xuliuzai/archive/2019/08/30/11436460.html
-Advertisement-
Play Games

1.測試驗證環境 伺服器角色 機器名 IP SQL Server Ver 主體伺服器 WIN-TestDB4O 172.83.XXX.XXX SQL Server 2012 - 11.0.5058.0 (X64) 鏡像伺服器 WIN-TestDB5O 172.73.XXX.XXX SQL Serve ...


1.測試驗證環境

 

伺服器角色

機器名

IP

SQL Server Ver

主體伺服器

WIN-TestDB4O

172.83.XXX.XXX

SQL Server 2012 - 11.0.5058.0 (X64)

鏡像伺服器

WIN-TestDB5O

172.73.XXX.XXX

SQL Server 2012 - 11.0.5058.0 (X64)

2.創建前環境檢查

(1)網路是否能聯通,並且埠可用。

(2)SQL Server版本、補丁是否滿足鏡像要求。

(3)SQL Server資料庫的恢復模式、相容級別。

(4)SQL Server上是否有常規的備份作業,特別是日誌備份。

(5)主體伺服器和鏡像伺服器的SQL Server能否互通。

3.使用證書配置鏡像,並備份還原資料庫

在這一步中,我們將做兩件事,第一件是使用證書來配置鏡像,第二件是備份還原資料庫。在非域環境下,必須使用證書來搭建鏡像,所以把搭建證書放在第一步。有些資料上會把備份還原操作放在證書搭建之前,但是根據個人經驗,當磁碟IO、網路性能不佳的時候,備份、傳輸、還原都會浪費大量的時間(個人操作過2個小時),並且期間伺服器幾乎不能操作。這種時候,我會選擇先搭建好,再還原,然後馬上進行同步,減少主從差異,需要同步更多的數據。

第一部分  創建證書:

【如果伺服器使用Local System作為SQL Server服務賬號,就需要使用證書授權。】

使用證書搭建鏡像的步驟如下:

(1)創建資料庫主密鑰(如果主密鑰不存在)。

(2)在Master資料庫中創建證書並用主密鑰加密。

(3)使用證書授權創建端點(endpoint)。

(4)備份證書成為證書文件。

(5)在伺服器上創建登錄賬號,用於提供其他實例訪問。

(6)在master庫中創建用戶,並映射到上一步的登錄賬號中。

(7)把證書授權給這些用戶。

(8)在端點上授權。

(9)設置鏡像伺服器的主體伙伴。

(10)設置主體伺服器的鏡像伙伴。

(11)配置見證伺服器。

Step 1:創建資料庫主密鑰

主密鑰的用處在這裡是用於加密證書,當然主密鑰不僅僅只有這個作用。對資料庫主密鑰的密碼及存儲保護要小心,這是實例級別的對象,影響面非常廣。可以使用下麵語句來創建:

USE master   
GO   
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Pa$$w0rd';

通過系統表查看,確認。

使用相同方式在鏡像伺服器創建資料庫主密鑰。

Step 2:創建證書,並用主密鑰加密

創建證書時,預設在創建日期開始一年後過期,所以針對證書的創建,要註意其過期時間。下麵是在“主體伺服器”上創建HOST_P_cert證書的創建

USE master   
GO   
CREATE CERTIFICATE Host_A_Cert    
WITH Subject = 'Host_P Certificate',   
Expiry_Date = '2050-1-1'; --過期日期 

使用相同的方法在鏡像伺服器上實現對HOST_S_cert證書的創建。

Step 3:創建端點

可以使用下麵的代碼在主體伺服器中創建端點,並且指定使用5022,埠,埠在鏡像配置過程中不強制使用特定埠(被占用或者特定埠如1433除外)。

--使用Host_A_Cert證書創建端點   
IF NOT EXISTS ( SELECT  1   
                FROM    sys.database_mirroring_endpoints )   
    BEGIN   
        CREATE ENDPOINT [DatabaseMirroring] STATE = STARTED AS TCP ( LISTENER_PORT = 5022,   
            LISTENER_IP = ALL ) FOR DATABASE_MIRRORING ( AUTHENTICATION =   
            CERTIFICATE Host_A_Cert, ENCRYPTION = REQUIRED Algorithm AES, ROLE =   
            ALL );   
    END  

 在鏡像伺服器對證書名稍作修改,創建鏡像伺服器的端點。

Step 4:備份證書

備份證書的目的是發送到別的伺服器並導入證書,以便別的伺服器能通過證書訪問這台伺服器(主體伺服器)。

BACKUP CERTIFICATE Host_A_Cert   
TO FILE = 'D:\ShareFoldersMirror\Host_A_Cert.cer';  

同理,在鏡像伺服器上重覆一次,註意證書名和路徑。備份之後可以在目標文件夾上看到有一個cer文件:

 

備份證書文件互相Copy至對方文件中。

Step 5:創建登錄賬號

針對每個伺服器單獨創建一個伺服器登錄賬號,這裡只需要創建一個登錄給鏡像伺服器即可:

CREATE LOGIN Host_B_Login WITH PASSWORD = 'Pa$$w0rd';

同理,在鏡像伺服器上創建Host_A_Login給主體伺服器。

Step 6:創建用戶,並映射到Step 5中創建的登錄賬號中

在主體伺服器上運行:

CREATE USER Host_B_User For Login Host_B_Login;

同理在鏡像伺服器也創建。

Step 7:使用證書授權用戶

創建一個新的證書,並使用從伙伴伺服器中複製過來的證書導入,然後映射step 6中的賬號到這個新證書上。

CREATE CERTIFICATE Host_B_Cert   
AUTHORIZATION Host_B_User   
FROM FILE = 'D:\ShareFoldersMirror\Host_B_Cert.cer';  

註意鏡像伺服器上也同樣。

Step 8:把Step 5中的登錄賬號授權訪問埠

GRANT CONNECT ON ENDPOINT::[DatabaseMirroring] TO [Host_B_Login];  

鏡像伺服器也一樣。

到此為止,配置鏡像的步驟已經完畢,後續會給出儘可能自動化的配置腳本。

第二部分  備份還原資料庫:

這一部分沒有什麼特別強調的,在此次試驗過程中,使用了界面配置。

註意:本次還原是為Mirror做準備,所以,點擊   【選項】  按鈕 。

所以需要選擇【不對資料庫執行任何操作,不回滾未提交的事務….

 還原成功

第三步:啟動鏡像

依次分別在鏡像Server和主Server上運行以下命令就可以了【最好在Master DB上執行以下命令】

在鏡像Server上線運行

ALTER DATABASE [Test_Mirror] 
    SET PARTNER = 'TCP://172.83.XXX.XXX:5022';
GO

在主Server上運行

ALTER DATABASE [Test_Mirror] 
    SET PARTNER = 'TCP://172.73.XXX.XXX:5022';
GO

 

 配置成功,此時顯示如下:

主體伺服器上顯示

鏡像伺服器上DB顯示

 

4. 補充說明

以下內容用來學習

問題1  查詢判斷資料庫是否已添加主密鑰

---sys.databases的is_master_key_encrypted_by_server得到是否有加密
select top 100 is_master_key_encrypted_by_server,* from sys.databases

----如果沒有就看不到數據【需定義到資料庫】 
----解釋說明:##MS_ServiceMasterKey##----是說的整個服務,而##MS_DatabaseMasterKey## 是說的Master資料庫,需留意。
----我們  使用證書搭建鏡像 是需要在master資料庫上創建資料庫主密鑰(如果主密鑰不存在)。
SELECT * FROM sys.symmetric_keys

以下截圖查詢的數據顯示Master資料庫尚未創建主密鑰。

以下截圖的數據顯示Master資料庫已有主密鑰

問題2 由日誌傳送更改為鏡像。

希望直接更改,即不再需要備份和還原。

Step 1 【註意:此時先手動執行一下此DB的Log 備份的Job,然後停掉此Job,接下來再執行Copy Log 文件的Job(如果有此Job的話),再停掉此Job,最後執行Restore 此Log 文件的Job,接著停掉此Job】

Step 2 選擇指定DB,取消【將此資料庫啟用為日誌傳送配置中的主資料庫…】,就是把 去掉。

 

點擊確定後,會要求我們再次連接一下。

 

Step 3 開始建立伙伴關係

先在備份Server的DB上去做

ALTER DATABASE [YYYY_Mob] 
    SET PARTNER = 'TCP://172.87.XXX.XX2:10001';
GO

 然後再在主DB上運行

ALTER DATABASE [YYYY_Mob] 
    SET PARTNER = 'TCP://172.89.XXX.XX4:10002';
GO

問題3 刪除主密鑰

解決方案

DROP CERTIFICATE 證書名

但此時 還有報錯了

 

Step 1 刪除映射的登錄賬號和用戶名

查看登入名 

 

刪除標識的登入名 ,此時執行還會報同樣的錯誤。

註意登入名和用戶名是2個概念,

DROP LOGIN   For_HOST_B_user

(有時還要查詢  select top 100* from sys.sysusers是否還有這個用戶,有的話,還要執行 DROP User For_HOST_B_user)

Step 2 刪除埠 

SELECT * FROM sys.endpoints e WHERE e.name = N'Endpoint_Mirroring'

存在則刪除埠

 

Step 3  刪除

此時,就OK了。去刪除證書和主密鑰

問題4 在建立伙伴關係時,需註意設置伙伴的順序

如果按照網址上介紹的步驟 ,現在主伺服器上執行,設置伙伴。

 

則可能報錯,提示的錯誤信息如下:

我們先在Mirror伺服器上執行

然後再在主伺服器中執行,則不報錯

 

參考文獻

http://blog.csdn.net/dba_huangzj/article/details/27652857

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Docker 的優點 1、簡化程式: Docker 讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發佈到任何流行的 Linux 機器上,便可以實現虛擬化。Docker改變了虛擬化的方式,使開發者可以直接將自己的成果放入Docker中進行管理。方便快捷已經是 Docker的最大優勢,過 ...
  • linux系統所有的文件都是存放在根分區中的,如果根分區容量即將耗盡,我們就需要給根分區擴容,我們可以使用lsblk命令來查看,系統的根分區實際是邏輯捲,所以想要擴展根分區只要將邏輯捲擴容就可以了。此時我的根分區容量為17G,已用12G,我想要給它擴展容量應該怎麼做呢 1.新添加一塊硬碟 2.將新添 ...
  • 如何使用 Skywalking Agent ? 如果你還不知道 Skywalking agent 是什麼, "請點擊這裡查看 Probe" 或者 "這裡查看快速瞭解agent" ,由於我這邊大部分都是 JAVA 服務,所以下文以 Java 中使用 agent 為例,提供了以下三種方式供你選擇 三種方 ...
  • 由於沒有安卓機,想要測試一些東西,所以選擇了安卓模擬器,可是一運行模擬器就導致電腦藍屏,試了 N 次都不行。 於是在網上尋找解決方案,瞭解到導致藍屏的原因都是因為虛擬化技術,我的系統是 Windows10 1903,加上之前開啟了 Hyper V 虛擬機,和 Windows 沙盒,再加上 Win10 ...
  • RPM包管理: RPM(RedHat Package Manager),早期是在RedHat發行版下,由於比較火,所以慢慢運行於各個發行版(如suse,centos等)。 它生成具有.RPM擴展名的文件,類似windows的setup.exe。 【查詢】 =》查詢已安裝的rpm列表 rpm -qa| ...
  • 要求:關閉VMware虛擬網路編輯器中自身的DHCP服務 1、掛在本地鏡像源本配置Yum倉庫,安裝DHCP服務 2、配置DHCP服務 [root@NoneOs ~]# systemctl restart dhcpd[root@NoneOs ~]# systemctl enable dhcpdCrea ...
  • Summary: in this tutorial, we will show you how to install PostgreSQL on your local system for learning and practicing PostgreSQL. PostgreSQL was deve ...
  • 1. 我的版本是 mysql-5.7.26.0 ,因為據說 mysql-8 的性能雖然強悍,但是相容性還是有問題,而且發佈時間不長,沒有多少人用,就暫時用著5.7版本。 2. 接受許可協議。 3. 選擇安裝類型,選擇自定義。 4. 選擇安裝的位數(和系統匹配),然後設置安裝路徑。 選擇安裝位置 5. ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...