SQL Server2005,2008 復制,發布,訂閱 設置


SQL Server2005同步復制設置

一、前言

本文介紹的數據庫同步設置步驟僅為可行性方案,中間可能走了彎路。由於公司內部的網絡環境沒有現場的復雜,加之對SQL Server2005了解不多,有些部分沒有足夠的時間去測試。現提供現場的狀況以便於技術部可以在公司內部適當的模擬現場的直實情況。

現場狀況:

l 各數據庫服務器不在同一個網段內,主服務器192.168.1.XXX,子服務器192.168.10.XXX。

l 由於沒有域名服務器,各服務器之間可以互相Ping通對方的IP地址,Ping對方的機器名失敗

其它狀況(如有域名服務器,在同一網段內)須逐一測試。

二、同步設置之前

l 在SQL Server2005安裝之前,如果安裝數據庫的機器名為系統默認的長名稱,此時可以更改機器名為有意義的機器名,重新啟動機器后即可安裝SQL Server2005數據庫了。數據庫安裝完成后,機器名不能再行更改。

l 修改RNSS的數據庫腳本后,重新生成RNSS數據庫。修改方法是把腳本中的with ENCRYPTION替換為--with ENCRYPTION。

三、訂閱端及服務服務端設置步驟

本節的設置在訂閱端及服務端都要執行。

1. 新建計算機用戶DataCopy,密碼為DataCopy。

在桌面上,右擊【我的電腦】→【管理】打開下方頁面:

clip_image002

選中【本地用戶和組】→【用戶】,在右邊區域中右鍵【新用戶】

clip_image003

輸入“用戶名”及“密碼”,取消選中“用戶下次登錄時須更改密碼”,選中“用戶不能更改密碼”和“密碼永不過期”。單擊【創建】按鈕,關閉對話框。在右邊的用戶列表中出現剛才增加的用戶。

右鍵【屬性】,打開屬性對話框,如下:

clip_image004

在【隸屬於】選項卡內刪除“Users”用戶組,增加“Administrators”用戶組。

2. 修改MSSQLSERVER協議

【開始】→【程序】→【Microsoft SQL Servr 2005】→【配置工具】→【SQL Server Configuration Manager】,打開下面的頁面:

clip_image005

選中【MSSQLSERVER的協議】,如果右邊協議列表中的“Named Pipes”的狀態為“已禁用”,右鍵【啟用】。

3. 重啟SQLSERVER服務

clip_image006

在【控制面板】→【管理工具】→雙擊【服務】程序,打開服務管理程序。在服務列表中修改“SQL Server Agent”服務的屬性,在“常規”選項卡內修改啟動方式為“自動”,在“登錄”選項卡中修改啟動帳戶為“DataCopy”,如下圖:

clip_image007

確定后,重新啟動服務“SQL Server”和“SQL Server Agent”。

四、客戶端設置步驟

如果客戶端沒有安裝RNSS數據庫,此步可略過。

如果已經安裝了RNSS數據庫,在SQL Server內刪除已經安裝的數據庫,操作步驟如下:

首先選擇「RNSS」數據庫,右鍵刪除:

clip_image008

接下來在安全性里面,刪除「RNSS」、「RNSS_Admin」、「RNSS_Web」三個用戶,如下圖:

clip_image009

刪除之后,再去SQLServer的數據文件夾,如「:\Program Files\Microsoft SQL Server\MSSQL\Data」目錄下刪除「RNSS.mdf」和「RNSS_log.LDF」兩個數據庫實體文件。

五、服務端設置步驟

1. 檢查網絡結構

此步主要來確定網絡架構是否適合做數據庫同步,因為SQL 2005數據庫的同步不能使用IP地址、服務器別名,所以這一步必須Ping通訂閱服務器的機器名或(域名+機器名)。

對於在同一網段內的服務器,不必要特殊設置就應該能夠Ping通機器名,如果Ping不通的話肯定是網絡沒有連接成功,請檢查交換機或網線。

對於不在同一網段的服務器,如果有域名服務器,也應該能Ping通訂閱服務器,如果不通請檢查服務器設置。

對於不在同一網段內的服務器,Ping IP地址也不能的話,請檢查路由器的設置。

對於不在同一網段內的服務器,能Ping通IP地址,但是不能Ping通機器名的可以按下面的變通方法設置:

用文本編輯器(記事本)打開『HomePath』\system32\drivers\etc文件下的「lmhosts.sam」文件,在文件的末尾按下圖的格式增加訂閱服務器的機器名和IP地址:

clip_image010

增加完成后,保存退出。

