Eseguire la migrazione del database PostgreSQL al server PostgreSQL abilitato per Azure Arc
Questo documento descrive i passaggi per trasferire il database PostgreSQL esistente (un database non è ospitato nei servizi dati abilitati per Azure Arc) nel server PostgreSQL abilitato per Azure Arc.
Nota
In quanto funzionalità di anteprima, la tecnologia presentata in questo articolo è soggetta alle condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure.
Gli aggiornamenti più recenti sono disponibili nelle note sulla versione.
Considerazioni
Il server PostgreSQL abilitato per Azure Arc è la versione della community di PostgreSQL. Pertanto, qualsiasi strumento che funziona in PostgreSQL all'esterno di Azure Arc deve funzionare con il server PostgreSQL abilitato per Azure Arc.
Di conseguenza, con il set di strumenti attualmente usati per Postgres, si dovrebbe essere in grado di:
- Eseguire il backup del database Postgres dall'istanza ospitata all'esterno di Azure Arc
- Ripristinarlo nel server PostgreSQL abilitato per Azure Arc
A questo punto, non resta che:
- reimpostare i parametri del server
- reimpostare i contesti di sicurezza: ricreare utenti, ruoli e reimpostare le autorizzazioni...
Per eseguire questa operazione di backup/ripristino, è possibile usare qualsiasi strumento in grado di eseguire il backup/ripristino per Postgres. Ad esempio:
- Azure Data Studio e la relativa estensione Postgres
pgcli
pgAdmin
pg_dump
pg_restore
psql
- ...
Esempio
Di seguito vengono illustrati questi passaggi usando lo strumento pgAdmin
.
Tenere in considerazione la configurazione seguente:
Origine:
Un server Postgres in esecuzione in locale su un server bare metal e denominato JEANYDSRV. Si tratta della versione 14 e ospita un database denominato MyOnPremPostgresDB con una tabella T1 con 1 rigaDestinazione:
Un server Postgres in esecuzione in un ambiente Azure Arc e denominato postgres01. Si tratta della versione 14. Non dispone di alcun database, ad eccezione del database Postgres standard.
Eseguire un backup del database di origine in locale
Procedere alla configurazione:
- Assegnare un nome file: MySourceBackup
- Impostare il formato su Personalizzato
Il backup viene completato correttamente:
Creare un database vuoto nel sistema di destinazione nel server PostgreSQL abilitato per Azure Arc
Nota
Per registrare un'istanza di Postgres nello strumento pgAdmin
, è necessario usare l'indirizzo IP pubblico dell'istanza nel cluster Kubernetes e impostare in modo appropriato porta e contesto di protezione. Questi dettagli sono disponibili nella riga dell'endpoint dopo psql
l'esecuzione del comando seguente:
az postgres server-arc endpoint list -n postgres01 --k8s-namespace <namespace> --use-k8s
Il comando restituisce un output simile al seguente:
{
"instances": [
{
"endpoints": [
"Description": "PostgreSQL Instance",
"Endpoint": "postgresql://postgres:<replace with password>@12.345.123.456:1234"
},
{
"Description": "Log Search Dashboard",
"Endpoint": "https://12.345.123.456:12345/kibana/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:\"postgres01\"'))"
},
{
"Description": "Metrics Dashboard",
"Endpoint": "https://12.345.123.456:12345/grafana/d/postgres-metrics?var-Namespace=arc3&var-Name=postgres01"
}
],
"engine": "PostgreSql",
"name": "postgres01"
}
],
"namespace": "arc"
}
Assegnare un nome al database di destinazione RESTORED_MyOnPremPostgresDB.
Ripristinare il database nella configurazione di Arc
Configurare il ripristino:
Puntare al file che contiene il backup da ripristinare: MySourceBackup
Mantenere il formato impostato su Personalizzato o tar
Fare clic su Ripristina.
Il ripristino ha esito positivo.
Verificare che il database sia stato ripristinato correttamente nel server PostgreSQL abilitato per Azure Arc
Usare uno dei metodi seguenti:
Da pgAdmin
:
Espandere l'istanza di Postgres ospitata nella configurazione di Azure Arc. Verrà visualizzata la tabella nel database ripristinato e, quando si selezionano i dati, visualizza la stessa riga di quella presente nell'istanza locale:
Da psql
all'interno della configurazione Azure Arc:
All'interno dell'installazione di Arc è possibile usare psql
per connettersi all'istanza di Postgres, impostare il contesto del database su RESTORED_MyOnPremPostgresDB
ed eseguire query sui dati:
Elencare i punti finali per creare la stringa di connessione
psql
:az postgres server-arc endpoint list -n postgres01 --k8s-namespace <namespace> --use-k8s
{ "instances": [ { "endpoints": [ "Description": "PostgreSQL Instance", "Endpoint": "postgresql://postgres:<replace with password>@12.345.123.456:1234" }, { "Description": "Log Search Dashboard", "Endpoint": "https://12.345.123.456:12345/kibana/app/kibana#/discover?_a=(query:(language:kuery,query:'custom_resource_name:\"postgres01\"'))" }, { "Description": "Metrics Dashboard", "Endpoint": "https://12.345.123.456:12345/grafana/d/postgres-metrics?var-Namespace=arc3&var-Name=postgres01" } ], "engine": "PostgreSql", "name": "postgres01" } ], "namespace": "arc" }
Dalla stringa di connessione
psql
usare il parametro-d
per indicare il nome del database. Con il comando seguente, verrà richiesta la password:psql -d RESTORED_MyOnPremPostgresDB -U postgres -h 10.0.0.4 -p 32639
psql
si connette.Password for user postgres: psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1), server 12.3 (Debian 12.3-1.pgdg100+1)) WARNING: psql major version 10, server major version 12. Some psql features might not work. SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) Type "help" for help. RESTORED_MyOnPremPostgresDB=#
Selezionare la tabella; verranno visualizzati i dati ripristinati dall'istanza di Postgres locale:
RESTORED_MyOnPremPostgresDB=# select * from t1;
col1 | col2 ------+------------- 1 | BobbyIsADog (1 row)
Nota
- Attualmente, non è possibile "eseguire l'onboarding in Azure Arc" di un'istanza di Postgres esistente che verrebbe eseguita in locale o in un altro cloud. In altre parole, non è possibile installare una sorta di "agente Azure Arc" nell'istanza di Postgres esistente affinché Azure Arc possa abilitarla. È invece necessario creare una nuova istanza di Postgres e trasferire i dati in essa. È possibile usare la tecnica illustrata in precedenza per eseguire questa operazione, oppure usare qualsiasi strumento ETL di propria scelta.
*Nei documenti indicati, ignorare le sezioni Accedere al portale di Azure e Creare un Database di Azure per PostgreSQL. Implementare i passaggi rimanenti nella distribuzione di Azure Arc. Tali sezioni sono specifiche del Database di Azure per il server PostgreSQL offerto come servizio PaaS nel cloud di Azure; tuttavia, le altre parti dei documenti sono direttamente applicabili al server PostgreSQL abilitato per Azure Arc.