2016-10-12 1 views
0

Ich benutze postgres 9.4.9, pgpool 3.5.4 auf Centos 6.8.Wie bekomme ich pcp automatisch Knoten an postgres pgpool anhängen?

Ich habe eine große schwere Zeit pgpool automatisch zu erkennen, wenn Knoten hoch sind (es erkennt oft den ersten Knoten aber selten erkennt die sekundäre), aber wenn ich pcp_attach_node verwenden, um es zu sagen, was Knoten sind, dann ist alles bester Ordnung.

Also dachte ich, bis ich das Problem richtig sortieren könnte, würde ich ein kleines Skript schreiben, um den Status der Knoten zu überprüfen und sie wie geeignet anzufügen, aber ich habe Probleme mit der Passwortabfrage. Gemäß der Dokumentation, soll ich in der Lage sein, Befehle zu erteilen, wie

pcp_attach_node 10 localhost 9898 pgpool mypass 1 

aber klagt nur

pcp_attach_node: Achtung: zusätzliches Befehlszeilenargument „localhost“ ignoriert pcp_attach_node: Achtung: zusätzliche Befehlszeilen Argument "9898" ignoriert pcp_attach_node: Achtung: zusätzliches Befehlszeilenargument "pgpool" ignoriert pcp_attach_node: Achtung: zusätzliches Befehlszeilenargument "mypass" ignoriert pcp_attach_node: Achtung: zusätzliches Befehlszeilenargument "1" ignoriert

nur

es wird funktionieren, wenn ich Parameter verwenden, wie

pcp_attach_node -U pgpool -h localhost -p 9898 -n 1 

und es gibt keine Parameter für das Passwort, ich muss es manuell an der Eingabeaufforderung eingeben.

Irgendwelche Vorschläge zum Sortieren dieser anderen als mit Expect?

Antwort

0

Sie müssen PCPPASSFILE erstellen. Suchen Sie pgpool documentation für weitere Informationen.

Beispiel 1:

erstellen PCPPASSFILE für angemeldete Benutzer (vi ~/.pcppass), Dateiinhalt ist 127.0.0.1:9897:user:pass (hostname: port: username: password), setzen Sie die Dateiberechtigungen 0600 (chmod 0600 ~/.pcppass)

Befehl sollte für Passwort

pcp_attach_node -h 127.0.0.1 -U user -p 9897 -w -n 1

Beispiel 2 ohne zu fragen, auszuführen:

PCPPASSFILE erstellen (vi /usr/local/etc/.pcppass), Dateiinhalt ist 127.0.0.1:9897:user:pass (hostname: port: username: password), setzen Sie die Dateiberechtigungen 0600 (chmod 0600 /usr/local/etc/.pcppass), Setvariable PCPPASSFILE (export PCPPASSFILE=/usr/local/etc/.pcppass)

Befehl sollte

pcp_attach_node -h 127.0.0.1 -U user -p 9897 -w -n 1

Script für auto befestigen Sie den Knoten

ohne zu fragen, für Passwort laufen

Sie können dieses Skript zum Beispiel mit crontab einplanen.

#!/bin/bash 
#pgpool status 
#0 - This state is only used during the initialization. PCP will never display it. 
#1 - Node is up. No connections yet. 
#2 - Node is up. Connections are pooled. 
#3 - Node is down. 

source $HOME/.bash_profile 
export PCPPASSFILE=/appl/scripts/.pcppass 
STATUS_0=$(/usr/local/bin/pcp_node_info -h 127.0.0.1 -U postgres -p 9897 -n 0 -w | cut -d " " -f 3) 
echo $(date +%Y.%m.%d-%H:%M:%S.%3N)" [INFO] NODE 0 status "$STATUS_0; 

if (($STATUS_0 == 3)) 
then 
    echo $(date +%Y.%m.%d-%H:%M:%S.%3N)" [WARN] NODE 0 is down - attaching node" 
    TMP=$(/usr/local/bin/pcp_attach_node -h 127.0.0.1 -U postgres -p 9897 -n 0 -w -v) 
    echo $(date +%Y.%m.%d-%H:%M:%S.%3N)" [INFO] "$TMP 
fi 


STATUS_1=$(/usr/local/bin/pcp_node_info -h 127.0.0.1 -U postgres -p 9897 -n 1 -w | cut -d " " -f 3) 
echo $(date +%Y.%m.%d-%H:%M:%S.%3N)" [INFO] NODE 1 status "$STATUS_1; 

if (($STATUS_1 == 3)) 
then 
    echo $(date +%Y.%m.%d-%H:%M:%S.%3N)" [WARN] NODE 1 is down - attaching node" 
    TMP=$(/usr/local/bin/pcp_attach_node -h 127.0.0.1 -U postgres -p 9897 -n 1 -w -v) 
    echo $(date +%Y.%m.%d-%H:%M:%S.%3N)" [INFO] "$TMP 
fi 

exit 0 
+1

Gibt es eine Möglichkeit, die Befehlsausführung automatisiert zu machen oder pg pool zu informieren, diesen Befehl auszuführen, sobald der Abwärtsknoten aktiv ist? –

Verwandte Themen