En esta página, se describe cómo usar la función de copia de seguridad y restablecimiento de Spanner con Google Cloud CLI.
Requisitos previos
En los ejemplos de esta página, se supone que hiciste lo siguiente:
Ya configuraste la gcloud CLI para usarla con Spanner. Si recién comienzas a usar Google Cloud CLI con Spanner, consulta Comienza a usar Spanner con Google Cloud CLI.
Configuraste Google Cloud CLI con un proyecto predeterminado. Por ejemplo:
gcloud config set core/project my-project
Ya tienes una instancia llamada
test-instance
y una base de datos llamadaexample-db
.
Crear una copia de seguridad
Para crear una copia de seguridad llamada example-db-backup-6
y hacer que venza en 1 año, usa gcloud spanner backups create
:
gcloud spanner backups create example-db-backup-6 --instance=test-instance \
--database=example-db --retention-period=1y --async
Estas son algunas notas de uso:
- Para establecer la fecha de vencimiento de la copia de seguridad, especifica la marca
--retention-period
o--expiration-date
. Para obtener más información sobre la sintaxis de fecha , consulta gcloud topic datetimes. - El nombre de la copia de seguridad debe ser único en la instancia.
- El comando se muestra de inmediato debido a la marca
--async
. Sin la marca, el comando esperará a que se complete la operación de copia de seguridad. Especifica la marca
--help
para obtener ayuda con cualquier comando.El resultado es similar al siguiente:
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.
Para verificar el progreso de una operación de copia de seguridad, consulta Verifica el progreso de la operación.
Copia una copia de seguridad
Para copiar una copia de seguridad en una instancia diferente en el mismo proyecto, haz lo siguiente:
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
Para copiar una copia de seguridad en una instancia diferente en un proyecto diferente, haz lo siguiente:
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
Notas de uso:
- Si eliges copiar la copia de seguridad en una instancia diferente del mismo proyecto, debes crear una instancia nueva (o tener una lista) para la copia de seguridad copiada.
En el ejemplo anterior, se usa
backup-instance
. No puedes crear una instancia nueva como parte de la operación de copia de seguridad. - Si decides copiar la copia de seguridad en un proyecto diferente, debes tener otro proyecto con su propia instancia lista para la copia. En el ejemplo anterior, se usa
backup-project
. No puedes crear un proyecto nuevo como parte de la operación de copia de seguridad. - El tiempo de vencimiento de la copia de seguridad debe ser de al menos seis horas desde el momento en que se procesa la solicitud de copia actual y, como máximo, 366 días después de la copia de seguridad de origen
create_time
.
El resultado es similar al siguiente:
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'
Para verificar el progreso de una operación de copia, consulta Verifica el progreso de la operación.
Restablece una base de datos a partir de una copia de seguridad
Para restablecer una base de datos, usa 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
Notas de uso:
- El comando se muestra de inmediato debido a la marca
--async
. Sin la marca, el comando esperará a que se complete la operación de restablecimiento. - Si las instancias de origen y de destino son diferentes, deben tener la misma configuración de instancias.
- Si la base de datos de destino ya existe, la operación fallará.
El resultado es similar al siguiente:
Restore database in progress. Operation name=projects/my-project/instances/test-instance/databases/example-db-restored-1/operations/_auto_op_bb8e360b256b04bf
Para realizar un seguimiento del progreso de una operación de restablecimiento, consulta Verifica el progreso de la operación.
Verifica el progreso de la operación
Usa gcloud spanner operations describe
para verificar el progreso de una operación.
Obtén el ID de operación:
gcloud spanner operations list --instance=INSTANCE-NAME \ --database=DATABASE-NAME --type=BACKUP
Reemplaza lo siguiente:
- INSTANCE-NAME por el nombre de la instancia de Spanner
- DATABASE-NAME por el nombre de la base de datos
Notas de uso:
Para limitar la lista, especifica la marca
--filter
. Por ejemplo:--filter="metadata.name:example-db"
solo enumera las operaciones en una base de datos específica.--filter="error:*"
solo enumera las operaciones de copia de seguridad que fallaron.
Para obtener más información sobre la sintaxis del filtro, consulta gcloud topic filter. Para obtener información sobre cómo filtrar las operaciones de copia de seguridad, consulta el campo
filter
en ListBackupOperationsRequest.La marca
--type
no distingue mayúsculas de minúsculas.
El resultado es similar al siguiente:
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 ```
Ejecuta
gcloud spanner operations describe
:gcloud spanner operations describe OPERATION-ID \ --instance=INSTANCE-NAME \ --backup=BACKUP-NAME \
Reemplaza lo siguiente:
- OPERATION-ID: El ID de operación de la operación que deseas verificar.
- INSTANCE-NAME: Es el nombre de la instancia de Spanner.
- BACKUP-NAME: Es el nombre de la copia de seguridad de Spanner.
En la sección
progress
del resultado, se muestra el porcentaje de la operación que se completó. El resultado es similar al siguiente: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 la operación tarda demasiado, puedes cancelarla. Para obtener más información, consulta Cómo cancelar una operación de copia de seguridad de larga duración.
Obtén información de copia de seguridad
Para obtener información sobre una copia de seguridad, ejecuta el siguiente comando:
gcloud spanner backups describe example-db-backup-6 --instance=test-instance
El resultado es similar al siguiente:
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
Para obtener más detalles sobre este comando, consulta gcloud spanner backups describe
.
Mostrar una lista de las copias de seguridad
Para enumerar todas las copias de seguridad en una instancia, ejecuta el siguiente comando:
gcloud spanner backups list --instance=test-instance
El resultado es similar al siguiente:
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
Para limitar la lista, especifica la marca --filter
. Por ejemplo, --filter="state:creating"
enumera solo las copias de seguridad que aún se están creando.
Para obtener más información sobre la sintaxis del filtro, consulta gcloud topic filter.
Para obtener información sobre cómo filtrar copias de seguridad, consulta el campo filter
en ListBackupsRequest.
Para obtener más detalles sobre este comando, consulta gcloud spanner backups list
.
Actualiza los metadatos de copia de seguridad
Para actualizar la fecha de vencimiento de una copia de seguridad, haz lo siguiente:
gcloud spanner backups update-metadata example-db-backup-6 \
--instance=test-instance --expiration-date=2020-05-05T00:00:00Z
El resultado es similar al siguiente:
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
Para obtener más detalles sobre este comando, consulta gcloud spanner backups update-metadata
.
Borrar copia de seguridad
Para borrar una copia de seguridad, haz lo siguiente:
gcloud spanner backups delete example-db-backup-1 --instance=test-instance
Debes confirmar la operación:
You are about to delete backup [example-db-backup-1]
Do you want to continue (Y/n)? Y
Deleted backup [example-db-backup-1].
Para obtener más detalles sobre este comando, consulta gcloud spanner backups delete
.