Database Management PostgreSQL - cópia córrego Capítulo VII

anuário

   Capítulo VII cópia córrego

esboço

O termo refere-se à função de cópia 7,1

7.1.1 Master (Master)

7.1.2 servidor slave (escravo)

7.1.3 log write-ahead (Write Ahead Log, WAL)

7.1.4 Replication (Synchronous)

7.1.5 replicação assíncrona (assíncrono)

7.1.6 replicação vivo (streaming)

7.1.7 replicação em cascata (replicação em cascata)

7.2 Configuração Archive

7.3 com implantação de cópia fluxo assíncrono

7.3.1 principal implantação biblioteca

1 para criar um usuário na biblioteca principal acima

2 parâmetros de configuração postgresql.conf

3 pg_hba.conf

7.3.2 implantação diferente da biblioteca

uma implantação

2 Crie um arquivo de recuperação recovery.conf

3 Iniciar

7.3.3 implantado a partir da mesma biblioteca

7.4 Teste

1 replicação verificação fluxo assíncrono

fluxo de verificação cópia 2 Sincronização

Monitorização 7.5 Transmissão de replicação

7.5.1 pg_stat_replication Vista detalhada

7.5.2 seleção Biblioteca situação de espera pg_is_in_recovery

7.5.3 verifique o fluxo de replicação

atraso de espera 7.5.4 Monitoramento


   Capítulo VII cópia córrego

esboço

Log copiar e streaming replicado.

Log copiar Introdução: A cópia mestre do write-ahead log para ativo um local seguro (diretamente para o servidor de backup, o terceiro servidor pode ser), enquanto o servidor de espera verificar, periodicamente, este local, e o write-ahead log copiados para o servidor de backup fim e, em seguida, reproduzir. Assim, mesmo se o servidor primário falhar, o servidor em espera também pode ser obtido a partir da posição de segurança para um registro completo, para garantir que nenhum dado seja perdido. Perda de dados para um arquivo de log de 16M.

Descrição streaming de replicação: o servidor principal directamente para o servidor de cópia de segurança através de log transferência do protocolo TCP, a fim de evitar a sobrecarga de copiar os dois, é vantajoso reduzir o servidor principal e o atraso de dados directa servidor de backup. No entanto, quando o servidor primário falhar, não é transferida para o log do servidor em espera está perdido, resultando em perda de dados.

 

fluxo de cópia, os dados correspondentes é sincronizada a partir do servidor principal a partir do servidor por meio de fluxo TCP. De modo que quando os dados do servidor primário do servidor quando o backup ainda está faltando.

Comparado com o envio de log baseado em arquivo, fluxo de replicação é permitido permanecer atualizado a partir do servidor. Conexão do servidor mestre, que registra o fluxo gerado para WAL do servidor, sem esperar que o servidor de arquivos primário WAL terminado.

replicação PostgreSQL streaming é assíncrono por padrão. Arquivado na transação servidor primário e há um pequeno atraso entre as mudanças observadas a partir do servidor, este atraso é muito menos do que uma transferência de arquivo baseado em log, tipicamente 1 segundo para completar. Se o servidor primário falhar de repente, pode haver uma pequena quantidade de perda de dados.

servidor mestre replicação síncrona e deve esperar antes de cometer uma transação a partir do servidor escrito WAL. Então, de certa forma, vai aumentar o tempo de resposta da transação.

O termo refere-se à função de cópia 7,1

A replicação é o nível de instância, todas as alterações de banco de dados são replicados em uma única instância.

7.1.1 Master (Master)

O servidor primário é a fonte dos dados a ser copiado como um servidor de banco de dados, todas as atualizações acontecem nele. Ao usar a replicação interna de PostgreSQL, permite apenas onze servidor primário.

7.1.2 servidor slave (escravo)

servidor de dados escravo usando a cópia e uma cópia do servidor principal. PostgreSQL embutido replicação atualmente suporta apenas somente leitura servidores escravos.

