Dela via


Kopiera jobb i Azure Cosmos DB (förhandsversion)

Du kan utföra datakopiering i Azure Cosmos DB med hjälp av containerkopieringsjobb.

Du kan behöva kopiera data från ditt Azure Cosmos DB-konto om du vill uppnå något av följande scenarier:

Kopieringsjobb kan skapas och hanteras med hjälp av Azure CLI-kommandon.

Komma igång

Förutsättningar

  1. Aktivera kontinuerlig säkerhetskopiering på Azure Cosmos DB-källkontot.
  2. Aktivera förhandsgranskningsfunktionen för alla versioner och radera ändringsflödesläge (förhandsversion) på källkontot.

Aktivera onlinekopiering

Om du vill aktivera onlinekopiering på ditt källkonto kör du följande steg med Azure CLI.

# Set shell variables.
 $resourceGroupName = <azure_resource_group>
 $accountName = <azure_cosmos_db_account_name>
 $EnableOnlineContainerCopy = "EnableOnlineContainerCopy"

# List down existing capabilities of your account.
 $cosmosdb = az cosmosdb show \
    --resource-group $resourceGroupName \
    --name $accountName

$capabilities = (($cosmosdb | ConvertFrom-Json).capabilities)

# Append EnableOnlineContainerCopy capability in the list of capabilities.
 $capabilitiesToAdd = @()
 foreach ($item in $capabilities) {
    $capabilitiesToAdd += $item.name
 }
 $capabilitiesToAdd += $EnableOnlineContainerCopy

 # Update Cosmos DB account
 az cosmosdb update --capabilities $capabilitiesToAdd \
    -n $accountName -g $resourceGroupName

Viktigt!

Alla skrivåtgärder på källkontot debiteras dubbla RU:er för att bevara både tidigare och aktuella versioner av ändringar av objekt i containern. Denna RU-avgiftsökning kan komma att ändras i framtiden.

Kopiera en containers data

  1. Skapa Azure Cosmos DB-målcontainern med hjälp av de inställningar som du vill använda (partitionsnyckel, dataflödeskornighet, enheter för begäranden, unik nyckel och så vidare).
  2. Skapa containerkopieringsjobbet.
  3. Övervaka förloppet för kopieringsjobbet.
  4. När alla dokument har kopierats stoppar du uppdateringarna i källcontainern och anropar sedan API:et för slutförande för att markera jobbet som slutfört.
  5. Återuppta åtgärderna genom att rikta programmet eller klienten till käll- eller målcontainern på rätt sätt.

Hur fungerar containerkopiering?

  1. Plattformen allokerar beräkningsinstanser på serversidan för azure Cosmos DB-målkontot för att köra containerkopieringsjobben.
  2. Ett enda jobb körs över alla instanser samtidigt.
  3. Onlinekopieringsjobben använder alla versioner och tar bort ändringsflödesläget för att kopiera data och replikera inkrementella ändringar från källcontainern till målcontainern.
  4. När arbetet är slutfört avallokerar plattformen dessa instanser efter 15 minuters inaktivitet.

Du kan utföra kopieringsjobb offline för att kopiera data i samma Azure Cosmos DB för Mongo DB-konto.

Kopiera en samlings data

  1. Skapa Azure Cosmos DB-målsamlingen med hjälp av de inställningar som du vill använda (partitionsnyckel, dataflödeskornighet, enheter för begäranden, unik nyckel och så vidare).
  2. Stoppa åtgärderna i källsamlingen genom att pausa programinstanserna eller alla klienter som ansluter till den.
  3. Skapa kopieringsjobbet.
  4. Övervaka förloppet för kopieringsjobbet och vänta tills det har slutförts.
  5. Återuppta åtgärderna genom att på lämpligt sätt peka programmet eller klienten mot käll- eller målsamlingen som avsett.

Anteckning

Vi rekommenderar starkt att du slutar utföra några åtgärder i källsamlingen innan du påbörjar kopieringsjobbet för offlinesamlingen. Objektborttagningar och uppdateringar som görs i källsamlingen när du har startat kopieringsjobbet kanske inte registreras. Om du fortsätter att utföra åtgärder i källsamlingen medan kopieringsjobbet pågår kan du ha duplicerade eller saknade data i målsamlingen.

