Condividi tramite


Attività di copia in Azure Cosmos DB (anteprima)

È possibile eseguire la copia dei dati in Azure Cosmos DB usando i processi di copia del contenitore.

Potrebbe essere necessario copiare dati dall'account Azure Cosmos DB se si vuole ottenere uno di questi scenari:

I processi di copia possono essere creati e gestiti usando i comandi dell'interfaccia della riga di comando di Azure.

Iniziare

Per iniziare a usare la copia del contenitore online per gli account API NoSQL di Azure Cosmos DB, registrarsi per la funzionalità di anteprima Copia del contenitore online (NoSQL) in Anteprima funzionalità nel portale di Azure. Al termine della registrazione, l'anteprima è valida per tutti gli account API NoSQL nella sottoscrizione.

Prerequisiti

  1. Abilitare il backup continuo nell'account Azure Cosmos DB di origine.
  2. Eseguire la registrazione per tutte le versioni ed eliminare la funzionalità di anteprima della modalità feed di modifiche nella sottoscrizione dell'account di origine.

Importante

Tutte le operazioni di scrittura nel contenitore di origine verranno addebitate al 10% di UR aggiuntive per mantenere le versioni precedenti e correnti delle modifiche apportate agli elementi nel contenitore. Questo aumento dell'addebito delle UR è soggetto a modifiche in futuro.

Copiare i dati di un contenitore

  1. Creare il contenitore Azure Cosmos DB di destinazione usando le impostazioni desiderate (chiave di partizione, granularità della velocità effettiva, unità richiesta, chiave univoca e così via).
  2. Creare il processo di copia del contenitore.
  3. Monitorare lo stato di avanzamento del processo di copia.
  4. Dopo aver copiato tutti i documenti, arrestare gli aggiornamenti nel contenitore di origine e quindi chiamare l'API di completamento per contrassegnare il processo come completato.
  5. Riprendere le operazioni puntando in modo appropriato l'applicazione o il client al contenitore di origine o di destinazione come previsto.

Come funziona la copia del contenitore?

  1. La piattaforma alloca le istanze di calcolo lato server per l'account Azure Cosmos DB di destinazione per eseguire i processi di copia del contenitore.
  2. Un singolo processo viene eseguito in tutte le istanze in qualsiasi momento.
  3. I processi di copia online usano tutte le versioni ed eliminano la modalità feed di modifiche per copiare i dati e replicare le modifiche incrementali dal contenitore di origine al contenitore di destinazione.
  4. Al termine del lavoro, la piattaforma dealloca queste istanze dopo 15 minuti di inattività.

È possibile eseguire processi di copia della raccolta offline per copiare i dati nello stesso account Azure Cosmos DB per Mongo DB.

Copiare i dati di una raccolta

  1. Creare la raccolta di Azure Cosmos DB di destinazione usando le impostazioni da usare (chiave di partizione, granularità della velocità effettiva, unità richiesta, chiave univoca e così via).
  2. Arrestare le operazioni nella raccolta di origine sospendendo le istanze dell'applicazione o tutti i client che si connettono.
  3. Creare il processo di copia.
  4. Monitorare lo stato di avanzamento del processo di copia e attendere il completamento.
  5. Riprendere le operazioni indirizzando in modo appropriato l'applicazione o il client alla raccolta di origine o di destinazione come previsto.

Nota

È consigliabile interrompere l'esecuzione di operazioni sulla raccolta di origine prima di iniziare il processo di copia della raccolta offline. Le eliminazioni e gli aggiornamenti degli elementi eseguiti nella raccolta di origine dopo l'avvio del processo di copia potrebbero non essere acquisiti. Se si continuano a eseguire operazioni sulla raccolta di origine mentre il processo di copia è in corso, potrebbero essere presenti dati duplicati o mancanti nella raccolta di destinazione.

Come funziona la copia della raccolta?

  1. La piattaforma alloca istanze di calcolo lato server per l'account Azure Cosmos DB di destinazione.
  2. Queste istanze vengono allocate quando vengono creati uno o più processi di copia raccolta all'interno dell'account.
  3. I processi di copia vengono eseguiti su queste istanze.
  4. Un singolo processo viene eseguito in tutte le istanze in qualsiasi momento.
  5. Le istanze vengono condivise da tutti i processi di copia in esecuzione all'interno dello stesso account.
  6. I processi di copia offline usano flussi di modifica per copiare i dati e replicare le modifiche incrementali dalla raccolta di origine alla raccolta di destinazione.
  7. La piattaforma potrebbe deallocare le istanze se rimangono inattive per più di 15 minuti.

È possibile eseguire la copia della tabella offline per copiare i dati di una tabella in un'altra tabella all'interno dello stesso account Azure Cosmos DB per Apache Cassandra.

