PostgreSQL replikacji niewolników multi

Z Pl Ikoula wiki
Przejdź do nawigacji Przejdź do wyszukiwania
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

pl:PostgreSQL replikacji niewolników multi en:PostgreSQL replication slaves multi he:PostgreSQL שכפול עבדים רב ro:PostgreSQL replicare sclavi multi ru:PostgreSQL репликации рабы multi ja:PostgreSQL のレプリケーション スレーブ マルチ ar:كيو النسخ المتماثل العبيد متعددة zh:PostgreSQL 复制奴隶多 de:PostgreSQL Replikation Sklaven multi 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

Artykuł ten jest wynikiem translacji automatycznej wykonywane przez oprogramowanie. Możesz przeglądać źródła artykułu tutaj.

Wprowadzenie | _. _. Niniejsza strona prezentuje implementacji asynchronicznego przesyłania strumieniowego PostgreSQL replikacji z jednego głównego i dwóch niewolników. Nasze słowiańskie zostaną skonfigurowane jako gorący stan gotowości, to znaczy że będzie możliwe do wykonania kwerendy | _. _. tylko do odczytu | _. _. na tych.

Kontekście Ta implementacja | _. _. Mamy | _. _. Serwerów Debiana | _. _. Aktualizacja | _. _. Następnie podłączamy do ql | _. _. Uruchamiamy rozszerzonym wyświetlaczem i możemy sprawdzić nasze replikacji | _. _. Mamy tak wiele naszych | _. _. replikacja z naszych dwóch słowiańskich serwerów | _. _. | _. _. i | _. _. Zawsze podłączony do ql na wzorcu, tworzenie testowej bazy danych | _. _. | _. _. | _. _. Aby potwierdzić, że replikacja jest funkcjonalne | _. _. Sprawdź że baza jest dobrze replikowane na naszych | _. _. Słowiańskie | _. _. Bazy danych, który stworzyliśmy na nasz Mistrz jest tak dobrze automatycznie replikowane na naszych dwóch słowiańskich. | _. _. będzie naszym Panem | _. _. | _. _. niewolnikami | _. _. Postgres | _. _. będzie drugi niewolnikiem | _. _. Wskazane, zamówienia będą root gdy są poprzedzone z | _. _. i jako systemu użytkownika, gdy są poprzedzone z | _. _. Instalacji PostgreSQL i wstępnej konfiguracji wszystkich trzech serwerów: _! _ | Wszystkie zamówienia tej części są na każdym z serwerów. (Jako pierwszy krok, zaleca się, aby mieć segregator | _. _. wypełniona połączeń do każdego serwera, jak to: _! _ | poprzez dostosowanie przy użyciu adresów ip i nazw hostów własne serwery | _. _. Dodaj zgłoszenia APT PostgreSQL | _. _. Możemy importować klucz publiczny depozyt | _. _. Aktualizujemy APT pamięci podręcznej, aby uwzględnić depozyt | _. _. Musimy zainstalować Pakiet ql | _. _. Zainstaluj Najnowsza stabilna wersja to | _. _. w momencie pisania tego tekstu | _. _. Ustawia hasło | _. _. jego wybór, ale bezpieczne | _. _. i generuje pary kluczy ssh | _. _. bez hasła | _. _. dla systemu użytkownika postgres | _. _. Możemy skopiować użytkownika postgres od i między każdego serwera publicznego ssh klucz | _. _. Od pierwszego serwera | _. _. Postgres | _. _. w naszym przypadku: _! _ | do drugiego | _. _. Postgres | _. _. dla nas | _. _. i troisiseme | _. _. Postgres | _. _. Od drugiego do pierwszego i trzeciego serwera | _. _. Od trzeciej do pierwszego i drugiego serwera | _. _. Konfiguracji Master: _! _ | Jak tylko mistrz: _! _ | Postgres | _. _. w naszym przypadku: _! _ | Możemy utworzyć rolę | _. _. replikacja użytkownika: _! _ | Uwaga: _! _ | Możemy zdefiniować limit połączeń z | _. _. ponieważ mamy | _. _. Słowiańskie | _. _. Możemy edytować plik konfiguracji głównego PostgreSQL | _. _. Aby skonfigurować następujące wytyczne: _! _ | Uwaga: _! _ | Uruchamiamy archiwizacji na nasz drugi serwer | _. _. dostosować adres IP Twojego serwera | _. _. nawet więcej środków ostrożności, ale to nie jest obowiązek. Możemy również zdefiniować parametry hot_standby, dobrze że ignorowane wzorca, w którym to przypadku to powinien być obniżony do niewolniczej pracy w przyszłości. ) To teraz publikuje plik uwierzytelniania postgresql | _. _. Aby dodać naszej autoryzacji użytkownika replikacja do łączenia się z naszych słowiańskich lub następujący wiersz na końcu pliku: _. _ | Należy dostosować ten wiersz zgodnie z nazwą użytkownika replikacji i sieci | _. _. lub odpowiednich adresów: _! _ | z Twoim słowiańskie | _. _. Uruchom ponownie usługę postgresql, aby wziąć pod uwagę nasze konfiguracji | _. _. w głównym | _. _. Gwarantuje to, że usługa została pomyślnie uruchomiona | _. _. Konfiguracja słowiańskie | _. _. Na pierwszym podrzędnym | _. _. Zatrzymajmy się usługa postgresql | _. _. Możemy edytować plik konfiguracji głównego PostgreSQL | _. _. Aby skonfigurować takie same wytyczne jako kapitan, dostosowując tylko adres IP pierwszego niewolnika, przez który drugi slave w archiwum rsync polecenie, jeśli chcesz aktywować go albo | _. _. To teraz publikuje plik uwierzytelniania postgresql | _. _. Aby dodać autoryzacji naszego użytkownika replikacja połączyć się z innych serwerów: _! _ | Będzie to że, w przypadku, gdy ten niewolnik powinien promować master | _. _. Uwaga: _! _ | W tej konfiguracji podobnej do naszego mistrza, pozwala łatwo promować ten niewolnik jako wzorzec w razie potrzeby.