7.1.3 log write-ahead (Write Ahead Log, WAL)

WAL é gravar todas as informações para completar o arquivo de log de transações, em outros produtos de banco de dados geralmente conhecidas como logs de transação. A fim de replicação apoio, log PostgreSQL WAL abrirá o servidor principal para os servidores escravos, o servidor escravo e continuamente tomar estes para os logs locais, que, em seguida, repetir a operação descrita, alcançando assim a sincronização de dados.

7.1.4 Replication (Synchronous)

Fases transações, o PostgreSQL tem sido a necessidade de garantir o sucesso desta transação feita modificações para pelo menos um servidor de sincronização escravo antes de você com êxito pode enviar a transação para o feedback do usuário. Este modo de operação garante o mestre de dados e servidores escravos é sincronizado modificada dentro da mesma operação, assim chamado replicação síncrona. Se você configurar vários servidores escravos, basta escrever um sucesso mesmo se a apresentação for bem sucedida.

7.1.5 replicação assíncrona (assíncrono)

Fases transações, mesmo que a apresentação de sucesso é bem sucedida no servidor mestre, servidores escravos não precisa esperar para atualização de dados foi bem sucedida. Quando o servidor no modo escravo remoto é mais útil, porque o impacto dos atrasos de rede pode ser evitado. Mas boa base, este servidor de dados modo escravo suficientes atualizações em tempo, haverá algum atraso entre o servidor mestre. Quando a falha de transmissão ocorre, o servidor escravo pode perder alguns dados da transação.

7.1.6 replicação vivo (streaming)

De PostgreSQL versão 9.0 começou a apoiar streaming de replicação. Nas versões anteriores, o log WAL é transmitida a partir do servidor principal para o servidor escravo por copiar arquivos diretamente, mas o padrão de fluxo é replicado através de mensagem de passagem.

7.1.7 replicação em cascata (replicação em cascata)

versão 9.2 partida, um servidor escravo pode log WAL é passado para outro - um servidor escravo sem todos os escravos tomaram o WAL do servidor primário, em - reduzir ainda mais a carga sobre o servidor host. Neste modo, algum servidor sincronização escravo pode agir como uma fonte de dados para continuar os dados propagação para outro servidor WAL escravo, a partir dessa perspectiva, o efeito semelhante ao servidor principal. Note que este desempenha um servidor subordinado papel "WAL log setter" é, que também é conhecido como um servidores cascata de escravos somente leitura.

 

7.2 Configuração Archive

Estabelecer um directório de arquivo

[Postgres @ Redhat7 ~] $ mkdir / pgdb / pgarchivedir /

--pgdata em postgresql.conf

wal_level = réplica

archive_mode = on

archive_command = 'teste! -f / pg_archivedir / f% && cp% p / pg_archivedir /% f'  

- Restart pg systemctl restart postgresql-10.service

 

postgres = # show wal_level;

 wal_level

réplica

 

postgres = # show archive_mode;

 archive_mode

em

 

postgres = # show archive_command;

                    archive_command                    

-------------------------------------------------- ------

 teste ! -f / pg_archivedir / f% && cp% p / pg_archivedir /% f

7.3 com implantação de cópia fluxo assíncrono

Sincronizando o banco de dados primário e PostgreSQL relaciona os seguintes documentos:

regras de acesso a arquivos de biblioteca principal pg_hba.conf PostgreSQL

postgresql.conf postgresql arquivo de configuração da biblioteca principal

recovery.conf postgresql preparado pela biblioteca para acesso a principal arquivo de configuração de biblioteca

.pgpass senha do arquivo de backup do banco de dados PostgreSQL para acessar a biblioteca principal

Sob replicação normal fluxo de espera:

biblioteca principal precisa pg_hba.conf, postgresql.conf

equipamentos biblioteca precisa recovery.conf, .pgpass

7.3.1 principal implantação biblioteca

1 para criar um usuário na biblioteca principal acima

Fluxo conexões no backup do banco de dados de usuário de biblioteca mestre copiar acima usuário.

