Extensiones de PostgreSQL en Azure Database for PostgreSQL: Servidor flexible

SE APLICA A: Azure Database for PostgreSQL: servidor flexible

El servidor flexible de Azure Database for PostgreSQL proporciona la capacidad de ampliar la funcionalidad de la base de datos mediante extensiones. Las extensiones agrupan varios objetos SQL relacionados en un solo paquete que se puede cargar o quitar de la base de datos con un comando. Después de cargarse en la base de datos, las extensiones funcionan como características integradas.

¿Cómo se utilizan las extensiones de PostgreSQL?

Antes de instalar extensiones en la opción de servidor flexible de Azure Database for PostgreSQL, debe agregar a la lista de permitidos estas extensiones para su uso.

Mediante Azure Portal:

  1. Seleccione la instancia de servidor flexible de Azure Database for PostgreSQL.
  2. En la barra lateral, seleccione Parámetros del servidor.
  3. Busque el parámetro azure.extensions.
  4. Seleccione las extensiones que desea agregar a la lista de permitidos. Captura de pantalla que muestra el servidor flexible de Azure Database for PostgreSQL: extensiones de lista de permitidos para la instalación.

Mediante la CLI de Azure:

Puede agregar extensiones a la lista de permitidos mediante el comando del conjunto de parámetros de la CLI.

az postgres flexible-server parameter set --resource-group <your resource group>  --server-name <your server name> --subscription <your subscription id> --name azure.extensions --value <extension name>,<extension name>