Dla operacji poniżej, zaloguj się jako użytkownik systemu postgres | _. _. Tworzymy katalog przeznaczenia wal głównego Archiwum | _. _. Możemy usunąć katalogu danych postgresql | _. _. To sprawia, że podstawowej kopii zapasowej | _. _. dostosować ip swojego mistrza i nazwę użytkownika, replikacja :


, pojawi się monit, na hasło użytkownika replikacja | _. _. Konfigurowanie replikacji, tworząc plik | _. _. z następującymi parametrami: _! _ | Uwaga: _! _ | Wyzwalacz pliku jest plik, który tworzymy, gdy chcemy, aby jego niewolnik stop replikacji i zaczyna akceptować pisma, które jest, gdy chcemy promować go jako master. Przed podwyższeniem awarii niewolnikiem swego mistrza, upewnij się, że wzorzec początkowy wymyślić nie, aby uniknąć wszelkich uszkodzeń. 3 Root, wracamy i możemy uruchomić usługę: _! _ | Gwarantuje to, że usługa została pomyślnie uruchomiona | _. _. Jeśli możemy podłączyć do naszego mistrza, możemy już sprawdzić nasze replikacji między głównym i podrzędnym pierwszego jest funkcjonalne | _. _. Łączy się nasz mistrz i my kontaktują się w postgres systemu użytkownika | _. _. Następnie podłączamy do postgresql | _. _. Uruchamiamy rozszerzonym wyświetlaczem i możemy sprawdzić nasze replikacji | _. _. Nasze replikacji asynchronicznej transmisji strumieniowej z naszego pierwszego niewolnika jest dobrze wykonane. W tym momencie mamy mistrza replikacji | _. _. Klasyczne niewolnik | _. _. pojedynczy niewolnik asynchronicznego przesyłania strumieniowego | _. _. Na drugim niewolnikiem | _. _. Powtórz to samo, co zostało zrobione w pierwszym niewolnik oczywiście dostosowując jego nazwy hosta w pliku recovery.conf i ip adres kolejności w w plik konfiguracji głównego, jeśli chcesz włączyć archiwizację na ten drugi niewolnikiem. 8 (Inspekcji i testów naszych Multi master replikacji Słowian | _. _. Łączy się z mistrzem i zalogowaniu użytkownika postgres) :

Postgres01 (10.1.1.75) : Aby usunąć go, od mistrza

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

()


() :
# 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 : 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;



Nie możesz publikować komentarzy.