Replikation mit PostgreSQL 9.2



Ähnliche Dokumente
Replikation mit PostgreSQL 9.0

MailUtilities: Remote Deployment - Einführung

Wiederherstellen der Beispieldatenbanken zum Buch Microsoft Project 2010

1 Installation QTrans V2.0 unter Windows NT4

Powermanager Server- Client- Installation

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Lexware professional und premium setzen bis einschließlich Version 2012 den Sybase SQL-Datenbankserver

WORKSHOP VEEAM ENDPOINT BACKUP FREE

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

Installation Hardlockserver-Dongle

PC-Kaufmann Supportinformation - Proxy Konfiguration für Elster

Installationsanleitung Webhost Windows Flex

PostgreSQL in großen Installationen

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Anleitung Captain Logfex 2013

OP-LOG

Wie richten Sie Ihr Web Paket bei Netpage24 ein

KEIL software. Inhaltsverzeichnis UPDATE. 1. Wichtige Informationen 1.1. Welche Änderungen gibt es?

HOWTO Update von MRG1 auf MRG2 bei gleichzeitigem Update auf Magento CE 1.4 / Magento EE 1.8

Um dies zu tun, öffnen Sie in den Systemeinstellungen das Kontrollfeld "Sharing". Auf dem Bildschirm sollte folgendes Fenster erscheinen:

SMARTtill Server mit Manager

Installationsanleitung für Magento-Module

Prüfen Sie, ob Sie über Administratorrechte (Server und Client) verfügen.

ecall Anleitung Outlook Mobile Service (OMS)

Switching. Übung 7 Spanning Tree. 7.1 Szenario

Konfiguration Firewall (Zyxel Zywall 10) (von Gruppe Schraubenmeier)

Durchführung der Netzwerk bzw. Mehrplatzinstallation

Installationsanleitungen

Tutorial -

LPT1 Anschluss mit PCMCIA Karte

Quickstep Server Update

Externe Authentifizierung. Externe Authentifizierung IACBOX.COM. Version Deutsch

telpho10 Update 2.1.6

Installationsanleitung Webhost Linux Flex

Hardware: QNAP TS 112 mit der Firmware Build 1126T mit 500GB Speicher Twonky Media Version

DNS-325/-320 und FXP

Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der IBOConsole

Die Installation des GeoShop Redirector für IIS (Internet Information Server, Version 4.0, 5.0 und 6.0) umfasst folgende Teilschritte:

Benachrichtigungsmöglichkeiten in SMC 2.6

Mapbender-Installation

Collaboration Manager

Handbuch. TMBackup R3

NetMan Desktop Manager Vorbereitung und Konfiguration des Terminalservers

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren

Handbuch PCI Treiber-Installation

Neuinstallation Einzelplatzversion

Datenbanken auf Sybase SQL-Anywhere

Kurzanleitung zur Installation des OLicense-Servers in Verwendung mit SimDiff/SimMerge

Information zum SQL Server: Installieren und deinstallieren. (Stand: September 2012)

Windows Server 2012 R2 Essentials & Hyper-V

Neuinstallation Einzelplatzversion

Handbuch. TMBackup R3

AnNoText. AnNoText Online-Update. Copyright Wolters Kluwer Deutschland GmbH

Arbeiten mit einem lokalen PostgreSQL-Server

MSDE 2000 mit Service Pack 3a

FTP-Server einrichten mit automatischem Datenupload für

bizsoft Rechner (Server) Wechsel

Anleitung zur Nutzung des SharePort Utility

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5

Leitfaden Datensicherung und Datenrücksicherung

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

Installation, Konfiguration und Nutzung des WLAN auf PDA FujitsuSiemens Pocket Loox 720

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

Oracle APEX Installer

Workshop: Eigenes Image ohne VMware-Programme erstellen

:: Anleitung Hosting Server 1cloud.ch ::

Einspielanleitung für das Update DdD Cowis backoffice DdD Cowis pos

HINWEISE ZUR ARBEIT IM LABOR

Hinweise zur Installation von MySQL

IMAP Backup. Das Programm zum Sichern, Synchronisieren, Rücksichern und ansehen von gesicherten Mails. Hersteller: malu-soft

0. VORBEMERKUNG VORBEREITUNG DES SYSTEMS INSTALLATION UND KONFIGURATION VON PD-ADMIN Installation...3

USB-Driver: Download-Link:

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Samsung Large Format Display

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Anweisungen zur Installation und Entfernung von Windows PostScript- und PCL-Druckertreibern Version 8

Diese Kurzanleitung beschreibt die nötigen Einstellungen, um mit pixafe Transfer Bilder auf einem Facebook Konto veröffentlichen zu können.

Firewalls für Lexware Info Service konfigurieren

MOUNT10 StoragePlatform Console

G-Info Lizenzmanager

