PostgreSQL replicatie slaven multi: verschil tussen versies
| Regel 1: | Regel 1: | ||
| + | <span data-link_translate_zh_title="PostgreSQL 复制奴隶多" data-link_translate_zh_url="PostgreSQL+%E5%A4%8D%E5%88%B6%E5%A5%B4%E9%9A%B6%E5%A4%9A"></span>[[:zh:PostgreSQL 复制奴隶多]][[zh:PostgreSQL 复制奴隶多]] | ||
<span data-link_translate_de_title="PostgreSQL Replikation Sklaven multi" data-link_translate_de_url="PostgreSQL+Replikation+Sklaven+multi"></span>[[:de:PostgreSQL Replikation Sklaven multi]][[de:PostgreSQL Replikation Sklaven multi]] | <span data-link_translate_de_title="PostgreSQL Replikation Sklaven multi" data-link_translate_de_url="PostgreSQL+Replikation+Sklaven+multi"></span>[[:de:PostgreSQL Replikation Sklaven multi]][[de:PostgreSQL Replikation Sklaven multi]] | ||
<span data-link_translate_it_title="PostgreSQL replica schiavi multi" data-link_translate_it_url="PostgreSQL+replica+schiavi+multi"></span>[[:it:PostgreSQL replica schiavi multi]][[it:PostgreSQL replica schiavi multi]] | <span data-link_translate_it_title="PostgreSQL replica schiavi multi" data-link_translate_it_url="PostgreSQL+replica+schiavi+multi"></span>[[:it:PostgreSQL replica schiavi multi]][[it:PostgreSQL replica schiavi multi]] | ||
Versie van 19 aug 2016 03:16
zh:PostgreSQL 复制奴隶多
de:PostgreSQL Replikation Sklaven 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
Dit artikel is vertaald door middel van automatische vertalingssoftware. U kunt het artikel bron hier te bekijken.
Introductie | _. _. Deze pagina gaat over de uitvoering van een asynchrone streaming PostgreSQL replicatie met een master en twee slaven. Onze Slavische geconfigureerd als hot stand-by, dat wil zeggen dat het zal mogelijk zijn voor het uitvoeren van een query | _. _. Dit is een alleen-lezen | _. _. op deze.
Kader van deze implementatie | _. _. We hebben | _. _. Debian servers | _. _. bijgewerkt | _. _. Dan wij verbinden met ql | _. _. Wij activeren de uitgebreide weergave en we controleren onze replicatie | _. _. We hebben zoveel onze | _. _. replicatie met onze twee Slavische servers | _. _. | _. _. en | _. _. Altijd verbonden aan ql op de master, een testdatabase maken | _. _. | _. _. | _. _. om te bevestigen dat de replicatie is functioneel | _. _. Controleer dat de database goed is gerepliceerd op onze | _. _. Slavische | _. _. De database die we op onze master's gemaakt zo goed automatisch op onze twee Slavische worden gerepliceerd. | _. _. zullen onze meester | _. _. | _. _. zullen een slaaf | _. _. Postgres | _. _. zal worden een tweede slaaf | _. _. Aangegeven bestellingen word wanneer ze worden voorafgegaan van | _. _. en als de -systeemgebruiker wanneer ze worden voorafgegaan van | _. _. Installatie van PostgreSQL en preconfiguratie van alle drie de servers: _! _ | Alle bestellingen voor dit deel zijn te doen op elk van de servers. (Een eerste stap, is het raadzaam een bestand | _. _. gevuld met verbindingen aan elke server, als volgt: _! _ | door aan te passen met de hostnamen en IP-adressen van uw eigen servers | _. _. Toevoegen indienen van APT PostgreSQL | _. _. Wij importeren de openbare sleutel van deze borg | _. _. We updaten de APT-cache om rekening te houden de storting | _. _. Wij installeren het pakket ql | _. _. Installeer de nieuwste stabiele versie is de | _. _. op het moment van dit schrijven | _. _. Het wordt een wachtwoord ingesteld | _. _. van zijn keuze maar veilig | _. _. en genereert een ssh van sleutelpaar | _. _. zonder passphrase | _. _. voor de postgres systeemgebruiker | _. _. We kopiëren de postgres gebruiker sinds en tussen van elke server publieke ssh sleutel | _. _. Sinds de eerste server | _. _. Postgres | _. _. in ons geval: _! _ | aan de seconde | _. _. Postgres | _. _. voor ons | _. _. en troisiseme | _. _. Postgres | _. _. Van de tweede naar de eerste en de derde server | _. _. Van de derde naar de eerste en de tweede server | _. _. Configuratie van de meester: _! _ | Alleen de meester doen: _! _ | Postgres | _. _. in ons geval: _! _ | Wij maken de rol | _. _. gebruiker replicatie: _! _ | Opmerking: _! _ | We definiëren een verbindingslimiet van | _. _. omdat we hebben | _. _. Slavische | _. _. Wij bewerken de belangrijkste configuratiebestand voor postgresql | _. _. instellen van de volgende richtlijnen: _! _ | Opmerking: _! _ | Wij activeren archivering naar onze tweede server | _. _. aanpassen van het IP adres van uw server | _. _. voor nog meer voorzorgsmaatregelen, maar dit is niet verplicht. Wij definiëren ook de parameters hot_standby, Nou dat op een meester, in welk geval het genegeerd moet worden gedegradeerd tot slaaf in de toekomst. ) Het publiceert nu het verificatiebestand postgresql | _. _. om toe te voegen onze Gebruikersautorisatie van replicatie vanaf onze Slavische of de volgende regel aan het einde van het bestand met verbinding maken: _. _ | Gelieve te passen deze lijn volgens de naam van uw replicatie en netwerk gebruiker | _. _. of respectieve IP-adressen: _! _ | van uw Slavische | _. _. Herstarten van de postgresql dienst rekening te houden met onze configuratie | _. _. in wortel | _. _. Dit zorgt ervoor dat de service is gestart | _. _. Configuratie van de Slavische | _. _. Op de eerste slaaf | _. _. Laten we stoppen met de postgresql service | _. _. Wij bewerken de belangrijkste configuratiebestand voor postgresql | _. _. configureren dezelfde richtlijnen als de kapitein, door afstemming van alleen het IP-adres van de eerste slaaf door die van de tweede slaaf in de archief rsync commando als je wilt om het te activeren ofwel | _. _. Het publiceert nu het verificatiebestand postgresql | _. _. de vergunning van de gebruiker van onze replicatie aansluiten van onze andere servers toevoegen: _! _ | Het doet dat in het geval dat deze slaaf meester moet bevorderd | _. _. Opmerking: _! _ | Met deze configuratie vergelijkbaar met die van onze meester toelaat om gemakkelijk te bevorderen deze slaaf als een meester in geval van nood.
Voor operaties hieronder, Meld u aan als gebruiker systeem postgres | _. _. We maken van de map van bestemming van de wal van de master archieven | _. _. We verwijderen de gegevensmap postgresql | _. _. Het maakt de basis van de back-up | _. _. het IP adres van je meester en de naam van uw gebruiker van replicatie aanpassen :
, wordt u gevraagd om het wachtwoord van uw gebruiker van replicatie | _. _. U replicatie configureren door het maken van het bestand | _. _. met de volgende parameters: _! _ | Opmerking: _! _ | De trigger-bestand is het bestand dat wij maken wanneer we zijn slaaf stop replicatie willen en begint te accepteren van de Schrift dat is wanneer we willen om het te promoten als master. Voor de bevordering van een crash van de slaaf van zijn meester, zorg ervoor dat de oorspronkelijke master Nee om te voorkomen dat eventuele corruptie komen. 3 Wortel, gaan we terug en we beginnen de dienst: _! _ | Dit zorgt ervoor dat de service is gestart | _. _. Als we verbinding met onze meester, kunnen we al controleren onze replicatie tussen de kapitein en de eerste slaaf is functioneel | _. _. Het verbindt met onze meester en we verbinding maakt in postgres systeemgebruiker | _. _. Dan wij verbinden mql | _. _. Wij activeren de uitgebreide weergave en we controleren onze replicatie | _. _. Onze asynchrone streaming replicatie met onze eerste slaaf is goed gemaakt. Op dit punt hebben wij een Master replicatie | _. _. Klassieke slaaf | _. _. één slave asynchrone streaming | _. _. Op de tweede slaaf | _. _. Herhaal hetzelfde wat werd gedaan op de eerste slaaf natuurlijk de hostnaam in het bestand recovery.conf en IP-adres in de volgorde van inchecken in de belangrijkste configuratiebestand aan te passen als u wilt ook op deze tweede slaaf archivering inschakelen. 8 (Audit en proef van onze multi master replicatie slaven | _. _. Het verbindt aan de kapitein en u bent ingelogd gebruiker postgres) :
Postgres01 (10.1.1.75) : Om het te verwijderen, sinds de meester
Postgres02 (10.1.1.90) :
Postgres03 (10.1.1.199) :
"#" "$".
/etc/hosts () :
# cat /etc/hosts 127.0.0.1 localhost 10.1.1.75 postgres01 10.1.1.90 postgres02 10.1.1.199 postgres03
:
# 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
()
(en root) :
# 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 et postgres03).
(ex : checkrep) :
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;
Automatisch bijwerken van reacties inschakelen