爲什麼要同步SQL Server 2000 數據庫,它都用在什麼場合
- 數據實時備份同步,數據庫服務器出問題時我們也有其正常工作時的備份
- 數據實時備份同步,一臺服務器負載不起時,可以用來做負載均衡
- 數據實時備份同步,數據庫服務器可以無間斷,無損失遷移
- 主服務器被攻擊或當機時另一臺服務同步機可以應急
SQL Server 2000 數據庫同步配置的原理
複製的概念
Microsoft? SQL Server? 2000 的複製是在數據庫之間對數據和數據庫對象進行復制
和分發並進行同步以確保其一致性的一組技術。
使用複製可以將數據分發到不同位置,通過局域網、使用撥號連接、通過 Internet 分
發給遠程或移動用戶。複製還能夠使用戶提高應用程序性能,根據數據的使用方式物理
分隔數據(例如,將聯機事務處理 (OLTP) 和決策支持系統分開),或者跨越多個服務
器分佈數據庫處理。
SQL複製的基本元素包括
發佈服務器、訂閱服務器、分發服務器、發佈、項目
發佈服務器
發佈服務器是提供數據以便複製到其它服務器的服務器。發佈服務器可以具有一個或多個
發佈,每個發佈代表一組邏輯相關的數據。除了指定其中哪些數據需要複製之外,發佈服
務器還檢測事務複製期間發生更改的數據並維護有關此站點上所有發佈的信息。
分發服務器
分發服務器是作爲分發數據庫宿主並存儲歷史數據和/或事務以及元數據的服務器。分發
服務器的角色根據執行的複製類型而不同。有關更多信息,請參見複製類型。
遠程分發服務器是獨立於發佈服務器並配置爲複製的分發服務器的服務器。本地分發服務
器是既配置爲複製的發佈服務器又配置爲複製的分發服務器的服務器。
訂閱服務器
訂閱服務器是接收復制數據的服務器。訂閱服務器訂閱的是發佈而不是發佈中分離的項目;
並且訂閱服務器只訂閱其需要的發佈,而不是發佈服務器上所有可用的發佈。根據複製的類
型和所選擇的複製選項,訂閱服務器還可以將數據更改傳播回發佈服務器或將數據重新發布
到其它訂閱服務器。
發佈
發佈是一個數據庫中的一個或多個項目的集合。這種多個項目的分組使得指定邏輯相關的一
組數據和數據庫對象以一起復制變得更容易。
項目
項目是指定要複製的數據表、數據分區或數據庫對象。項目可以是完整的表、某幾列(使用垂
直篩選)、某幾行(使用水平篩選)、存儲過程或視圖定義、存儲過程的執行、視圖、索引視圖
或用戶定義函數。
訂閱
訂閱是對數據或數據庫對象的複本的請求。訂閱定義將接收的發佈和接收的時間、地點。訂閱的
同步或數據分發可以由發佈服務器(強制訂閱)或訂閱服務器(請求訂閱)請求。發佈可以支持
強制訂閱和請求訂閱的混合。
SQL複製的工作原理
SQL SERVER 主要採用出版物、訂閱的方式來處理複製。源數據所在的服務器是出版服務
器,負責發表數據。出版服務器把要發表的數據的所有改變情況的拷貝複製到分發服務器
分發服務器包含有一個分發數據庫,可接收數據的所有改變,並保存這些改變,再把這些
改變分發給訂閱服務器
SQL SERVER複製技術類型,三種複製技術,分別是(詳細的說明參考SQL聯機幫助):
1、快照複製
2、事務複製
3、合併複製
下介紹實現複製的步驟。(以快照複製爲例)
準備工作:
1.發佈服務器,訂閱服務器都創建一個同名的windows用戶,並設置相同的密碼,做爲發佈快照文件夾的有效訪問用戶
我的電腦
--控制面板
--管理工具
--計算機管理
--用戶和組
--右鍵用戶
--新建用戶
--建立一個隸屬於administrator組的登陸windows的用戶
2.在發佈服務器上,新建一個共享目錄,做爲發佈的快照文件的存放目錄,操作:
我的電腦--D: 新建一個目錄,名爲: PUB
--右鍵這個新建的目錄
--屬性--共享
--選擇"共享該文件夾"
--通過"權限"按紐來設置具體的用戶權限,保證第一步中創建的用戶具有對該文件夾的所有權限
--確定
3.設置SQL代理(SQLSERVERAGENT)服務的啓動用戶(發佈/訂閱服務器均做此設置)
開始--程序--管理工具--服務
--右鍵SQLSERVERAGENT
--屬性--登陸--選擇"此賬戶"
--輸入或者選擇第一步中創建的windows登錄用戶名
--"密碼"中輸入該用戶的密碼
4.設置SQL Server身份驗證模式,解決連接時的權限問題(發佈/訂閱服務器均做此設置)
企業管理器
--右鍵SQL實例--屬性
--安全性--身份驗證
--選擇"SQL Server 和 Windows"
--確定
5.在發佈服務器和訂閱服務器上互相註冊
企業管理器
--右鍵SQL Server組
--新建SQL Server註冊...
--下一步--可用的服務器中,輸入你要註冊的遠程服務器名 --添加
--下一步--連接使用,選擇第二個"SQL Server身份驗證"
--下一步--輸入用戶名和密碼(一般是sa,密碼最好設置一下非常複雜的)
--下一步--選擇SQL Server組,也可以創建一個新組
--下一步--完成
6.對於只能用IP,不能用計算機名的,爲其註冊服務器別名
(在連接端配置,比如,在訂閱服務器上配置的話,服務器名稱中輸入的是發佈服務器的IP)
開始--程序--Microsoft SQL Server--客戶端網絡實用工具
--別名--添加
--網絡庫選擇"tcp/ip"--服務器別名輸入SQL服務器名
--連接參數--服務器名稱中輸入SQL服務器ip地址
--如果你修改了SQL的端口,取消選擇"動態決定端口",並輸入對應的端口號
正式開始:
1.配置發佈服務器
a. 選中指定 [服務器] 節點
b. 從 [工具] 下拉菜單的 [複製] 子菜單中選擇 [發佈、訂閱服務器和分發] 命令
c. 系統彈出一個對話框點 [下一步] 然後看着提示操作
--直到"指定快照文件夾"
--在"快照文件夾"中輸入準備工作中創建的目錄: /<服務器名>pub
一[下一步] 直操作到完成。
d. 當完成了出版服務器的設置以後系統會爲該服務器的樹形結構中添加一個複製監視器
同時也生成一個分發數據庫(distribution)
2.創建發佈
a. 選中指定的服務器
b. 從 [工具] 菜單的 [複製] 子菜單中選擇 [創建和管理髮布] 命令。此時系統會彈出
一個對話框
c. 選擇要創建發佈的數據庫,然後單擊 [創建發佈]
d. 在 [創建發佈嚮導] 的提示對話框中單擊 [下一步] 系統就會彈出一個對話框。對話
框上的內容是複製的三個類型。我們現在選第一個也就是默認的快照發布(其他兩個
大家可以去看看幫助)
e. 單擊 [下一步] 系統要求指定可以訂閱該發佈的數據庫服務器類型,SQLSERVER允許在
不同的數據庫如 ORACLE或ACCESS之間進行數據複製。但是在這裏我們選擇運行
"SQL SERVER 2000"的數據庫服務器
f. 單擊 [下一步] ,選擇要發佈的對象(如表,視圖,存儲過程,一般是表)
g. 然後 [下一步] 直到操作完成。當完成出版物的創建後創建出版物的數據庫也就變成了
一個共享數據庫。
3.設計訂閱
a. 選中指定的訂閱服務器
b. 從 [工具] 下拉菜單中選擇 [複製] 子菜單的 [請求訂閱]
c. 按照提示單擊 [下一步] 操作直到系統會提示檢查SQL SERVER代理服務的運行狀態,執行
複製操作的前提條件是SQL SERVER代理服務必須已經啓動。(選擇一發布服務器,然後選擇你要的一個發佈,一次只能添加一下,然後新建一個同名的數據庫,一路下一步就可以了,其它數據庫也這樣來。操作過程中可能會出現說服務器不支持匿名什麼來着,需要在發佈服務器上右擊一個發佈,訂閱選項,允許匿名請求訂閱選中就可以了。)
d. 單擊 [完成] 完成訂閱操作。
完成上面的步驟其實複製也就是成功了。但是如何來知道複製是否成功了呢?
這裏可以通過這種方法來快速看是否成功。
展開出版服務器下面的複製——發佈內容——右鍵發佈內容——屬性——擊活——狀態然後點立即運行代理程序接着點代理程序屬性擊活調度
把調度設置爲每一天發生,每一分鐘,在0:00:00和23:59:59之間。
接下來就是判斷複製是否成功了打
開C:Program FilesMicrosoft SQL ServerMSSQLREPLDATAuncXIAOWANGZI_database_database下面
看是不是有一些以時間做爲文件名的文件夾差不多一分中就產生一個。
要是你還不信的話就打開你的數據庫看在訂閱的服務器的指定訂閱數據庫下看是不是看到了你剛纔所發佈的表
從0開始一步一步配置SQL Server 2000 數據庫同步
首先,一般情況下數據庫安裝好後,在企業管理器裏看到的sql註冊是(local)(Windows NT),
SQL Server 複製不支持暱稱,例如使用“.”或“(local)”作爲服務器名。
刪除該服務器的 SQL Server 註冊並使用實際的服務器名對它進行註冊。
我把先把這個刪除,右擊他,選擇刪除sql server 註冊 。。然後新建註冊,右擊Sql server組,新建Sql server 註冊下一步--》可用的服務器裏有你的計算機名,點中間的添加,添加到“添加的服務器裏”--下一步--》下一步--》下一步--》完成
單擊剛剛以計算機名建好的sql server 註冊,以選中它--》工具--》複製--》配置發佈、訂閱服務器和分發。。。--》下一步--》下一步--》出現“SEOGIRL”上的 SQL Server 代理當前在使用系統帳戶,它會導致服務器之間的複製失敗。在下列對話框中,爲服務啓動帳戶另外指定一個帳戶。--》確定,選擇“本帳戶”(這時進入系統新建一個帳戶比如SQL120),用戶名輸入"SEOGIRLSQL120",輸入密碼,確定,出現:所做的一個或多個更改只有在 SQL Server 代理重新啓動後纔會生效。現在要停止並重新啓動 SQL Server 代理嗎?,確定,確定,--》下一步--》下一步--》快照文件夾路徑“/SEOGIRLD$Program FilesMicrosoft SQL ServerMSSQLReplData”使用特殊的共享名稱,該名稱通常只能由在計算機“SEOGIRL”上有管理權限的登錄訪問。此共享可能不能由在其它計算機上運行的代理程序訪問,例如請求訂閱的代理程序。
確實要使用此快照文件夾路徑嗎?
--》否,因爲這個路徑是沒辦法請求訂閱的代理程序,咱們建一個文件夾D:ReplData,在這個文件夾的屬性裏設置“共享此文件夾”,點擊“權限”設置everyone爲完全。--》確定後退出--》返回咱們剛纔的“快照文件夾”,在裏邊輸入“/SEOGIRLReplData”--》下一步--》下一步--》完成--》關閉
打開企業管理器--》選中發佈服務器--》工具--》複製--》配置發佈、訂閱服務器和分發。。。--》下一步--》下一步--》下一步--》否,選擇一個快照文件夾位置,/seogirlReplData--》下一步--》--》--》--》--》--》--》--》
“SEOGIRL”上的 SQL Server 代理當前在使用系統帳戶,它會導致服務器之間的複製失敗。在下列對話框中,爲服務啓動帳戶另外指定一個帳戶。
“SEOGIRL”上的 SQL Server 代理使用系統帳戶,所以服務器之間的 SQL Server 複製將會失敗。若要在服務器之間使用複製,請選擇另一個服務器器作爲“SEOGIRL”的分發服務器。
“SQL120”不是有效的 Windows NT 名稱。請給出完整名稱: <域用戶名>。
輸入"administrator"時提示以下錯誤:
錯誤 15407: 'administrator' 不是有效的 Windows NT 名稱。請給出完整名稱: <域用戶名>。
系統出現兩個選擇 一個是 是,將SQL server代理服務配置爲自動啓動
另一個是 否,我將手工啓動 SQL server 代理服務器
然後選那個呢?
我兩個都試過了 然後出現快照文件夾
/XXLJDF$Program FilesMicrosoft SQL ServerMSSQLReplData
系統提示 不是有效的文件名或路徑
接下去就弄不了 哪位大哥幫幫忙啊
1。 一個是 是,將SQL server代理服務配置爲自動啓動
另一個是 否,我將手工啓動 SQL server 代理服務器
說明:這個選擇是或者否都可以。是:則系統自己啓動代理服務器
否:你自己手工的啓動代理服務器
這就是區別。
2。
/XXLJDF$Program FilesMicrosoft SQL ServerMSSQLReplData
系統提示 不是有效的文件名或路徑
這樣修改:1。創建一個文件夾在ntfs分區上,如:D:ReplData
2.共享這個文件夾 --右擊文件夾-屬性-共享
3。同時在相同的界面-有權限-設置爲everyone-完全控制的權限
這樣就可以了。
4.路徑裏輸入/計算機名ReplData
配置SQL Server 2000 數據庫同步時的 常見問題
問題:SQL Server 複製不支持暱稱,例如使用“.”或“(local)”作爲服務器名。
回答:刪除該服務器的 SQL Server 註冊並使用計算機名進行註冊。
問題:“SEOGIRL”上的 SQL Server 代理當前在使用系統帳戶,它會導致服務器之間的複製失敗。在下列對話框中,爲服務啓動帳戶另外指定一個帳戶。
回答:應該先建一個有管理員組權限的帳戶,然後用在這。
問題:快照文件夾路徑“/SEOGIRLD$Program FilesMicrosoft SQL ServerMSSQLReplData”使用特殊的共享名稱,該名稱通常只能由在計算機“SEOGIRL”上有管理權限的登錄訪問。此共享可能不能由在其它計算機上運行的代理程序訪問,例如請求訂閱的代理程序。確實要使用此快照文件夾路徑嗎?
回答:在D盤或你別的盤建一個文件夾如:D:pub,設爲共享,並把上面那個新建的用戶加到這裏面設爲完全控制,快照路徑裏寫/計算機名pub
問題:“SQL120”不是有效的 Windows NT 名稱。請給出完整名稱: <域用戶名>。
解決:使用:計算機名用戶名。
另一種配置方法
我是如何設置的:
1。準備工作
設置一個公用目錄並保證2臺服務器有權限。
2。右鍵發佈服務器——屬性——複製——配置——創建分發服務器,並設定發佈服務器和發佈數據庫,
然後給予訂閱服務器權限。
3。依次展開:發佈服務器——將要發佈的數據庫——右鍵發佈內容——新建發佈。
4。右鍵剛剛建立的發佈——屬性——狀態——立即運行代理程序——代理程序屬性中設置調度並啓動。
4。右鍵剛剛建立的發佈——屬性——訂閱——強制新建。
有時候會看不到新建立的項目,重新進就可以了。
--------------------------------------------------------------------------------
經過測試,可以順利實現數據庫結構的初始化和數據的單向同步(也就是訂閱服務器的數據可以及時更新爲發佈服務器的數據)。
準備工作:
>>數據的同步中主要考慮的三部分,可以理解成三臺主機。發佈服務器,分發服務器和訂閱服務器;可以從字面的意思理解,要實現的功能實際就是讓訂閱服務器通過分發服務器保持數據及時地和發佈服務器上的數據一致。整個執行過程是這樣一來的:
a.訂閱服務器應該有個初始化,一般來說我們開始做這個同步任務的時候,發佈服務器已經有了相當的數據量了,而我們的訂閱服務器應該是新建的服務。即使發佈中沒有數據,也需要把他的數據庫結構初始化到訂閱服務器上。
b. 我採用的是事物複製,發佈服務器的數據發生變化後,相當於觸發了一個更新操作,而事物複製可以在設定的時間把數據更新的操作更新到訂閱服務器中去。當然,這個操作需要經過分發服務器。在我的測試中,我是把發佈服務器和分發服務器設置爲同一臺主機,可以順利實現數據在數分鐘內同步。
> >在操作的起始,需要考慮訂閱服務器是否有和發佈服務器相同結構的數據庫,如果有,需要做的就是使用代理把發佈服務器現有的數據初始化過去;如果沒有對應的相同結構的數據庫,就需要要把發佈服務器當前的數據庫結構和當前的數據都初始化到訂閱服務器中。當然這裏所說的操作都是在下面的實施步驟中實現,不需要單獨處理。
>>如果說對Windows系統有所要求的話,就應該保證這三個服務器(發佈,分發,訂閱)在同個域中,以同一個域管理員帳號身份運行,操作如下:
a.進入相應的服務器,控制面板->服務->SQLSERVERAGENT,設置登錄,三臺服務器同樣設置。
b.操作前,也不允許這三臺服務器對應的別名使用呢稱,比如"LOCAL",這樣的別名要刪除重建,可以採用主機名,比如:server02.
下面開始執行數據庫同步的操作:
>>配置發佈服務器和分發服務器:
a.選中對應服務器的註冊名->工具->複製->配置發佈、訂閱和分發,直接按照默認設置向下執行,直到完成。關閉。
b. 再一次選中這個服務器服務器的註冊名->工具->複製->配置發佈、訂閱和分發,可以看到這次界面和步驟a中的界面有所不同,我們只需要配置一下發布服務器,發佈數據庫,訂閱服務器。(我的發佈數據庫採用的是事物性的)。點“確定”完成操作。<標記P>
> >創建發佈,可以選中相應的註冊,用工具->複製->創建和管理髮布或者在該註冊下面的複製->發佈內容選中後,在右邊空白處,右鍵,新建發佈,來創建你的發佈。我選擇的是事物發佈,按照默認設置,選擇你要發佈的表或其他對象,其他地方不需要修改,直到完成操作。
>>修改發佈屬性:選擇“狀態”->立即運行代理程序;代理程序屬性->設置你的調度,比如一分鐘一次。(調度->編輯->更改;通知->寫入windows應用程序事件日誌),"確定"完成操作。
>>創建訂閱:選擇發佈服務器對應的註冊,複製->發佈內容->在這個內容上右鍵,強制新訂閱,->"下一步",選擇訂閱服務器(在標記P那一步選擇的訂閱服務器)->“下一步”->選擇你有的數據庫,或者新建一個數據庫
->"下一步"-> 修改你需要的調度->按照默認設置,直到完成。
到這裏就可以完成了,修改發佈服務器數據庫中的內容,等一兩分鐘,數據就同步到訂閱服務器中了。不過由於第一次執行需要快照,如果發佈庫中有一定的內容,第一次執行可能需要幾分鐘時間。如果數據不能同步過去,大家是調度設置時間太短(比如1分鐘)使快照不能完成,所以後面的步驟無法執行,遇到這樣的情況的話,
選中你發佈的內容,設置屬性,在“狀態”中“立即運行代理程序”,這樣的話,數據會馬上同步過去的。