CRIAR repuser UTILIZADOR replicação LOGIN LIGAÇÃO LIMITE 3 senha criptografada 'repuser';

postgres = # CRIAR replicação repuser UTILIZADOR acesso codificado SENHA 'repuser';

CREATE ROLE

2 parâmetros de configuração postgresql.conf

postgresql.conf (mestre)

# 需要流复制物理备库、归档、时间点恢复时,设置为replica,需要逻辑订阅或逻辑备库则设置为logical 

wal_level = lógico # mínimo, réplica, ou lógica

# 如果底层存储能保证IO的原子写,也可以设置为OFF。

 

   

#full_page_writes = on

# Connection, permitindo acordo de replicação vários fluxos, de acordo com a demanda real, um valor padrão pode ser fornecido, por exemplo, 64. Se houver dois podem ser usados ​​escravo 10. Ela representa a principal biblioteca pode ter o número máximo de banco de dados standby concorrente,

max_wal_senders = 64

# 根据实际情况设置保留WAL的数量

wal_keep_segments = 5000

# Quanto slot de replicação é definido de acordo com as necessidades reais da situação a ser criada     

# Use ranhura, para garantir que o fluxo não pode copiar os nós de recebimento recebidos ficará permanentemente WAL atual. É necessário prestar atenção ao receber a jusante, ou pode causar WAL explosão do armazém     

# maiores Recomendado ou igual max_wal_senders

max_replication_slots = 64

 

# Descrição Esta máquina não é utilizado apenas para arquivamento de dados, mas também para consulta de dados

#hot_standby = on

# 建议关闭,以免备库长事务导致 主库无法回收垃圾而膨胀。

hot_standby_feedback = on

# Abrir arquivos

archive_mode = on

# Comando Arquivo

archive_command = 'teste! -f / pgdb / pgarchivedir / f% && cp% p / pgdb / pgarchivedir /% f'

 

 

3 pg_hba.conf

repuser replicação hospedeiro 192.168.27.0/24 MD5

7.3.2 implantação diferente da biblioteca

uma implantação

[Root @ pg11s ~] # systemctl parada postgresql-11.service

[Root @ pg11s ~] # rm -rf / pgdb / *

[Postgres @ pg11s ~] $ pg_basebackup -h 192.168.27.140 -U repuser -D / pgdb -X -P fluxo

Senha:

1776874/1776874 kB (100%), 1/1 do espaço de tabelas

2 Crie um arquivo de recuperação recovery.conf

cp -p /opt/pgsql11.4/share/recovery.conf.sample /pgdb/recovery.conf

standby_mode = on

# Indica que o nó é a partir do servidor

primary_conninfo = '= hospedeiro 192.168.27.140 porta = 5432 nome_aplicação = 141 = utilizador senha repuser = repuser' informações de ligação e de usuário # mestre escravo e informações

 

3 Iniciar

[Postgres @ pg11s ~] $ pg_ctl começar -D / pgdb

à espera de servidor para iniciar .... 2019-10-11 23: 30: 21.030 CST [6538] FATAL: diretório de dados "/ pgdb" tem permissões inválidas

2019/10/11 23: 30: 21,030 CST [6538] DETALHE: permissões deve ser u = rwx (0700) ou u = rwx, g = rx (0750).

 espera parado

pg_ctl: não foi possível iniciar o servidor

Examine a saída de log.

[Postgres @ pg11s ~] $ chmod 0750 / pgdb

 

 

[Postgres @ pg11s ~] $ pg_ctl começar -D / pgdb

à espera de servidor para iniciar .... 2019/10/11 23: 31: 26,779 CST [6550] FATAL: não foi possível acessar arquivo "pg_stat_statements": Nenhum tal lima ou diretório

pg_stat_statements instalação

[Root @ Redhat7 pg_stat_statements] # ​​make

[Pg_stat_statements root @ Redhat7] # make install

[Postgres @ pg11s ~] $ pg_ctl começar -D / pgdb

