Diferenças entre edições de "Multi de escravos de replicação PostgreSQL"
| (Há 2 revisões intermédias de outro utilizador que não estão a ser apresentadas) | |||
| Linha 1: | Linha 1: | ||
| + | <span data-link_translate_pt_title="Multi de escravos de replicação PostgreSQL" data-link_translate_pt_url="Multi de escravos de replicação PostgreSQL"></span>[[:pt:Multi de escravos de replicação PostgreSQL]][[pt:Multi de escravos de replicação PostgreSQL]] | ||
| + | <span data-link_translate_en_title="PostgreSQL replication slaves multi" data-link_translate_en_url="PostgreSQL+replication+slaves+multi"></span>[[:en:PostgreSQL replication slaves multi]][[en:PostgreSQL replication slaves multi]] | ||
<span data-link_translate_he_title="PostgreSQL שכפול עבדים רב" data-link_translate_he_url="PostgreSQL+%D7%A9%D7%9B%D7%A4%D7%95%D7%9C+%D7%A2%D7%91%D7%93%D7%99%D7%9D+%D7%A8%D7%91"></span>[[:he:PostgreSQL שכפול עבדים רב]][[he:PostgreSQL שכפול עבדים רב]] | <span data-link_translate_he_title="PostgreSQL שכפול עבדים רב" data-link_translate_he_url="PostgreSQL+%D7%A9%D7%9B%D7%A4%D7%95%D7%9C+%D7%A2%D7%91%D7%93%D7%99%D7%9D+%D7%A8%D7%91"></span>[[:he:PostgreSQL שכפול עבדים רב]][[he:PostgreSQL שכפול עבדים רב]] | ||
<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_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]] | ||
| Linha 12: | Linha 14: | ||
<span data-link_translate_fr_title="Replication PostgreSQL multi slaves" data-link_translate_fr_url="Replication_PostgreSQL_multi_slaves"></span>[[:fr:Replication PostgreSQL multi slaves]][[fr:Replication PostgreSQL multi slaves]] | <span data-link_translate_fr_title="Replication PostgreSQL multi slaves" data-link_translate_fr_url="Replication_PostgreSQL_multi_slaves"></span>[[:fr:Replication PostgreSQL multi slaves]][[fr:Replication PostgreSQL multi slaves]] | ||
<br /> | <br /> | ||
| + | |||
| + | {{#seo: | ||
| + | |title=Multi de escravos de replicação PostgreSQL | ||
| + | |title_mode=append | ||
| + | |keywords=these,are,your,keywords | ||
| + | |description=Multi de escravos de replicação PostgreSQL | ||
| + | |image=Uploaded_file.png | ||
| + | |image_alt=Wiki Logo | ||
| + | }} | ||
Este artigo foi traduzido por um sistema de tradução automática. Você pode visualizar a fonte do artigo [[:fr:Replication PostgreSQL multi slaves|aqui]].<br /><span data-translate="fr"></span> | Este artigo foi traduzido por um sistema de tradução automática. Você pode visualizar a fonte do artigo [[:fr:Replication PostgreSQL multi slaves|aqui]].<br /><span data-translate="fr"></span> | ||
| − | == Introdução | _. _. Esta página aborda a implementação de uma replicação assíncrona de PostgreSQL streaming com um mestre e dois escravos. Nosso eslavo será configurado como quente espera, isso quer dizer que será possível ecutar consultas | _. _. somente leitura | _. _. sobre estes. == | + | == Introdução | _. _. Esta página aborda a implementação de uma replicação assíncrona de [https://www.ikoula.pt/pt/postgresql-nuvem-publica PostgreSQL] streaming com um mestre e dois escravos. Nosso eslavo será configurado como quente espera, isso quer dizer que será possível ecutar consultas | _. _. somente leitura | _. _. sobre estes. == |
Edição atual desde as 13h46min de 27 de outubro de 2021
pt:Multi de escravos de replicação PostgreSQL
en:PostgreSQL replication slaves multi
he:PostgreSQL שכפול עבדים רב
ro:PostgreSQL replicare sclavi multi
ru:PostgreSQL репликации рабы multi
pl:PostgreSQL replikacji niewolników multi
ja:PostgreSQL のレプリケーション スレーブ マルチ
ar:كيو النسخ المتماثل العبيد متعددة
zh:PostgreSQL 复制奴隶多
de:PostgreSQL Replikation Sklaven multi
nl:PostgreSQL replicatie slaven multi
it:PostgreSQL replica schiavi multi
es:PostgreSQL replicación esclavos multi
fr:Replication PostgreSQL multi slaves
Este artigo foi traduzido por um sistema de tradução automática. Você pode visualizar a fonte do artigo aqui.
Introdução | _. _. Esta página aborda a implementação de uma replicação assíncrona de PostgreSQL streaming com um mestre e dois escravos. Nosso eslavo será configurado como quente espera, isso quer dizer que será possível ecutar consultas | _. _. somente leitura | _. _. sobre estes.
Contexto dessa implementação | _. _. Temos | _. _. Servidores Debian | _. _. atualizado | _. _. Em seguida, conectar ao ql | _. _. Podemos ativar a exibição estendida e verificamos nossa replicação | _. _. Temos tanto nosso | _. _. replicação com nossos dois servidores eslavas | _. _. | _. _. e | _. _. Sempre ligado ao ql no mestre, criar um banco de dados teste | _. _. ex | _. _. | _. _. para confirmar que a replicação é funcional | _. _. Verifique que o banco de dados é bem replicado em nosso | _. _. Eslava | _. _. O banco de dados que criamos em nosso mestre é tão bem automaticamente replicado em nossos dois eslavo. | _. _. será nosso mestre | _. _. | _. _. será um escravo | _. _. Postgres | _. _. será um escravo segundo | _. _. Indicado ordens será a raiz quando eles são precedidos de | _. _. e como o usuário do sistema quando eles são precedidos de | _. _. Instalação do PostgreSQL e pré-configuração de todos os três servidores: _! _ | Todos os pedidos desta parte são para fazer em cada um dos servidores. (Como primeiro passo, é aconselhável ter um arquivo | _. _. preenchida com conexões para cada servidor, assim: _! _ | adaptando-se com os nomes de host e os endereços ip dos seus próprios servidores | _. _. Adicionar arquivo APT PostgreSQL | _. _. Nós importamos a chave pública deste depósito | _. _. Nós atualizamos o cache do APT para ter em conta o depósito | _. _. Vamos instalar o pacote ql | _. _. instalar a última versão estável é o | _. _. no momento da redação deste texto | _. _. Ele define uma senha | _. _. da sua escolha mas seguro | _. _. e gera um par de chave ssh | _. _. sem senha | _. _. para o usuário postgres do sistema | _. _. Copiamos o usuário postgres desde e entre o público de cada servidor ssh chave | _. _. Desde o primeiro servidor | _. _. Postgres | _. _. no nosso caso: _! _ | para o segundo | _. _. Postgres | _. _. para nós | _. _. e troisiseme | _. _. Postgres | _. _. Do segundo para o primeiro e o terceiro servidor | _. _. Do terceiro para o primeiro e o segundo servidor | _. _. Configuração do mestre: _! _ | Fazer só o mestre: _! _ | Postgres | _. _. no nosso caso: _! _ | Nós criamos o papel | _. _. replicação de usuário: _! _ | Nota: _! _ | Podemos definir um limite de conexão de | _. _. Porque temos | _. _. Eslava | _. _. Vamos editar o arquivo de configuração principal do postgresql | _. _. para configurar as seguintes diretrizes: _! _ | Nota: _! _ | Podemos ativar arquivamento para nosso segundo servidor | _. _. personalizar o IP do seu servidor | _. _. para ainda mais precauções, mas isto não é uma obrigação. Podemos também definir os parâmetros hot_standby, bem que ignorou por um mestre, caso em que deve ser rebaixado para escravo no futuro. ) Agora publica o arquivo de autenticação do postgresql | _. _. para adicionar a nossa autorização de usuário de replicação para conectar da nosso eslavo ou a seguinte linha no final do arquivo: _. _ | Por favor se adaptar a esta linha de acordo com o nome de seu usuário de rede e replicação | _. _. ou respectivos ip endereços: _! _ | de seu eslavo | _. _. Reiniciar o serviço do postgresql para levar em conta nossa configuração | _. _. na raiz | _. _. Isso garante que o serviço foi iniciado com êxito | _. _. Configuração do eslavo | _. _. Sobre o primeiro escravo | _. _. Vamos parar o serviço do postgresql | _. _. Vamos editar o arquivo de configuração principal do postgresql | _. _. para configurar as mesmas diretrizes como o mestre, ajustando-se apenas o endereço IP do primeiro escravo por que o segundo escravo no rsync arquivo comando se você quiser ativá-lo ou | _. _. Agora publica o arquivo de autenticação do postgresql | _. _. para adicionar a autorização de nosso usuário de replicação se conectar de nossos outros servidores: _! _ | Fará isso no caso deste escravo deve promovido mestre | _. _. Nota: _! _ | Com essa configuração semelhante do nosso mestre permite facilmente promover este escravo como um mestre em caso de necessidade.
Para as operações abaixo, faça login como usuário sistema postgres | _. _. Nós criamos o diretório de destino do wal dos arquivos mestre | _. _. Podemos remover o diretório de dados do postgresql | _. _. Faz o backup de base | _. _. personalizar o ip de seu mestre e o nome do seu usuário de replicação :
, você será solicitado a senha de seu usuário de replicação | _. _. Você configurar a replicação, criando o arquivo | _. _. com os seguintes parâmetros: _! _ | Nota: _! _ | O arquivo de gatilho é o arquivo que criamos quando queremos sua replicação de paragem de escravo e começa a aceitar as escrituras que é quando queremos promovê-lo como mestre. Antes de promover uma queda de escravo de seu mestre, por favor, certifique-se de que o mestre inicial aparecer não para evitar qualquer dano. 3 Raiz, voltamos e começamos o serviço: _! _ | Isso garante que o serviço foi iniciado com êxito | _. _. Se ligamos para o nosso mestre, já podemos verificar a replicação entre o mestre e o escravo primeiro é funcional | _. _. Ele se conecta ao nosso mestre e nos conectamos em usuário do sistema postgres | _. _. Em seguida, conectar ao postgresql | _. _. Podemos ativar a exibição estendida e verificamos nossa replicação | _. _. Nossa replicação assíncrona de fluxo contínuo com nosso primeiro escravo é bem-feito. Neste momento temos um mestre replicação | _. _. Escravo clássico | _. _. um único escravo assíncrono de streaming | _. _. No segundo slave | _. _. Repita o mesmo que foi feito no primeiro slave obviamente adaptando seu hostname no endereço de ip e recovery.conf de arquivo na ordem de entrada no arquivo de configuração principal, se você também deseja Habilitar arquivamento sobre este segundo escravo. 8 (Auditoria e teste do nosso multi mestre replicação eslavos | _. _. Ele se conecta ao mestre e você está logado o usuário postgres) :
Postgres01 (10.1.1.75) : Para removê-lo, desde o mestre
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;
Ativar a atualização automática de comentários