2012-02-20 4 views
2

Я пытаюсь использовать пример, который приходит в учебном пособии, но похоже, что в их примере есть синтаксическая ошибка. Я пробовал найти дополнительную документацию в Интернете, но я еще не нашел хорошую документацию, показывающую, как использовать команду slonik. Сценарий я пытаюсь запустить это:Проблема синтаксиса Slony - slonik

#!/bin/sh 

/opt/local/lib/postgresql90/bin/slonik << _EOL_ 

define CLUSTERNAME slony_example; 
cluster name = @CLUSTERNAME; 

node 1 admin conninfo = 'dbname=my_primary host=$MASTERHOST user=$REPLICATIONUSER'; 
node 2 admin conninfo = 'dbname=my_rep host=$SLAVEHOST user=$REPLICATIONUSER'; 

#-- 
# init the first node. Its id MUST be 1. This creates the schema # _$CLUSTERNAME containing all replication system specific database # objects. 
#-- 
init cluster (id=1, comment = 'Master Node'); 

#-- 
# Slony-I organizes tables into sets. The smallest unit a node can # subscribe is a set. The following commands create one set containing # all 4 pgbench tables. The master or origin of the set is node 1. 
#-- 
create set (id=1, origin=1, comment='All pgbench tables'); 
set add table (set id=1, origin=1, id=1, fully qualified name ='public.pgbench_accounts', comment='accounts table'); 
set add table (set id=1, origin=1, id=2, fully qualified name ='public.pgbench_branches', comment='branches table'); 
set add table (set id=1, origin=1, id=3, fully qualified name ='public.pgbench_tellers', comment='tellers table'); 
set add table (set id=1, origin=1, id=4, fully qualified name ='public.pgbench_history', comment='history table'); 

#-- 
# Create the second node (the slave) tell the 2 nodes how to connect to Slony-I 2.1.1 Documentation 10/163 
# each other and how they should listen for events. 
#-- 

store node (id=2, comment = 'Slave node', event node=1); 
store path (server = 1, client = 2, conninfo='dbname=my_primary host=$MASTERHOST user=$REPLICATIONUSER'); 
store path (server = 2, client = 1, conninfo='dbname=my_rep host=$SLAVEHOST user=$REPLICATIONUSER'); 

_EOF_ 

Но я получаю следующее сообщение об ошибке:

postgres$ /tmp/slonik_example.sh 
<stdin>:29: ERROR: syntax error at or near dbname 

Обновление выше скрипт на основе первого ответа. Ошибка сейчас:

postgres$ /tmp/slonik_example.sh 
<stdin>:31: ERROR: syntax error at or near _EOF_ 
+0

Slony может быть суровым учителем во многих отношениях. Я начал так же, как и вы, записывая конфигурацию вручную, и это хороший способ понять основы. Познакомившись с Slony, я начал использовать инструменты altperl. http://slony.info/documentation/appendix.html#ALTPERL –

+0

Спасибо, я тоже посмотрю на это. Знаете ли вы о другом хорошем примере использования slonik? Кажется, это очень редко документировано. – WildBill

+0

Как я работал с Slony несколько лет назад, мне было очень сложно записать учебник, но у меня не было времени его доработать. Но здесь довольно хороший обзор. http://www.dalibo.org/_media/pgconfeu_slony.pdf –

ответ

2

У вас есть неуравновешенные цитаты:

store path (server = 1, client = 2, conninfo='dbname=my_primary host=$MASTERHOST user= '$REPLICATIONUSER'); 
store path (server = 2, client = 1, conninfo='dbname=my_rep host=$SLAVEHOST user= '$REPLICATIONUSER'); 

Вы, вероятно, хотите:

store path (server = 1, client = 2, conninfo="dbname=my_primary host=$MASTERHOST user=$REPLICATIONUSER"); 
store path (server = 2, client = 1, conninfo="dbname=my_rep host=$SLAVEHOST user=$REPLICATIONUSER"); 
+0

Ах, хотя двойные кавычки не сработали. Он по-прежнему был недоволен этим, но использование одинарных кавычек делало все лучше. Теперь он жалуется на EOF .... – WildBill

+0

Вы видите что-то не так с обновленной версией? Я полностью в тупике, почему это не работает .....:/ – WildBill

+0

У вас есть _EOL_ сверху и _EOF_ внизу ... –

Смежные вопросы