Postgresql

Slony - 等待事件

  • February 12, 2015

鎖定設置命令後 Slony 等待事件的行為是什麼?

基本上我正在嘗試進行切換,這需要很多時間。我們正在執行以下步驟:

  1. 鎖具
  2. 等待事件(超時 = 300)
  3. 移動集(超時 = 300)
  4. 等待事件(超時 = 300)

我們使用 Slony 源的 alt perl 腳本具有以下序列:

  1. 鎖具
  2. 同步
  3. 等待事件
  4. 移動集

正確的事件順序應該是什麼?如何使切換更快?

在 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/stmtwaitevent.html $$

從這個 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);

引用自:https://dba.stackexchange.com/questions/12232