Obtención de la marca de tiempo restaurable más reciente para cuentas con copia de seguridad continua
SE APLICA A: NoSQL MongoDB Gremlin Table
En este artículo se describe cómo obtener la marca de tiempo restaurable más reciente para cuentas con el modo de copia de seguridad continua. En él, se explica cómo obtener el tiempo restaurable más reciente mediante Azure PowerShell y la CLI de Azure, y se proporciona el formato de solicitud y respuesta para los comandos de PowerShell y la CLI.
Esta característica es compatible con la API de Azure Cosmos DB para contenedores NoSQL, API para MongoDB, Table API y API para grafos de Gremlin.
Importante
En el caso de las cuentas de escritura en varias regiones, la marca de tiempo restaurable más reciente se determina mediante una marca de tiempo de resolución de conflictos (crts
). Los métodos enumerados a continuación no lo devuelven. Consulte el ejemplo de GitHub aquí para obtener información sobre cómo consumir la fuente de cambios de Azure Cosmos DB y devolver documentos con ConflictResolvedTimestamp(crts)
en un contenedor.
Get-AzCosmosDBSqlContainerBackupInformation -AccountName <System.String> `
-DatabaseName <System.String> `
[-DefaultProfile <Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer>] `
-Location <System.String> `
-Name <System.String> `
-ResourceGroupName <System.String> [<CommonParameters>]
Solicitud de ejemplo:
Get-AzCosmosDBSqlContainerBackupInformation -ResourceGroupName "rg" `
-AccountName "sqlpitracc" `
-DatabaseName "db1" `
-Name "container1" `
-Location "eastus"
Respuesta de ejemplo (en formato UTC):
LatestRestorableTimestamp
-------------------------
10/26/2021 6:24:25 PM
az cosmosdb sql retrieve-latest-backup-time -g {resourcegroup} \
-a {accountname} \
-d {db_name} \
-c {container_name} \
-l {location}
Solicitud de ejemplo:
az cosmosdb sql retrieve-latest-backup-time -g "rg" \
-a "sqlpitracc" \
-d "db1" \
-c "container1" \
-l "eastus"
Respuesta de ejemplo (en formato UTC):
{
"continuousBackupInformation": {
"latestRestorableTimestamp": "10/26/2021 5:27:45 PM"
}
}
Use el siguiente script para obtener la marca de tiempo restaurable más reciente de una base de datos. Este script se iterará por todos los contenedores de la base de datos especificada y devolverá el mínimo de la marca de tiempo restaurable más reciente de todos sus contenedores.
Function Get-LatestRestorableTimestampForSqlDatabase {
[CmdletBinding()]
param(
[Parameter(Position = 0, mandatory = $true)]
[string] $resourceGroupName,
[Parameter(Position = 1, mandatory = $true)]
[string] $accountName,
[Parameter(Position = 2, mandatory = $true)]
[string] $databaseName,
[Parameter(Position = 3, mandatory = $true)]
[string] $location)
Write-Host
Write-Host "Latest restorable timestamp for a database is minimum of restorable timestamps of all the underlying containers"
Write-Host
Write-Debug "Listing all containers in database: $databaseName"
$containers = Get-AzCosmosDBSqlContainer -ResourceGroupName $resourceGroupName -AccountName $accountName -DatabaseName $databaseName
If (-Not $containers) {
throw "Error: Found no containers to restore in the given database."
}
Write-Debug "Found $($containers.Length) containers under database $databaseName"
$latestRestorableTimestampForDatabase = [DateTime]::MaxValue
foreach ($container in $containers) {
Write-Debug "Getting latest restorable timestamp for container: $($container.Name)"
$latestRestorableTimestampForContainer = Get-AzCosmosDBSqlContainerBackupInformation -ResourceGroupName $resourceGroupName -AccountName $accountName -DatabaseName $databaseName -Name $container.Name -Location $location
Write-Debug "Latest Restorable Timestamp for container $($container.Name): $($latestRestorableTimestampForContainer.LatestRestorableTimestamp)"
$latestRestorableTimestampForContainerDateTime = [DateTime]$latestRestorableTimestampForContainer.LatestRestorableTimestamp
If ($latestRestorableTimestampForContainerDateTime -lt $latestRestorableTimestampForDatabase) {
Write-Debug "Latest Restorable Timestamp for container $($container.Name) is less than current database restorable timestamp: $latestRestorableTimestampForDatabase"
$latestRestorableTimestampForDatabase = $latestRestorableTimestampForContainerDateTime
}
Write-Debug "Latest Restorable Timestamp for database so far: $latestRestorableTimestampForDatabase"
}
if ($latestRestorableTimestampForDatabase -eq [DateTime]::MaxValue) {
throw "Error: Failed to retrieve latest backup timestamp for database: $databaseName"
}
Write-Debug "Latest Restorable Timestamp in UTC for database $($databaseName): $latestRestorableTimestampForDatabase"
return $latestRestorableTimestampForDatabase
}
Sintaxis:
Get-LatestRestorableTimestampForSqlDatabase `
-ResourceGroupName <resourceGroup> `
-AccountName <accountName> `
-DatabaseName <databaseName> `
-Location <location>
Solicitud de ejemplo:
Import-Module .\LatestRestorableDatabaseForSqlDatabase.ps1
Get-LatestRestorableTimestampForSqlDatabase `
-ResourceGroupName rg `
-AccountName sqlpitracc `
-DatabaseName db1 `
-Location eastus
Respuesta de ejemplo (en formato UTC):
Latest restorable timestamp for a database is minimum of restorable timestamps of all the underlying containers
Wednesday, November 3, 2021 8:02:44 PM
Use el siguiente script para obtener la marca de tiempo restaurable más reciente de una cuenta de SQL. Este script se iterará por todos los contenedores de esta cuenta y devolverá el mínimo de la marca de tiempo restaurable más reciente de todos sus contenedores.
Function Get-LatestRestorableTimestampForSqlAccount {
[CmdletBinding()]
param(
[Parameter(Position = 0, mandatory = $true)]
[string] $resourceGroupName,
[Parameter(Position = 1, mandatory = $true)]
[string] $accountName,
[Parameter(Position = 2, mandatory = $true)]
[string] $location)
Write-Host
Write-Host "Latest restorable timestamp for an account is minimum of restorable timestamps of all the underlying containers"
Write-Host
Write-Debug "Listing all databases in account: $accountName"
$databases = Get-AzCosmosDBSqlDatabase -ResourceGroupName $resourceGroupName -AccountName $accountName
Write-Debug "Found $($databases.Length) databases under account $accountName"
$latestRestorableTimestampForAccount = [DateTime]::MaxValue
foreach ($database in $databases) {
Write-Debug "Listing all containers in database: $($database.Name)"
$containers = Get-AzCosmosDBSqlContainer -ResourceGroupName $resourceGroupName -AccountName $accountName -DatabaseName $($database.Name)
If (-Not $containers) {
throw "Error: Found no containers to restore in the given database."
}
Write-Debug "Found $($containers.Length) containers under database $($database.Name)"
foreach ($container in $containers) {
Write-Debug "Getting latest restorable timestamp for container: $($container.Name)"
$latestRestorableTimestampForContainer = Get-AzCosmosDBSqlContainerBackupInformation -ResourceGroupName $resourceGroupName -AccountName $accountName -DatabaseName $database.Name -Name $container.Name -Location $location
Write-Debug "Latest Restorable Timestamp for container $($container.Name): $($latestRestorableTimestampForContainer.LatestRestorableTimestamp)"
$latestRestorableTimestampForContainerDateTime = [DateTime]$latestRestorableTimestampForContainer.LatestRestorableTimestamp
If ($latestRestorableTimestampForContainerDateTime -lt $latestRestorableTimestampForAccount) {
Write-Debug "Latest Restorable Timestamp for container $($container.Name) is less than current database restorable timestamp: $latestRestorableTimestampForAccount"
$latestRestorableTimestampForAccount = $latestRestorableTimestampForContainerDateTime
}
Write-Debug "Latest Restorable Timestamp for database so far: $latestRestorableTimestampForAccount"
}
}
if ($latestRestorableTimestampForAccount -eq [DateTime]::MaxValue) {
throw "Error: Failed to retrieve latest backup timestamp for account: $accountName"
}
Write-Debug "Latest Restorable Timestamp in UTC for account $($accountName): $latestRestorableTimestampForAccount"
return $latestRestorableTimestampForAccount
}
Sintaxis:
Get-LatestRestorableTimestampForSqlAccount `
-ResourceGroupName <resourceGroupName> `
-AccountName <accountName> `
-Location <location>
Solicitud de ejemplo:
Import-Module .\LatestRestorableTimestampForSqlAccount.ps1
Get-LatestRestorableTimestampForSqlAccount `
-ResourceGroupName rg `
-AccountName sqlpitracc `
-location eastus
Respuesta de ejemplo (en formato UTC):
Latest restorable timestamp for an account is minimum of restorable timestamps of all the underlying containers
Wednesday, November 3, 2021 8:11:03 PM
Get-AzCosmosDBMongoDBCollectionBackupInformation `
-AccountName <System.String> `
-DatabaseName <System.String> `
[-DefaultProfile <Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer>] `
-Location <System.String> `
-Name <System.String> `
-ResourceGroupName <System.String> [<CommonParameters>]
Solicitud de ejemplo:
Get-AzCosmosDBMongoDBCollectionBackupInformation `
-ResourceGroupName "rg" `
-AccountName "mongodbpitracc" `
-DatabaseName "db1" `
-Name "col1" `
-Location "eastus"
Respuesta de ejemplo (en formato UTC):
LatestRestorableTimestamp
-------------------------
10/26/2021 6:27:22 PM
az cosmosdb mongodb retrieve-latest-backup-time \
-g {resourcegroup} \
-a {accountname} \
-d {db_name} \
-c {collection_name} \
-l {location}
Solicitud de ejemplo:
az cosmosdb mongodb retrieve-latest-backup-time \
-g "rg" \
-a "mongodbpitracc" \
-d "db1" \
-c "col1" \
-l "eastus"
Respuesta de ejemplo:
{
"continuousBackupInformation": {
"latestRestorableTimestamp": "10/26/2021 5:27:45 PM"
}
}
Use el siguiente script para obtener la marca de tiempo restaurable más reciente de una base de datos. Este script se iterará por todas las colecciones de esta base de datos y devolverá el mínimo de la marca de tiempo restaurable más reciente de todas sus colecciones.
Function Get-LatestRestorableTimestampForMongoDBDatabase {
[CmdletBinding()]
param(
[Parameter(Position = 0, mandatory = $true)]
[string] $resourceGroupName,
[Parameter(Position = 1, mandatory = $true)]
[string] $accountName,
[Parameter(Position = 2, mandatory = $true)]
[string] $databaseName,
[Parameter(Position = 3, mandatory = $true)]
[string] $location)
Write-Host
Write-Host "Latest restorable timestamp for a database is minimum of restorable timestamps of all the underlying collections"
Write-Host
Write-Debug "Listing all collections in database: $databaseName"
$collections = Get-AzCosmosDBMongoDBCollection -ResourceGroupName $resourceGroupName -AccountName $accountName -DatabaseName $databaseName
If (-Not $collections) {
throw "Error: Found no collections to restore in the given database."
}
Write-Debug "Found $($collections.Length) collections under database $databaseName"
$latestRestorableTimestampForDatabase = [DateTime]::MaxValue
foreach ($collection in $collections) {
Write-Debug "Getting latest restorable timestamp for collection: $($collection.Name)"
$latestRestorableTimestampForCollection = Get-AzCosmosDBMongoDBCollectionBackupInformation -ResourceGroupName $resourceGroupName -AccountName $accountName -DatabaseName $databaseName -Name $collection.Name -Location $location
Write-Debug "Latest Restorable Timestamp for collection $($collection.Name): $($latestRestorableTimestampForCollection.LatestRestorableTimestamp)"
$latestRestorableTimestampForCollectionDateTime = [DateTime]$latestRestorableTimestampForCollection.LatestRestorableTimestamp
If ($latestRestorableTimestampForCollectionDateTime -lt $latestRestorableTimestampForDatabase) {
Write-Debug "Latest Restorable Timestamp for collection $($collection.Name) is less than current database restorable timestamp: $latestRestorableTimestampForDatabase"
$latestRestorableTimestampForDatabase = $latestRestorableTimestampForCollectionDateTime
}
Write-Debug "Latest Restorable Timestamp for database so far: $latestRestorableTimestampForDatabase"
}
if ($latestRestorableTimestampForDatabase -eq [DateTime]::MaxValue) {
throw "Error: Failed to retrieve latest backup timestamp for database: $databaseName"
}
Write-Debug "Latest Restorable Timestamp in UTC for database $($databaseName): $latestRestorableTimestampForDatabase"
return $latestRestorableTimestampForDatabase
}
Sintaxis:
Get-LatestRestorableTimestampForMongoDBDatabase `
-ResourceGroupName <resourceGroup> `
-AccountName <account> `
-DatabaseName <database> `
-Location <location>
Solicitud de ejemplo:
Import-Module .\LatestRestorableTimestampForMongoDBDatabase.ps1
Get-LatestRestorableTimestampForMongoDBDatabase -ResourceGroupName rg -accountName mongopitracc -databaseName db1 -location eastus
Respuesta de ejemplo (en formato UTC):
Latest restorable timestamp for a database is minimum of restorable timestamps of all the underlying collections
Wednesday, November 3, 2021 8:31:27 PM
Puede usar el siguiente script para obtener la marca de tiempo restaurable más reciente de una cuenta de MongoDB. Este script se iterará por todas las colecciones de esta cuenta y devolverá el mínimo de la marca de tiempo restaurable más reciente de todas sus colecciones.
Function Get-LatestRestorableTimestampForMongoDBAccount {
[CmdletBinding()]
param(
[Parameter(Position = 0, mandatory = $true)]
[string] $resourceGroupName,
[Parameter(Position = 1, mandatory = $true)]
[string] $accountName,
[Parameter(Position = 2, mandatory = $true)]
[string] $location)
Write-Host
Write-Host "Latest restorable timestamp for an account is minimum of restorable timestamps of all the underlying collections"
Write-Host
Write-Debug "Listing all databases in account: $accountName"
$databases = Get-AzCosmosDBMongoDBDatabase -ResourceGroupName $resourceGroupName -AccountName $accountName
Write-Debug "Found $($databases.Length) databases under account $accountName"
$latestRestorableTimestampForAccount = [DateTime]::MaxValue
foreach ($database in $databases) {
Write-Debug "Listing all collections in database: $($database.Name)"
$collections = Get-AzCosmosDBMongoDBCollection -ResourceGroupName $resourceGroupName -AccountName $accountName -DatabaseName $($database.Name)
If (-Not $collections) {
throw "Error: Found no collections to restore in the given database."
}
Write-Debug "Found $($collections.Length) collections under database $($database.Name)"
foreach ($collection in $collections) {
Write-Debug "Getting latest restorable timestamp for collection: $($collection.Name)"
$latestRestorableTimestampForCollection = Get-AzCosmosDBMongoDBCollectionBackupInformation -ResourceGroupName $resourceGroupName -AccountName $accountName -DatabaseName $database.Name -Name $collection.Name -Location $location
Write-Debug "Latest Restorable Timestamp for collection $($collection.Name): $($latestRestorableTimestampForCollection.LatestRestorableTimestamp)"
$latestRestorableTimestampForCollectionDateTime = [DateTime]$latestRestorableTimestampForCollection.LatestRestorableTimestamp
If ($latestRestorableTimestampForCollectionDateTime -lt $latestRestorableTimestampForAccount) {
Write-Debug "Latest Restorable Timestamp for collection $($collection.Name) is less than current database restorable timestamp: $latestRestorableTimestampForAccount"
$latestRestorableTimestampForAccount = $latestRestorableTimestampForCollectionDateTime
}
Write-Debug "Latest Restorable Timestamp for database so far: $latestRestorableTimestampForAccount"
}
}
if ($latestRestorableTimestampForAccount -eq [DateTime]::MaxValue) {
throw "Error: Failed to retrieve latest backup timestamp for account: $accountName"
}
Write-Debug "Latest Restorable Timestamp in UTC for account $($accountName): $latestRestorableTimestampForAccount"
return $latestRestorableTimestampForAccount
}
Sintaxis:
Get-LatestRestorableTimestampForMongoDBAccount `
-ResourceGroupName <resourceGroupName> `
-AccountName <accountName> `
-Location <location>
Solicitud de ejemplo:
Import-Module .\LatestRestorableTimestampForMongoDBAccount.ps1
Get-LatestRestorableTimestampForMongoDBAccount `
-ResourceGroupName rg `
-AccountName mongopitracc `
-Location eastus
Respuesta de ejemplo (en formato UTC):
Latest restorable timestamp for an account is minimum of restorable timestamps of all the underlying collections
Wednesday, November 3, 2021 8:33:49 PM
Get-AzCosmosDBGremlinGraphBackupInformation `
-AccountName <System.String> `
-GremlinDatabaseName <System.String> `
[-DefaultProfile <Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer>] `
-Location <System.String> `
-Name <System.String> `
-ResourceGroupName <System.String> [<CommonParameters>]
Solicitud de ejemplo:
Get-AzCosmosDBGremlinGraphBackupInformation `
-ResourceGroupName "rg" `
-AccountName "amisigremlinpitracc1" `
-GremlinDatabaseName "db1" `
-Name "graph1" `
-Location "eastus"
Respuesta de ejemplo (en formato UTC):
LatestRestorableTimestamp
-------------------------
3/1/2022 2:19:14 AM
az cosmosdb gremlin retrieve-latest-backup-time \
-g {resourcegroup} \
-a {accountname} \
-d {db_name} \
-c {graph_name} \
-l {location}
Solicitud de ejemplo:
az cosmosdb gremlin retrieve-latest-backup-time \
-g "rg" \
-a "amisigremlinpitracc1" \
-d "db1" \
-c "graph1" \
-l "eastus"
Respuesta de ejemplo:
{
"continuousBackupInformation": {
"latestRestorableTimestamp": "3/2/2022 5:31:13 AM"
}
}
Get-AzCosmosDBTableBackupInformation `
-AccountName <System.String> `
[-DefaultProfile <Microsoft.Azure.Commands.Common.Authentication.Abstractions.Core.IAzureContextContainer>] `
-Location <System.String> `
-Name <System.String> `
-ResourceGroupName <System.String> [<CommonParameters>]
Solicitud de ejemplo:
Get-AzCosmosDBTableBackupInformation `
-ResourceGroupName "rg" `
-AccountName "amisitablepitracc1" `
-Name "table1" `
-Location "eastus"
Respuesta de ejemplo (en formato UTC):
LatestRestorableTimestamp
-------------------------
3/2/2022 2:19:15 AM
az cosmosdb table retrieve-latest-backup-time \
-g {resourcegroup} \
-a {accountname} \
-c {table_name} \
-l {location}
Solicitud de ejemplo:
az cosmosdb table retrieve-latest-backup-time \
-g "rg" \
-a "amisitablepitracc1" \
-c "table1" \
-l "eastus"
Respuesta de ejemplo:
{
"continuousBackupInformation": {
"latestRestorableTimestamp": "3/2/2022 5:33:47 AM"
}
}