En el siguiente flujo de trabajo, se explican los pasos que se usan para clonar:
- Crea y aplica el archivo de manifiesto
DBCluster
en el clúster de la base de datos de destino con el parámetrolivenessProbe
inhabilitado. - Crea y configura el archivo
pgbackrest.conf
para acceder a la copia de seguridad de Cloud Storage. - Usa los comandos
pgBackRest
para verificar que puedes acceder a las copias de seguridad de la fuente. - Usa los comandos
pgBackRest
para restablecer la copia de seguridad en el clúster de la base de datos de destino.
Antes de comenzar
- Asegúrate de tener acceso a la ruta de acceso completa del bucket de Cloud Storage en el que se almacena la copia de seguridad del clúster de la base de datos de origen. Esta es la misma ruta que usaste cuando creaste el recurso
BackupPlan
para tu clúster de base de datos de origen. - Crea un clúster de base de datos de AlloyDB Omni de destino. Para obtener más información sobre la instalación de AlloyDB Omni en Kubernetes, consulta Crea un clúster de base de datos.
- Asegúrate de haber accedido a la base de datos como el usuario
postgres
.
Crea un clúster de base de datos en un clúster de base de datos de destino
Crea un clúster de base de datos inhabilitando temporalmente el parámetro livenessProbe
mientras se completa el proceso de restablecimiento.
Crea el archivo de manifiesto del recurso
DBCluster
:apiVersion: v1 kind: Secret metadata: name: db-pw-DB_CLUSTER_NAME type: Opaque data: DB_CLUSTER_NAME: "ENCODED_PASSWORD" --- apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: DB_CLUSTER_NAME spec: primarySpec: availabilityOptions: livenessProbe: "Disabled" adminUser: passwordRef: name: db-pw-DB_CLUSTER_NAME resources: cpu: CPU_COUNT memory: MEMORY_SIZE disks: - name: DataDisk size: DISK_SIZE storageClass: standard
Reemplaza lo siguiente:
DB_CLUSTER_NAME
: Es el nombre de este clúster de base de datos, por ejemplo,my-db-cluster
.ENCODED_PASSWORD
: Es la contraseña de acceso a la base de datos para el rol de usuariopostgres
predeterminado, codificada como una cadena en base64 (por ejemplo,Q2hhbmdlTWUxMjM=
paraChangeMe123
).CPU_COUNT
: Es la cantidad de CPU disponibles para cada instancia de base de datos en este clúster de bases de datos.MEMORY_SIZE
: Es la cantidad de memoria por instancia de base de datos de este clúster de bases de datos. Recomendamos establecer este valor en 8 gigabytes por CPU. Por ejemplo, si establecistecpu
en2
anteriormente en este manifiesto, te recomendamos que establezcasmemory
en16Gi
.DISK_SIZE
: Es el tamaño del disco por instancia de base de datos, por ejemplo,10Gi
.
Aplica el archivo de manifiesto:
kubectl apply -f DBCLUSTER_FILENAME
Reemplaza lo siguiente:
- DBCLUSTER_FILENAME: Es el nombre del archivo de manifiesto
DBCluster
que creaste en el paso anterior.
- DBCLUSTER_FILENAME: Es el nombre del archivo de manifiesto
Usa el comando kubectl describe
para verificar que el recurso del clúster de base de datos tenga el estado READY
.
Configura el archivo pgBackRest
Configura el archivo pgBackRest
para permitir que el clúster de la base de datos de destino acceda al bucket de Cloud Storage en el que residen las copias de seguridad de origen.
En el clúster de la base de datos de destino, busca los detalles del pod del clúster de la base de datos:
kubectl get pod -l "alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME, alloydbomni.internal.dbadmin.goog/task-type=database"
La respuesta incluye el nombre del Pod de la base de datos del clúster.
Accede al Pod:
kubectl exec -ti DATABASE_POD_NAME -- /bin/bash
Reemplaza lo siguiente:
- DATABASE_POD_NAME: Es el nombre del Pod del clúster de la base de datos del paso anterior.
Detén el pod antes de actualizar el archivo de configuración
pgBackRest
:supervisorctl.par stop postgres
Crea un archivo de configuración
pgBackRest
para acceder a las copias de seguridad almacenadas en Cloud Storage:cat << EOF > /backup/pgbackrest.conf [db] pg1-path=/mnt/disks/pgsql/data pg1-socket-path=/tmp pg1-user=pgbackrest [global] log-path=/obs/pgbackrest log-level-file=info repo1-type=gcs repo1-gcs-bucket=GCS_SOURCE_BACKUP_BUCKET_NAME repo1-path=GCS_SOURCE_BACKUP_BUCKET_PATH repo1-storage-ca-file=/scripts/ca-certificates.crt repo1-retention-full=9999999 repo1-gcs-key-type=auto
Reemplaza lo siguiente:
GCS_SOURCE_BACKUP_BUCKET_NAME
: Es el nombre del bucket de Cloud Storage que creaste cuando creaste el archivo de manifiesto del recursoBackupPlan
para el clúster de la base de datos de origen. Esta no es la URL completa del bucket. No agregues el prefijogs://
al nombre del bucket.GCS_SOURCE_BACKUP_BUCKET_PATH
: Es la ruta de acceso al directorio en el que el operador de AlloyDB Omni escribe copias de seguridad, dentro del bucket de Cloud Storage para el clúster de la base de datos de origen. La ruta de acceso debe ser absoluta y comenzar con/
.
El valor de
repo1-gcs-key-type
se establece enauto
para usar la cuenta de servicio de la instancia. Para obtener más información sobre otras opciones, consulta Opciones de tipo de clave del repositorio de Cloud Storage.
Verifica las copias de seguridad de origen en el clúster de la base de datos de destino
Ejecuta comandos de pgBackRest
para verificar que se pueda acceder a las copias de seguridad del clúster de la base de datos de origen en el clúster de la base de datos de destino.
pgbackrest --config-path=/backup --stanza=db --repo=1 info
A continuación, se muestra una respuesta de ejemplo:
stanza: db
status: ok
cipher: none
db (current)
wal archive min/max (15): 000000010000000000000002/00000001000000000000000D
full backup: 20240213-231400F
timestamp start/stop: 2024-02-13 23:14:00+00 / 2024-02-13 23:17:14+00
wal start/stop: 000000010000000000000003 / 000000010000000000000003
database size: 38.7MB, database backup size: 38.7MB
repo1: backup set size: 4.6MB, backup size: 4.6MB
incr backup: 20240213-231400F_20240214-000001I
timestamp start/stop: 2024-02-14 00:00:01+00 / 2024-02-14 00:00:05+00
wal start/stop: 00000001000000000000000D / 00000001000000000000000D
database size: 38.7MB, database backup size: 488.3KB
repo1: backup set size: 4.6MB, backup size: 84.2KB
backup reference list: 20240213-231400F
Las marcas de tiempo de la respuesta se usan para restablecer la copia de seguridad completa o para restablecer desde un momento determinado del período de recuperación.
Restablece la copia de seguridad en el clúster de la base de datos de destino
Después de identificar la copia de seguridad o el momento al que deseas restablecer la base de datos, ejecuta los comandos pgBackRest
en el clúster de la base de datos de destino. Para obtener más información sobre estos comandos, consulta Comando Restore.
A continuación, se incluyen algunos ejemplos de comandos de restauración de pgBackRest
:
Restablecer copia de seguridad
pgbackrest --config-path=/backup --stanza=db --repo=1 restore --set=20240213-231400F --type=immediate --target-action=promote --delta --link-all --log-level-console=info
Restablecer desde un punto determinado
pgbackrest --config-path=/backup --stanza=db --repo=1 restore --target="2024-01-22 11:27:22" --type=time --target-action=promote --delta --link-all --log-level-console=info
Reinicia el pod
Una vez que el comando de restablecimiento se complete correctamente, puedes iniciar el proceso de postgres
.
supervisorctl.par start postgres
Después de que se inicie el proceso de postgres
, puedes conectarte a la instancia principal y ejecutar consultas para verificar que los datos se restablecieron desde la copia de seguridad. Para obtener más información, consulta Conéctate a AlloyDB Omni que se ejecuta en Kubernetes.