Live Update (Auto Update)

KNX BAOS Gadget. Installations- und Bedienanleitung. WEINZIERL ENGINEERING GmbH. DE Burgkirchen Web:

Titel. App-V 5 Single Server Anleitung zur Installation

Quick-Guide F3Client V6.0

Die DeskCenter Management Suite veröffentlicht neue Version 8.1

Mitarbeiter-Alarm. 1x Taster mit Kabel zum Anschluss an den seriellen Com-Port (optional) 1x Installationsprogramm auf CD 1x Lizenz

Aktivieren Sie die Checkbox um von jedem Mail eine Kopie an den -absender (gemäss Einstellungen Absender) zu senden.

Objektorientierte Analyse und Design

tentoinfinity Apps 1.0 EINFÜHRUNG

DOKUMENTATION VOGELZUCHT 2015 PLUS

Update / Inbetriebnahme domovea Server. Update/Inbetriebnahme domovea Server Technische Änderungen vorbehalten

Howto. Einrichten des TREX Monitoring mit SAP Solution Manager Diagnostics

How to install freesshd

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

BACHER Informatik - we do IT Alte Gasse 1, CH-6390 Engelberg Telefon info@hostdomain.ch

Dokumentation. Novaline Datenbankassistent. Version

Seite Wireless Distribution System (Routing / Bridging) 3.1 Einleitung

Transkript:

Replikation mit PostgreSQL 9.2 CLT 2013 16./17.03.2013 Andreas akretschmer Kretschmer, Andreas ads Scherbaum Web: http://a-kretschmer.de http://andreas.scherbaum.la/ / http://andreas.scherbaum.biz/ 16./17.03.2013

Was ist PostgreSQL? Relationale Datenbank unter BSD Lizenz Weltweit aktive Community Zahlreiche Features und Funktionen (Foreign Keys, Transaktionen, Trigger) Läuft auf zahlreichen Betriebssystemen und diverser Hardware Weitgehendes Einhalten der SQL-Standards Dokumentation der Abweichungen Im Schnitt pro Jahr ein Minor-Release mit neuen Features Version 9.3 wird derzeit fleißig entwickelt Die Redner Der Redner Name: Andreas Kretschmer Angestellt bei Internet24 (Dresden) Arbeit mit PostgreSQL seit über 10 Jahren Aktiv in der deutschsprachigen PostgreSQL-Community

Die Redner Der Redner Name: Andreas Scherbaum Selbstständig im Bereich Datenbanken, Linux auf Kleingeräten, Entwicklung von Webanwendungen Arbeit mit Datenbanken seit 1997, mit PostgreSQL seit 1998 oder 1999 Gründungsmitglied der Deutschen und der Europäischen PostgreSQL User Group Board of Directors European PostgreSQL User Group Seit 2011 mit Big Data bei EMC/Greenplum beschäftigt Ziele dieses Workshops Ziele dieses Workshops Installation von PostgreSQL 9.2.3 (automatisiert) Konfiguration der Master Datenbank Erstellen eines Base Backups der Master Datenbank Einspielen des Base Backups als Slave (2 Slaves) Konfiguration der Slave Datenbank und der Replikation Starten des Slave Testen der Replikation

Datenbank kompilieren Datenbank kompilieren Unter folgender URL gibt es ein Paket zum Workshop http://andreas.scherbaum.la/writings/clt-2013-skripts.tar.bz2 Datenbank kompilieren Datenbank kompilieren Auspacken mit: Beispiel (Entpacken) cat clt-2013-skripts.tar.bz2 bunzip2 tar x cd build/ Beispiel (Kompilieren) make build

Datenbank kompilieren Datenbank kompilieren Im Verzeichnis install wird PostgreSQL 9.2.3 installiert Im Verzeichnis master/data und slave1/data sowie slave2/data wird jeweils eine Datenbank initialisiert Beide Datenbanken bleiben weitgehend unkonfiguriert Nur Änderungen für die Replikation werden vorgenommen Datenbank kompilieren Datenbank initialisieren Beispiel (Alles erst mal löschen) make clean-slave clean-master Beispiel (Master initialisieren) make init-master

Details zur Replikation Streaming Replication + Hot Standby PostgreSQL 9.0 enthält Streaming Replication PostgreSQL 9.0 enthält Hot Standby PostgreSQL 9.1 und 9.2 brachten Verbesserungen PostgreSQL 9.1 brachte synchrone Replikation PostgreSQL 9.2 brachte kaskadierende Replikation Details zur Replikation Streaming Replication der Master Archive Logs (16 MB) werden wie gehabt zum Slave übertragen (nicht auf dem Master lagern) Zusätzlich pollt der Slave aktuelle Änderungen vom Master Bei zu großem Lag werden (zuerst) die Logfiles eingespielt (wal keep segments) Im Master wird weiterhin der archive mode aktiviert archive command kopiert die Logfiles Die Anzahl Clients über max wal senders = n konfiguriert wal level muss auf archive oder besser hot standby gesetzt werden

