在對數據庫做遷移的時候,會有很多方法,用存儲過程,job,也可以用開源工具kettle,那么今天這些天變接觸到了一種新的方法,就是SqlServer中自帶的發布與訂閱。
首先說明一下數據復制的流程。如下圖A是(192.168.210.170)上的數據庫,B是(172.23.100.109)上的數據庫。把B當作數據源,然后A從B上獲取數據。
發布前准備:首先兩個服務器之間要能相互通訊,也就是能ping命令能通。
平時我們鏈接數據庫的時候,經常都是用的ip登陸,但是發布的時候不能這樣,必須用服務器名稱,不然會報錯,如下圖。
解決辦法有兩種:
第一種方法(遠程):①分別查詢出數據庫服務器的名稱,查詢語句“select @@SERVERNAME”。
②AB兩個服務器分別遠程桌面登陸上。
③用服務器上的Management studio去連接本機的數據庫(注意:不能用ip去鏈接,用第一步查出來的名稱連接)。
④之后按下面步驟進行發布訂閱。
第二種方法(本地):①分別查詢出數據庫服務器的名稱,查詢語句“select @@SERVERNAME”。
②用我本地的計算機C,找到C:\Windows\System32\drivers\etc這個路徑,將在hosts文件中將A的ip地址和第一步查詢 出來的服務器名稱添加進去,B也是。這也就是映射。
③打開本地的Management studio,去連接AB兩個數據庫(這里也應該用查詢服務器名稱)。
④之后按下面步驟進行發布訂閱。
這里本實驗選擇的是第二種方式,接下來就正式開始了。
1.發布
①在數據庫B服務器下找到【復制】-【本地發布】-【新建發布】。
②選擇要發布的數據庫
③選擇發布類型,這里選擇快照發布。
④選擇發布的內容,即要發布哪些數據。
⑤進行數據篩選,可以在這一步就行條件過濾,當然也可以不設置條件,選取所有數據。
⑥設置快照代理並更改同步頻率
⑦安全性設置,即配置登陸類型,登陸賬戶密碼。
⑧給發布名稱起一個名字,我起了個LS(李四)
最終,到這一步,發布算是完成了,接下來就開始看訂閱。
2.訂閱
訂閱是對剛才發布的快照進行同步,即將數據源數據同步到目標數據庫。
①在服務器A上,【復制】-【本地訂閱】-【新建訂閱】
②選擇訂閱發布
③選擇分發代理的位置,選擇一個簡單的推送訂閱。
④設置訂閱服務器的目標數據庫
⑤設置代理安全性,即訂閱服務器的賬戶密碼。
⑥設置同步計划,這里選擇連續運行。
⑦點擊完成,訂閱配置完成。
⑧查看監視。在【本地發布】-【啟動復制監視器】,點開就能查看快照的運行狀態,和其他詳細信息。
至此,發布與訂閱都已完成。在服務器A中One這個數據庫中,會發現多了一張aaa的數據表,這表示B服務器的數據傳到A上了。當在服務器B修改aaa表中的記錄(源數據)時,A里面的記錄(目標數據)也會改變。
總結:搞了幾天這個數據發布與訂閱,但是感覺這個並不是很好用,靈活性上不好,感覺都不如kettle這種開源軟件用着方便。