Condividi tramite


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:

  1. Eseguire il backup del database Postgres dall'istanza ospitata all'esterno di Azure Arc
  2. 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 riga Migrate-source

  • Destinazione:
    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.
    Migrate-destination

Eseguire un backup del database di origine in locale

Migrate-source-backup

Procedere alla configurazione:

  1. Assegnare un nome file: MySourceBackup
  2. Impostare il formato su PersonalizzatoMigrate-source-backup-configure

Il backup viene completato correttamente:
Migrate-source-backup-completed

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.

Migrate-destination-db-create

Ripristinare il database nella configurazione di Arc

Migratre-db-restore

Configurare il ripristino:

  1. Puntare al file che contiene il backup da ripristinare: MySourceBackup

  2. Mantenere il formato impostato su Personalizzato o tarMigrate-db-restore-configure

  3. Fare clic su Ripristina.

    Il ripristino ha esito positivo.
    Migrate-db-restore-completed

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:

Migrate-db-restore-verification

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:

  1. 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"
    }
    
  2. 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=#   
    
  3. 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.