Dieses Blog durchsuchen

Freitag, 21. Januar 2011

PostgreSQL Streaming Replication HotStandby in 10 Minuten unter CentOS 5.5

 Hallo allerseites,

heute ein einfache Anleitung zum Thema PostgreSQL und der mitgelieferten Streaming Replication.
Es gibt mehr als nur eine Anleitung zu diesem Thema, es ist sogar eine recht gute auf der PostgreSQL Wikiseite zufinden. Allerdings fehlen in jedem Guide immer ganz entscheidende Punkte, die dafür sorgen das es nicht funktioniert.
Also dann viel Spaß beim selber nachbasteln.


Folgendes Setup liegt vor:

- Master 192.168.1.221
- Slave 192.168.1.228
- Auf beiden PostgreSQL 9.0.2 mit initialisierter Masterdatenbank auf beiden Servern und        einer eigenen Datenbank für Testzwecke, auf dem Master.
-Dem von PostgreSQL angelegte Benutzer „postgres“ wurde ein Passwort zugewiesen. Es kann aber auch ein anderer Benutzer mit Superuserrechten angelegt werden.

Konfigurationsdateien unter /var/lib/pgsql/9.0/data

Schritt 1 Master konfigurieren

vi /var/lib/pgsql/9.0/data/postgresql.conf

Folgende Einträge ändern:

listen_addresses = ‘*‘
max_connections = 500
shared_buffers = 32MB
wal_level = hot_standby
archive_mode = on
archive_command = ‘rsync -a %p /var/lib/pgsql/9.0/data/pg_xlog_archive/%/f‘
max_wal_senderd = 1    #Anzal der Slaves
wal_keep_segments = 32

pg_hba.conf öffnen:

vi /var/lib/pgsql/9.0/data/pg_hba.conf

Folgende Einträge hinzufügen:

TYP     DATENBANK      USER        ADRESSE             ACL
host    replication    postgres    192.168.1.228/32    trust
host    replication    all         0.0.0.0/0           reject


Schritt 2

Auf dem Master:

sudo -u postgres mkdir /var/lib/pgsql/9.0/data/pg_xlog_archive

chmod 700 /var/lib/pgsql/9.0/data/pg_xlog_archive


Schritt 3 Den Slave initialisieren

psql -c “SELECT pg_start_backup(‘master-backup‘)“

