PostgreSQL Replikation Sklaven multi

Aus De Ikoula wiki
Jump to navigation Jump to search

de:PostgreSQL Replikation Sklaven multi en:PostgreSQL replication slaves multi he:PostgreSQL שכפול עבדים רב ro:PostgreSQL replicare sclavi multi ru:PostgreSQL репликации рабы multi pl:PostgreSQL replikacji niewolników multi ja:PostgreSQL のレプリケーション スレーブ マルチ ar:كيو النسخ المتماثل العبيد متعددة zh:PostgreSQL 复制奴隶多 nl:PostgreSQL replicatie slaven multi it:PostgreSQL replica schiavi multi pt:Multi de escravos de replicação PostgreSQL es:PostgreSQL replicación esclavos multi fr:Replication PostgreSQL multi slaves

Dieser Artikel wurde maschinell übersetzt. Sie können den Artikel Quelle hier ansehen.

Einführung | _. _. Diese Seite beschäftigt sich mit der Umsetzung eine asynchrone Streaming-PostgreSQL-Replikation mit einem Master und zwei Slaves. Unsere slawischen wird als hot-Standby konfiguriert werden, das heißt, dass es möglich ist, ausführen werden Abfragen | _. _. nur-Lese | _. _. auf diesen.

Zusammenhang mit dieser Umsetzung | _. _. Wir haben | _. _. Debian-Server | _. _. aktualisiert | _. _. Dann wir auf ql verbinden | _. _. Wir aktivieren die erweiterte Anzeige und wir überprüfen unsere Replikation | _. _. Wir haben so viel unsere | _. _. Replikation mit unseren zwei slawischen Servern | _. _. | _. _. und Postgres | _. _. Immer verbunden mit Postgresql auf dem Master, erstellen Sie eine Testdatenbank | _. _. z. B. | _. _. Checkrep | _. _. um zu bestätigen, dass die Replikation ist funktionale | _. _. Überprüfen Sie, dass die Datenbank auch repliziert auf unsere | _. _. Slawische | _. _. Die Datenbank, die wir auf unsere Master erstellt wird so auch automatisch auf unsere zwei slawische repliziert. | _. _. werden unser Meister | _. _. Postgres | _. _. wird ein Sklave | _. _. Postgres | _. _. wird ein zweite Slave | _. _. Bestellungen werden, wenn root angegeben werden sie von voraus | _. _. und als Postgres-System-Benutzer Wenn sie der vorausgegangen sind | _. _. Installation von PostgreSQL und Vorkonfiguration aller drei Server: _! _ | Alle Bestellungen dieses Teils sind auf jedem Server zu tun. (Als ersten Schritt, es empfiehlt sich, eine Datei | _. _. mit Verbindungen zu jedem Server wie folgt gefüllt: _! _ | durch die Anpassung mit den Hostnamen und IP-Adressen von Ihren eigenen Servern | _. _. Fügen Sie Einreichung APT PostgreSQL | _. _. Wir importieren Sie den öffentlichen Schlüssel dieser Lagerstätte | _. _. Wir aktualisieren die APT-Cache, um die Kaution berücksichtigen | _. _. Wir installieren das Paket Postgresql | _. _. installieren Sie die neueste stabile Version ist die | _. _. zum Zeitpunkt des Schreibens dieses Artikels | _. _. Es legt ein Passwort | _. _. seiner Wahl aber sicher | _. _. und erzeugt ein ssh-Schlüsselpaar | _. _. ohne Passphrase | _. _. für den Systembenutzer Postgres | _. _. Wir kopieren die Benutzer Postgres seit und zwischen jedem Server ssh Schlüssel | _. _. Seit dem ersten Server | _. _. Postgres | _. _. in unserem Fall: _! _ | zum zweiten | _. _. Postgres | _. _. für uns | _. _. und Troisiseme | _. _. Postgres | _. _. Vom zweiten auf den ersten und dritten Server | _. _. Vom dritten auf den ersten und zweiten Server | _. _. Konfiguration des Masters: _! _ | Nur den Master zu tun: _! _ | Postgres | _. _. in unserem Fall: _! _ | Wir erstellen die Rolle | _. _. Benutzer Replikation: _! _ | Hinweis: _! _ | Wir definieren eine Verbindungsbeschränkung | _. _. denn wir haben | _. _. Slawische | _. _. Wir bearbeiten die Hauptkonfigurationsdatei von Postgresql | _. _. die folgenden Richtlinien aufzustellen: _! _ | Hinweis: _! _ | Wir zu unserem zweiten Server Archivierung aktivieren | _. _. passen Sie die IP-Adresse des Servers | _. _. für noch mehr Vorsichtsmaßnahmen, aber dies ist keine Pflicht. Wir definieren auch die Parameter Hot_standby, Brunnen, der auf einem Master, in welchem Fall es ignoriert sollte um in Zukunft Sklaven degradiert werden. ) Es veröffentlicht jetzt der Postgresql Authentifizierungsdatei | _. _. Unsere Benutzerautorisierung der Replikation Verbindung von unserer slawischen oder die folgende Zeile am Ende der Datei hinzu: _. _ | Bitte passen Sie diese Zeile nach dem Namen des Benutzers Replikation und Netzwerk | _. _. oder entsprechenden IP-Adressen: _! _ | der Ihre slawischen | _. _. Starten Sie den Postgresql Dienst unserer Konfiguration berücksichtigen | _. _. in Wurzel | _. _. Dadurch wird sichergestellt, dass der Dienst erfolgreich gestartet wurde | _. _. Konfiguration der slawischen | _. _. Auf dem ersten Slave | _. _. Lasst uns aufhören den Postgresql-Service | _. _. Wir bearbeiten die Hauptkonfigurationsdatei von Postgresql | _. _. die gleiche Konfiguration Richtlinien als Master, durch eine Anpassung nur die IP-Adresse des ersten Sklaven damit der zweite Sklave in das Archiv Rsync Befehl wollen Sie es entweder zu aktivieren | _. _. Es veröffentlicht jetzt der Postgresql Authentifizierungsdatei | _. _. die Genehmigung unserer Replikation Benutzer Verbindung von unseren anderen Servern hinzufügen: _! _ | Es wird tun, dass für den Fall, dass dieser Sklave Meister gefördert | _. _. Hinweis: _! _ | Mit dieser Konfiguration ähnlich wie unser Meister ermöglicht dieser Sklave als Meister im Bedarfsfall leicht zu fördern.