Hur fungerar samlingskopiering?

  1. Plattformen allokerar beräkningsinstanser på serversidan för azure Cosmos DB-målkontot.
  2. Dessa instanser allokeras när ett eller flera samlingskopieringsjobb skapas i kontot.
  3. Kopieringsjobben körs på dessa instanser.
  4. Ett enda jobb körs över alla instanser samtidigt.
  5. Instanserna delas av alla kopieringsjobb som körs inom samma konto.
  6. Offlinekopieringsjobben använder Ändringsströmmar för att kopiera data och replikera inkrementella ändringar från källsamlingen till målsamlingen.
  7. Plattformen kan frigöra instanserna om de är inaktiva i mer än 15 minuter.

Du kan utföra offlinetabellkopiering för att kopiera data från en tabell till en annan tabell i samma Azure Cosmos DB för Apache Cassandra-kontot.

Kopiera en tabells data

  1. Skapa Azure Cosmos DB-måltabellen med hjälp av de inställningar som du vill använda (partitionsnyckel, dataflödeskornighet, enheter för begäran och så vidare).
  2. Stoppa åtgärderna i källtabellen genom att pausa programinstanserna eller klienter som ansluter till den.
  3. Skapa kopieringsjobbet.
  4. Övervaka förloppet för kopieringsjobbet och vänta tills det har slutförts.
  5. Återuppta åtgärderna genom att på lämpligt sätt peka programmet eller klienten mot käll- eller måltabellen som avsett.

Anteckning

Vi rekommenderar starkt att du slutar utföra åtgärder i källtabellen innan du påbörjar offline-tabellkopieringsjobbet. Objektborttagningar och uppdateringar som görs i källtabellen när du har startat kopieringsjobbet kanske inte registreras. Om du fortsätter att utföra åtgärder i källtabellen medan kopieringsjobbet pågår kan du ha duplicerade eller saknade data i måltabellen.

Hur fungerar tabellkopiering?

  1. Plattformen allokerar beräkningsinstanser på serversidan för azure Cosmos DB-målkontot.
  2. Dessa instanser allokeras när ett eller flera kopieringsjobb skapas i kontot.
  3. Kopieringsjobben körs på dessa instanser.
  4. Ett enda jobb körs över alla instanser samtidigt.
  5. Instanserna delas av alla kopieringsjobb som körs inom samma konto.
  6. Offlinekopieringsjobben använder Ändringsflöde för att kopiera data och replikera inkrementella ändringar från källtabellen till måltabellen.
  7. Plattformen kan frigöra instanserna om de är inaktiva i mer än 15 minuter.

Faktorer som påverkar kopieringsjobbets hastighet

Takten för förloppet för containerkopieringsjobb bestäms av följande faktorer:

  • Inställningen för källcontainer eller databasdataflöde.

  • Inställningen för målcontainer eller databasdataflöde.

    Tips

    Ange målcontainerns dataflöde till minst två gånger källcontainerns dataflöde.

  • Beräkningsinstanser på serversidan som allokeras till Azure Cosmos DB-kontot för att utföra dataöverföringen.

    Viktigt!

    Standard-SKU:n erbjuder två 4-vCPU 16 GB instanser på serversidan per konto.

Begränsningar

Förhandsgranska behörighetskriterier

Containerkopieringsjobb fungerar inte med konton som har följande funktioner aktiverade. Inaktivera dessa funktioner innan du kör containerkopieringsjobb:

Kontokonfigurationer

TTL-inställningen (Time to Live) justeras inte i målcontainern. Om ett dokument inte har upphört att gälla i källcontainern startar det därför nedräkningen på nytt i målcontainern.

Vanliga frågor

Finns det ett serviceavtal för containerkopieringsjobb?

Containerkopieringsjobb stöds för närvarande på bästa möjliga sätt. Vi tillhandahåller inga serviceavtalsgarantier (SLA) för den tid det tar för jobben att slutföras.

Kan jag skapa flera containerkopieringsjobb i ett konto?