Con una plantilla de ARM: el ejemplo que se muestra a continuación incluye en la lista de permitidos las extensiones dblink, dict_xsyn y pg_buffercache en el servidor mypostgreserver

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "flexibleServers_name": {
            "defaultValue": "mypostgreserver",
            "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 es un parámetro de configuración del servidor que determina qué bibliotecas se van a cargar cuando se inicia el servidor flexible de Azure Database for PostgreSQL. Las bibliotecas que usan memoria compartida se deben cargar mediante este parámetro. Si es necesario agregar la extensión a las bibliotecas de precarga compartidas, esta acción puede hacer lo siguiente:

Mediante Azure Portal:

  1. Seleccione la instancia de servidor flexible de Azure Database for PostgreSQL.
  2. En la barra lateral, seleccione Parámetros del servidor.
  3. Busque el parámetro shared_preload_libraries.
  4. Seleccione las extensiones que desea agregar. Captura de pantalla que muestra Azure Database for PostgreSQL: configuración de parámetros de bibliotecas compartidas de precarga para la instalación de extensiones.

Mediante la CLI de Azure:

Puede establecer shared_preload_libraries mediante el comando del conjunto de parámetros de la CLI.

az postgres flexible-server parameter set --resource-group <your resource group>  --server-name <your server name> --subscription <your subscription id> --name shared_preload_libraries --value <extension name>,<extension name>

Una vez que las extensiones se han incluido en la lista de permitidos y se han cargado, se deben instalar en la base de datos para poder usarlas. Para instalar una extensión determinada, debe ejecutar el comando CREATE EXTENSION. Este comando carga los objetos empaquetados en la base de datos.

Nota:

Las extensiones de terceros que se ofrecen en el servidor flexible de Azure Database for PostgreSQL tienen una licencia de código abierto. Actualmente, no ofrecemos extensiones de terceros ni versiones de extensión con modelos de licencia premium o propietario.

La instancia de servidor flexible de Azure Database for PostgreSQL admite un subconjunto de extensiones clave de PostgreSQL, como se indica a continuación. Esta información también está disponible al ejecutar SHOW azure.extensions;. Las extensiones no enumeradas en este documento no se admiten en el servidor flexible de Azure Database for PostgreSQL. No puede crear o cargar su propia extensión en el servidor flexible de Azure Database for PostgreSQL.

Versiones de extensión

Las extensiones siguientes están disponibles en el servidor flexible Azure Database for PostgreSQL:

Nota:

Las extensiones de la tabla siguiente con la marca ✔️ requieren que sus bibliotecas correspondientes estén habilitadas en el parámetro de servidor shared_preload_libraries.

Nombre de la extensión Descripción PostgreSQL 16 PostgreSQL 15 PostgreSQL 14 PostgreSQL 13 PostgreSQL 12 PostgreSQL 11
address_standardizer Se utilizan para analizar una dirección en los elementos que la componen. Por lo general se usa para admitir el paso de normalización de la dirección de codificación geográfica. 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
address_standardizer_data_us Aborda el ejemplo del conjunto de datos estandarizado de EE. UU. 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
amcheck Funciones de comprobación de la integridad de la relación 1.3 1.3 1.3 1.2 1.2 1.1
anon (versión preliminar) Herramientas de anonimización de datos 1.2.0 ✔️ 1.2.0 ✔️ 1.2.0 ✔️ 1.2.0 ✔️ 1.2.0 ✔️ 1.2.0 ✔️
azure_ai Integración de Azure AI y ML Services para PostgreSQL 1.0.0 1.1.0 1.0.0 1.0.0 1.0.0 N/D
azure_storage Integración de Azure para PostgreSQL 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ 1.4 ✔️ N/D
bloom Método de acceso de bloom: índice basado en archivos de firma 1,0 1,0 1,0 1,0 1,0 1.0
btree_gin Compatibilidad con la indexación de tipos de datos comunes en GIN 1.3 1.3 1.3 1.3 1.3 1.3
btree_gist Compatibilidad con la indexación de tipos de datos comunes en GiST 1.7 1.7 1.6 1.5 1.5 1.5
citext Tipo de datos para cadenas de caracteres que no distinguen mayúsculas de minúsculas 1.6 1.6 1.6 1.6 1.6 1.5
cube Tipo de datos para los cubos multidimensionales 1.5 1.5 1.5 1.4 1.4 1.4
dblink Se conecta a otras bases de datos de PostgreSQL desde una base de datos 1.2 1.2 1.2 1.2 1.2 1.2
dict_int Plantilla de diccionario de búsqueda de texto para números enteros 1,0 1,0 1,0 1,0 1,0 1.0
dict_xsyn Plantilla de diccionario de búsqueda de texto para el procesamiento de sinónimos extendido 1,0 1,0 1,0 1,0 1,0 1.0
earthdistance Calcula distancias de círculo máximo en la superficie de la Tierra 1.1 1.1 1.1 1.1 1.1 1.1
fuzzystrmatch Determina las similitudes y la distancia entre las cadenas 1,2 1.1 1.1 1.1 1.1 1.1
hstore Tipo de datos para almacenar conjuntos de pares (clave/valor) 1.8 1.8 1.8 1.7 1.6 1.5
hypopg Índices hipotéticos para PostgreSQL 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0 1.4.0
intagg Agregador entero y enumerador (obsoleto) 1.1 1.1 1.1 1.1 1.1 1.1
intarray Funciones, operadores e índices compatibles con matrices 1D de números enteros 1.5 1.5 1.5 1.3 1.2 1.2
isn Tipos de datos para los estándares internacionales de numeración de productos 1.2 1.2 1.2 1.2 1.2 1.2
lo Mantenimiento de objetos grandes 1.1 1.1 1.1 1.1 1.1 1.1
login_hook Login_hook: enlace para ejecutar login_hook.login() en el momento del inicio de sesión 1.5 1.4 1.4 1.4 1.4 1.4
ltree Tipo de datos para las estructuras de árbol jerárquicas 1.2 1.2 1.2 1.2 1.1 1.1
orafce Funciones y operadores que emulan un subconjunto de funciones y paquetes de RDBMS de Oracle 4.4. 3,24 3,18 3,18 3,18 3.7
pageinspect Inspección del contenido de páginas de bases de datos a un nivel bajo 1.12 1.11 1.9 1.8 1.7 1.7
pgaudit Proporciona funcionalidad de auditoría 16.0 ✔️ 1.7 ✔️ 1.6.2 ✔️ 1.5 ✔️ 1.4 ✔️ 1.3.2 ✔️
pg_buffercache Examina la caché del búfer compartido 1.4 1.3 1.3 1.3 1.3 1.3
pg_cron Programador de trabajos para PostgreSQL 1.5 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️ 1.4-1 ✔️
pgcrypto Funciones de cifrado 1.3 1.3 1.3 1.3 1.3 1.3
pg_failover_slots (versión preliminar) Administrador de ranuras de replicación lógica con fines de conmutación por error 1.0.1 1.0.1 1.0.1 1.0.1 1.0.1 1.0.1
pg_freespacemap Examen de la asignación de espacio libre (FSM) 1.2 1.2 1.2 1.2 1.2 1.2
pg_hint_plan Permite ajustar los planes de ejecución de PostgreSQL mediante las llamadas sugerencias en los comentarios de SQL. 1.6.0 ✔️ 1.5 ✔️ 1.4 ✔️ 1.3.7 ✔️ 1.3.7 ✔️ 1.3.7 ✔️
pglogical Replicación lógica de PostgreSQL 2.4.4 ✔️ 2.4.2 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️ 2.4.1 ✔️
pg_partman Extensión para administrar tablas con particiones por hora o identificador 4.7.1 ✔️ 4.7.1 ✔️ 4.6.1 ✔️ 4.5.0 ✔️ 4.5.0 ✔️ 4.5.0 ✔️
pg_prewarm Prepara los datos de relación 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️ 1.2 ✔️
pg_repack Reorganización de tablas en bases de datos PostgreSQL con bloqueos mínimos 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7 1.4.7
pgrouting Extensión PgRouting N/D 3.5.0 3.3.0 3.3.0 3.3.0 3.3.0
pgrowlocks Muestra información de bloqueo de nivel de fila 1.2 1.2 1.2 1.2 1.2 1.2
pg_squeeze Herramienta para quitar el espacio sin usar de una relación. 1.6 ✔️ 1.6 ✔️ 1.5 ✔️ 1.5 ✔️ 1.5 ✔️ 1.5 ✔️
pg_stat_statements Seguimiento de las estadísticas de planeación y ejecución de todas las instrucciones SQL ejecutadas 1.10 ✔️ 1.10 ✔️ 1.9 ✔️ 1.8 ✔️ 1.7 ✔️ 1.6 ✔️
pgstattuple Muestra estadísticas de nivel de tupla 1.5 1.5 1.5 1.5 1.5 1.5
pg_trgm Medición de similitud de texto y búsqueda de índice basada en trigramas 1.6 1.6 1.6 1.5 1.4 1.4
pg_visibility Examen del mapa de visibilidad (VM) y la información de visibilidad de nivel de página 1.2 1.2 1.2 1.2 1.2 1.2
plpgsql Lenguaje de procedimientos de PL/pgSQL 1,0 1,0 1,0 1,0 1,0 1,0
plv8 Lenguaje de procedimientos de confianza de PL/JavaScript (v8) 3.1.7 3.1.7 3.0.0 3.0.0 3.0.0 3.0.0
postgis Funciones y tipos espaciales de geometría y geografía de PostGIS 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_raster Funciones y tipos de trama de PostGIS 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_sfcgal Funciones de PostGIS SFCGAL 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_tiger_geocoder Geocoder de PostGIS tiger y geocoder inverso 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgis_topology Funciones y tipos espaciales de topología PostGIS 3.3.3 3.3.1 3.2.3 3.2.3 3.2.3 3.2.3
postgres_fdw Contenedor de datos externos para servidores PostgreSQL remotos 1.1 1.1 1.1 1,0 1,0 1,0
semver Tipo de datos de versión semántica 0.32.1 0.32.0 0.32.0 0.32.0 0.32.0 0.32.0
session_variable Session_variable: registro y manipulación de variables y constantes de sesión 3.3 3.3 3.3 3.3 3.3 3.3
sslinfo Información sobre los certificados SSL 1.2 1.2 1.2 1.2 1.2 1.2
tablefunc Funciones que manipulan la totalidad del contenido de las tablas, incluidas tablas de referencias cruzadas 1,0 1,0 1,0 1,0 1,0 1,0
tds_fdw Contenedor de datos externos para consultar una base de datos de TDS (Sybase o Microsoft SQL Server) 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3 2.0.3
timescaledb Habilita las inserciones escalables y las consultas complejas para los datos de serie temporal 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 acepta el número de filas como un límite. 1,0 1,0 1,0 1,0 1,0 1.0
tsm_system_time Método TABLESAMPLE que acepta el tiempo en milisegundos como un límite. 1,0 1,0 1,0 1,0 1,0 1.0
unaccent Diccionario de búsqueda de texto que quita los acentos 1.1 1.1 1.1 1.1 1.1 1.1
uuid-ossp Genera identificadores únicos universales (UUID). 1.1 1.1 1.1 1.1 1.1 1.1
vector Tipos de datos vectoriales y métodos de acceso ivfflat y hnsw 0.6.1 0.6.1 0.6.1 0.6.1 0.6.1 0.5.1

dblink y postgres_fdw le permiten conectarse de una instancia de servidor flexible de Azure Database for PostgreSQL a otra, o a otra base de datos en el mismo servidor. El servidor flexible de Azure Database for PostgreSQL admite conexiones entrantes y salientes a cualquier servidor PostgreSQL. El servidor de envío debe permitir conexiones de salida al servidor de recepción. Del mismo modo, el servidor de recepción debe permitir conexiones del servidor de envío.

Recomendamos implementar los servidores con la integración con red virtual si tiene previsto usar estas dos extensiones. De forma predeterminada, la integración de red virtual permite conexiones entre servidores de la red virtual. También puede elegir usar grupos de seguridad de red de red virtual para personalizar el acceso.

pg_prewarm

La extensión pg_prewarm carga los datos relacionales en la memoria caché. El precalentamiento de las memorias caché significa que las consultas tengan mejores tiempos de respuesta en su primera ejecución después de un reinicio. La función de precalentamiento automático no está disponible actualmente en el servidor flexible Azure Database for PostgreSQL.

pg_cron

pg_cron es un programador de trabajos sencillo basado en cron para PostgreSQL que se ejecuta dentro de la base de datos como una extensión. La extensión pg_cron se puede usar para ejecutar tareas de mantenimiento programadas dentro de una base de datos PostgreSQL. Por ejemplo, puede ejecutar un vaciado periódico de una tabla o quitar trabajos de datos antiguos.

pg_cron puede ejecutar varios trabajos en paralelo, pero ejecuta como máximo una sola instancia de un determinado trabajo a la vez. Si se supone que debe comenzar una segunda ejecución antes de que finalice la primera, la segunda ejecución se pone en cola y se inicia en cuanto se completa la primera. Esto garantiza que los trabajos se ejecutan exactamente tantas veces como estén programados y no se ejecutan simultáneamente.

He aquí algunos ejemplos:

Para eliminar datos antiguos el sábado a las 3:30 a. m. (GMT).

SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);

