PostgreSQL replikacji niewolników multi: Różnice pomiędzy wersjami

Z Pl Ikoula wiki
Przejdź do nawigacji Przejdź do wyszukiwania
Linia 1: Linia 1:
 +
<span data-link_translate_ro_title="PostgreSQL replicare sclavi multi"  data-link_translate_ro_url="PostgreSQL+replicare+sclavi+multi"></span>[[:ro:PostgreSQL replicare sclavi multi]][[ro:PostgreSQL replicare sclavi multi]]
 
<span data-link_translate_ru_title="PostgreSQL репликации рабы multi"  data-link_translate_ru_url="PostgreSQL+%D1%80%D0%B5%D0%BF%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8+%D1%80%D0%B0%D0%B1%D1%8B+multi"></span>[[:ru:PostgreSQL репликации рабы multi]][[ru:PostgreSQL репликации рабы multi]]
 
<span data-link_translate_ru_title="PostgreSQL репликации рабы multi"  data-link_translate_ru_url="PostgreSQL+%D1%80%D0%B5%D0%BF%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D0%B8+%D1%80%D0%B0%D0%B1%D1%8B+multi"></span>[[:ru:PostgreSQL репликации рабы multi]][[ru:PostgreSQL репликации рабы multi]]
 
<span data-link_translate_ja_title="PostgreSQL のレプリケーション スレーブ マルチ"  data-link_translate_ja_url="PostgreSQL+%E3%81%AE%E3%83%AC%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3+%E3%82%B9%E3%83%AC%E3%83%BC%E3%83%96+%E3%83%9E%E3%83%AB%E3%83%81"></span>[[:ja:PostgreSQL のレプリケーション スレーブ マルチ]][[ja:PostgreSQL のレプリケーション スレーブ マルチ]]
 
<span data-link_translate_ja_title="PostgreSQL のレプリケーション スレーブ マルチ"  data-link_translate_ja_url="PostgreSQL+%E3%81%AE%E3%83%AC%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3+%E3%82%B9%E3%83%AC%E3%83%BC%E3%83%96+%E3%83%9E%E3%83%AB%E3%83%81"></span>[[:ja:PostgreSQL のレプリケーション スレーブ マルチ]][[ja:PostgreSQL のレプリケーション スレーブ マルチ]]

Wersja z 04:18, 19 sie 2016

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.