Postgresql
Slony - 等待事件
鎖定設置命令後 Slony 等待事件的行為是什麼?
基本上我正在嘗試進行切換,這需要很多時間。我們正在執行以下步驟:
- 鎖具
- 等待事件(超時 = 300)
- 移動集(超時 = 300)
- 等待事件(超時 = 300)
我們使用 Slony 源的 alt perl 腳本具有以下序列:
- 鎖具
- 同步
- 等待事件
- 移動集
正確的事件順序應該是什麼?如何使切換更快?
在 slony 文件中,他們將第三個序列作為結構化切換的範例
$$ http://slony.info/documentation/failover.html#AEN839 $$:
lock set (id = 1, origin = 1); move set (id = 1, old origin = 1, new origin = 2); wait for event (origin = 1, confirmed = 2, wait on=1);
無論如何,我一直使用具有以下可能眾所周知的語法的 alt-perl 工具。這將 set2 origin 從節點 1 移動到節點 2,即節點 2 將成為提供者。
/usr/local/slony/bin/slonik_move_set set2 1 2 | /usr/local/pgsql/bin/slonik
正如您所說的腳本使用以下命令序列:鎖定集、同步、等待事件、移動集。這完美無缺。
鎖定和同步可能需要一些時間。鎖定可能必須等待任何長時間執行的事務完成。如果同步滯後,則在執行 slonik_movet_set 時必須同步所有節點。
在鎖定之後進行同步以確認節點之間的同步似乎是合理的。您可以將同步添加到您的 slonik 腳本中,即:
lock set (id = 1, origin = 1); sync (id = 1); wait for event (origin = 1, confirmed = 2, wait on=1); move set (id = 1, old origin = 1, new origin = 2); wait for event (origin = 1, confirmed = 2, wait on=1);
還要注意確認節點的 id,您可以為等待事件命令指定超時,預設為 600 秒
從這個 http://slony.info/documentation/2.0/administration.html
這有點不同..關於順序以及發出同步的位置/位置。不確定哪個是首選或最好的。我一直在做沒有同步事件而不是 100% 。
LOCK SET(id=1,ORIGIN=1); MOVE SET(ID=1,OLD ORIGIN=1, NEW ORIGIN=3); SYNC(ID=3); WAIT FOR(ORIGIN=1, CONFIRMED=ALL,WAIT ON=1);