1. 程式人生 > 實用技巧 >資料庫高可用性——SQL Server 2005資料庫複製簡單圖解

資料庫高可用性——SQL Server 2005資料庫複製簡單圖解

本鳥給大家淺談一下SQL 2005資料庫的複製過程,那麼為什麼要進行復制呢?資料庫複製是指:將表格或資料庫的資料複製到另一個表格中或資料庫中,利用資料庫複製技術可以把資料庫全部內容完整的複製到公司的各個系統中去(也可以選擇部分資料),當使用SQL Server複製技術時,資料的複製時自動完成的。需要提的是,資料庫複製不是什麼新技術,早在SQL Server6.0中就有了。利用複製,即使伺服器位於不同的地理區域,也可以將資料移動到不同的伺服器上。

資料庫複製將涉及釋出伺服器,分發伺服器和訂閱伺服器,這三種伺服器可以再不同的伺服器上,也可部署在同一伺服器。SQL資料複製包括有快照複製,事務複製,合併複製。今天我給大家說說快照複製,快照複製為訂閱者提供了自主權最大,但是卻付出了資料時間延長的代價,快照複製取文章的完整副本,通過對其他SQL Server使用BCP檔案(就是我們說的儲存由大容量複製實用工具或同步建立的大容量複製資料的檔案。)具體可見:

http://baike.baidu.com/view/684693.html?tp=8_01和對類似Oracle的其他資料來源使用的txt檔案方式,將此副本複製給訂閱者。快照複製使用兩個代理實現資料的移動;快照代理(Snapshot Agent)取給定時間點的資料,為傳送做準備,分發代理(Distribution Agent)將快照和事物從釋出者移動到訂閱者(Subscriber)。理論先到這裡,簡單介紹一下環境;Server1為釋出伺服器,Server2為訂閱伺服器,它們之間要傳輸的資料是Server1的db1資料庫中的員工表(yg表)實驗拓撲如下所示:

tuopu 1

一:前期檢視

檢視兩個伺服器的計算機名和資料庫名,不一樣那就得統一計算機名,具體命令下面會有

檢視Server1的計算機名

9 1

檢視伺服器名稱

0 1

統一與計算機名稱,具體命令:

if serverproperty('servername') <> @@servername
begin
declare @server sysname
set @server = @@servername
exec sp_dropserver @server = @server
set @server = cast(serverproperty('servername') as sysname)
exec sp_addserver @server = @server , @local = 'LOCAL'

end

2 1

與Server1一樣,Server2也檢視伺服器名稱,並且統一計算機名

5 1

改完之後重啟一下資料庫服務

6 1

7 1

我們再來重新看一下計算機名和庫名統一了沒

8 1

51 1

啟動SQL代理

11 110 1

在資料庫db1中建立一個員工表(yg表)並且插入一條員工的記錄

21 1

二:建立釋出伺服器

在庫中的——複製——本地釋出(右鍵)

15 1

釋出嚮導

16 1

將Server1 dufei作為資料庫釋出伺服器,指定本機作為釋出伺服器(預設設定)

17 1

啟動計算機是啟動SQL代理(這樣是不是很方便啊)

18 1

指定存放快照的目錄

19 1

選擇要釋出的資料庫(我們指定的是db1為釋出庫)

23 1

選擇釋出的型別——快照發布

24 1

選擇想要釋出的表。我們建立的是yg表

25 1

新增篩選器,實驗環境我就省了,直接skip

26 1

出現指定何時建立快照以及何時執行快照。我更改為3分鐘一次執行(我是實驗環境下可以快點)

27 1

28 1

設定執行快照的伺服器賬戶

29

建立釋出~~

30 1

給這個釋出起個名,便於記憶

31 1

建立成功,需要檢查一下一些服務是否啟動

33 1

釋出伺服器已經搞定,下面我們要進行訂閱伺服器的設定

三:設定訂閱伺服器

同釋出伺服器一樣,到要釋出的伺服器我們這裡是Server2,複製——本地訂閱——新建訂閱

34 1

出現了嚮導,點選下一步進行

35 1

指定訂閱伺服器

36 1

選擇要訂閱的資料庫

37 1

選擇分發代理的位置

38 1

選擇訂閱庫

39 1

設定分發代理安全性。

47 1

指定代理執行計劃

43 1

44 1

馬上就要成功了,在耐心等等

45 1

完成訂閱~~~~

46 1

48 1

四:進行Server1和 Server2的測試

在Server1上插入兩條李四和王五的記錄

49 1

過上一會兒我們進行檢視Server2的db1資料庫

50 1

實驗很成功,是不是很實用?現在資料庫作為安全的第一要任還是值得我們這樣去利用的,這也是資料庫高可用性的又一表現。。。

轉載於:https://blog.51cto.com/yangjunfeng/165536