Extensões do PostgreSQL na Base de Dados do Azure para PostgreSQL – Servidor Flexível
APLICA-SE A: Banco de Dados do Azure para PostgreSQL - Servidor Flexível
O servidor flexível do Banco de Dados do Azure para PostgreSQL fornece a capacidade de estender a funcionalidade do seu banco de dados usando extensões. As extensões agrupam vários objetos SQL relacionados em um único pacote que pode ser carregado ou removido do banco de dados com um comando. Depois de serem carregadas no banco de dados, as extensões funcionam como recursos internos.
Como usar extensões PostgreSQL
Antes de instalar extensões no Banco de Dados do Azure para servidor flexível PostgreSQL, você precisa permitir a lista dessas extensões para uso.
Usando o portal do Azure:
- Selecione sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL.
Usando a CLI do Azure:
Você pode permitir extensões por meio do comando conjunto de parâmetros CLI.
az postgres flexible-server parameter set --resource-group <resource_group> --server-name <server> --subscription <subscription_id> --name azure.extensions --value <extension_name>,<extension_name>
Usando o modelo ARM: O exemplo a seguir permite extensões dblink
, dict_xsyn
, pg_buffercache
em um servidor cujo nome é postgres-test-server
:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"flexibleServers_name": {
"defaultValue": "postgres-test-server",
"type": "String"
},
"azure_extensions_set_value": {
"defaultValue": " dblink,dict_xsyn,pg_buffercache",
"type": "String"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.DBforPostgreSQL/flexibleServers/configurations",
"apiVersion": "2021-06-01",
"name": "[concat(parameters('flexibleServers_name'), '/azure.extensions')]",
"properties": {
"value": "[parameters('azure_extensions_set_value')]",
"source": "user-override"
}
}
]
}
shared_preload_libraries
é um parâmetro de configuração de servidor que determina quais bibliotecas devem ser carregadas quando o servidor flexível do Banco de Dados do Azure para PostgreSQL é iniciado. Todas as bibliotecas que usam memória compartilhada devem ser carregadas por meio desse parâmetro. Se sua extensão precisar ser adicionada a bibliotecas de pré-carregamento compartilhadas, siga estas etapas:
Usando o portal do Azure:
- Selecione sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL.
- No menu de recursos, na seção Configurações , selecione Parâmetros do servidor.
- Procure o
shared_preload_libraries
parâmetro. - Selecione as bibliotecas que deseja adicionar.
:::image type="content" source="./media/concepts-extensions/shared-libraries.png" alt-text="Screenshot showing Azure Database for PostgreSQL -setting shared preload libraries parameter setting for extensions installation." lightbox="./media/concepts-extensions/shared-libraries.png":::
```Using [Azure CLI](/cli/azure/):
You can set `shared_preload_libraries` via CLI [parameter set](/cli/azure/postgres/flexible-server/parameter?view=azure-cli-latest&preserve-view=true) command.
```azurecli
az postgres flexible-server parameter set --resource-group <resource_group> --server-name <server> --subscription <subscription_id> --name shared_preload_libraries --value <extension_name>,<extension_name>
Criar extensão
Depois que as extensões são permitidas e carregadas, elas devem ser instaladas em cada banco de dados no qual você planeja usá-las.
- Um usuário deve ser um membro da
azure_pg_admin
função para criar uma extensão. Um membro daazure_pg_admin
função pode conceder privilégios a outros usuários para criar extensões. - Para instalar uma extensão específica, você deve executar o comando CREATE EXTENSION . Este comando carrega os objetos empacotados em seu banco de dados.
Nota
As extensões de terceiros oferecidas no Banco de Dados do Azure para o servidor flexível PostgreSQL são código licenciado de código aberto. Atualmente, não oferecemos extensões de terceiros ou versões de extensão com modelos de licenciamento premium ou proprietários.
A instância flexível do servidor do Banco de Dados do Azure para PostgreSQL dá suporte a um subconjunto de extensões principais do PostgreSQL, conforme listado na tabela a seguir. Esta informação também está disponível através da execução SHOW azure.extensions;
. Não há suporte para extensões não listadas neste documento no Banco de Dados do Azure para servidor flexível PostgreSQL. Não é possível criar ou carregar sua própria extensão no Banco de Dados do Azure para servidor flexível PostgreSQL.
Versões de extensão
As seguintes extensões estão disponíveis no Banco de Dados do Azure para servidor flexível PostgreSQL:
Nota
As extensões na tabela a seguir com a ✔️ marca exigem que suas bibliotecas correspondentes sejam habilitadas shared_preload_libraries
no parâmetro server.
Nome da extensão | Descrição | PostgreSQL 17 | PostgreSQL 16 | PostgreSQL 15 | PostgreSQL 14 | PostgreSQL 13 | PostgreSQL 12 | PostgreSQL 11 |
---|---|---|---|---|---|---|---|---|
address_standardizer | Usado para analisar um endereço em elementos constituintes. Geralmente usado para suportar a etapa de normalização de endereços de geocodificação. | 3.5.0 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
address_standardizer_data_us | Exemplo de conjunto de dados do Address Standardizer US | 3.5.0 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
idade (Pré-visualização) | Fornece recursos de banco de dados gráfico | N/A | 1.5.0 ✔️ | 1.5.0 ✔️ | 1.5.0 ✔️ | 1.5.0 ✔️ | N/A | N/A |
Amcheck | Funções para verificar a integridade da relação | 1.4 | 1.3 | 1.3 | 1.3 | 1.2 | 1.2 | 1.1 |
anon (Pré-visualização) | Ferramentas de anonimização de dados | 1.3.2 ✔️ | 1.3.2 ✔️ | 1.3.2 ✔️ | 1.3.2 ✔️ | 1.3.2 ✔️ | 1.3.2 ✔️ | 1.3.2 ✔️ |
azure_ai | Integração dos Serviços de IA e ML do Azure para PostgreSQL | N/A | 1.1.0 | 1.1.0 | 1.1.0 | 1.1.0 | 1.1.0 | N/A |
azure_storage | Integração do Azure para PostgreSQL | N/A | 1,5 ✔️ | 1,5 ✔️ | 1,5 ✔️ | 1,5 ✔️ | 1,5 ✔️ | N/A |
floração | Método de acesso Bloom - índice baseado em arquivo de assinatura | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
btree_gin | Suporte para indexação de tipos de dados comuns no GIN | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 |
btree_gist | Suporte para indexação de tipos de dados comuns no GiST | 1.7 | 1.7 | 1.7 | 1.6 | 1.5 | 1.5 | 1.5 |
Citext | Tipo de dados para cadeias de caracteres que não diferenciam maiúsculas de minúsculas | 1.6 | 1.6 | 1.6 | 1.6 | 1.6 | 1.6 | 1.5 |
cubo | Tipo de dados para cubos multidimensionais | 1.5 | 1.5 | 1.5 | 1.5 | 1.4 | 1.4 | 1.4 |
dblink | Conectar-se a outros bancos de dados PostgreSQL a partir de um banco de dados | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
dict_int | Modelo de dicionário de pesquisa de texto para números inteiros | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
dict_xsyn | Modelo de dicionário de pesquisa de texto para processamento estendido de sinônimo | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
distância terrestre | Calcular distâncias de grande círculo na superfície da Terra | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
Fuzzystrmatch | Determinar semelhanças e distância entre cadeias de caracteres | 1.2 | 1.2 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
hstore | Tipo de dados para armazenar conjuntos de pares (chave, valor) | 1.8 | 1.8 | 1.8 | 1.8 | 1.7 | 1.6 | 1.5 |
Hipopg | Índices hipotéticos para PostgreSQL | 1.4.0 | 1.4.0 | 1.4.0 | 1.4.0 | 1.4.0 | 1.4.0 | 1.4.0 |
Intagg | Agregador e enumerador de números inteiros (obsoleto) | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
IntArray | Suporte a funções, operadores e índice para matrizes 1D de inteiros | 1.5 | 1.5 | 1.5 | 1.5 | 1.3 | 1.2 | 1.2 |
Não | Tipos de dados para normas internacionais de numeração de produtos | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
lo | Manutenção de objetos grandes | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
login_hook | Login_hook - gancho para executar login_hook.login() no momento do login | 1.5 | 1.5 | 1.4 | 1.4 | 1.4 | 1.4 | 1.4 |
ltree | Tipo de dados para estruturas hierárquicas semelhantes a árvores | 1.3 | 1.2 | 1.2 | 1.2 | 1.2 | 1.1 | 1.1 |
oracle_fdw | Wrapper de dados estrangeiros para bancos de dados Oracle | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | N/A |
orafce | Funções e operadores que emulam um subconjunto de funções e pacotes do Oracle RDBMS | 4,9 | 4.4 | 3.24 | 3.18 | 3.18 | 3.18 | 3.7 |
pageinspect | Inspecionar o conteúdo das páginas do banco de dados em um nível baixo | 1.12 | 1.12 | 1.11 | 1.9 | 1.8 | 1.7 | 1.7 |
PGAUDIT | Fornece funcionalidade de auditoria | 16,0 ✔️ | 16,0 ✔️ | 1,7 ✔️ | 1.6.2 ✔️ | 1,5 ✔️ | 1.4.3 ✔️ | 1.3.2 ✔️ |
pg_buffercache | Examine o cache de buffer compartilhado | 1.5 | 1.4 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 |
pg_cron | Agendador de tarefas para PostgreSQL | 1,6 ✔️ | 1,6 ✔️ | 1,6 ✔️ | 1,6 ✔️ | 1,6 ✔️ | 1,6 ✔️ | 1.4-1 ✔️ |
PGPcrypto | Funções criptográficas | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 | 1.3 |
pg_freespacemap | Examine o mapa de espaço livre (FSM) | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
pg_hint_plan | Torna possível ajustar os planos de execução do PostgreSQL usando as chamadas dicas nos comentários SQL. | 1.7.0 ✔️ | 1.6.0 ✔️ | 1,5 ✔️ | 1,4 ✔️ | 1.3.7 ✔️ | 1.3.7 ✔️ | 1.3.7 ✔️ |
pglogical | Replicação lógica PostgreSQL | 2.4.5 ✔️ | 2.4.4 ✔️ | 2.4.2 ✔️ | 2.4.1 ✔️ | 2.4.1 ✔️ | 2.4.1 ✔️ | 2.4.1 ✔️ |
pg_partman | Extensão para gerenciar tabelas particionadas por tempo ou ID | 5.0.1 ✔️ | 5.0.1 ✔️ | 4.7.1 ✔️ | 4.6.1 ✔️ | 4.5.0 ✔️ | 4.5.0 ✔️ | 4.5.0 ✔️ |
pg_prewarm | Dados de relação pré-aquecimento | 1.2 ✔️ | 1.2 ✔️ | 1.2 ✔️ | 1.2 ✔️ | 1.2 ✔️ | 1.2 ✔️ | 1.2 ✔️ |
pg_repack | Reorganizar tabelas em bancos de dados PostgreSQL com bloqueios mínimos | 1.4.7 | 1.4.7 | 1.4.7 | 1.4.7 | 1.4.7 | 1.4.7 | 1.4.7 |
pgrouting | Extensão PgRouting | N/A | N/A | 3.5.0 | 3.3.0 | 3.3.0 | 3.3.0 | 3.3.0 |
pgrowlocks | Mostrar informações de bloqueio no nível da linha | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
pg_squeeze | Uma ferramenta para remover o espaço não utilizado de uma relação. | 1,7 ✔️ | 1,6 ✔️ | 1,6 ✔️ | 1,5 ✔️ | 1,5 ✔️ | 1,5 ✔️ | 1,5 ✔️ |
pg_stat_statements | Controlar estatísticas de execução de todas as instruções SQL executadas | 1.11 ✔️ | 1,10 ✔️ | 1,10 ✔️ | 1,9 ✔️ | 1,8 ✔️ | 1,7 ✔️ | 1,6 ✔️ |
pgstattuple | Mostrar estatísticas de nível de tupla | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 |
pg_trgm | Medição da semelhança de texto e pesquisa de índice com base em trigramas | 1.6 | 1.6 | 1.6 | 1.6 | 1.5 | 1.4 | 1.4 |
pg_visibility | Examine o mapa de visibilidade (VM) e as informações de visibilidade no nível da página | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
plpgsql | Linguagem processual PL/pgSQL | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
PLV8 | PL/JavaScript (v8) linguagem processual confiável | 3.1.7 | 3.1.7 | 3.1.7 | 3.0.0 | 3.0.0 | 3.0.0 | 3.0.0 |
Pós-SIG | Geometria e geografia pós-SIG tipos espaciais e funções | 3.5.0 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
postgis_raster | Tipos e funções raster PostGIS | 3.5.0 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
postgis_sfcgal | Funções SFCGAL PostGIS | 3.5.0 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
postgis_tiger_geocoder | Geocodificador tigre PostGIS e geocodificador reverso | 3.5.0 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
postgis_topology | Topologia pós-SIG tipos espaciais e funções | 3.5.0 | 3.3.3 | 3.3.1 | 3.2.3 | 3.2.3 | 3.2.3 | 3.2.3 |
postgres_fdw | Wrapper de dados estrangeiros para servidores PostgreSQL remotos | 1.1 | 1.1 | 1.1 | 1.1 | 1.0 | 1.0 | 1.0 |
postgres_protobuf | Buffers de protocolo para PostgreSQL | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 | 0.2 | N/A |
semver | Tipo de dados de versão semântica | 0.32.1 | 0.32.1 | 0.32.0 | 0.32.0 | 0.32.0 | 0.32.0 | 0.32.0 |
session_variable | Session_variable - registo e manipulação de variáveis e constantes de sessão | 3.3 | 3.3 | 3.3 | 3.3 | 3.3 | 3.3 | 3.3 |
sslinfo | Informações sobre certificados SSL | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 |
Tablefunc | Funções que manipulam tabelas inteiras, incluindo tabela de referência cruzada | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
tds_fdw | Wrapper de dados estrangeiros para consultar um banco de dados TDS (Sybase ou Microsoft SQL Server) | 2.0.3 | 2.0.3 | 2.0.3 | 2.0.3 | 2.0.3 | 2.0.3 | 2.0.3 |
Escala de tempoDB | Permite inserções escaláveis e consultas complexas para dados de séries cronológicas | N/A | 2.13.0 ✔️ | 2.10.0 ✔️ | 2.10.0 ✔️ | 2.10.0 ✔️ | 2.10.0 ✔️ | 1.7.4 ✔️ |
tsm_system_rows | Método TABLESAMPLE que aceita o número de linhas como limite | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
tsm_system_time | Método TABLESAMPLE que aceita o tempo em milissegundos como limite | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
sem sotaque | Dicionário de pesquisa de texto que remove acentos | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
UUID-OSSP | Gerar identificadores universalmente exclusivos (UUIDs) | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 |
vetor | Tipo de dados vetoriais e métodos de acesso ivfflat e hnsw | 0.7.0 | 0.7.0 | 0.7.0 | 0.7.0 | 0.7.0 | 0.7.0 | 0.5.1 |
Atualizando extensões do PostgreSQL
Atualizações in-loco de extensões de banco de dados são permitidas através de um comando simples. Esse recurso permite que os clientes atualizem automaticamente suas extensões de terceiros para as versões mais recentes, mantendo os sistemas atuais e seguros sem esforço manual.
Atualizando extensões
Para atualizar uma extensão instalada para a versão mais recente disponível suportada pelo Azure, utilize o seguinte comando SQL:
ALTER EXTENSION <extension_name> UPDATE;
Este comando simplifica o gerenciamento de extensões de banco de dados, permitindo que os usuários atualizem manualmente para a versão mais recente aprovada pelo Azure, aprimorando a compatibilidade e a segurança.
Limitações
Embora a atualização de extensões seja simples, há certas limitações:
- Seleção de uma versão específica: O comando não suporta a atualização para versões intermediárias de uma extensão. Ele sempre atualiza para a versão mais recente disponível.
- Downgrade: Não suporta o downgrade de uma extensão para uma versão anterior. Se um downgrade for necessário, ele pode exigir assistência de suporte e depende da disponibilidade da versão anterior.
Extensões instaladas
Para listar as extensões atualmente instaladas no banco de dados, use o seguinte comando SQL:
SELECT * FROM pg_extension;
Extensões disponíveis e suas versões
Para verificar quais versões de uma extensão estão disponíveis para a instalação atual do banco de dados, consulte a exibição do catálogo do pg_available_extensions
sistema. Por exemplo, para determinar a versão disponível para a azure_ai
extensão, execute:
SELECT * FROM pg_available_extensions WHERE name = 'azure_ai';
Esses comandos fornecem informações necessárias sobre as configurações de extensão do seu banco de dados, ajudando a manter seus sistemas de forma eficiente e segura. Ao habilitar atualizações fáceis para as versões de extensão mais recentes, o Banco de Dados do Azure para PostgreSQL continua a oferecer suporte ao gerenciamento robusto, seguro e eficiente de seus aplicativos de banco de dados.
Considerações específicas do Banco de Dados do Azure para servidor flexível PostgreSQL
A seguir está uma lista de extensões com suporte que exigem algumas considerações específicas quando usadas no serviço de servidor flexível Banco de Dados do Azure para PostgreSQL. A lista está ordenada por ordem alfabética.
dblink
dblink permite que você se conecte de uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL a outra ou a outro banco de dados no mesmo servidor. O servidor flexível do Banco de Dados do Azure para PostgreSQL dá suporte a conexões de entrada e saída para qualquer servidor PostgreSQL. O servidor de envio precisa permitir conexões de saída com o servidor de recebimento. Da mesma forma, o servidor de recebimento precisa permitir conexões do servidor de envio.
Recomendamos implantar seus servidores com integração de rede virtual se você planeja usar essa extensão. Por padrão, a integração de rede virtual permite conexões entre servidores na rede virtual. Você também pode optar por usar grupos de segurança de rede de rede virtual para personalizar o acesso.
pg_buffercache
pg_buffercache
pode ser usado para estudar o conteúdo de shared_buffers. Usando esta extensão, você pode dizer se uma relação específica está armazenada em cache ou não (em shared_buffers
). Essa extensão pode ajudá-lo a solucionar problemas de desempenho (problemas de desempenho relacionados ao cache).
Esta extensão é integrada com a instalação principal do PostgreSQL, e é fácil de instalar.
CREATE EXTENSION pg_buffercache;
pg_cron
pg_cron é um agendador de tarefas simples e baseado em cron para PostgreSQL que é executado dentro do banco de dados como uma extensão. A pg_cron
extensão pode ser usada para executar tarefas de manutenção agendadas dentro de um banco de dados PostgreSQL. Por exemplo, você pode executar vácuo periódico de uma tabela ou remover trabalhos de dados antigos.
pg_cron
pode executar vários trabalhos em paralelo, mas executa no máximo uma instância de um trabalho de cada vez. Se uma segunda execução deve começar antes que a primeira termine, a segunda execução é enfileirada e iniciada assim que a primeira é concluída. Dessa forma, garante-se que os trabalhos sejam executados exatamente quantas vezes forem programadas e não sejam executados simultaneamente com eles mesmos.
Alguns exemplos:
Para apagar dados antigos no sábado às 3h30 (GMT).
SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);
Para executar o vácuo todos os dias às 10:00 (GMT) no banco de dados postgres
padrão.
SELECT cron.schedule('0 10 * * *', 'VACUUM');
Para desagendar todas as tarefas de pg_cron
.
SELECT cron.unschedule(jobid) FROM cron.job;
Para ver todos os trabalhos atualmente agendados com pg_cron
o .
SELECT * FROM cron.job;
Para executar vácuo todos os dias às 10:00 am (GMT) no banco de dados 'testcron' sob azure_pg_admin conta de função.
SELECT cron.schedule_in_database('VACUUM','0 10 * * * ','VACUUM','testcron',null,TRUE);
Nota
pg_cron extensão é pré-carregada para shared_preload_libraries
cada instância de servidor flexível do Banco de Dados do Azure para PostgreSQL dentro do banco de dados postgres para fornecer a você a capacidade de agendar trabalhos para execução em outros bancos de dados dentro de sua instância de banco de dados flexível do Banco de Dados do Azure para PostgreSQL sem comprometer a segurança. No entanto, por razões de segurança, você ainda precisa permitir a extensão de lista e instalá-la usando o comando CREATE EXTENSION.pg_cron
A partir da pg_cron
versão 1.4, você pode usar as cron.schedule_in_database
funções e cron.alter_job
para agendar seu trabalho em um banco de dados específico e atualizar uma agenda existente, respectivamente.
Alguns exemplos:
Para excluir dados antigos no sábado às 3:30am (GMT) no banco de dados DBName.
SELECT cron.schedule_in_database('JobName', '30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$,'DBName');
Nota
cron_schedule_in_database
função permite o nome de usuário como parâmetro opcional. Definir o nome de usuário como um valor não nulo requer privilégio de superusuário PostgreSQL e não é suportado no Banco de Dados do Azure para servidor flexível PostgreSQL. Exemplos anteriores mostram a execução dessa função com o parâmetro opcional de nome de usuário ommited ou definido como null, que executa o trabalho no contexto do agendamento do usuário do trabalho, que deve ter privilégios de função azure_pg_admin.
Para atualizar ou alterar o nome da base de dados no agendamento existente
SELECT cron.alter_job(job_id:=MyJobID,database:='NewDBName');
pg_failover_slots
A extensão PG Failover Slots aprimora o Banco de Dados do Azure para servidor flexível PostgreSQL ao operar com replicação lógica e servidores habilitados para alta disponibilidade. Ele efetivamente aborda o desafio dentro do mecanismo PostgreSQL padrão que não preserva slots de replicação lógica após um failover. A manutenção desses slots é fundamental para evitar pausas de replicação ou incompatibilidades de dados durante alterações na função de servidor principal, garantindo a continuidade operacional e a integridade dos dados.
A extensão simplifica o processo de failover gerenciando a transferência, a limpeza e a sincronização necessárias dos slots de replicação, proporcionando assim uma transição perfeita durante as alterações de função de servidor. A extensão é suportada para PostgreSQL versões 11 a 16.
Você pode encontrar mais informações e como usar a extensão PG Failover Slots em sua página do GitHub.
Ativar pg_failover_slots
Para habilitar a extensão de Slots de Failover PG para sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL, você precisa modificar a configuração do servidor incluindo a extensão nas bibliotecas de pré-carregamento compartilhadas do servidor e ajustando um parâmetro de servidor específico. Segue-se o processo:
- Adicione
pg_failover_slots
às bibliotecas de pré-carregamento compartilhadas do servidor atualizando oshared_preload_libraries
parâmetro. - Altere o parâmetro
hot_standby_feedback
server paraon
.
Quaisquer alterações no parâmetro exigem uma reinicialização do shared_preload_libraries
servidor para entrar em vigor.
Usando o portal do Azure:
- Selecione sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL.
- No menu de recursos, na seção Configurações , selecione Parâmetros do servidor.
- Procure o
shared_preload_libraries
parâmetro e edite seu valor para incluirpg_failover_slots
. - Procure o
hot_standby_feedback
parâmetro e defina seu valor comoon
. - Selecione Salvar para preservar as alterações. Agora, você tem a opção de Salvar e reiniciar. Escolha esta opção para garantir que as alterações entrem em vigor, uma vez que a modificação
shared_preload_libraries
requer uma reinicialização do servidor.
Ao selecionar Salvar e reiniciar, o servidor é reinicializado automaticamente, aplicando as alterações que acabaram de ser feitas. Quando o servidor estiver online novamente, a extensão de Slots de Failover PG estará habilitada e operacional em sua instância de servidor flexível principal do Banco de Dados do Azure para PostgreSQL, pronta para lidar com slots de replicação lógica durante failovers.
pg_hint_plan
pg_hint_plan
torna possível ajustar os planos de execução do PostgreSQL usando as chamadas "dicas" nos comentários SQL, como:
/*+ SeqScan(a) */
pg_hint_plan
lê frases de sugestão em um comentário de forma especial fornecido com a instrução SQL de destino. A forma especial começa pela sequência de caracteres "/*+" e termina com "*/". As frases de dica consistem em nome de dica e seguintes parâmetros entre parênteses e delimitados por espaços. Novas linhas para legibilidade podem delimitar cada frase de sugestão.
Exemplo:
/*+
HashJoin(a b)
SeqScan(a)
*/
SELECT *
FROM pgbench_branches b
JOIN pgbench_accounts an ON b.bid = a.bid
ORDER BY a.aid;
O exemplo anterior faz com que o planejador use os resultados de a seq scan
na tabela a para ser combinado com a tabela b como um hash join
.
Para instalá-pg_hint_plan, além disso, para permitir listá-lo, como mostrado em como usar extensões PostgreSQL, você precisa incluí-lo nas bibliotecas de pré-carregamento compartilhadas do servidor. Uma alteração no parâmetro do Postgres shared_preload_libraries
requer uma reinicialização do servidor para entrar em vigor. Você pode alterar parâmetros usando o portal do Azure ou a CLI do Azure.
Usando o portal do Azure:
- Selecione sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL.
- No menu de recursos, na seção Configurações , selecione Parâmetros do servidor.
- Procure o
shared_preload_libraries
parâmetro e edite seu valor para incluirpg_hint_plan
. - Selecione Salvar para preservar as alterações. Agora, você tem a opção de Salvar e reiniciar. Escolha esta opção para garantir que as alterações entrem em vigor, uma vez que a modificação
shared_preload_libraries
requer uma reinicialização do servidor. Agora você pode habilitar pg_hint_plan seu Banco de Dados do Azure para banco de dados de servidor flexível PostgreSQL. Conecte-se ao banco de dados e emita o seguinte comando:
CREATE EXTENSION pg_hint_plan;
pg_prewarm
A pg_prewarm
extensão carrega dados relacionais em cache. Pré-aquecer seus caches significa que suas consultas têm melhores tempos de resposta na primeira execução após uma reinicialização. A funcionalidade de pré-aquecimento automático não está atualmente disponível no Banco de Dados do Azure para servidor flexível PostgreSQL.
pg_repack
Uma pergunta típica que as pessoas fazem quando tentam usar essa extensão pela primeira vez é: pg_repack é uma extensão ou um executável do lado do cliente como psql ou pg_dump?
A resposta é que, na verdade, são as duas coisas. pg_repack/lib contém o código para a extensão, incluindo o esquema e os artefatos SQL que ele cria, e a biblioteca C implementando o código de várias dessas funções. Por outro lado, pg_repack/bin mantém o código para o aplicativo cliente, que sabe como interagir com os artefatos de programação criados pela extensão. Esta aplicação cliente visa facilitar a complexidade da interação com as diferentes interfaces apresentadas pela extensão do lado do servidor, oferecendo ao usuário algumas opções de linha de comando que são mais fáceis de entender. O aplicativo cliente sem a extensão criada no banco de dados para o qual é apontado, é inútil. A extensão do lado do servidor por si só seria totalmente funcional, mas exigiria que o usuário entendesse um padrão de interação complicado que consiste em executar consultas para recuperar dados que são usados como entrada para funções implementadas pela extensão.
Permissão negada para reempacotamento de esquema
A partir de agora, devido à maneira como concedemos permissões para o esquema de repack criado por essa extensão, só há suporte para executar pg_repack funcionalidade a partir do contexto do azure_pg_admin
.
Você pode notar que se o proprietário de uma tabela, que não azure_pg_admin
é, tenta executar pg_repack, eles acabam recebendo um erro como o seguinte:
NOTICE: Setting up workers.conns
ERROR: pg_repack failed with error: ERROR: permission denied for schema repack
LINE 1: select repack.version(), repack.version_sql()
Para evitar esse erro, certifique-se de executar pg_repack a partir do contexto do azure_pg_admin
.
pg_stat_statements
A extensão pg_stat_statements oferece uma visão de todas as consultas que foram executadas em seu banco de dados. Isso é útil para entender como é o desempenho da carga de trabalho de consulta em um sistema de produção.
A extensão pg_stat_statements é pré-carregada em shared_preload_libraries
cada instância de servidor flexível do Banco de Dados do Azure para PostgreSQL para fornecer um meio de controlar estatísticas de execução de instruções SQL.
No entanto, por razões de segurança, você ainda tem que permitir a listapg_stat_statements extensão e instalá-lo usando o comando CREATE EXTENSION.
A configuração pg_stat_statements.track
, que controla quais instruções são contadas pela extensão, assume top
como padrão , o que significa que todas as instruções emitidas diretamente pelos clientes são rastreadas. Os outros dois níveis de rastreamento são none
e all
. Esta definição é configurável como parâmetro do servidor.
Existe um compromisso entre as informações de execução de consultas disponibilizadas pela extensão pg_stat_statements
e o impacto no desempenho do servidor à medida que regista cada instrução SQL. Se você não estiver usando ativamente a pg_stat_statements
extensão, recomendamos que defina pg_stat_statements.track
como none
. Alguns serviços de monitoramento de terceiros podem se basear pg_stat_statements
para fornecer informações sobre o desempenho da consulta, portanto, confirme se esse é o seu caso ou não.
postgres_fdw
postgres_fdw permite que você se conecte de uma instância de servidor flexível do Banco de Dados do Azure para PostgreSQL a outra ou a outro banco de dados no mesmo servidor. O servidor flexível do Banco de Dados do Azure para PostgreSQL dá suporte a conexões de entrada e saída para qualquer servidor PostgreSQL. O servidor de envio precisa permitir conexões de saída com o servidor de recebimento. Da mesma forma, o servidor de recebimento precisa permitir conexões do servidor de envio.
Recomendamos implantar seus servidores com integração de rede virtual se você planeja usar essa extensão. Por padrão, a integração de rede virtual permite conexões entre servidores na rede virtual. Você também pode optar por usar grupos de segurança de rede de rede virtual para personalizar o acesso.
pgstattuple
Ao usar a extensão 'pgstattuple' para tentar obter estatísticas de tupla pg_toast
de objetos mantidos no esquema nas versões do Postgres 11 a 13, você receberá um erro de "permissão negada para pg_toast de esquema".
Permissão negada para o esquema pg_toast
Os clientes que usam as versões 11 a 13 do PostgreSQL no Banco de Dados do Azure para Servidor Flexível não podem usar a pgstattuple
extensão em objetos dentro do pg_toast
esquema.
No PostgreSQL 16 e 17, a pg_read_all_data
função é concedida automaticamente ao azure_pg_admin
, permitindo pgstattuple
funcionar corretamente. No PostgreSQL 14 e 15, os clientes podem conceder manualmente a pg_read_all_data
função para azure_pg_admin
obter o mesmo resultado. No entanto, no PostgreSQL 11 a 13, a pg_read_all_data
função não existe.
Os clientes não podem conceder diretamente as permissões necessárias. Se você precisar ser capaz de executar pgstattuple
para acessar objetos sob o esquema, prossiga para criar uma solicitação de suporte do pg_toast
Azure.
Escala de tempoDB
TimescaleDB é um banco de dados de séries temporais que é empacotado como uma extensão para PostgreSQL. O TimescaleDB fornece funções analíticas orientadas ao tempo, otimizações e dimensiona o Postgres para cargas de trabalho de séries temporais. Saiba mais sobre TimescaleDB, uma marca registada da Timescale, Inc.
Instalar o TimescaleDB
Para instalar o TimescaleDB, além disso, para permitir listá-lo, como mostrado acima, você precisa incluí-lo nas bibliotecas de pré-carregamento compartilhadas do servidor. Uma alteração no parâmetro do Postgres shared_preload_libraries
requer uma reinicialização do servidor para entrar em vigor. Você pode alterar parâmetros usando o portal do Azure ou a CLI do Azure.
Usando o portal do Azure:
- Selecione sua instância de servidor flexível do Banco de Dados do Azure para PostgreSQL.
- No menu de recursos, na seção Configurações , selecione Parâmetros do servidor.
- Procure o
shared_preload_libraries
parâmetro e edite seu valor para incluirTimescaleDB
. - Selecione Salvar para preservar as alterações. Agora, você tem a opção de Salvar e reiniciar. Escolha esta opção para garantir que as alterações entrem em vigor, uma vez que a modificação
shared_preload_libraries
requer uma reinicialização do servidor. Agora você pode habilitar o TimescaleDB em seu Banco de Dados do Azure para banco de dados de servidor flexível PostgreSQL. Conecte-se ao banco de dados e emita o seguinte comando:
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
Gorjeta
Se vir um erro, confirme que reiniciou o servidor depois de guardar shared_preload_libraries.
Agora você pode criar uma hipertabela TimescaleDB do zero ou migrar dados de séries cronológicas existentes no PostgreSQL.
Restaurar um banco de dados Timescale usando pg_dump e pg_restore
Para restaurar um banco de dados de Escala de tempo usando pg_dump e pg_restore, você deve executar dois procedimentos auxiliares no banco de dados de destino: timescaledb_pre_restore()
e timescaledb_post restore()
.
Primeiro, prepare o banco de dados de destino:
--create the new database where you want to perform the restore
CREATE DATABASE tutorial;
\c tutorial --connect to the database
CREATE EXTENSION timescaledb;
SELECT timescaledb_pre_restore();
Agora você pode executar pg_dump no banco de dados original e, em seguida, fazer pg_restore. Após a restauração, execute o seguinte comando no banco de dados restaurado:
SELECT timescaledb_post_restore();
Para obter mais detalhes sobre o método de restauração com o banco de dados habilitado para Timescale, consulte a documentação do Timescale.
Restaurar um banco de dados Timescale usando timescaledb-backup
Durante a execução SELECT timescaledb_post_restore()
do procedimento listado acima, você pode obter permissões negadas, erro ao atualizar o sinalizador timescaledb.restoreing. Isso se deve à permissão limitada ALTER DATABASE nos serviços de banco de dados Cloud PaaS. Nesse caso, você pode executar um método alternativo usando timescaledb-backup
a ferramenta para fazer backup e restaurar o banco de dados Timescale. Timescaledb-backup é um programa para tornar o despejo e a restauração de um banco de dados TimescaleDB mais simples, menos propenso a erros e com melhor desempenho.
Para fazer isso, você deve fazer o seguinte
- Instale as ferramentas conforme detalhado aqui
- Criar um Banco de Dados do Azure de destino para PostgreSQL, instância de servidor flexível e banco de dados
- Habilite a extensão de escala de tempo como mostrado acima
- Conceder
azure_pg_admin
função ao usuário que será usada pelo ts-restore - Execute ts-restore para restaurar o banco de dados
Mais detalhes sobre esses utilitários podem ser encontrados aqui.
Extensões e atualização da versão principal
O servidor flexível do Banco de Dados do Azure para PostgreSQL introduziu um recurso de atualização de versão principal in-loco que executa uma atualização in-loco da instância flexível do servidor do Banco de Dados do Azure para PostgreSQL com apenas um clique. A atualização da versão principal in-loco simplifica o processo de atualização flexível do servidor do Banco de Dados do Azure para PostgreSQL, minimizando a interrupção para usuários e aplicativos que acessam o servidor. A atualização da versão principal in-loco não suporta extensões específicas e há algumas limitações para atualizar determinadas extensões. As extensões anon, Apache AGE, dblink, orafce, pgaudit, postgres_fdw e Timescaledb não têm suporte para todas as versões flexíveis do Servidor do Banco de Dados do Azure para PostgreSQL ao usar o recurso de atualização de versão principal in-loco.