Für den Betrieb unten, melden Sie sich als Benutzer System Postgres | _. _. Wir erstellen Sie das Verzeichnis der Bestimmung der Wal der master Archive | _. _. Wir entfernen das Postgresql Datenverzeichnis | _. _. Es macht die Basissicherung | _. _. passen Sie die Ip deines Meisters und den Namen des Benutzers der Replikation :


, werden Sie aufgefordert, das Kennwort des Benutzers der Replikation | _. _. Sie Replikation konfigurieren, indem Sie die Datei erstellen | _. _. mit den folgenden Parametern: _! _ | Hinweis: _! _ | Die Trigger-Datei ist die Datei, die wir erstellen, wenn wir wollen, dass sein Sklave Stop Replikation und beginnt zu akzeptieren, die Schrift, die ist, wenn wir es als Master fördern wollen. Bevor die Förderung eines Slave-Absturzes seines Meisters, Bitte stellen Sie sicher, dass der erste Meister, Nein kommen, um Beschädigungen zu vermeiden. 3 Wurzel, gehen wir zurück und wir starten Sie den Dienst: _! _ | Dadurch wird sichergestellt, dass der Dienst erfolgreich gestartet wurde | _. _. Wenn wir mit unserem Herrn zu verbinden, können wir bereits überprüfen unsere Replikation zwischen dem Master und der erste Sklave ist funktional | _. _. Es verbindet sich mit unserem Meister und wir versuchen eine Verbindung herzustellen in Postgres Systembenutzer | _. _. Dann wir auf Postgresql verbinden | _. _. Wir aktivieren die erweiterte Anzeige und wir überprüfen unsere Replikation | _. _. Unsere Streaming-asynchrone Replikation mit unserer ersten Slave ist gut gemacht. An dieser Stelle haben wir einen Master Replikation | _. _. Klassische Slave | _. _. ein einzelnes slave asynchrone streaming | _. _. Auf dem zweiten Slave | _. _. Wiederholen Sie das gleiche auf dem ersten Slave offensichtlich seine Hostname in der Datei recovery.conf und IP-Adresse in der Größenordnung von Check-in in der Hauptkonfigurationsdatei Anpassung, wenn auf diese zweite Slave Archivierung aktivieren möchten, was geschah. 8 (Prüfung und Test für unsere Multi master Replikation Slawen | _. _. Es verbindet sich mit dem Meister und Sie sind angemeldet Benutzer Postgres) :