Ejecutar el vacío todos los días a las 10:00 a. m. de la mañana (GMT) en la base de datos predeterminada postgres.

SELECT cron.schedule('0 10 * * *', 'VACUUM');

Para anular la programación de todas las tareas de pg_cron.

SELECT cron.unschedule(jobid) FROM cron.job;

Para ver todos los trabajos programados actualmente con pg_cron.

SELECT * FROM cron.job;

Para ejecutar el vacío todos los días a las 10:00 a. m. (GMT) en la base de datos "testcron" en azure_pg_admin cuenta de rol.

SELECT cron.schedule_in_database('VACUUM','0 10 * * * ','VACUUM','testcron',null,TRUE);

Nota:

La extensión pg_cron se carga previamente en shared_preload_libraries cada instancia de servidor flexible de Azure Database for PostgreSQL dentro de la base de datos Postgres para ofrecerle la capacidad de programar trabajos para que se ejecuten en otras bases de datos dentro de su instancia de servidor flexible de Azure Database para PostgreSQL sin comprometer la seguridad. Sin embargo, por razones de seguridad, debe permitir la extensión de la listapg_cron e instalarla mediante el comando CREATE EXTENSION.

A partir de pg_cron versión 1.4, puede usar las funciones cron.schedule_in_database y cron.alter_job para programar el trabajo en una base de datos específica y actualizar una programación existente, respectivamente.