Datenbank konfigurieren Datenbank konfigurieren Master Datei master/data/postgresql.conf im Editor öffnen Folgende Änderungen vornehmen: Beispiel (Einstellungen im Master) listen_addresses = * port = 5440 archive_mode = on archive_command = /bin/cp %p../../wal/%f archive_timeout = 300 wal_level = hot_standby max_wal_senders = 3 Datenbank konfigurieren Streaming Replication der Master pg hba.conf Benötigt einen Account mit replication Rechten Beispiel (Superuser Zugang für Replikation pg hba.conf) # TYPE DATABASE USER CIDRADDRESS METHOD local replication postgres trust host replication postgres 127.0.0.1/32 trust host replication all 0.0.0.0/0 reject Hinweis: als erste Zeilen eintragen Hinweis: ggf. eigenen User für Replikation erstellen Hinweis: statt postgres ggf. anderen Nutzer (eigenen Unix Account) einsetzen

Datenbank konfigurieren Datenbank starten Master Den Master starten Hinweis: eigene Shell/Konsole/Terminal verwenden Beispiel (Datenbank starten) make master-db Beispiel (Datenbankshell öffnen) make master-sh Datenbank konfigurieren Datenbank verwenden Einige schreibende Änderungen durchführen Z. B. eine Tabelle erstellen und mit Daten befüllen Danach die WAL-Datei wechseln: Beispiel (neue WAL-Datei beginnen) SELECT pg_switch_xlog(); Im Verzeichnis wal sollten sich nun Dateien befinden

Datenbank konfigurieren Streaming Replication der Slave hot standby = on Archivierung deaktivieren (archive mode, wal level, max wal senders) Ggf. Port ändern (wenn Master und Slave auf der gleichen Maschine laufen) Datenbank konfigurieren Hot Standby Der Slave kann für (lesende) Anfragen genutzt werden Transaktionen auf dem Slave sind komplett, aber ggf. einige Zeit hinter dem Master Einige Lockingmodi können verwendet werden, andere nicht Two-Phase Commits sind nicht möglich (erfordern einen WAL-Eintrag) Nicht möglich: LISTEN, NOTIFY, UNLISTEN Möglich: Backup

Datenbank konfigurieren Hot Standby Konfliktlösungen Der Slave wartet max standby archive delay bzw. max standby streaming delay Sekunden bei einem Konflikt (Default: 30 Sekunden) Transaktionen und Abfragen, die einen Lock halten, werden beendet Idle Transaktionen werden beendet Konflikte durch Aufräumarbeiten (Entfernen veralteter Records auf dem Master) informieren die Anfrage, diese beendet sich selbst (ansonsten: falsche Ergebnisse) Datenbank konfigurieren Hot Standby Failover Im Failover Fall (Slave beendet Recovery) bleiben alle Verbindungen bestehen Transaktionen werden schreibbar

Slave erstellen Slave erstellen Der Slave wird wie bei PITR mit einem Online-Backup aufgesetzt Der Master wird mittels pg start backup() und pg stop backup() in den Online-Backup Modus versetzt Seit PostgreSQL 9.1: pg basebackup Der Slave darf noch nicht laufen! Im Workshop Paket befindet sich ein entsprechendes Makefile Ziel Beispiel (Slave erstellen) make backup Slave erstellen Datenbank konfigurieren Slave Datei slave1/data/postgresql.conf im Editor öffnen Folgende Änderungen zurücksetzen bzw. vornehmen: Beispiel (Slave konfigurieren) port = 5441 archive_mode = off #archive_command = #archive_timeout = 30 Beispiel (Slave konfigurieren) hot_standby = on

Slave erstellen Streaming Replication der Slave Normale Konfiguration in recovery.conf Zusätzlich: standby mode = on Zusätzlich: primary conninfo = host=masterdb port=5432 Zusätzlich: trigger file = /tmp/trigger.hs Slave erstellen Streaming Replication der Slave Konfiguration slave1/data/recovery.conf im Editor erstellen Beispiel (Beispielkonfiguration) restore_command = cp../../wal/%f %p standby_mode = on primary_conninfo = host=127.0.0.1 port=5440 user=postgres trigger_file = /tmp/replikation.trigger Hinweis: statt postgres ggf. anderen Nutzer (eigenen Unix-Account) einsetzen

Slave erstellen Datenbank starten Slave Den Slave starten Hinweis: eigene Shell/Konsole/Terminal verwenden Beispiel (Datenbank starten) make slave-db1 make slave-db2 Beispiel (Datenbankshell öffnen) make slave-sh1 make slave-sh2 Slave erstellen Datenbank verwenden Änderungen auf dem Master vornehmen Änderungen sofort danach auf dem Slave betrachten Schreibende Änderungen auf dem Slave versuchen

