Replicatie PostgreSQL Slavische multi: verschil tussen versies
Regel 1: | Regel 1: | ||
+ | <span data-link_translate_he_title="שכפול מרובה PostgreSQL סלאבית" data-link_translate_he_url="%D7%A9%D7%9B%D7%A4%D7%95%D7%9C+%D7%9E%D7%A8%D7%95%D7%91%D7%94+PostgreSQL+%D7%A1%D7%9C%D7%90%D7%91%D7%99%D7%AA"></span>[[:he:שכפול מרובה PostgreSQL סלאבית]][[he:שכפול מרובה PostgreSQL סלאבית]] | ||
<span data-link_translate_ro_title="Replicare PostgreSQL slave multi" data-link_translate_ro_url="Replicare+PostgreSQL+slave+multi"></span>[[:ro:Replicare PostgreSQL slave multi]][[ro:Replicare PostgreSQL slave multi]] | <span data-link_translate_ro_title="Replicare PostgreSQL slave multi" data-link_translate_ro_url="Replicare+PostgreSQL+slave+multi"></span>[[:ro:Replicare PostgreSQL slave multi]][[ro:Replicare PostgreSQL slave multi]] | ||
<span data-link_translate_ru_title="Multi PostgreSQL славянских репликации" data-link_translate_ru_url="Multi+PostgreSQL+%D1%81%D0%BB%D0%B0%D0%B2%D1%8F%D0%BD%D1%81%D0%BA%D0%B8%D1%85+%D1%80%D0%B5%D0%BF%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8"></span>[[:ru:Multi PostgreSQL славянских репликации]][[ru:Multi PostgreSQL славянских репликации]] | <span data-link_translate_ru_title="Multi PostgreSQL славянских репликации" data-link_translate_ru_url="Multi+PostgreSQL+%D1%81%D0%BB%D0%B0%D0%B2%D1%8F%D0%BD%D1%81%D0%BA%D0%B8%D1%85+%D1%80%D0%B5%D0%BF%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8"></span>[[:ru:Multi PostgreSQL славянских репликации]][[ru:Multi PostgreSQL славянских репликации]] |
Versie van 2 jun 2016 19:28
he:שכפול מרובה PostgreSQL סלאבית
ro:Replicare PostgreSQL slave multi
ru:Multi PostgreSQL славянских репликации
pl:Replikacja wielu słowiańskich PostgreSQL
ja:レプリケーション PostgreSQL スラブ マルチ
ar:النسخ المتماثل السلافية كيو متعدد
zh:复制 PostgreSQL 斯拉夫语多
de:Replikation PostgreSQL slawischen multi
it:Replica PostgreSQL slavo multi
pt:Replicação PostgreSQL eslavo multi
es:Replicación multi de PostgreSQL Slavic
fr:Replication PostgreSQL multi slaves
Dit artikel is vertaald door middel van automatische vertalingssoftware. U kunt het artikel bron hier te bekijken.
Introductie
Deze pagina behandelt de uitvoering van een asynchrone PostgreSQL streaming van replicatie met een master en twee slaven. Onze Slavische geconfigureerd als hot stand-by, dat wil zeggen dat het mogelijk is te lopen query (alleen-lezen ) op deze.
Kader van deze plaatsing :
We hebben 3 Debian servers 8 (laatst bijgewerkt ) :
Postgres 01 (10.1.1.75) : zullen onze meester
Postgres02 (10.1.1.90) : zullen een slaaf
Postgres03 (10.1.1.199) : zal worden een tweede slaaf
Opgegeven opdrachten uit te voeren als root, wanneer ze worden voorafgegaan door zullen "#" en als de Postgres -systeemgebruiker wanneer ze worden voorafgegaan door "$".
Installatie van PostgreSQL en preconfiguratie van de drie servers
Alle opdrachten in dit deel moeten worden gedaan op elk van de servers.
Een eerste stap, is het raadzaam om één bestand /etc/hosts gevuld met de wedstrijden van elke server, als deze (door aan te passen met de hostnamen en IP-adressen van uw eigen servers ) :
# cat /etc/hosts 127.0.0.1 localhost 10.1.1.75 Postgres 01 10.1.1.90 Postgres 02 10.1.1.199 Postgres 03
Toevoegen van de storting APT PostgreSQL :
# echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/postgres.list
Wij importeren de openbare sleutel van deze borg :
# 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
Het bijwerken van de cache APT rekening wordt gehouden met de aanbetaling :
# apt-get update
Pakken postgres ql installeren (Installeer de nieuwste stabiele versie is de 9.5 op het moment waar deze lijnen zijn geschreven ) :
# apt-get install postgresql
We definiëren een wachtwoord (van zijn keuze maar veilig ) en genereert een ssh van sleutelpaar (zonder passphrase ) voor de postgres systeemgebruiker :
# passwd postgres
# su - postgres
$ ssh-keygen
We kopiëren de gebruiker postgres van en tussen elke server publieke ssh sleutel :
Sinds de eerste server (postgres01 in ons geval ) naar de tweede (postgres02 voor ons ) en troisiseme (postgres03) :
root@postgres01:~# su - postgres
postgres@postgres01:~$ ssh-copy-id postgres02
postgres@postgres01:~$ ssh-copy-id postgres03
Van de tweede naar de eerste en de derde server :
root@postgres02:~# su - postgres
postgres@postgres02:~$ ssh-copy-id postgres01
postgres@postgres02:~$ ssh-copy-id postgres03
Van de derde naar de eerste en de tweede server :
root@postgres03:~# su - postgres
postgres@postgres03:~$ ssh-copy-id postgres01
postgres@postgres03:~$ ssh-copy-id postgres02
Het Master Configuration
Doen alleen op de master (postgres01 in ons geval ) :
Het creëert de rol /replicatie gebruiker :
# su - postgres
$ psql -c "CREATE USER repuser REPLICATION LOGIN CONNECTION LIMIT 2 ENCRYPTED PASSWORD '<mot de passe repuser>';"
Opmerking : Het definieert een verbindingslimiet van 2 omdat we hebben 2 Slavische
Het belangrijkste postgresql-configuratiebestand bewerken /etc/postgresql/9.5/main/postgresql.conf configureren van de volgende richtlijnen :
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
Opmerking : We naar onze tweede server archivering inschakelen (Uw IP-adres van de server aanpassen ) voor nog meer voorzorgsmaatregelen. Wij definiëren ook de parameters hot_standby, Nou dat genegeerd op een stramien, waar het moet worden gedegradeerd tot slaaf in de toekomst.
Nu het bewerken van postgresql verificatiebestand /etc/postgresql/9.5/main/pg_hba.conf de machtigingen van de gebruiker van onze replicatie aansluiten van onze Slavische of de volgende regel aan het einde van het bestand toevoegen :
hostssl replication repuser <ip du réseau de vos serveurs>/24 md5
Gelieve te passen deze lijn volgens de naam van uw replicatie en netwerk gebruiker (of respectieve IP-adressen ) van uw Slavische
Het opnieuw starten van de service postgresql om rekening te houden met onze configuratie (in wortel ) :
# systemctl restart postgresql
Dit zorgt ervoor dat de service goed is gestart :
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
Configuratie van slaven
Op de eerste slaaf
We beginnen met stop de service postgresql :
# systemctl stop postgresql
Het belangrijkste postgresql-configuratiebestand bewerken /etc/postgresql/9.5/main/postgresql.conf configureren van dezelfde richtlijnen als de kapitein, door gewoon het IP adres van de eerste slaaf door de tweede slaaf afstemming in de rsync commando voor het archiveren van hetzij :
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
Nu het bewerken van postgresql verificatiebestand /etc/postgresql/9.5/main/pg_hba.conf de machtigingen van de gebruiker van onze replicatie aansluiten van onze andere servers toevoegen (Dit zal worden gebruikt wanneer deze slaaf verwacht bevorderd meester ) :
hostssl replication repuser <ip du réseau de vos serveurs>/24 md5
Opmerking : Met deze configuratie vergelijkbaar met onze meester zal hierdoor om gemakkelijk te bevorderen deze slaaf als meester in geval van nood.
Voor de activiteiten die hieronder, Meld u aan als postgres systeemgebruiker :
# su – postgres
Wij maken de doelmap voor de wal van de master archieven :
$ mkdir /var/lib/postgresql/wal_archive
Het verwijdert de gegevensmap postgresql :
$ rm -rf /var/lib/postgresql/9.5/main
Het maakt de basis van de back-up (het IP adres van je meester en de naam van uw gebruiker replicatie aanpassen ), het wachtwoord van de gebruiker van uw replicatie wordt u gevraagd :
$ pg_basebackup -h <ip de votre master> -D /var/lib/postgresql/9.5/main -U repuser -v -P --xlog
Het replicatie configureert door het maken van het bestand /var/lib/postgresql/9.5/main/recovery.conf met de volgende parameters :
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'
Opmerking : De trigger-bestand is het bestand we maken wanneer we willen zijn slave replicatie stopt en zal beginnen aanvaarding van items — wanneer u wilt om het te promoten als master. Zorg ervoor dat de beginmaster niet stijgen zal om te voorkomen dat corruptie voordat het bevorderen van een slaaf in geval van crash van haar meester.
We terugkeren root en start de service :
# systemctl start postgresql
Dit zorgt ervoor dat de service correct gestart :
# 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
Als het is aangesloten op onze meester, kunnen we al controleren onze replicatie tussen de kapitein en de eerste slaaf is functioneel :
Het verbindt met onze meester en het verbindt in postgres systeemgebruiker :
# su - postgres
Vervolgens verbinden met postgresql :
$ psql
Het stelt de uitgebreide weergave en we controleren onze replicatie :
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
Onze asynchrone streaming replicatie met onze eerste slaaf is goed gemaakt. Deze fase heeft een Master replicatie /Klassieke slaaf (één slave asynchrone streaming )
Op de tweede slaaf
We Redid hetzelfde wat werd gedaan op de eerste slaaf uiteraard de aanpassing van de hostnaam in het bestand recovery.conf en het IP-adres in de opdracht van archivering in de belangrijkste configuratiebestand als u wilt ook op deze tweede slaaf archivering inschakelen.
Verificatie en testen van onze multi master replicatie Slavische
Het verbindt aan de kapitein en het is ingelogd gebruiker postgres :
# su – postgres
Vervolgens verbinden met postgresql :
$ psql
Het stelt de uitgebreide weergave en we controleren onze replicatie :
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
Dus daar Nou onze 2 replicatie met onze twee Slavische servers (postgres02 et postgres03).
Nog steeds verbonden met postgresql op de master, het creëert een data base (ex : checkrep ) :
postgres=# CREATE DATABASE checkrep;
Er wordt gecontroleerd dat de database goed is gerepliceerd op onze 2 Slavische :
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)
De database die we op onze meester gemaakt is zo goed automatisch gerepliceerd naar onze twee Slavische.
Verwijderen, sinds de meester :
postgres=# DROP DATABASE checkrep;
Automatisch bijwerken van reacties inschakelen