SQL Server事務複製搭建與同步經驗

0. 環境

  1. 無域環境
  2. 發佈服務和分發服務器同一臺主機
角色 主機名 IP 發佈名 發佈庫名/訂閱庫名
發佈服務器 Server1 192.168.1.100 test3 db1
分發服務器(與發佈服務器同一實例) Server1 192.168.1.100 - -
訂閱服務器 Client1 192.168.1.200 - db1

1. 修改host文件

在發佈服務器和訂閱服務器都修改C:\Windows\System32\drivers\etc文件,加入IP和主機名。若是是請求訂閱,則發佈服務器不用修改也要能夠;若是是推送請求,則必需設置。由於SQL Server複製不能經過IP進行相關的設置。sql

2. 建立快照文件夾及相應的用戶和權限

好比快照文件在發佈服務器的D:\ReplData下。在發佈服務器和訂閱服務器建立相同的Windows用戶( 若是不想發佈服務器建立新的Windows用戶,則須要在發佈服務器開啓Guest用戶),如repl_admin,並加入各自的administrator組中,並設置密碼不能過時,不能修改密碼。設置D:\ReplData文件對於新建的用戶repl_admin徹底讀寫權限,並設置共享此文件夾。數據庫

這裏,可能會有疑問爲何repl_admin已是administrator組的用戶,對D:\ReplData文件夾是讀取權限的,爲何還要設置repl_admin徹底讀寫權限?後來測試在生成快照文件時,沒法在文件夾\\Server1\ReplData寫入。後面第4步會提到\\Server1\ReplData這個文件夾。服務器

3. 設置SQL Server Agent的啓動用戶

在發佈服務器設置SQL Server Agent的啓動用戶爲repl_admin(最好是在SQL Server Configuration Manager進行設置),並重啓Agent。一樣,在訂閱服務器也作一樣的步驟。注意,重啓Agent可能會影響SQL Job的計劃任務,生產環境上請檢查重啓帶來的影響。網絡

4. 在發佈服務器新建發佈和分發

在SSMS上,根據嚮導一步一步建立新的發佈。若是沒有分發服務器,在嚮導中,會進行建立。(分發的屬性)設置快照文件爲\\Server1\ReplData。最後能夠生成建立發佈的SQL腳本,能夠保存起來,之後再重啓建立,或是其餘服務器須要建立發佈,只須要修改一下腳本,再執行便可。函數

爲何不直接設置D:\ReplData?實際上是能夠的,但默認使用\\Server1\ReplData這個文件的話,在訂閱端默認也是讀取這個快照文件夾\\Server1\ReplData,這樣比較方便。測試

固然,能夠手動再修改(能夠單獨修改發佈的快照文件夾路徑,也能夠修改訂閱時的快照文件夾路徑),不過仍是建議使用分發的設置的默認文件的網絡路徑格式。代理

也可使用FTP或其餘方法把快照文件複製到訂閱服務器作初始化便可。SQL Server複製也支持備份數據庫的方式進行訂閱的初始化。code

在第1步中,默認快照文件夾也是能夠放到真正的網絡盤上,而不是發佈服務器上。考慮到直接寫到網絡盤,但須要考慮這可能會形成網絡影響,若是在生成很大的快照過程當中,形成網絡阻塞,甚至中斷,對生產形成影響。server

5. 在訂閱服務器新建訂閱

在SSMS上,根據嚮導一步一步建立新的訂閱(以請求訂閱pull subcription爲例)。在Distribution Agent Security這一步,設置是這樣的:對象

  • Run under the SQL Server Agent service account
  • Connect to the Distribution: Using the following SQL Server login
    這裏使用了發佈服務器的sa用戶和密碼。固然也能夠另外建立專門的SQL Server複製帳號來鏈接。
  • Connect to the Subscriber: By impersonating the process account

若是是推送push subcription的話,第2,3個選項是相反的。即Using the following SQL Server login填寫的是訂閱服務器的SQL Server帳號,讓分發服務器有權限推送數據到訂閱服務器。

6. 設置添加新項目不初始化整個快照

在發佈服務器常常會新建立表或其餘數據庫對象,如存儲過程或函數等,若是要把這些新的項目加入到已經存在的訂閱中時,須要初始化這些項目。但默認的設置是初始化整個快照全部項目的。這對於大的快照來講,成本很高。

下面設置只初始化新添的項目。

use db1;
GO

EXEC sys.sp_changepublication 
    @publication = 'test3', 
    @property = N'immediate_sync', 
    @value = N'false'
GO

EXEC sys.sp_changepublication 
    @publication = 'test3', 
    @property = N'allow_anonymous',
    @value = N'false'
GO

而後再啓動快照代理便可對新添加的項目生成快照。
(右鍵選擇發佈,選擇「查看快照代理狀態」——「啓動」)

至關於運行如下腳本:

EXEC sys.sp_startpublication_snapshot
@publication = 'test3'
go
相關文章
相關標籤/搜索