Cette page explique comment utiliser la sauvegarde et la restauration Spanner avec la Google Cloud CLI.
Prérequis
Les exemples présentés sur cette page partent des principes suivants :
Vous avez déjà configuré gcloud CLI pour une utilisation avec Spanner. Si vous débutez avec Google Cloud CLI avec Spanner, consultez la page Premiers pas avec Spanner à l'aide de Google Cloud CLI.
Vous avez configuré Google Cloud CLI avec un projet par défaut. Exemple :
gcloud config set core/project my-project
Vous disposez d'une instance nommée
test-instance
et d'une base de données nomméeexample-db
.
Créer une sauvegarde
Pour créer une sauvegarde nommée example-db-backup-6
et qu'elle expire dans un an, utilisez gcloud spanner backups create
:
gcloud spanner backups create example-db-backup-6 --instance=test-instance \
--database=example-db --retention-period=1y --async
Voici quelques remarques d'utilisation :
- Pour définir la date d'expiration de la sauvegarde, spécifiez l'option
--retention-period
ou--expiration-date
. Pour en savoir plus sur la syntaxe de date , consultez gcloud topic datetimes. - Le nom de la sauvegarde doit être unique dans l'instance.
- La commande répond immédiatement en raison de l'option
--async
. Sans cette option, la commande attend la fin de l'opération de sauvegarde. Spécifiez l'option
--help
pour obtenir de l'aide pour n'importe quelle commande.Le résultat ressemble à ceci :
Create request issued for: [example-db-backup-6] Check operation [projects/my-project/instances/test-instance/backups/example-db-backup-6/operations/_auto_op_234567] for status.
Pour vérifier la progression d'une opération de sauvegarde, consultez la section Vérifier la progression de l'opération.
Copier une sauvegarde
Pour copier une sauvegarde dans une autre instance du même projet, procédez comme suit:
gcloud spanner backups copy \
--source-instance=test-instance \
--source-backup=example-db \
--destination-instance=backup-instance \
--destination-backup=copied-backup \
--expiration-date=2022-03-30T10:49:41Z
Pour copier une sauvegarde dans une autre instance d'un autre projet, procédez comme suit:
gcloud spanner backups copy \
--source-backup=projects/my-project/instances/test-instance/backups/example-db \
--destination-backup=projects/backup-project/instances/backup-instance-eu/backups/copied-backup \
--expiration-date=2022-03-30T10:49:41Z
Remarques sur l'utilisation :
- Si vous choisissez de copier la sauvegarde dans une autre instance du même projet, vous devez créer une instance (ou en disposer d'une à votre service) pour la sauvegarde copiée.
Dans l'exemple précédent,
backup-instance
est utilisé. Vous ne pouvez pas créer d'instance lors de l'opération de copie de sauvegarde. - Si vous choisissez de copier la sauvegarde dans un autre projet, vous devez disposer d'un autre projet avec sa propre instance prête pour la sauvegarde copiée. Dans l'exemple précédent,
backup-project
est utilisé. Vous ne pouvez pas créer de projet dans le cadre de l'opération de copie de sauvegarde. - L'heure d'expiration de la sauvegarde doit être d'au moins six heures à compter du traitement de la requête de copie en cours et au maximum 366 jours après la sauvegarde source
create_time
.
Le résultat ressemble à ceci :
createTime: '2022-03-29T22:06:05.905823Z'
database: projects/my-project/instances/test-instance/databases/example-db
databaseDialect: GOOGLE_STANDARD_SQL
encryptionInfo:
encryptionType: GOOGLE_DEFAULT_ENCRYPTION
expireTime: '2022-03-30T10:49:41Z'
maxExpireTime: '2023-03-17T20:46:33.479336Z'
name: projects/backup-project/instances/backup-instance-eu/backups/copied-backup
sizeBytes: '7957667'
state: READY
versionTime: '2022-03-16T20:46:33.479336Z'
Pour vérifier la progression d'une opération de copie, consultez la section Vérifier la progression de l'opération.
Restaurer une base de données à partir d'une sauvegarde
Pour restaurer une base de données, utilisez gcloud spanner databases restore
:
gcloud spanner databases restore --async \
--destination-instance=test-instance --destination-database=example-db-restored \
--source-instance=test-instance --source-backup=example-db-backup-6
Remarques sur l'utilisation :
- La commande répond immédiatement en raison de l'option
--async
. Sans l'option, la commande attend la fin de l'opération de restauration. - Si les instances source et de destination sont différentes, elles doivent avoir la même configuration d'instance.
- Si la base de données de destination existe déjà, l'opération échouera.
Le résultat ressemble à ceci :
Restore database in progress. Operation name=projects/my-project/instances/test-instance/databases/example-db-restored-1/operations/_auto_op_bb8e360b256b04bf
Pour suivre la progression d'une opération de restauration, consultez la section Vérifier la progression de l'opération.
Vérifier la progression de l'opération
Utilisez gcloud spanner operations describe
pour vérifier la progression d'une opération.
Obtenez l'ID d'opération:
gcloud spanner operations list --instance=INSTANCE-NAME \ --database=DATABASE-NAME --type=BACKUP
Remplacez les éléments suivants :
- INSTANCE-NAME par le nom de l'instance Spanner.
- DATABASE-NAME par le nom de la base de données.
Remarques sur l'utilisation :
Pour limiter la liste, spécifiez l'option
--filter
. Exemple :--filter="metadata.name:example-db"
ne répertorie que les opérations sur une base de données spécifique.--filter="error:*"
ne répertorie que les opérations de sauvegarde qui ont échoué.
Pour en savoir plus sur la syntaxe des filtres, consultez la page gcloud topic filters. Pour en savoir plus sur le filtrage des opérations de sauvegarde, consultez le champ
filter
dans ListBackupOperationsRequest.L'option
--type
n'est pas sensible à la casse.
Le résultat ressemble à ceci :
OPERATION_ID DONE @TYPE BACKUP SOURCE_DATABASE START_TIME END_TIME _auto_op_123456 True CreateBackupMetadata example-db-backup-7 example-db 2020-02-04T02:12:38.075515Z 2020-02-04T02:22:40.581170Z _auto_op_234567 True CreateBackupMetadata example-db-backup-6 example-db 2020-02-04T02:05:43.920377Z 2020-02-04T02:07:59.089820Z ```
Exécutez
gcloud spanner operations describe
:gcloud spanner operations describe OPERATION-ID \ --instance=INSTANCE-NAME \ --backup=BACKUP-NAME \
Remplacez les éléments suivants :
- OPERATION-ID: ID de l'opération que vous souhaitez vérifier.
- INSTANCE-NAME: nom de l'instance Spanner.
- BACKUP-NAME: nom de la sauvegarde Spanner.
La section
progress
de la sortie indique le pourcentage d'achèvement de l'opération. Le résultat ressemble à ceci :done: true metadata: ... progress: - endTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 startTime: '2022-03-01T00:28:04.221401Z' - endTime: '2022-03-01T00:28:17.624588Z' startTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 ...
Si l'opération prend trop de temps, vous pouvez l'annuler. Pour en savoir plus, consultez la section Annuler une opération de sauvegarde de longue durée.
Obtenir des informations sur la sauvegarde
Pour obtenir des informations sur une sauvegarde, exécutez la commande suivante :
gcloud spanner backups describe example-db-backup-6 --instance=test-instance
Le résultat ressemble à ceci :
createTime: '2020-02-04T02:05:43.920377Z'
database: projects/my-project/instances/test-instance/databases/example-db
expireTime: '2021-02-04T02:05:43.268327Z'
name: projects/my-project/instances/test-instance/backups/example-db-backup-6
sizeBytes: '1000000000'
state: READY
Pour en savoir plus sur cette commande, consultez la section gcloud spanner backups describe
.
Répertorier des sauvegardes
Pour répertorier toutes les sauvegardes d'une instance, exécutez la commande suivante :
gcloud spanner backups list --instance=test-instance
Le résultat ressemble à ceci :
BACKUP SOURCE_DATABASE CREATION_TIME EXPIRATION_TIME STATE BACKUP_SIZE_IN_BYTES IN_USE_BY
example-db-backup-6 example-db 2020-02-04T02:05:43.920377Z 2021-02-04T02:05:43.268327Z CREATING
example-db-backup-4 example-db 2020-02-04T01:21:20.873839Z 2021-02-04T01:21:20.530151Z READY 32
example-db-backup-3 example-db 2020-02-03T23:59:18.936433Z 2021-02-03T23:59:18.203083Z READY 32
example-db-backup-5 example-db 2020-02-03T23:48:06.259296Z 2021-02-03T23:48:05.830937Z READY 32
example-db-backup-2 example-db 2020-01-30T19:49:00.616338Z 2021-01-30T19:49:00.283917Z READY 32
example-db-backup-1 example-db 2020-01-30T19:47:09.492551Z 2021-01-30T19:47:09.097804Z READY 32
Pour limiter la liste, spécifiez l'option --filter
. Par exemple, --filter="state:creating"
répertorie uniquement les sauvegardes toujours en cours de création.
Pour en savoir plus sur la syntaxe des filtres, consultez la page gcloud topic filters.
Pour en savoir plus sur le filtrage des sauvegardes, consultez le champ filter
dans ListBackupsRequest.
Pour en savoir plus sur cette commande, consultez la section gcloud spanner backups list
.
Mettre à jour les métadonnées de la sauvegarde
Pour mettre à jour la date d'expiration d'une sauvegarde :
gcloud spanner backups update-metadata example-db-backup-6 \
--instance=test-instance --expiration-date=2020-05-05T00:00:00Z
Le résultat ressemble à ceci :
createTime: '2020-02-04T02:05:43.920377Z'
database: projects/my-project/instances/test-instance/databases/example-db
expireTime: '2020-05-05T00:00:00Z'
name: projects/my-project/instances/test-instance/backups/example-db-backup-6
sizeBytes: '1000000000'
state: READY
Pour en savoir plus sur cette commande, consultez la section gcloud spanner backups update-metadata
.
Supprimer une sauvegarde
Pour supprimer une sauvegarde, exécutez la commande suivante :
gcloud spanner backups delete example-db-backup-1 --instance=test-instance
Vous devez confirmer l'opération :
You are about to delete backup [example-db-backup-1]
Do you want to continue (Y/n)? Y
Deleted backup [example-db-backup-1].
Pour en savoir plus sur cette commande, consultez la section gcloud spanner backups delete
.