servidor lançado

 

postgres = # client_addr SELECT, application_name, sync_state DE pg_stat_replication;

  client_addr | application_name | sync_state

---------------- + ------------------ + ------------

192.168.27.141 | 141 | assíncrono

7.3.3 implantado a partir da mesma biblioteca

Primeiro de tudo implantado a partir da biblioteca, o nó mestre modificar parâmetros acima

synchronous_standby_names = '141'

# Conjunto a replicação é síncrona fluxo

 

[Postgres @ Redhat7 ~] $ psql

psql (11,4)

Digite "help" para obter ajuda.

 

postgres = # client_addr SELECT, application_name, sync_state DE pg_stat_replication;

  client_addr | application_name | sync_state

---------------- + ------------------ + ------------

 192.168.27.142 | 142 | assíncrono

 192.168.27.141 | 141 | sincronizar

 

7.4 Teste

[Postgres @ Redhat7 ~] $ psql

psql (11,4)

Digite "help" para obter ajuda.

 

postgres = # client_addr SELECT, application_name, sync_state DE pg_stat_replication;

  client_addr | application_name | sync_state

---------------- + ------------------ + ------------

 192.168.27.142 | 142 | assíncrono

 192.168.27.141 | 141 | sincronizar

1 replicação verificação fluxo assíncrono

servidor primário

postgres = # inserção em valores test1 (1, 'SYJ', 25);

A partir do servidor

postgres = # select * from test1;

 id | nomear | era

---- + ------ + -----

  1 | SYJ | 25

A partir do servidor

postgres = # inserção em valores test1 (2, 'SYJ', 21);

2019/10/11 23: 53: 01,642 CST [7760] ERRO: não é possível executar instruções INSERT em uma transação somente leitura

2019/10/11 23: 53: 01,642 CST [7760] DESCRIÇÃO: inserção em valores test1 (2, 'SYJ', 21);

ERRO: não é possível executar instruções INSERT em uma transação somente leitura

fluxo de verificação cópia 2 Sincronização

Fechar fluxo síncrono copiando máquina, ea replicação fluxo assíncrona assíncrona resto

postgres = # client_addr SELECT, application_name, sync_state DE pg_stat_replication;

  client_addr | application_name | sync_state

---------------- + ------------------ + ------------

 192.168.27.142 | 142 | assíncrono

(Uma linha)

 

inserir test1 valores (5, 'SYJ', 18);

impasse banco de dados mestre

replicação do servidor de streaming início síncrona

[Postgres @ pg11s ~] $ pg_ctl começar -D / pgdb

2019/10/12 22: 31: 54,455 CST [4346] REGISTRO: Duração: 46909.826 ms instrução: inserção em valores test1 (5, 'SYJ', 18);

INSERÇÃO 0 1

Inserir sucesso

Monitorização 7.5 Transmissão de replicação

7.5.1 pg_stat_replication Vista detalhada

pg_stat_replication é uma vista, principalmente para monitorizar uma vista em fluxo.

7.5.2 seleção Biblioteca situação de espera pg_is_in_recovery

Quando a biblioteca é ture preparado é t, f não é preparação fase, a biblioteca primária.

postgres = # seleccionar pg_is_in_recovery ();

 pg_is_in_recovery

-------------------

 f

(Uma linha)

7.5.3 verifique o fluxo de replicação

Select pid, estado, client_addr, application_name, sync_priority, sync_state de Pg_stat_replication;

atraso de espera 7.5.4 Monitoramento

 atraso WAL para gravação de atraso, atraso flush, atraso de repetição, correspondendo a write_lag pg_stat_replication, flush_lag, campo replay_lag.

pid SELECT, client_addr, estado, sync_state, write_lag, flush_lag, replay_lag DE pg_stat_replication;

Publicado 37 artigos originais · ganhou elogios 0 · Vistas 2397

Acho que você gosta

Origin blog.csdn.net/syjhct/article/details/104743086
Recomendado
Clasificación