Postgres01 (10.1.1.75) : Um es zu entfernen, da der Meister

Postgres02 (10.1.1.90) :

Postgres03 (10.1.1.199) :


"#"  "$".

/etc/hosts  ()  :
# cat /etc/hosts
127.0.0.1       localhost

10.1.1.75       01
10.1.1.90       02
10.1.1.199      03


:
# echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/postgres.list


:
# gpg --keyserver pgpkeys.mit.edu --recv-key 7FCC7D46ACCC4CF8 && gpg -a --export 7FCC7D46ACCC4CF8 | apt-key add -
gpg: directory `/root/.gnupg' created
gpg: new configuration file `/root/.gnupg/gpg.conf' created
gpg: WARNING: options in `/root/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/root/.gnupg/secring.gpg' created
gpg: keyring `/root/.gnupg/pubring.gpg' created
gpg: requesting key ACCC4CF8 from hkp server pgpkeys.mit.edu
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key ACCC4CF8: public key "PostgreSQL Debian Repository" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
OK


:
# apt-get update


( 9.5 ) :
# apt-get install postgresql


()  ()  :
# passwd postgres
# su - postgres
$ ssh-keygen


:


(postgres01 )  (postgres02 )  (postgres03) :
root@postgres01:~# su - postgres
postgres@postgres01:~$ ssh-copy-id postgres02
postgres@postgres01:~$ ssh-copy-id postgres03


:
root@postgres02:~# su - postgres
postgres@postgres02:~$ ssh-copy-id postgres01
postgres@postgres02:~$ ssh-copy-id postgres03


:
root@postgres03:~# su - postgres
postgres@postgres03:~$ ssh-copy-id postgres01
postgres@postgres03:~$ ssh-copy-id postgres02

(postgres01 ) :


/ :

# su - postgres
$ psql -c "CREATE USER repuser REPLICATION LOGIN CONNECTION LIMIT 2 ENCRYPTED PASSWORD '<mot de passe repuser>';"

 : 2 2


/etc/postgresql/9.5/main/postgresql.conf  :
listen_addresses = '*'
wal_level = hot_standby
archive_mode = on
archive_command = 'rsync -av %p postgres@<ip du premier slave>:/var/lib/postgresql/wal_archive/%f'
max_wal_senders = 2
wal_keep_segments = 256
hot_standby = on

: ()


/etc/postgresql/9.5/main/pg_hba.conf  :
hostssl replication     repuser <ip du réseau de vos serveurs>/24     md5

()


() :
# systemctl restart postgresql


:
root@postgres01:~# systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled)
   Active: active (exited) since Thu 2016-06-02 12:06:28 CEST; 22s ago
  Process: 77056 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 77056 (code=exited, status=0/SUCCESS)


root@postgres01:~# ps -u postgres u
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
postgres  77038  0.0  4.4 227300 21836 ?        S    12:06   0:00 /usr/lib/postgresql/9.5/bin/postgres -D /var/lib/postgresql/9.
postgres  77040  0.0  0.8 227300  4160 ?        Ss   12:06   0:00 postgres: checkpointer process
postgres  77041  0.0  1.0 227300  4968 ?        Ss   12:06   0:00 postgres: writer process
postgres  77042  0.0  1.7 227300  8776 ?        Ss   12:06   0:00 postgres: wal writer process
postgres  77043  0.0  1.3 227728  6708 ?        Ss   12:06   0:00 postgres: autovacuum launcher process
postgres  77044  0.0  0.6  82244  3392 ?        Ss   12:06   0:00 postgres: archiver process
postgres  77045  0.0  0.8  82244  4244 ?        Ss   12:06   0:00 postgres: stats collector process

:
# systemctl stop postgresql


/etc/postgresql/9.5/main/postgresql.conf  :
listen_addresses = '*'
wal_level = hot_standby
archive_mode = on
archive_command = 'rsync -av %p postgres@<ip du second slave>:/var/lib/postgresql/wal_archive/%f'
max_wal_senders = 2
wal_keep_segments = 256
hot_standby = on


