Capturar planos de execução nas réplicas do Aurora PostgreSQL
O QPM (gerenciamento de planos de consulta) permite capturar os planos de consulta gerados pelas réplicas do Aurora e armazená-los na instância de banco de dados primária do cluster de banco de dados do Aurora. Você pode coletar os planos de consulta de todas as réplicas do Aurora e manter um conjunto de planos ideais em uma tabela persistente central na instância primária. Então, você pode aplicar esses planos a outras réplicas quando necessário. Isso ajuda você a manter a estabilidade dos planos de execução e melhorar a performance das consultas nos clusters de banco de dados e nas versões do mecanismo.
Pré-requisitos
Ativar capture_plan_baselines parameter
na réplica do Aurora: defina o parâmetro capture_plan_baselines
como automático ou manual para capturar os planos nas réplicas do Aurora. Para ter mais informações, consulte apg_plan_mgmt.capture_plan_baselines.
Instalar a extensão postgres_fdw: você deve instalar a extensão postgres_fdw
externa do wrapper de dados para capturar os planos nas réplicas do Aurora. Para instalar a extensão, execute o command a seguir o em cada banco de dados.
postgres=>
CREATE EXTENSION IF NOT EXISTS postgres_fdw;
Gerenciar a captura de planos em réplicas do Aurora
Ativar a captura de planos em réplicas do Aurora
Você deve ter privilégios de rds_superuser
para criar ou remover a captura de planos nas réplicas do Aurora. Para obter mais informações sobre funções e permissões de usuário, consulte Noções básicas de perfis e permissões do PostgreSQL.
Para capturar planos, chame a função apg_plan_mgmt.create_replica_plan_capture na instância de banco de dados de gravação, conforme mostrado a seguir:
postgres=>
CALL apg_plan_mgmt.create_replica_plan_capture('endpoint'
,'password'
);
endpoint: o endpoint de gravador ou o cluster_endpoint do Aurora Global Database oferece suporte a failover para captura de planos em réplicas do Aurora.
Para ter mais informações sobre o endpoint de gravador do Aurora Global Database, consulte Visualizar os endpoints de um Amazon Aurora Global Database.
Para ter mais informações sobre endpoints do cluster, consulte Endpoints de cluster para Amazon Aurora.
Senha: siga as diretrizes abaixo ao criar a senha para aumentar a segurança:
Deve conter pelo menos oito caracteres.
Deve conter pelo menos uma letra maiúscula, uma letra minúscula e um número.
Deve ter pelo menos um caractere especial (
?
,!
,#
,<
,>
,*
e assim por diante).
nota
Se você alterar o endpoint, a senha ou o número da porta, deverá executar apg_plan_mgmt.create_replica_plan_capture()
novamente com o endpoint e a senha para reinicializar a captura de plano. Caso contrário, os planos de captura das réplicas do Aurora falharão.
Desativar a captura de planos em réplicas do Aurora
Você pode desativar o parâmetro capture_plan_baselines
na réplica do Aurora definindo o respectivo valor como off
no grupo de parâmetros.
Remover a captura de planos em réplicas do Aurora
Você pode remover completamente a captura de planos nas réplicas do Aurora, mas certifique-se antes de fazer isso. Para remover a captura de planos, chame apg_plan_mgmt.remove_replica_plan_capture
conforme mostrado:
postgres=>
CALL apg_plan_mgmt.remove_replica_plan_capture();
Você deve chamar apg_plan_mgmt.create_replica_plan_capture() novamente para ativar a captura de planos nas réplicas do Aurora com o endpoint e a senha.
Solução de problemas
A seguir vão algumas ideias e soluções alternativas de problemas caso o plano não seja capturado nas réplicas do Aurora conforme o esperado.
Configurações de parâmetros: verifique se o parâmetro
capture_plan_baselines
está definido com o valor adequado para ativar a captura de planos.A extensão
postgres_fdw
está instalada: use a consulta a seguir para verificar sepostgres_fdw
está instalada.postgres=>
SELECT * FROM pg_extension WHERE extname = 'postgres_fdw'create_replica_plan_capture() é chamado: use o comando a seguir para verificar se o mapeamento do usuário existe. Caso contrário, chame
create_replica_plan_capture()
para inicializar o atributo.postgres=>
SELECT * FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';Endpoint e número da porta: verifique se o endpoint e o número da porta são apropriados. Não haverá nenhuma mensagem de erro exibida se esses valores estiverem incorretos.
Use o comando a seguir para verificar se o endpoint é usado no create() e para verificar em qual banco de dados ele reside:
postgres=>
SELECT srvoptions FROM pg_foreign_server WHERE srvname = 'apg_plan_mgmt_writer_foreign_server';reload (): você deve chamar apg_plan_mgmt.reload() depois de chamar apg_plan_mgmt.delete_plan() nas réplicas do Aurora para tornar a função delete efetiva. Isso garante que a mudança seja implementada com sucesso.
Senha: você deve inserir a senha em create_replica_plan_capture() de acordo com as diretrizes mencionadas. Caso contrário, você receberá uma mensagem de erro. Para obter mais informações, consulte Gerenciar a captura de planos em réplicas do Aurora. Use outra senha que esteja de acordo com os requisitos.
Conexão entre regiões: a captura de planos nas réplicas do Aurora também é compatível com o banco de dados global do Aurora, onde a instância de gravação e as réplicas do Aurora podem estar em regiões diferentes. Use o endpoint de gravador do Aurora Global Database para manter a conectividade após eventos de failover ou transição. Para ter mais informações sobre os endpoints do Aurora Global Database, consulte Visualizar os endpoints de um Amazon Aurora Global Database. A instância de gravação e a réplica entre regiões devem ser capazes de se comunicar usando o emparelhamento de VPC. Para obter mais informações, consulte Emparelhamento de VPC. Se ocorrer um failover entre regiões, você deverá reconfigurar o endpoint com o novo endpoint primário do cluster de banco de dados.
nota
Ao usar um endpoint de cluster em vez de um endpoint de gravador do Aurora Global Database, você precisará atualizar o endpoint de cluster depois de realizar uma operação de failover ou transição global.