然后打開「本地連接的狀態」窗口,單擊「屬性」,選中「Internet協議(TCP/IP)」,單擊「屬性」,單擊「高級」,打開「WINS」選項卡,勾選「啟用LMHOSTS查詢」,單擊「導入LMHOSTS」按鈕,選中上一步編輯的文件,單擊【打開】按鈕,然后一路【確定】只到關閉「本地連接狀態」窗口。

然后使用Ping命令,訪問訂閱服務器的機器名,如果能Ping通說明設置成功了。

2. 設置分發服務器

【開始】→【程序】→【Microsoft SQL Servr 2005】→【SQL Server Management Studio】,連接到本地數據庫實例。如圖:

clip_image011

【對象資源管理器】→【復制】→【本地發布】→右鍵【新建發布】,進入數據庫發布向導頁面:

【下一步】→選中要發布的數據庫(RNSS)【下一步】→選擇發布類型「事務性發布」【下一步】→選中要發布的對象(全勾選)【下一步】→【下一步】→【下一步】→勾選「立即創建快照…」【下一步】→單擊【安全設置】按鈕,選中「在SQL Server代理帳戶下運行…」和「通過模擬進程帳戶」,單擊【確定按鈕】【下一步】→【下一步】→填寫發布名稱(RNSS)【完成】→等待狀態窗口處理完成后單擊【關閉】按鈕即完成了數據庫發布。

在新建立的數據庫發布上,右鍵【屬性】,打開屬性頁后,選擇【快照】頁如下圖:

clip_image013

在【運行其他腳本】欄內單擊「應用快照之后執行此腳本」后的【瀏覽】按鈕,選擇Createuser.sql文件,此文件隨此文檔一塊提供。然后單擊【確定】按鈕。

3. 增加訂閱服務器

【開始】→【程序】→【Microsoft SQL Servr 2005】→【SQL Server Management Studio】,連接到本地數據庫實例。如圖:

clip_image014

【對象資源管理器】→【復制】→【本地發布】→【RNSS】→右鍵【新建訂閱】,進入新建訂閱向導。

【下一步】→選擇發布服務器,選擇發布【下一步】→【下一步】→單擊【添加訂閱服務器】,選擇「添加SQL Server訂閱服務器」彈出連接到訂閱服務器窗口如下:

clip_image015

輸入訂閱服務器的名稱,選擇「SQL Server身份驗證」,輸入登錄名及密碼,單擊連接按鈕,在訂閱服務器列表內出現連接的數據庫如下圖:

clip_image017

在訂閱服務器名稱后面的下拉列表中選擇〈新建數據庫〉,然后彈出“新建數據庫”設置頁面如圖:

clip_image019

在頁面內輸入「數據庫名稱」和數據庫的「初始大小」后,單擊【確定】按鈕。

clip_image021

【下一步】→打開分發代理安全性頁面,單擊訂閱屬性列表內,訂閱服務器后面的按鈕,如下圖:

clip_image023

彈出〖分發代理安全性〗頁面,在頁面內分別選擇「在SQL Server代理帳戶下運行…」「通過模擬進程帳戶」「通過模擬進程帳戶」。單擊【確定】。

【下一步】→【下一步】→【下一步】→勾選「創建訂閱」【下一步】→【完成】→單擊【關閉】。

訂閱設置完成后界面如下:

clip_image024

右鍵【啟動復制監視器】,即可查看數據庫同步運行的狀態。

右鍵【查看同步狀態】,即可查看訂閱同步運行的狀態。如下圖:

clip_image026

六、RNSS設置

RNSS系統數據庫同步使用的不是合並模式。為了保證各服務器中數據的完全一致,要求對數據庫中數據的增、刪、改都在發布服務器數據庫上進行,然后再通過數據庫同步機制把更新后的數據發布到訂閱服務器上,為了滿足此要求,需要屏蔽掉任何對訂閱服務器上數據的直接修改。

具體事項如下:

1、 在SysConfig表中 ConnectionString 列內填寫RNSS應用程序和中心數據庫的連接字符串。

當此ConnectionString字符串為空時,RNSS的應用程序會直接對訂閱服務器上的數據庫進行增刪改操作。

數據庫連接字符串的一個示例如下,請根據現場實際情況修改其中的IP地址(192.168.0.101)、數據庫服務端口號(1433)、數據庫名稱(RNSS)、連接用戶(RNSS_Admin)及密碼(jnvision)。

DRIVER=SQL Server;Address=192.168.0.101,1433;Port=1433;DATABASE=RNSS;Trusted_Connection=No;Network=DBMSSOCN;UID=RNSS_Admin;PWD=jnvision;

2、 修改分中心數據庫中的 prClearLog 存儲過程,刪除其中對數據庫記錄進行刪除的語句。