Ja, du kan skapa flera jobb inom samma konto. Jobben körs i följd. Du kan visa en lista över alla jobb som skapas i ett konto och övervaka deras förlopp.

Kan jag kopiera en hel databas i Azure Cosmos DB-kontot?

Du måste skapa ett jobb för varje container i databasen.

Jag har ett Cosmos DB-konto med flera regioner. I vilken region kommer containerkopieringsjobbet att köras?

Containerkopieringsjobbet körs i skrivregionen. I ett konto som har konfigurerats med skrivningar i flera regioner körs jobbet i en av regionerna i listan över skrivregioner.

Vad händer med containerkopieringsjobben när kontots skrivregion ändras?

Kontots skrivregion kan ändras i det sällsynta scenariot med ett regionstopp eller på grund av manuell redundans. I detta scenario misslyckas ofullständiga containerkopieringsjobb som skapades i kontot. Du skulle behöva återskapa de här misslyckade jobben. Återskapade jobb körs sedan i det nya (aktuella) skrivområdet.

Regioner som stöds

För närvarande stöds containerkopiering i följande regioner:

Amerika Europa och Afrika Asien och stillahavsområdet
Södra Brasilien Centrala Frankrike Australien centrala
Centrala Kanada Frankrike, södra Australien Central 2
Kanada, östra Tyskland, norra Australien, östra
Centrala USA Tyskland, västra centrala Centrala Indien
Centrala USA EUAP Europa, norra Japan, östra
Östra USA Norge, östra Centrala Korea
Östra USA 2 Västra Norge Sydostasien
Östra USA 2 EUAP Schweiz, norra Centrala Förenade Arabemiraten
Norra centrala USA Schweiz, västra Västra Indien
Sydcentrala USA Södra Storbritannien Asien, östra
Västra centrala USA Västra Storbritannien Södra Malaysia
Västra USA Västeuropa Västra Japan
Västra USA 2 Centrala Israel Sydöstra Australien
Stöds inte Sydafrika, norra Stöds inte

Kända och vanliga problem

  • När du använder funktionen för onlinecontainerkopiering lagrar målcontainern två separata dokument, som var och en motsvarar de distinkta id värdena, om id fältet ändras i källcontainern.

  • När du ändrar partitionsnycklar under datakopiering till målcontainern kontrollerar du att den nya partitionsnyckeln och id kombinationerna är unika i hela containern.

    Tänk till exempel på följande scenario:

    Ursprunglig partitionsnyckel:/department
    Källdokument:

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

    Ny partitionsnyckel:/employeeName
    Resulterande dokument i målcontainern:

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

    I det här fallet delar båda dokumenten nu samma partitionsnyckel (/employeeName) och id kombination ("employeeName": "John Doe", "id": "101"), vilket orsakar en konflikt. Den här konflikten resulterar i ett infogningsfel. Undvik sådana problem genom att se till att den nya partitionsnyckeln och id kombinationerna är unika för alla dokument i målcontainern.

  • Fel – Partitionsnyckeln har nått maximal storlek på 20 GB

    När du ändrar partitionsnycklar under datakopieringen till målcontainern kontrollerar du att den nya partitionsnyckeln ligger inom storleksgränsen för den logiska partitionsnyckeln på 20 GB. Om den här gränsen överskrids misslyckas jobbet med följande fel:

    "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"]"
    
  • Fel – Ägarresursen finns inte

    Om jobbskapandet misslyckas och visar felet "Ägarresursen finns inte" (felkod 404) har målcontainern inte skapats än eller så matchar inte containernamnet som används för att skapa jobbet ett faktiskt containernamn.

    Kontrollera att målcontainern har skapats innan du kör jobbet och se till att containernamnet i jobbet matchar ett faktiskt containernamn.

    "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\"]
    
  • Fel – Fel vid hämtning av resurser för uppgift

    Det här felet kan inträffa på grund av interna serverproblem. Lös problemet genom att kontakta Microsoft Support genom att öppna en ny supportbegäran i Azure Portal. För Problemtyp väljer du Datamigrering. För Problemundertyp väljer du Containerkopiering för intrakonto.

    "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
    

Nästa steg