Replikacja wielu słowiańskich PostgreSQL: Różnice pomiędzy wersjami
| Linia 1: | Linia 1: | ||
| + | <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 славянских репликации]] | ||
<span data-link_translate_ja_title="レプリケーション PostgreSQL スラブ マルチ" data-link_translate_ja_url="%E3%83%AC%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3+PostgreSQL+%E3%82%B9%E3%83%A9%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="%E3%83%AC%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3+PostgreSQL+%E3%82%B9%E3%83%A9%E3%83%96+%E3%83%9E%E3%83%AB%E3%83%81"></span>[[:ja:レプリケーション PostgreSQL スラブ マルチ]][[ja:レプリケーション PostgreSQL スラブ マルチ]] | ||
Wersja z 19:31, 2 cze 2016
ro:Replicare PostgreSQL slave multi
ru:Multi PostgreSQL славянских репликации
ja:レプリケーション PostgreSQL スラブ マルチ
ar:النسخ المتماثل السلافية كيو متعدد
zh:复制 PostgreSQL 斯拉夫语多
de:Replikation PostgreSQL slawischen multi
nl:Replicatie PostgreSQL Slavische multi
it:Replica PostgreSQL slavo multi
pt:Replicação PostgreSQL eslavo multi
es:Replicación multi de PostgreSQL Slavic
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 PostgreSQL streaming 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żna uruchomić kwerendy (tylko do odczytu ) na tych.
Kontekście tego placementu :
Mamy 3 Serwerów Debiana 8 (Ostatnia aktualizacja ) :
Postgres 01 (10.1.1.75) : będzie naszym Panem
Postgres02 (10.1.1.90) : niewolnikami
Postgres03 (10.1.1.199) : będzie drugi niewolnikiem
Określone polecenia będzie wykonywać jako root, gdy są one poprzedzone "#" i jako użytkownik systemu Postgres , gdy są one poprzedzone "$".
Instalacji PostgreSQL i wstępnej konfiguracji trzech serwerów
Wszystkie polecenia w tej części muszą być wykonane na każdym z serwerów.
Jako pierwszy krok, zaleca się, aby mieć jeden plik /etc/hosts wypełniony dopasowania każdego serwera, takiego (poprzez dostosowanie przy użyciu adresów ip i nazw hostów własne serwery ) :
# 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
Dodać depozyt APT PostgreSQL :
# echo "deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/postgres.list
Możemy importować klucz publiczny depozyt :
# 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
Aktualizuje pamięć podręczną APT, aby uwzględnić depozyt :
# apt-get update
Instalowanie pakietu postgresql (Zainstaluj Najnowsza stabilna wersja to 9.5 w tym czasie, gdzie te linie są zapisywane ) :
# apt-get install postgresql
Możemy zdefiniować hasło (jego wybór, ale bezpieczne ) i generuje pary kluczy ssh (bez hasła ) dla systemu użytkownika postgres :
# passwd postgres
# su - postgres
$ ssh-keygen
Możemy skopiować użytkownika postgres z i między każdego serwera publicznego ssh klucz :
Od pierwszego serwera (postgres01 w naszym przypadku ) w kierunku drugiego (postgres02 dla nas ) i troisiseme (postgres03) :
root@postgres01:~# su - postgres
postgres@postgres01:~$ ssh-copy-id postgres02
postgres@postgres01:~$ ssh-copy-id postgres03
Od drugiego do pierwszego i trzeciego serwera :
root@postgres02:~# su - postgres
postgres@postgres02:~$ ssh-copy-id postgres01
postgres@postgres02:~$ ssh-copy-id postgres03
Od trzeciej do pierwszego i drugiego serwera :
root@postgres03:~# su - postgres
postgres@postgres03:~$ ssh-copy-id postgres01
postgres@postgres03:~$ ssh-copy-id postgres02
W konfiguracji Master
Czy tylko na wzorcu (postgres01 w naszym przypadku ) :
Tworzy on rola /użytkownik replikacja :
# su - postgres
$ psql -c "CREATE USER repuser REPLICATION LOGIN CONNECTION LIMIT 2 ENCRYPTED PASSWORD '<mot de passe repuser>';"
Uwaga : Określa limit połączeń z 2 ponieważ mamy 2 Słowiańskie
Edytowanie plik konfiguracji głównego postgresql /etc/postgresql/9.5/main/postgresql.conf Aby skonfigurować następujących dyrektyw :
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
Uwaga : Możemy włączyć archiwizację na nasz drugi serwer (Dostosowywanie adresu ip serwera ) dla jeszcze bardziej środki ostrożności. Możemy również zdefiniować parametry hot_standby, dobrze, że ignorowane na mistrza, gdzie powinien być obniżony do niewolniczej pracy w przyszłości.
Teraz Edycja pliku uwierzytelniania postgresql /etc/postgresql/9.5/main/pg_hba.conf Aby dodać uprawnienie nasz użytkownik replikacja do łączenia się z naszych słowiańskich lub następujący wiersz na końcu pliku :
hostssl replication repuser <ip du réseau de vos serveurs>/24 md5
Należy dostosować ten wiersz zgodnie z nazwą użytkownika replikacji i sieci (lub adresy ip odpowiednich ) z Twoim słowiańskie
Ponownym uruchomieniu usługa postgresql do uwzględnienia naszej konfiguracji (w głównym ) :
# systemctl restart postgresql
Gwarantuje to, że usługa jest uruchomiona prawidłowo :
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
Konfiguracja Słowian
Na pierwszym podrzędnym
Zaczynamy od zatrzymania usługa postgresql :
# systemctl stop postgresql
Edytowanie plik konfiguracji głównego postgresql /etc/postgresql/9.5/main/postgresql.conf Aby skonfigurować te same wytyczne jako kapitan, dostosowując tylko ip pierwszego niewolnika przez drugi slave w polecenia rsync, aby zarchiwizować albo :
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
Teraz Edycja pliku uwierzytelniania postgresql /etc/postgresql/9.5/main/pg_hba.conf Aby dodać uprawnienie nasz użytkownik replikacja połączyć się z innych serwerów (To będzie używany, gdy ten niewolnik oczekiwany awans mistrza ) :
hostssl replication repuser <ip du réseau de vos serveurs>/24 md5
Uwaga : W tej konfiguracji, które są podobne do naszego mistrza pozwoli łatwo promować ten niewolnik jako master, w razie potrzeby.
Dla operacji poniżej, zaloguj się jako system użytkownika postgres :
# su – postgres
Tworzymy katalog docelowy dla wal głównego Archiwum :
$ mkdir /var/lib/postgresql/wal_archive
Usuwa katalog danych postgresql :
$ rm -rf /var/lib/postgresql/9.5/main
To sprawia, że podstawowej kopii zapasowej (dostosować ip swojego mistrza i nazwę użytkownika replikacji ), hasło użytkownika replikacji, pojawi się monit :
$ pg_basebackup -h <ip de votre master> -D /var/lib/postgresql/9.5/main -U repuser -v -P --xlog
Umożliwia skonfigurowanie replikacji, tworząc plik /var/lib/postgresql/9.5/main/recovery.conf z następującymi parametrami :
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'
Uwaga : Wyzwalacz jest plik tworzymy, gdy chcemy, aby jego niewolnica replikacja zatrzymuje się i rozpocznie przyjmowanie zapisów — Kiedy chcesz promować go jako master. Przed podwyższeniem niewolnikiem w przypadku awarii swojego mistrza, upewnij się, że wzorzec początkowy nie wzrośnie do uniknięcia korupcji.
Wracamy do głównego i uruchamia usługę :
# systemctl start postgresql
Gwarantuje to, że Usługa uruchomiona poprawnie :
# 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
Jeśli łączy się nasz mistrz, możemy już sprawdzić nasze replikacji między głównym i podrzędnym pierwszego jest funkcjonalne :
Łączy się nasz mistrz i łączy w systemie użytkownika postgres :
# su - postgres
Następnie połączenie do postgresql :
$ psql
Umożliwia wyświetlanie rozszerzonych i możemy sprawdzić nasze replikacji :
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
Nasze replikacji asynchronicznej transmisji strumieniowej z naszego pierwszego niewolnika jest dobrze zrobiony. Ten etap ma wzorzec replikacji /Klasyczne niewolnik (pojedynczy niewolnik asynchronicznego przesyłania strumieniowego )
Na drugim niewolnikiem
Możemy Redid to samo, co zostało zrobione w pierwszym niewolnik oczywiście dostosowując jego nazwy hosta w pliku recovery.conf i ip adres w poleceniu archiwizacji w plik konfiguracji głównego, jeśli chcesz włączyć archiwizację na ten drugi niewolnikiem.
Weryfikacja i testowanie naszej multi master replikacji słowiańskie
Łączy do mistrza i jest rejestrowany w użytkownika postgres :
# su – postgres
Następnie połączenie do postgresql :
$ psql
Umożliwia wyświetlanie rozszerzonych i możemy sprawdzić nasze replikacji :
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
Tak tam dobrze nasze 2 replikacja z naszych dwóch słowiańskich serwerów (postgres02 i postgres 03).
Nadal podłączony do postgresql na mistrza, to tworzy dane podstawowej (ex : checkrep ) :
postgres=# CREATE DATABASE checkrep;
Sprawdza się, że bazy danych również jest replikowany na naszych 2 Słowiańskie :
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)
Bazy danych, który stworzyliśmy na nasz Mistrz jest jest tak dobrze automatycznie replikowane do naszych dwóch słowiańskich.
Aby usunąć, od mistrza :
postgres=# DROP DATABASE checkrep;
Włącz automatyczne odświeżanie komentarzy