rsync -HPSav --exclude postmaster.pid --exclude postmaster.log data/*

root@192.168.1.228:‘pwd‘/var/lib/pgsql/9.0/data/

psql -c “SELECT pg_stop_backup()“




Schritt 4 Slave konfigurieren

vi /var/lib/pgsql/9.0/data/postgresql.conf

Folgende Einträge ändern:

hot_standby = on
archive_mode= off
archive_command = ‘‘

Die Datei /var/lib/pgsql/9.0/data/recovery.conf erstellen und folgendes eintragen:

standby_mode = ‘on‘
restore_command = ‘rsync -a /var/lib/pgsql/9.0/data/pg_xlog_archive/%/f %p‘
promary_conninfo = ‘host=192.168.1.221 port=5432 user=postgres‘
trigger_file = ‘/tmp/pgsql-replication.trigger‘


Nun ist alles eingerichtet und sollte funktionieren.

Donnerstag, 20. Januar 2011

CentOS Network Installation

CentOS 5.5 Netzwerk Installation

Bevor es losgeht schaut nach ob ihr eine 64- oder 32bit Version von CentOs installieren wollt.

Ihr könnt CentOS hier herunterladen: klick

Das ISO dann z.B. auf CD brennen. CD ins Laufwerk und dann den Autoboot des Live Systems unterbrechen.
Beim ersten Menü das euch angezeigt wird "Network Installation" auswählen.  Dann wählt ihr einfach eine Sprache aus in der die Installation statfinden soll. Achtet darauf das die ausgewählte Sprache später auch vom installierten System verwendet wird. Dann noch das Tastertur Interface auswählen.





Nun wählen wir als Installation Methode "HTTP" aus.

Jetzt müsst ihr eure Netzwerkkarte für die Installation konfigurieren. Ihr könnt entweder eine Dynamische Konfiguration (DHCP) nutzen oder ihr gebt eurer Schnitstellt eine statische IP


Dynamisch


Statisch IP

Nun gebt jetzt noch die Serverinformationen für das Installations Image aus. Je nach dem ob ihr 64- oder 32bit  Version installieren wollt gebt ihr folgendes ein:

64bit: 
Name der Webseite : mirrors.kernel.org
CentOS Verzeichnis: centos/5.5/os/x86_64

 32bit
 Name der Webseite
Name der Webseite : mirrors.kernel.org
CentOS Verzeichnis: centos/5.5/os/i386







 Das wars auch schon. Ein Guide für die weiteren Schritte folgt demnächst.













Netzwerkadapter Steuerung mit der Windows Powershell

Wer unter Windows mit 2 Netzwerken zwischen 2 Netzwerken will, kann z.B. mit einem einfachen Script die Powershell nutzen.

Hier eine einfache Anleitung:

Um die Windows Power Shell vollständig nutzen zu können und Systemeinstellungen zu ändern,benötigen wir Adminrechte. Einstellungen zu Benutzerkonten und Berechtigungen können unter,Systemsteuerung → Benutzerkonten → Eigenen Kontotyp ändern, geändert werden.
Nun öffnen wir die Windows Power Shell (Programme → Zubehör → Windows Power Shell)

Als erstes müssen wir heraus finden welche „DeviceID“ unsere Netzwerkschnittstellen haben.
Dazu geben wir in die Power Shell folgendes ein:

get-wmiobject win32_networkadapter | formattable ServiceName, AdapterType, Name, NetworkAdd, DeviceID

Eine Liste mit allen Netzwerkadaptern erscheint. Wir suchen uns die Raus die wir benötigen, in
meinem Fall die Schnittstellen mit der DeviceID 7 und 11.
Um später leichter mit diesen Schnittstellen arbeiten zu können, speichern wir diese mit folgenden
Befehl in eine Variable. Ich habe sie „$intern“ und „$extern“ benannt.

$intern = Get-WmiObject win32_networkadapter | where {$_.DeviceId -eq 7}

$extern = Get-WmiObject win32_networkadapter | where {$_.DeviceId -eq 11}


Mit den Variablen können wir die Netzwerkkarten direkt ein- und ausschalten.

$extern.disable()
$intern.enable().










Leider werden die Variablen nicht gespeichert und wären nach einem Neustart des Systems nicht
mehr verfügbar. Glücklicherweise besteht die Möglichkeit sich Profile in der Power Shell anzulegen
um z.B. solche Variablen zu speichern.

Mit folgenden Befehl legt man ein Profil an:

new-item -path $profile -itemtype file -force









Hinweis: dieses Profil ist nur auf dem Benutzerkonto verfügbar auf dem es erstellt wurde!
Im nächsten Schritt schreiben wir unsere Variablen in das eben erstellte Profil. Dazu öffnen wir das
Profil mit dem Befehl:


notepad $Profile

Nun können wir bequem die beiden Variablen in die Notepad datei eintragen und im Anschluss
speichern. Dazu einfach folgendes in die Datei schreiben:

$intern = Get-WmiObject win32_networkadapter | where {$_.DeviceId -eq 7}
$extern = Get-WmiObject win32_networkadapter | where {$_.DeviceId -eq 11}






Hinweis: Windows befüllt nun bei jeden Power Shell Aufruf die Variablen mit den Daten unserer
Schnittstellen. Die DeviceID bleibt immer gleich!
Um später alles bequem zusteuern schreiben wir noch schnell 2 kleine Scripte in denen folgendes
steht:

Um extern ein- und intern auszuschalten:

$intern.disable()
$extern.enable()

Um intern ein- und extern auszuschalten:

$extern.disable()
$intern.enable()

Diese kleinen Scripte speichern wir nun als name.ps1. Um diese Scripte ausführen zu können
müssen wir der Power Shell noch die Erlaubnis dazu geben:

Set-ExecutionPolicy RemoteSigned

Nun können die beiden Scripte jederzeit ausgeführt werden.