Failover Failover Activate a slave Wenn das Triggerfile auftaucht, wird der Slave ausgekoppelt Beispiel (Triggerfile erzeugen) touch /tmp/trigger.slave2 Failover Failover Activate a slave Der vorherige Slave 2 ist jetzt eine eigenständige Datenbank Hinweis: Split-Brain Szenarien sind unbedingt zu vermeiden!

Diverses Hot Standby Zustand der Replikation pg is in recovery(): liefert true auf einem Standby-System zurück Beispiel (pg is in recovery()) postgres=# SELECT pg_is_in_recovery(); pg_is_in_recovery ------------------- t (1 Zeile) Diverses Hot Standby aktueller WAL-Record (Master) pg current xlog location(): liefert den aktuellen WAL-Record auf dem Master Beispiel (pg current xlog location()) postgres=# SELECT pg_current_xlog_location(); pg_current_xlog_location ------------------------------- 0/DD000000 (1 Zeile)

Diverses Hot Standby empfangener WAL-Record pg last xlog receive location(): liefert den letzten empfangenen WAL-Record Beispiel (pg last xlog receive location()) postgres=# SELECT pg_last_xlog_receive_location(); pg_last_xlog_receive_location ------------------------------- 0/DD000000 (1 Zeile) Diverses Hot Standby eingespielter WAL-Record pg last xlog replay location(): liefert den letzten eingespielten WAL-Record Beispiel (pg last xlog replay location()) postgres=# SELECT pg_last_xlog_replay_location(); pg_last_xlog_replay_location ------------------------------ 0/DD000000 (1 Zeile)

Diverses Hot Standby Status View pg stat replication: liefert eine Übersicht über alle Slaves Beispiel (pg stat replication) postgres=# SELECT * FROM pg_stat_replication; pid usesysid usename application_name...... Kaskadierende Slaves Kaskadierende Slaves Ein Slave kann gleichzeitig Daten zu anderen Slaves streamen Konfiguration wie ein Master Aktuell nur asynchron Jeder Slave verbindet sich zu genau einem anderen Server (direkt zum Master, oder zu einem anderen Slave) Wird ein Slave aktiviert unterbricht das die Replikation zu seinen Slaves (Timeline ändert sich)

Synchrone Replikation Synchrone Replikation Ein Slave kann synchron Daten vom Master empfangen Änderungen werden auf dem Slave geschrieben bevor der Master das Commit an die Applikation gibt Kann per Transaktion aktiviert werden Fällt der Slave aus wartet der Master ewig! Synchrone Replikation Synchrone Replikation Konfiguration: application name muss gesetzt sein (in recovery.conf) synchronous standby names spezifiziert eine Liste mit Slaves synchronous commit wird auf remote write gesetzt Beispiel (recovery.conf) primary_conninfo = host=127.0.0.1 port=5440 user=postgres application_name=slave1

Synchrone Replikation Synchrone Replikation Slave stoppen, Master stoppen, Synchrone Replikation aktivieren, Master starten Beispiel (alles stoppen) make stop-all im Editor öffnen: master/data/postgresql.conf Nach Aktivieren für synchrone Replikation suchen Beispiel (Master starten) make master-db Synchrone Replikation Synchrone Replikation Transaktion im Master starten Etwas ändern Transaktion committen Beispiel (Transaktion) BEGIN; CREATE TABLE z(); COMMIT;

Synchrone Replikation Synchrone Replikation Slave starten Beispiel (Transaktion) make slave-db1 Nacharbeiten Nacharbeiten max locks per transaction erhöhen, wenn Prepared Transactions verwendet werden max connections, max prepared transactions und max locks per transaction müssen auf dem Slave gleich oder größer als auf dem Master sein vacuum defer cleanup age verzögert VACUUM auf dem Master (um die angegebene Anzahl Transaktionen) und erhöht damit die Laufzeit für Anfragen auf dem Slave (alternativ: Anfrage rückwärts zum Master) hot standby feedback informiert den Master über laufende Anfragen auf den Slaves

Wichtiger Termin Wichtiger Termin pgconf.de 2013 8. November in Oberhausen gefolgt von der ORR Webseite: http://www.pgconf.de/ Wichtiger Termin Wichtiger Termin pgconf.eu 2013 wahrscheinlich Ende September oder Anfang Oktober in einem europäischen Land Webseite: http://www.pgconf.eu/

Ende http://www.a-kretschmer.de/ http://andreas.scherbaum.la/ Fragen? Andreas akretschmer Kretschmer <???@???.???> Andreas ads Scherbaum <andreas@scherbaum.biz> PostgreSQL User Group Germany European PostgreSQL User Group