/etc/postgresql/9.5/main/pg_hba.conf  () :
hostssl replication     repuser <ip du réseau de vos serveurs>/24     md5

 :


:
# su – postgres


:
$ mkdir /var/lib/postgresql/wal_archive


:
$ rm -rf /var/lib/postgresql/9.5/main


() :
$ pg_basebackup -h <ip de votre master> -D /var/lib/postgresql/9.5/main -U repuser -v -P --xlog


/var/lib/postgresql/9.5/main/recovery.conf  :
standby_mode = on
primary_conninfo = 'host=<ip de votre master> port=5432 user=repuser password=<mot de passe de repuser> sslmode=require application_name=<hostname de votre slave>'
trigger_file = '/var/lib/postgresql/9.5/postgres.trigger'

 :


:
# systemctl start postgresql


:
# systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled)
   Active: active (exited) since Thu 2016-06-02 12:53:42 CEST; 1min 6s ago
  Process: 8894 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 8894 (code=exited, status=0/SUCCESS)


# ps -u postgres u
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
postgres   8878  0.0  4.4 227308 21892 ?        S    12:53   0:00 /usr/lib/postgresql/9.5/bin/postgres -D /var/lib/postgresql/9.
postgres   8879  0.0  1.1 227376  5700 ?        Ss   12:53   0:00 postgres: startup process   recovering 00000001000000000000000
postgres   8880  0.0  0.8 227308  4140 ?        Ss   12:53   0:00 postgres: checkpointer process
postgres   8881  0.0  1.0 227308  5236 ?        Ss   12:53   0:00 postgres: writer process
postgres   8882  0.0  0.6  82252  3316 ?        Ss   12:53   0:00 postgres: stats collector process
postgres   8883  0.0  1.7 238064  8520 ?        Ss   12:53   0:00 postgres: wal receiver process   streaming 0/30003E0


:
:
# su - postgres


:
$ psql


:
postgres=# \x
Expanded display is on.
postgres=# select * from pg_stat_replication;
-[ RECORD 1 ]----+------------------------------
pid              | 78879
usesysid         | 16384
usename          | repuser
application_name | postgres02
client_addr      | 10.1.1.90
client_hostname  |
client_port      | 49009
backend_start    | 2016-06-02 12:53:36.641823+02
backend_xmin     |
state            | streaming
sent_CRElocation    | 0/30004C0
write_location   | 0/30004C0
flush_location   | 0/30004C0
replay_location  | 0/30004C0
sync_priority    | 0
sync_state       | async

/ ()

:
# su – postgres
:
$ psql


:
postgres=# \x
Expanded display is on.
postgres=# select * from pg_stat_replication;
-[ RECORD 1 ]----+------------------------------
pid              | 78879
usesysid         | 16384
usename          | repuser
application_name | postgres02
client_addr      | 10.1.1.90
client_hostname  |
client_port      | 49009
backend_start    | 2016-06-02 12:53:36.641823+02
backend_xmin     |
state            | streaming
sent_location    | 0/5000140
write_location   | 0/5000140
flush_location   | 0/5000140
replay_location  | 0/5000140
sync_priority    | 0
sync_state       | async
-[ RECORD 2 ]----+------------------------------
pid              | 82725
usesysid         | 16384
usename          | repuser
application_name | postgres03
client_addr      | 10.1.1.199
client_hostname  |
client_port      | 51754
backend_start    | 2016-06-02 14:31:43.759683+02
backend_xmin     |
state            | streaming
sent_location    | 0/5000140
write_location   | 0/5000140
flush_location   | 0/5000140
replay_location  | 0/5000140
sync_priority    | 0
sync_state       | async
2  (postgres02 03).


(ex : )  :
postgres=# CREATE DATABASE checkrep;


2  :
root@postgres02:~# su - postgres
postgres@postgres02:~$ psql
psql (9.5.3)
Type "help" for help.

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 checkrep  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)


root@postgres03:~# su - postgres
postgres@postgres03:~$ psql
psql (9.5.3)
Type "help" for help.

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 checkrep  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(4 rows)



:
postgres=# DROP DATABASE checkrep;



Du bist nicht berechtigt Kommentare hinzuzufügen.