sybase復制系統里,想把主點一張表里的大量資料快速刪掉,所以想truncate該表,不知這樣做對復制系統有何影響,對復制點又有何影響?復制點不需要同步這些待洗掉的資料,應該怎樣操作才能簡單、安全完成這項作業?請大咖給予幫助,謝謝!
uj5u.com熱心網友回復:
看你的復制定義怎么寫了-- 如果是單表復制的話,那么trunacate table這命令是不記日志,無法被復制到復制點上去的,復制點上的表如需同步,那么得手工執行truncate如果你的復制定義是db replication definition的話,而且還subscribe了truncate table的話,那么這個truncate table就會被傳到復制點上執行,你就啥也不用管了。
uj5u.com熱心網友回復:
你好!謝謝指點!
我是單表復制。
因主點那張表里的資料量大,我不確定trunacate table是否仍會增加大量復制佇列。
另外,在主點trunacate table時是否需要suspend connection或者sp_stop_rep_agent?
還有是否需要drop subscription和drop replication definition然后再重建?
謝謝!
uj5u.com熱心網友回復:
作table rep def/sub的話,對主點表執行truncate table不需要suspend connection或sp_stop_rep_agent,因為這個無法被傳至replicate site。只是這樣會有隱患,將來對這個主點表執行insert可能會在復制點上引發duplicate key錯誤。
uj5u.com熱心網友回復:
你好!
uj5u.com熱心網友回復:
這個隱患我事先沒有考慮到,它確實可能導致重復。非常感謝!那有沒有辦法避免這個隱患發生?
或者我在主點suspend connection,然后有條件delete一部分資料,完成后再resume connection skip transaction,不知這樣是否可以避免duplicate key隱患發生?也不知是否能避免大量復制佇列?當然主點該表120G的資料不知得多久才能瘦身。謝謝!
uj5u.com熱心網友回復:
你去復制點上也手工跑一個truncate table不就得了uj5u.com熱心網友回復:
EisenWang,你好!這張表有2個復制點A和B,一個A是打算truncate table;另一個B是保留歷史資料供查詢用的,B上面的資料不能刪。所以我想要的結果是已復制過的資料在主點清掉(A上的資料也可以清掉),尚未復制的資料需要繼續復制到A和B。當然A即使出了問題,問題也不大,但B最好不要出問題。請幫忙想想能否進一步完善清理該表的操作,麻煩了,謝謝!
uj5u.com熱心網友回復:
將復制到A的表訂閱subscribe to truncate table,復制到B的表訂閱不用subscribe to truncate table。這樣你在主表上truncate table就不會在A上截斷資料了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/41978.html
標籤:Sybase
下一篇:mysql8.0原始碼安裝