He aquí algunos ejemplos:

En este ejemplo se eliminan datos antiguos el sábado a las 3:30 a. m. (GMT) en la base de datos DBName

SELECT cron.schedule_in_database('JobName', '30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$,'DBName');

Nota:

La función cron_schedule_in_database permite el nombre de usuario como parámetro opcional. Para establecer el nombre de usuario en un valor que no sea NULL se necesitan privilegios de superusuario de PostgreSQL y no se admite en el servidor flexible de Azure Database for PostgreSQL. En los ejemplos anteriores se muestra la ejecución de esta función con el parámetro de nombre de usuario opcional omitido o establecido en NULL, que ejecuta el trabajo en el contexto de la programación del trabajo por parte del usuario, que debe tener los privilegios de rol azure_pg_admin.

Para actualizar o cambiar el nombre de la base de datos de la programación existente

SELECT cron.alter_job(job_id:=MyJobID,database:='NewDBName');

pg_failover_slots (versión preliminar)

La extensión PG Failover Slots mejora el servidor flexible de Azure Database for PostgreSQL cuando se trabaja con servidores habilitados para replicación lógica y alta disponibilidad. Aborda eficazmente el desafío dentro del motor de PostgreSQL estándar que no conserva las ranuras de replicación lógica después de una conmutación por error. Mantener estas ranuras es fundamental para evitar pausas de replicación o errores de coincidencia de datos durante los cambios en el rol de servidor principal, lo que garantiza la continuidad operativa y la integridad de los datos.

La extensión simplifica el proceso de conmutación por error mediante la administración de la transferencia, la limpieza y la sincronización necesarias de las ranuras de replicación, lo que proporciona una transición sin problemas durante los cambios en el rol de servidor. La extensión es compatible con las versiones 11 y 16 de PostgreSQL.

Puede encontrar más información y cómo usar la extensión de ranuras de conmutación por error de PG en su página de GitHub.

Habilitar pg_failover_slots

Para habilitar la extensión de ranuras de conmutación por error de PG para la instancia de servidor flexible de Azure Database for PostgreSQL, debe modificar la configuración del servidor mediante la inclusión de la extensión en las bibliotecas de precarga compartida del servidor y ajustar un parámetro de servidor específico. Este es el proceso:

  1. Agregue pg_failover_slots a las bibliotecas de precarga compartidas del servidor actualizando el parámetro shared_preload_libraries.
  2. Cambie el parámetro del servidor de hot_standby_feedback a on.

Los cambios en el parámetro shared_preload_libraries requieren un reinicio del servidor para surtir efecto.

Siga estos pasos en Azure Portal:

  1. Inicie sesión en Azure Portal y vaya a la página de la instancia de servidor flexible de Azure Database for PostgreSQL.
  2. En el menú de la izquierda, seleccione Parámetros del servidor.
  3. Busque el parámetro shared_preload_libraries en la lista y edite su valor para incluir pg_failover_slots.
  4. Busque el parámetro hot_standby_feedback y establezca su valor en on.
  5. Seleccione Guardar para conservar los cambios. Ahora, tendrá la opción Guardar y reiniciar. Elija esto para asegurarse de que los cambios surtan efecto, ya que la modificación de shared_preload_libraries requiere un reinicio del servidor.

Al seleccionar Guardar y reiniciar, el servidor se reiniciará automáticamente, aplicando los cambios realizados. Una vez que el servidor vuelve a estar en línea, la extensión de ranuras de conmutación por error de PG está habilitada y operativa en la instancia principal del servidor flexible de Azure Database for PostgreSQL, lista para controlar las ranuras de replicación lógica durante las conmutaciones por error.

pg_stat_statements

La extensión pg_stat_statements proporciona una vista de todas las consultas que se han ejecutado en la base de datos. Esto es útil para comprender el aspecto del rendimiento de la carga de trabajo de consultas en un sistema de producción.

La extensión pg_stat_statements se carga previamente en shared_preload_libraries cada instancia de servidor flexible de Azure Database for PostgreSQL para proporcionar un medio de seguimiento de las estadísticas de ejecución de instrucciones SQL. Sin embargo, por motivos de seguridad, todavía tiene que agregar a la lista de permitidos la extensión pg_stat_statements e instalarla mediante el comando CREATE EXTENSION. La configuración pg_stat_statements.track, que controla las instrucciones que la extensión cuenta, se establece de manera predeterminada en top, lo que significa que se realiza el seguimiento de todas las instrucciones que los clientes emiten directamente. Los otros dos niveles de seguimiento son none y all. Esta configuración se puede configurar como parámetro de servidor.

Hay un equilibrio entre la información de ejecución de consultas que pg_stat_statements proporciona y el efecto en el rendimiento del servidor al registrar cada instrucción SQL. Si no usa activamente la extensión pg_stat_statements, se recomienda establecer pg_stat_statements.track en none. Algunos servicios de supervisión de terceros pueden depender de pg_stat_statements para ofrecer información de rendimiento de consultas, así que confirme si este es el caso para usted o no.

TimescaleDB

TimescaleDB es una base de datos de serie temporal que se empaqueta como una extensión para PostgreSQL. TimescaleDB proporciona funciones analíticas orientadas al tiempo, optimizaciones y escala Postgres para las cargas de trabajo de serie temporal. Más información sobre TimescaleDB, una marca registrada de Timescale, Inc. El servidor flexible de Azure Database for PostgreSQL proporciona la edición Apache-2 de TimescaleDB.

Instalación de TimescaleDB

Para instalar TimescaleDB, además de permitir su enumeración, como se muestra anteriormente, debe incluirlo en las bibliotecas de precarga compartida del servidor. Si cambia el parámetro shared_preload_libraries de Postgres deberá shared_preload_libraries para que tenga efecto. Puede cambiar los parámetros mediante Azure Portal o la CLI de Azure. Mediante Azure Portal:

  1. Seleccione la instancia de servidor flexible de Azure Database for PostgreSQL.

  2. En la barra lateral, seleccione Parámetros del servidor.

  3. Busque el parámetro shared_preload_libraries.

  4. Seleccione TimescaleDB.

  5. Seleccione Guardar para conservar los cambios. Recibirá una notificación una vez que se haya guardado el cambio.

  6. Después de la notificación, reinicie el servidor para aplicar estos cambios.

Ahora puede habilitar TimescaleDB en su base de datos del servidor flexible de Azure Database for PostgreSQL. Conéctese a la base de datos y ejecute el comando siguiente:

CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

Sugerencia

Si ve un error, confirme que ha reiniciado el servidor después de guardar shared_preload_libraries.

Ahora puede crear una hipertabla de TimescaleDB desde cero o migrar datos de serie temporal existentes en PostgreSQL.

Restauración de una base de datos de Timescale mediante pg_dump y pg_restore

Para restaurar una base de datos de Timescale mediante pg_dump y pg_restore, tiene que ejecutar dos procedimientos auxiliares en la base de datos de destino: timescaledb_pre_restore() y timescaledb_post restore().

Primero prepare la base de datos de destino:

--create the new database where you'll perform the restore
CREATE DATABASE tutorial;
\c tutorial --connect to the database
CREATE EXTENSION timescaledb;

SELECT timescaledb_pre_restore();

Ahora puede ejecutar pg_dump en la base de datos original y, a continuación, pg_restore. Después de la restauración, asegúrese de ejecutar el siguiente comando en la base de datos restaurada:

SELECT timescaledb_post_restore();

Para obtener más información sobre el método de restauración con la base de datos habilitada para escala temporal, consulte documentación de Timescale.

Restauración de una base de datos de escala de tiempo mediante timescaledb-backup

Al ejecutar el procedimiento SELECT timescaledb_post_restore() mencionado anteriormente, es posible que se denieguen permisos al actualizar la marca timescaledb.restoring. Esto se debe a un permiso ALTER DATABASE limitado en los servicios de base de datos PaaS en la nube. En este caso, puede usar un método alternativo mediante la herramienta timescaledb-backup para hacer una copia de seguridad y restaurar la base de datos de escala de tiempo. Timescaledb-backup es un programa para facilitar el volcado y la restauración de una base de datos de TimescaleDB, que sean menos propensos a errores y mejorar el rendimiento.
Para ello, debe hacer lo siguiente

  1. Instale las herramientas como se detalla aquí.
  2. Creación de una instancia y base de datos de destino de servidor flexible de Azure Database for PostgreSQL
  3. Habilite la extensión de escala de tiempo como se ha mostrado anteriormente.
  4. Conceda el rol azure_pg_admin al usuario que usará ts-restore.
  5. Ejecute ts-restore para restaurar la base de datos

Aquí puede obtener más información sobre estas utilidades.

Nota:

Cuando se usan utilidades timescale-backup para la restauración en Azure, como los nombres de usuario de base de datos de servidor único de Azure Database for PostgreSQL se debe usar el formato <user@db-name>, tendrá que reemplazar @ por la codificación de caracteres %40.

pg_hint_plan

pg_hint_plan permite ajustar los planes de ejecución de PostgreSQL mediante "sugerencias" en los comentarios de SQL, como:

/*+ SeqScan(a) */

pg_hint_plan lee frases de sugerencia en un comentario de una forma especial proporcionada con la instrucción SQL de destino. La forma especial comienza por la secuencia de caracteres "/*+" y termina con "*/". Las frases de sugerencia están formadas por el nombre de la sugerencia y los parámetros siguientes entre paréntesis y delimitados por espacios. Las nuevas líneas de legibilidad pueden delimitar cada frase de sugerencia.

Ejemplo:

  /*+
      HashJoin(a b)
      SeqScan(a)
    */
    SELECT *
      FROM pgbench_branches b
      JOIN pgbench_accounts an ON b.bid = a.bid
     ORDER BY a.aid;

En el ejemplo anterior, el planificador usa los resultados de un seq scan en la tabla a que se combina con la tabla b como un hash join.

Para instalar pg_hint_plan, además de permitir su enumeración, como se muestra anteriormente, debe incluirlo en las bibliotecas de precarga compartida del servidor. Si cambia el parámetro shared_preload_libraries de Postgres deberá shared_preload_libraries para que tenga efecto. Puede cambiar los parámetros mediante Azure Portal o la CLI de Azure. Mediante Azure Portal:

  1. Seleccione la instancia de servidor flexible de Azure Database for PostgreSQL.

  2. En la barra lateral, seleccione Parámetros del servidor.

  3. Busque el parámetro shared_preload_libraries.

  4. Seleccione pg_hint_plan.

  5. Seleccione Guardar para conservar los cambios. Recibirá una notificación una vez que se haya guardado el cambio.

  6. Después de la notificación, reinicie el servidor para aplicar estos cambios.

Ahora puede habilitar pg_hing_plan en su base de datos del servidor flexible de Azure Database for PostgreSQL. Conéctese a la base de datos y ejecute el comando siguiente:

CREATE EXTENSION pg_hint_plan;

pg_buffercache

Pg_buffercache se puede usar para estudiar el contenido de shared_buffers. Con esta extensión puede indicar si una relación determinada está almacenada en caché o no (en shared_buffers). Esta extensión puede ayudarle a solucionar problemas de rendimiento (problemas de rendimiento relacionados con el almacenamiento en caché).

Es parte de contrib y es muy fácil instalar esta extensión.

CREATE EXTENSION pg_buffercache;

Extensiones y actualización de versión principal

El servidor flexible de Azure Database for PostgreSQL ha introducido la característica de actualización local de versiones principales localesque realiza una actualización local de la instancia de servidor flexible de Azure Database for PostgreSQL con un solo clic. La actualización de la versión principal local simplifica el proceso de actualización del servidor flexible de Azure Database for PostgreSQL, lo que minimiza la interrupción de los usuarios y las aplicaciones que acceden al servidor. La actualización de la versión principal local no admite extensiones específicas y hay algunas limitaciones para actualizar determinadas extensiones. Las extensiones Timescaledb, pgaudit,dblink, orafce y postgres_fdw no son compatibles con todas las versiones del servidor flexible de Azure Database for PostgreSQL al usar la característica de actualización de la versión principal local.