Copiare i dati di una tabella

  1. Creare la tabella di Azure Cosmos DB di destinazione usando le impostazioni da usare (chiave di partizione, granularità della velocità effettiva, unità richiesta e così via).
  2. Arrestare le operazioni nella tabella di origine sospendo le istanze dell'applicazione o tutti i client che si connettono.
  3. Creare il processo di copia.
  4. Monitorare lo stato di avanzamento del processo di copia e attendere il completamento.
  5. Riprendere le operazioni indirizzando in modo appropriato l'applicazione o il client alla tabella di origine o di destinazione come previsto.

Nota

È consigliabile interrompere l'esecuzione di qualsiasi operazione nella tabella di origine prima di iniziare il processo di copia della tabella offline. Le eliminazioni e gli aggiornamenti degli elementi eseguiti nella tabella di origine dopo l'avvio del processo di copia potrebbero non essere acquisiti. Se si continuano a eseguire operazioni sulla tabella di origine mentre il processo di copia è in corso, è possibile che nella tabella di destinazione siano presenti dati duplicati o mancanti.

Come funziona la copia della tabella?

  1. La piattaforma alloca istanze di calcolo lato server per l'account Azure Cosmos DB di destinazione.
  2. Queste istanze vengono allocate quando vengono creati uno o più processi di copia all'interno dell'account.
  3. I processi di copia vengono eseguiti su queste istanze.
  4. Un singolo processo viene eseguito in tutte le istanze in qualsiasi momento.
  5. Le istanze vengono condivise da tutti i processi di copia in esecuzione all'interno dello stesso account.
  6. I processi di copia offline utilizzano il feed di modifiche per copiare i dati e replicare le modifiche incrementali dalla tabella di origine alla tabella di destinazione.
  7. La piattaforma potrebbe deallocare le istanze se rimangono inattive per più di 15 minuti.

Fattori che influiscono sulla velocità di una copiatura

La velocità di avanzamento del processo di copia del contenitore è determinata da questi fattori:

  • Impostazione di velocità effettiva del contenitore o del database di origine.

  • Impostazione di velocità effettiva del contenitore o del database di destinazione.

    Suggerimento

    Impostare la velocità effettiva del contenitore di destinazione su un valore pari ad almeno il doppio della velocità effettiva del contenitore di origine.

  • Istanze di calcolo lato server allocate all'account Azure Cosmos DB per l'esecuzione del trasferimento dei dati.

    Importante

    Lo SKU predefinito offre due istanze lato server da 16 GB con 4 vCPU per account.

Limiti

Criteri di idoneità per l'anteprima

Le operazioni di copia dei contenitori non funzionano con gli account che hanno abilitate le seguenti funzionalità. Disabilitare queste funzionalità prima di eseguire i processi di copia del contenitore:

Configurazioni dell'account

L'impostazione relativa alla Durata del ciclo di vita (TTL) non viene modificata nel contenitore di destinazione. Di conseguenza, se un documento non è scaduto nel contenitore di origine, avvia nuovamente il conto alla rovescia nel contenitore di destinazione.

Domande frequenti

Esiste un contratto di servizio per i processi di copia del contenitore?

I processi di copia del contenitore sono attualmente supportati in base al principio del massimo impegno. Non vengono fornite garanzie relative al contratto di servizio per il tempo necessario per il completamento dei processi.

È possibile creare più processi di copia del contenitore all'interno di un account?

Sì, è possibile creare più lavori all'interno dello stesso account. I lavori verranno eseguiti consecutivamente. È possibile elencare tutti i processi creati all'interno di un account e monitorarne lo stato.

È possibile copiare un intero database all'interno dell'account Azure Cosmos DB?

È necessario creare un processo per ogni contenitore nel database.

Ho un account Azure Cosmos DB con più aree. In quale area verrà eseguito il processo di copia del contenitore?

Il processo di copia del contenitore viene eseguito nell'area di scrittura. In un account configurato con le scritture in più aree, il processo viene eseguito in una delle aree presenti nell'elenco delle aree di scrittura.

Cosa accade alle attività di copia dei container se cambia l'area di scrittura dell'account?

L'area di scrittura dell'account potrebbe cambiare nell'improbabile caso di un'interruzione di servizio nell'area o a causa del failover manuale. In questo scenario, i processi di copia del contenitore incompleti creati all'interno dell'account avranno esito negativo. Sarà necessario creare nuovamente questi processi non riusciti. I processi ricreati vengono quindi eseguiti nella nuova (corrente) area di scrittura.

Aree geografiche supportate

Attualmente, la copia del contenitore è supportata nelle aree seguenti:

