2013年6月7日 星期五

Apply snapshot from Alternate folder to improve performance when initialize a Subscription in Transactional Replication 指定本地快照目錄來改善初始化時間

Apply snapshot from Alternate folder to improve performance when initialize a Subscription in Transactional Replication

指定本地快照目錄來改善初始化時間

from my MSDN blog - June 9, 2013


複寫的訂閱初始化有兩個過程:

1.產生snapshot file,這個是snapshot agent所負責的工作。

Type of Replication

Common Snapshot Files

SnapshotReplication or Transactional Replicationschema (.sch);data (.bcp); constraints and indexes (.dri); constraints (.idx); triggers(.trg):for updating Subscribers only; compressed snapshot files (.cab).
MergeReplicationschema (.sch);data (.bcp); constraints and indexes (.dri); triggers (.trg); system tabledata (.sys); conflict tables (.cft); compressed snapshot files (.cab).

2.套用snapshot到訂閱,這個是distribution agent所負責的工作。


越大型的發行集初始化需要更多時間,而在第2個流程[套用snapshot到訂閱],可以使用替代路徑(也就是改用訂閱者的本機路徑)來加速套用時的速度,我們可以手動將快照目錄複製到訂閱者端的本機路徑,然後在訂閱者啟動散發代理程式(Distribution Agent)指定本機路徑來套用snapshot到訂閱,步驟如下:

1.如果已經建立好發行集與訂閱,則先將散發代理程式(Distribution Agent) Job 停止(Stop)並停用(Disable)。

(1)PUSH (distribution agent running on the distributor)

如果您是預設的PUSH訂閱,就在散發者將散發代理程式(Distribution Agent) Job 停止(Stop)並停用(Disable)。

(2)PULL (distribution agent running on the subscriber)

如果您是PULL訂閱,就在訂閱者將散發代理程式(Distribution Agent) Job 停止(Stop)並停用(Disable)。

2.在散發者啟動快照代理程式(Snapshot Agent),產生快照檔。

快照檔會產生在散發者預設的路徑下:

C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\repldata\unc\發行者_發行資料庫_發行集名稱\快照的日期目錄

3.手動複製快照目錄到訂閱者。(PS.訂閱者替代路徑必要有unc目錄存在,而下一個步驟所指定的替代路徑需指定在unc目錄的上一層)

例如:我們在訂閱者建立此目錄C:\Temp\Snapshot\unc,然後再把散發者的[發行者_發行資料庫_發行集名稱]目錄複製過來(基本上我們只要裡面最新的日期目錄)。

4.指定替代路徑來套用snapshot。

(1)PUSH (distribution agent running on the distributor)如果您是預設的PUSH訂閱,就在訂閱者手動執行以下命令。

C:\Program Files\Microsoft SQL Server\90\COM>DISTRIB.exe -Subscriber [SQL2K5REPL3] -SubscriberDB [MyDB2] -Publisher [SQL2K5REPL2] -Distributor [SQL2K5REPL2] -Di
stributorSecurityMode 1 -Publication [TPub1] -PublisherDB [MyDB2] -AltSnapshotFolder C:\Temp\Snapshot 

此時散發代理程式(Distribution Agent)只會執行一次就會自動停止。

(2)PULL (distribution agent running on the subscriber)如果您是預設的PULL訂閱,就在訂閱者修改Distribution Agent Job的命令 將-Continuous暫時去除,在加入-AltSnapshotFolder C:\Temp\Snapshot參數,並啟動Dribtution Agent。



此時散發代理程式(Distribution Agent) Job只會執行一次就會自動停止。


5.使用複寫監視器確認散發代理程式(Distribution Agent)套用snapshot成功。

6.正常啟動散發代理程式(Distribution Agent),來繼續同步後續的交易。

(1)如果是PUSH,請將散發者上的散發代理程式(Distribution Agent) Job啟用(Enable)並啟動(Start)即可。

(2)如果是PULL,請將訂閱者上的散發代理程式(Distribution Agent) Job修改命令 將-AltSnapshotFolder C:\Temp\Snapshot 去除,再將-Continuous加回來,然後再啟動散發代理程式(Distribution Agent) Job。


 

[reference]

Initialize a Subscription with a Snapshot

https://msdn.microsoft.com/en-us/library/ms151795.aspx

Tips to improve performance when applying Snapshot in Transactional Replication
https://blogs.msdn.com/b/repltalk/archive/2010/03/07/tips-to-improve-performance-when-applying-snapshot-in-transactional-replication.aspx

沒有留言:

SQL Server Planning, Pricing and License

  Server-CALs授權模式 1.需購買的量應該是所有終端用戶的電腦 例如:一台Data warehouse主機 與 一台Web報表主機,但公司有50人或電腦會連進Web報表主機開啟報表,則應該每一台用戶端電腦都需要有CALs授權,Data warehouse主機購買Ser...