3、 禁用分中心數據庫對數據庫的自動維護,具體來說就是刪除或禁用分中心數據庫SQL代理上的ClearLog任務,防止通過此途徑刪除數據庫的數據。

4、 各分中心發布WEB站點時,應該讓WEB站點中的頁面直接連接發布服務器。

5、 對RNSS的應用程序升級時,如果需要涉及到對數據庫的操作,應進行數據庫同步方面的測試。

6、 中心數據庫需要同步的所有表必須具有主鍵。存儲過程、函數如果同步的話,不能進行加密,可以通過注釋sql語句中的with ENCRYPTION來把加密去掉。

7、 設置大二進制數據,需要更改SqlServer2005的系統參數:

sp_configure 'max text repl size', 4000000

EXEC sp_spaceused 'maplayer'

RECONFIGURE

以上語句在建立完復制時執行。

七、發布的其它設置

l 關於訂閱過期的設置

在數據庫的發布屬性窗口中,選擇「常規」頁面,里面有關於訂閱過期的設置,SQL2005默認選擇「訂閱永不過期,但可以將其停用,直到它們重新初始化」,在這里我們無需更改這項,使用默認即可。如下圖:

clip_image028

l 關於分發代理和日志讀取器代理參數

分發代理參數代理設置頁面如下:

在新建的發布上,右鍵【啟動復制監視器】,如圖:

clip_image029

在上圖中選擇發布服務器,右鍵 【代理配置文件】,即打開代理配置頁面,如圖:

clip_image031

在代理代理配置頁面內,選擇分發代理,選定代理配置文件后單擊【…】按鈕,即打開參數配置頁面,如圖:

clip_image032

在此頁面內修改相應參數后保存即可。

日志讀取代理的參數同上,如圖:

clip_image034

ü 為日志讀取器代理使用 –MaxCmdsInTran。   
–MaxCmdsInTran 參數指定日志讀取器向分發數據庫寫入命令時組成一個事務的語句的最大數量。使用此參數能夠使日志讀取器代理和分發代理在訂閱服務器上應用命令時將發布服務器上的大事務(由許多命令組成)分成若干個較小的事務。指定此參數可以減少分發服務器的爭用問題並縮短發布服務器與訂閱服務器之間的滯后時間。由於初始事務是以較小的單元應用的,訂閱服務器可以在初始事務結束之前訪問一個較大的邏輯發布服務器事務的行,因而會破壞事務的原子性。默認值為 0,這將保持發布服務器的事務邊界。此參數不適用於 Oracle 發布服務器。

ü 為分發代理使用 –SubscriptionStreams 參數。   
–SubscriptionStreams 參數可以顯著提高聚合復制吞吐量。它使到一台訂閱服務器的多個連接可以並行應用批量更改,同時在使用單線程時保持多個事務性特征的存在。如果有一個連接無法執行或提交,則所有連接將中止當前批處理,而且代理將用單獨的流重試失敗的批處理。在重試階段完成之前,訂閱服務器上會存在臨時事務性不一致。失敗的批處理成功提交后,訂閱服務器將恢復到事務性一致狀態。   
可以使用 sp_addsubscription (Transact-SQL)@subscriptionstreams 來指定此代理參數的值。

ü 增大日志讀取器代理的 -ReadBatchSize 參數的值。   
日志讀取器代理和分發代理支持事務讀取和提交操作的批大小。批大小的默認值為 500 個事務。日志讀取器代理從日志中讀取特定數量的事務,而不管這些事務是否標記為復制。將大量事務寫入發布數據庫,而其中只有一小部分標記為復制時,則應使用 -ReadBatchSize 參數增加日志讀取器代理的讀取批大小。此參數不適用於 Oracle 發布服務器。

ü 增大分發代理的 -CommitBatchSize 參數的值。   
提交一組事務的開銷是固定的;通過不經常提交大量事務,就可以將開銷分散在大量數據上。但是,增大此參數的優勢因應用更改的開銷由其他因素(例如包含日志的最大磁盤 I/O)限制而降低。另外,需要考慮以下權衡問題:任何導致分發代理重新開始的失敗必須回滾並重新應用大量事務。對於不可靠的網絡,越小的值導致失敗的幾率越小,如果導致失敗,將回滾並重新應用較少量事務。

ü 降低日志讀取器代理的 -PollingInterval 參數的值。   
-PollingInterval 參數指定為要復制的事務查詢已發布數據庫的事務日志的頻率。默認值為 5 秒。如果減小此值,日志的輪詢將更加頻繁,這會使事務從發布數據庫傳遞到分發數據庫的滯后時間較低。但是,應該對較低滯后時間的需要和因頻繁輪詢導致的服務器上增加的負荷之間進行平衡。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM