En esta página, se muestra cómo crear una copia de seguridad de tus datos de AlloyDB Omni y restablecerlos con el operador de Kubernetes de AlloyDB Omni. Esto requiere conocimientos básicos sobre la actualización de un clúster de Kubernetes con archivos de manifiesto y la herramienta de línea de comandos kubectl
. Para obtener más información sobre cómo instalar y ejecutar
AlloyDB Omni en un clúster de Kubernetes, consulta Cómo instalar AlloyDB en Kubernetes.
Para habilitar la copia de seguridad y recuperación continuas de AlloyDB Omni, debes crear un plan de copia de seguridad para cada clúster de bases de datos. Las copias de seguridad se toman según los programas de copia de seguridad definidos en el recurso backupPlan
. Si no se define un programa de copias de seguridad en el plan, las copias de seguridad continuas se realizan diariamente de forma predeterminada. Puedes restablecer o clonar copias de seguridad desde cualquier marca de tiempo en el período de recuperación con una granularidad de segundos.
Si deseas obtener información para crear copias de seguridad de tus datos de AlloyDB Omni y restablecerlas en implementaciones que no sean de Kubernetes, consulta Cómo configurar Barman para AlloyDB Omni y Cómo configurar pgBackRest para AlloyDB Omni.
Habilita y programa copias de seguridad
Las copias de seguridad continuas se habilitan cuando creas un recurso de plan de copia de seguridad para tu clúster de bases de datos. Debes crear un recurso backupPlan
para cada clúster de bases de datos para habilitar la copia de seguridad continua para ese clúster. Este recurso de plan de copia de seguridad define los siguientes parámetros:
Es la ubicación en la que el operador de AlloyDB Omni almacena las copias de seguridad. Puede ser local a tu clúster de Kubernetes o a un bucket de Cloud Storage.
Una opción para establecer múltiples programas de copia de seguridad que creen copias de seguridad de
full
,incremental
ydifferential
de forma automática. Puedes pausar esta programación en cualquier momento, incluso cuando defines el plan de copia de seguridad inicialmente. Si se pausa un plan de copias de seguridad, no se crean las copias de seguridad programadas, pero puedes usarlo para crear copias de seguridad de forma manual.Si no se especifican programas de copia de seguridad, el valor predeterminado es "0 0 * * *", que realiza una copia de seguridad completa diaria a la medianoche, hora local.
Es un período de retención para las copias de seguridad almacenadas. Esto puede ser de un día o hasta de 90 días. El valor predeterminado es 14.
Tu clúster de bases de datos puede tener varios planes de copia de seguridad, cada uno con su propio nombre y configuración. Si creas varios recursos backupPlan
con diferentes programas de copia de seguridad para un clúster de bases de datos, debes definir una ubicación de copia de seguridad única para cada recurso.
Crea un plan para almacenar copias de seguridad de forma local
Para habilitar las copias de seguridad que se almacenan de forma local, aplica el siguiente manifiesto:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: BackupPlan
metadata:
name: BACKUP_PLAN_NAME
namespace: NAMESPACE
spec:
dbclusterRef: DB_CLUSTER_NAME
backupSchedules:
full: "FULL_CRON_SCHEDULE"
differential: "DIFF_CRON_SCHEDULE"
incremental: "INCR_CRON_SCHEDULE"
backupRetainDays: RETENTION_DAYS
paused: PAUSED_BOOLEAN
Reemplaza lo siguiente:
BACKUP_PLAN_NAME
: Es un nombre para este recurso del plan de copia de seguridad, por ejemplo,backup-plan-1
.NAMESPACE
: El espacio de nombres de Kubernetes para este plan de copia de seguridad. Debe coincidir con el espacio de nombres del clúster de bases de datos.DB_CLUSTER_NAME
: Es el nombre del clúster de bases de datos que asignaste cuando lo creaste.FULL_CRON_SCHEDULE
: Es una programación de copia de seguridad para crear una copia de seguridad completa que contiene todos los datos, expresados en el formatocron
. Por ejemplo, establece "0 0 * * 0" para crear una copia de seguridad completa a las 00:00 todos los domingos.DIFF_CRON_SCHEDULE
: Una programación de copia de seguridad para crear copias de seguridad que, inicialmente, son copias de seguridad completas. Las copias de seguridad posteriores son diferenciales, según los cambios en los datos, expresados en formatocron
. Por ejemplo, establece “0 22 * * 3” para crear una copia de seguridad diferencial a las 10:00 p.m. todos los miércoles.INCR_CRON_SCHEDULE
: Es una programación de copia de seguridad para crear copias de seguridad que incluyan datos que cambiaron desde la última copia de seguridad completa, diferencial o incremental. Se expresa en formatocron
. Por ejemplo, establece "0 21 * * *" para crear una copia de seguridad incremental a las 9:00 p.m. todos los días.RETENTION_DAYS
: Es la cantidad de días durante los cuales el operador de AlloyDB Omni retiene esta copia de seguridad. Debe ser un número entero entre1
y90
. El valor predeterminado es14
.PAUSED_BOOLEAN
: Especifica si el plan de copia de seguridad está pausado o no. Proporciona uno de los siguientes valores:true
: Las copias de seguridad se detienen y no se crean copias de seguridad programadas.false
: El operador de AlloyDB Omni crea copias de seguridad según el programa que especificacronSchedule
. Este es el valor predeterminado, si no se establece de forma explícita entrue
.
El valor predeterminado es
false
.
Crea un plan que almacene copias de seguridad en Cloud Storage
Para habilitar las copias de seguridad que se almacenan en Cloud Storage, sigue estos pasos:
Crea un bucket de Cloud Storage. Anota el nombre que le asignes a este bucket, ya que lo necesitarás en un paso posterior.
Crea una cuenta de servicio para agregar copias de seguridad al bucket.
Otorga el rol de Identity and Access Management
storage.objectAdmin
a la cuenta de servicio.Crea una clave para la cuenta de servicio. Esta acción descargará la clave privada en tu entorno local.
Cambia el nombre del archivo de clave descargado a
key.json
.Crea un secreto de Kubernetes que contenga la clave privada:
kubectl create secret generic SECRET_NAME --from-file=KEY_PATH -n NAMESPACE
Reemplaza lo siguiente:
SECRET_NAME
: Es el nombre del Secret de Kubernetes que estás creando, por ejemplo,gcs-key
.KEY_PATH
: Es la ruta de acceso del sistema de archivos local al archivokey.json
que descargaste en los pasos anteriores.NAMESPACE
: Es el espacio de nombres del clúster de bases de datos.
Aplica el siguiente manifiesto:
apiVersion: alloydbomni.dbadmin.goog/v1 kind: BackupPlan metadata: name: BACKUP_PLAN_NAME namespace: NAMESPACE spec: dbclusterRef: DB_CLUSTER_NAME backupSchedules: full: "FULL_CRON_SCHEDULE" differential: "DIFF_CRON_SCHEDULE" incremental: "INCR_CRON_SCHEDULE" backupRetainDays: RETENTION_DAYS paused: PAUSED_BOOLEAN backupLocation: type: GCS gcsOptions: bucket: BUCKET_URL key: BACKUP_PATH secretRef: name: SECRET_NAME namespace: NAMESPACE
Reemplaza lo siguiente:
BACKUP_PLAN_NAME
: Es un nombre para este recurso del plan de copia de seguridad, por ejemplo,backup-plan-1
.NAMESPACE
: El espacio de nombres de Kubernetes para este plan de copia de seguridad. Debe coincidir con el espacio de nombres del clúster de bases de datos.DB_CLUSTER_NAME
: Es el nombre del clúster de bases de datos que asignaste cuando lo creaste.FULL_CRON_SCHEDULE
: Es una programación de copia de seguridad para crear una copia de seguridad completa que contiene todos los datos, expresados en el formatocron
. Por ejemplo, establece "0 0 * * 0" para crear una copia de seguridad completa a las 00:00 todos los domingos.DIFF_CRON_SCHEDULE
: Una programación de copia de seguridad para crear copias de seguridad que, inicialmente, son copias de seguridad completas. Las copias de seguridad posteriores son diferenciales, según los cambios en los datos, expresados en formatocron
. Por ejemplo, establece “0 22 * * 3” para crear una copia de seguridad diferencial a las 10:00 p.m. todos los miércoles.INCR_CRON_SCHEDULE
: Es una programación de copia de seguridad para crear copias de seguridad que incluyan datos que cambiaron desde la última copia de seguridad completa, diferencial o incremental. Se expresa en formatocron
. Por ejemplo, establece "0 21 * * *" para crear una copia de seguridad incremental a las 9:00 p.m. todos los días.RETENTION_DAYS
: Es la cantidad de días durante los cuales el operador de AlloyDB Omni retiene esta copia de seguridad. Debe ser un número entero entre1
y90
. El valor predeterminado es14
.PAUSED_BOOLEAN
: Especifica si el plan de copia de seguridad está pausado o no. Proporciona uno de los siguientes valores:true
: Las copias de seguridad se detienen y no se crean copias de seguridad programadas.false
: El operador de AlloyDB Omni crea copias de seguridad según el programa que especificacronSchedule
. Este es el valor predeterminado, si no se establece de forma explícita entrue
.
El valor predeterminado es
false
.
BUCKET_URL
: Es el nombre del bucket de Cloud Storage que creaste en un paso anterior. Esta no es la URL completa del bucket. No agregues el prefijogs://
al nombre del bucket.BACKUP_PATH
: Es la ruta de acceso del directorio en el que el operador de AlloyDB Omni escribe las copias de seguridad, dentro del bucket de Cloud Storage. La ruta de acceso debe ser absoluta y comenzar con/
.SECRET_NAME
: Es el nombre que elegiste para el Secret de Kubernetes que creaste en un paso anterior.
Crea una copia de seguridad de forma manual
Puedes crear un recurso de copia de seguridad de forma manual en cualquier momento con cualquier plan de copia de seguridad que ya hayas aplicado a un clúster de bases de datos. El operador de AlloyDB Omni aplica la ubicación de almacenamiento y el período de retención del plan de copia de seguridad elegido a la nueva copia de seguridad manual.
Para crear una copia de seguridad de forma manual, aplica el siguiente manifiesto:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: Backup
metadata:
name: BACKUP_NAME
namespace: NAMESPACE
spec:
dbclusterRef: DB_CLUSTER_NAME
backupPlanRef: BACKUP_PLAN_NAME
manual: true
physicalBackupSpec:
backupType: BACKUP_TYPE
Reemplaza lo siguiente:
BACKUP_NAME
: Es un nombre para esta copia de seguridad, por ejemplo,backup-1
.NAMESPACE
: El espacio de nombres de Kubernetes de este restablecimiento. Debe coincidir con el espacio de nombres del clúster de bases de datos.BACKUP_PLAN_NAME
: El nombre del recurso del plan de copia de seguridad al que pertenece esta copia de seguridad. Debe coincidir con el nombre que elegiste cuando creaste el plan de copia de seguridad.DB_CLUSTER_NAME
: Es el nombre del clúster de bases de datos que asignaste cuando lo creaste.BACKUP_TYPE
: Especifica el tipo de copia de seguridad manual que deseas crear. Elige uno de los siguientes valores:full
: Crea una copia de seguridad completa que contiene todos los datos.diff
: Crea una copia de seguridad diferencial que depende de la última copia de seguridad completa. Las copias de seguridad posteriores son diferenciales, según los cambios que se realicen en los datos.incr
: Crea una copia de seguridad incremental que depende de la copia de seguridad completa o diferencial anterior para incluir los datos que cambiaron desde la última copia de seguridad completa o diferencial.
Supervisa y muestra una lista de las copias de seguridad
Tus planes de copia de seguridad y copias de seguridad son todos recursos de tu clúster de Kubernetes. Para ver información sobre ellas, usa el comando kubectl
get
.
Cómo ver un resumen de un plan de copia de seguridad
Para ver información sobre los planes de copia de seguridad de tu clúster de bases de datos, ejecuta el siguiente comando:
kubectl get backupplan.alloydbomni.dbadmin.goog -n NAMESPACE
Reemplaza NAMESPACE
por el espacio de nombres del clúster de bases de datos.
El resultado se ve de la manera siguiente:
NAME PHASE LASTBACKUPTIME NEXTBACKUPTIME
backup-plan-prod Ready 2023-10-26T17:26:43Z 2023-10-27T00:00:00Z
Visualiza una lista de las copias de seguridad
Para ver una lista de las copias de seguridad disponibles para tu clúster de bases de datos, ejecuta el siguiente comando:
kubectl get backup.alloydbomni.dbadmin.goog -n NAMESPACE
Reemplaza NAMESPACE
por el espacio de nombres del clúster de bases de datos.
El resultado se ve de la manera siguiente:
NAME PHASE COMPLETETIME TYPE
backup-plan-prod-20231026172643 Succeeded 2023-10-26T17:26:53Z full
manual-backup-1 Succeeded 2023-10-26T18:15:27Z full
manual-backup-2 InProgress full
Cada fila de la tabla de resultados representa un recurso de copia de seguridad, con los siguientes atributos:
- Es el nombre de la copia de seguridad.
- El estado de la copia de seguridad, con
Succeeded
que marca una copia de seguridad lista para restablecerse. - La marca de tiempo de la creación de la copia de seguridad.
Restablecer copia de seguridad
AlloyDB te permite restablecer desde copias de seguridad individuales o clonar un clúster con una copia de seguridad de un momento específico.
Restablece desde una copia de seguridad con nombre
Para restablecer desde una copia de seguridad, reemplaza los datos del clúster de la base de datos con los datos de la copia de seguridad. Para ello, sigue estos pasos.
Muestra todas las copias de seguridad cuya fase es
Succeeded
.kubectl get backup.alloydbomni.dbadmin.goog -n NAMESPACE | grep Succeeded
Reemplaza
NAMESPACE
por el espacio de nombres del clúster de bases de datos.Si existe al menos una copia de seguridad candidata válida, el resultado es similar al siguiente:
backup-plan-prod-20231026172643 Succeeded 2023-10-26T17:26:53Z manual-backup-1 Succeeded 2023-10-26T18:15:27Z
Elige una de las copias de seguridad que se enumeraron en el paso anterior como la copia de seguridad desde la que deseas restablecer. Anota su nombre, que usarás en el siguiente paso.
Aplica el siguiente manifiesto:
apiVersion: alloydbomni.dbadmin.goog/v1 kind: Restore metadata: name: RESTORE_NAME namespace: NAMESPACE spec: sourceDBCluster: DB_CLUSTER_NAME backup: BACKUP_NAME
Reemplaza lo siguiente:
RESTORE_NAME: Es un nombre que se usará con el recurso de restablecimiento de datos que crea este manifiesto, por ejemplo,
restore-1
.DB_CLUSTER_NAME: Es el nombre del clúster de bases de datos que asignaste cuando lo creaste.
BACKUP_NAME: Es el nombre de la copia de seguridad que elegiste en el paso anterior.
Cómo clonar un clúster de un momento determinado
El operador de AlloyDB Omni te permite clonar los datos del clúster desde cualquier punto en el tiempo dentro de un período de recuperación. La duración de la ventana de recuperación se determina directamente en función del período de retención.
Por ejemplo, si tu período de retención está configurado en 14 días, no podrás recuperar datos de más de 14 días. Puedes restablecer el contenido a cualquier momento dentro del período de recuperación. El operador de AlloyDB Omni retiene las copias de seguridad y los registros durante un día más que el valor especificado.
Supervisa la ventana de recuperación para identificar el punto de restablecimiento:
kubectl get backupplan.alloydbomni.dbadmin.goog BACKUP_NAME -n NAMESPACE -o json | jq .status.recoveryWindow
A continuación, se muestra un ejemplo de respuesta:
recoveryWindow: begin: "2024-01-31T02:54:35Z"
El valor de la marca de tiempo en el formato de marca de tiempo RFC 3339 se usa en el recurso de restablecimiento.
Crea y aplica el siguiente manifiesto de recursos de restablecimiento:
apiVersion: alloydbomni.dbadmin.goog/v1 kind: Restore metadata: name: RESTORE_NAME namespace: NAMESPACE spec: sourceDBCluster: DB_CLUSTER_NAME pointInTime: "DATE_AND_TIME_STAMP" clonedDBClusterConfig: dbclusterName: NEW_DB_CLUSTER_NAME
Reemplaza lo siguiente:
RESTORE_NAME: Es un nombre que se usará con el recurso de restablecimiento de datos que crea este manifiesto, por ejemplo,
restore-1
.DB_CLUSTER_NAME: Es el nombre del clúster de bases de datos que asignaste cuando lo creaste.
DATE_AND_TIME_STAMP: La marca de tiempo RFC 3339 con nivel de detalle por minuto de la copia de seguridad continua desde la que deseas restablecer, por ejemplo,
2024-03-05T15:32:10Z
.NEW_DB_CLUSTER_NAME: Es el nombre del nuevo clúster de bases de datos.
Cómo ver el estado del restablecimiento
Consulta el progreso de la operación de restablecimiento:
kubectl get restore.alloydbomni.dbadmin.goog -n NAMESPACE
Reemplaza
NAMESPACE
por el espacio de nombres del clúster de bases de datos.Para ejecutar el comando de forma continua, agrega la marca
-Aw
.El resultado se ve de la manera siguiente:
NAME PHASE COMPLETETIME RESTOREDPOINTINTIME restore-1 RestoreInProgress
Cuando el valor de la columna
PHASE
en la tabla de resultados leeProvisionSucceeded
, se completa el restablecimiento.Consulta el progreso del clúster de bases de datos clonado o restablecido que se conecta a la red:
kubectl get dbclusters -A -n NAMESPACE
Reemplaza
NAMESPACE
por el espacio de nombres del clúster de bases de datos.Para ejecutar el comando de forma continua, agrega la marca
-Aw
.El resultado se ve de la manera siguiente:
NAMESPACE NAME PRIMARYENDPOINT PRIMARYPHASE DBCLUSTERPHASE default db-cluster-1 10.128.0.55 Ready DBClusterReady
Cuando el valor de la columna
DBCLUSTERPHASE
en la tabla de resultados leeDBClusterReady
, el clúster de base de datos restaurado o clonado está listo para usarse.
Borrar una copia de seguridad
Por lo general, no es necesario borrar las copias de seguridad de forma manual. El operador de AlloyDB Omni borra automáticamente las copias de seguridad que tienen una antigüedad mayor que el período de retención que especificas cuando creas un plan de copia de seguridad.
Si quieres borrar una copia de seguridad de forma manual, esta debe cumplir con los siguientes requisitos:
La copia de seguridad no es la única que se almacena para su plan de copias de seguridad. El operador de AlloyDB Omni requiere que exista al menos una copia de seguridad por plan de copia de seguridad.
La copia de seguridad no tiene otras copias de seguridad que dependan de ella. Por ejemplo, una copia de seguridad completa con copias de seguridad diferenciales o incrementales que dependen de ella, o una copia de seguridad incremental con copias de seguridad diferenciales que dependen de ella.
Para borrar una copia de seguridad, ejecuta el siguiente comando:
kubectl delete backup.alloydbomni.dbadmin.goog/BACKUP_NAME -n NAMESPACE
Reemplaza lo siguiente:
BACKUP_NAME
: Es el nombre de la copia de seguridad que se borrará.NAMESPACE
: Es el espacio de nombres del clúster de bases de datos.
Cambia el tamaño de un disco de copia de seguridad
Para cambiar el tamaño del disco local que almacena tus copias de seguridad en el clúster de Kubernetes, completa los siguientes pasos:
Actualiza el campo
resources.disks
del manifiesto de DBCluster de la siguiente manera:spec: primarySpec: resources: disks: - name: BACKUP_DISK size: 10Gi
Reemplaza
BACKUP_DISK
por el nombre del disco en el que se almacenan tus copias de seguridad.Aplica el manifiesto para aplicar la actualización.
El operador de AlloyDB Omni aplica las especificaciones actualizadas a tu DBCluster de inmediato.
Se aplican las siguientes restricciones para modificar el disco de copia de seguridad de un clúster de base de datos en ejecución:
- Puedes aumentar el tamaño de un disco solo si el
storageClass
especificado admite la expansión de volumen. - No puedes disminuir el tamaño de un disco.
Actualiza un plan de copia de seguridad
Cada plan de copia de seguridad es un recurso de Kubernetes. Para actualizar su configuración, realiza una de las siguientes acciones:
Edita y vuelve a aplicar el archivo de manifiesto del plan de copia de seguridad.
Usa el comando
kubectl patch
.
Por ejemplo, para pausar un plan de copia de seguridad en ejecución, cambia el atributo paused
de su manifiesto a true
y, luego, vuelve a aplicarlo.
Borra un plan de copia de seguridad
Para borrar un plan de copia de seguridad y quitar todos sus recursos de copia de seguridad, ejecuta el siguiente comando:
kubectl delete backupplan.alloydbomni.dbadmin.goog/BACKUP_PLAN_NAME -n NAMESPACE
Reemplaza lo siguiente:
BACKUP_PLAN_NAME
: El nombre del plan de copia de seguridad que se borrará.NAMESPACE
: Es el espacio de nombres del clúster de bases de datos.
Para pausar un plan de copia de seguridad sin borrarlo, establece el atributo paused
del recurso del plan de copia de seguridad en true
. Un plan de copia de seguridad en pausa sigue almacenando copias de seguridad y permite crear copias de seguridad manuales.