Americhe Europa e Africa Asia Pacifico
Brasile meridionale Francia centrale Australia centrale
Canada centrale Francia meridionale Australia centrale 2
Canada orientale Germania settentrionale Australia orientale
Stati Uniti centrali Germania centro-occidentale India centrale
Stati Uniti centrali (EUAP) Europa settentrionale Giappone orientale
Stati Uniti orientali Norvegia orientale Corea centrale
Stati Uniti orientali 2 Norvegia occidentale Asia sud-orientale
Stati Uniti orientali 2 (EUAP) Svizzera settentrionale Emirati Arabi Uniti centrali
Stati Uniti centro-settentrionali Svizzera occidentale India occidentale
Stati Uniti centro-meridionali Regno Unito meridionale Asia orientale
Stati Uniti centro-occidentali Regno Unito occidentale Malaysia meridionale
Stati Uniti occidentali Europa occidentale Giappone occidentale
Stati Uniti occidentali 2 Israele centrale Australia sud-orientale
Non supportato Sudafrica settentrionale Non supportato

Problemi noti e comuni

  • Quando si usa la funzionalità di copia del contenitore online, se il id campo viene modificato nel contenitore di origine, il contenitore di destinazione archivia due documenti separati, ognuno corrispondente ai valori distinti id .

  • Quando si modificano le chiavi di partizione durante la copia dei dati nel contenitore di destinazione, assicurarsi che le nuove combinazioni e id chiave di partizione siano univoche nel contenitore.

    Ad esempio, si consideri il seguente scenario:

    Chiave di partizione originale:/department
    Documenti di origine:

    {
        "id": "101",
        "employeeName": "John Doe",
        "department": "HR"
    },
    {
        "id": "101",
        "employeeName": "John Doe",
        "department": "Finance"
    }
    

    Nuova chiave di partizione:/employeeName
    Documenti risultanti nel contenitore di destinazione:

    {
        "id": "101",
        "employeeName": "John Doe",
        "department": "HR"
    },
    {
        "id": "101",
        "employeeName": "John Doe",
        "department": "Finance"
    }
    

    In questo caso, entrambi i documenti condividono ora la stessa chiave di partizione (/employeeName) e la combinazione (id"employeeName": "John Doe", "id": "101"), che causa un conflitto. Questo conflitto genera un errore di inserimento. Per evitare questi problemi, assicurarsi che la nuova chiave di partizione e id le nuove combinazioni siano univoche in tutti i documenti nel contenitore di destinazione.

  • Errore : la chiave di partizione ha raggiunto le dimensioni massime di 20 GB

    Quando si modificano le chiavi di partizione durante la copia dei dati nel contenitore di destinazione, assicurarsi che la nuova chiave di partizione rimanga entro il limite di dimensioni della chiave di partizione logica di 20 GB. Se questo limite viene superato, il processo avrà esito negativo con l'errore seguente:

    "code": "403",
    "message": "Response status code does not indicate success: Forbidden (403); Substatus: 1014; ActivityId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; Reason: (Message: {"Errors":["Partition key reached maximum size of 20 GB. Learn more: https://aka.ms/CosmosDB/sql/errors/full-pk"]"
    
  • Errore: La risorsa proprietaria non esiste.

    Se la creazione del processo ha esito negativo e restituisce l'errore La risorsa proprietaria non esiste (codice errore 404), il contenitore di destinazione non è stato ancora creato o il nome del contenitore usato per creare il processo non corrisponde a un nome di contenitore effettivo.

    Assicurarsi che il contenitore di destinazione venga creato prima di eseguire il processo e assicurarsi che il nome del contenitore nel processo corrisponda a un nome di contenitore effettivo.

    "code": "404",
    "message": "Response status code does not indicate success: NotFound (404); Substatus: 1003; ActivityId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; Reason: (Message: {\"Errors\":[\"Owner resource does not exist\"]
    
  • Errore: La richiesta non è autorizzata.

    Se la richiesta ha esito negativo e restituisce l'errore Non autorizzato (codice errore 401), l'autorizzazione locale potrebbe essere disabilitata.

    I processi di copia del contenitore usano le chiavi primarie per l'autenticazione. Se l'autorizzazione locale è disabilitata, la creazione del processo ha esito negativo. L'autorizzazione locale deve essere abilitata affinché le operazioni di copia dei container funzionino.

    "code": "401",
    "message": " Response status code does not indicate success: Unauthorized (401); Substatus: 5202; ActivityId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; Reason: Local Authorization is disabled. Use an AAD token to authorize all requests."
    
  • Errore: Errore durante il recupero delle risorse per il compito.

    Questo errore può verificarsi a causa di problemi interni del server. Per risolvere questo problema, contattare il supporto tecnico Microsoft aprendo una Nuova richiesta di supporto nel portale di Azure. Per Tipo di problema: selezionare Migrazione dei dati. Per Sottotipo problema, selezionare Copia del contenitore all'interno dell'account.

    "code": "500"
    "message": "Error while getting resources for job, StatusCode: 500, SubStatusCode: 0, OperationId:  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, ActivityId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    

Passaggi successivi