- v1.15 (última)
- v1.14
- v1.13
- Lista de versiones admitidas
- v1.12
- v1.11
- v1.10
- v1.9
- v1.8
- v1.7
- Versión 1.6
- v1.5
- Versión 1.4
- Versión 1.3
- v1.2
- v1.1
Versiones compatibles:
Versiones no compatibles:
En esta sección se explica cómo configurar la copia de seguridad y la recuperación de datos del anillo de la base de datos Apache Cassandra instalado en el plano de entorno de ejecución de Apigee Hybrid. Consulta también Base de datos de Cassandra.
Qué debes saber sobre las copias de seguridad de Cassandra
Cassandra es una base de datos replicada que se configura para tener al menos 3 copias de tus datos en cada región o centro de datos. Cassandra usa la replicación de streaming y las reparaciones de lectura para mantener las réplicas de datos en cada región o centro de datos en cualquier momento.
En el modelo híbrido, las copias de seguridad de Cassandra no están habilitadas de forma predeterminada. Sin embargo, es recomendable habilitar las copias de seguridad de Cassandra por si se eliminan los datos por error.
¿Qué se incluye en las copias de seguridad?
La configuración de copia de seguridad descrita en este tema crea copias de seguridad de las siguientes entidades:
- Esquema de Cassandra, incluido el esquema de usuario (definiciones de espacio de claves de Apigee)
- Información del token de partición de Cassandra por nodo
- Una instantánea de los datos de Cassandra
¿Dónde se almacenan los datos de las copias de seguridad?
Los datos de las copias de seguridad se almacenan en un segmento de Google Cloud Storage (GCS) que debes crear. En este tema se explica cómo crear y configurar un contenedor.
Programar copias de seguridad de Cassandra
Las copias de seguridad se programan como tareas cron en el plano de tiempo de ejecución. Para programar copias de seguridad de Cassandra, sigue estos pasos:
- Ejecuta el siguiente comando
create-service-account
para crear una cuenta de servicio (SA) de GCP con el rol estándarroles/storage.objectAdmin
. Este rol de SA te permite escribir datos de copias de seguridad en Google Cloud Storage (GCS). Ejecuta el siguiente comando en el directorio raíz de la instalación híbrida: Por ejemplo:./tools/create-service-account apigee-cassandra output-dir
Para obtener más información sobre las cuentas de servicio de GCP, consulta el artículo sobre cómo crear y gestionar cuentas de servicio../tools/create-service-account apigee-cassandra ./service-accounts
- El comando
create-service-account
guarda un archivo JSON que contiene la clave privada de la cuenta de servicio. El archivo se guarda en el mismo directorio en el que se ejecuta el comando. Necesitarás la ruta a este archivo en los siguientes pasos. - Crea un segmento de GCS. Especifica una política de conservación de datos razonable para el segmento. Apigee recomienda una política de conservación de datos de 15 días.
- Abre el archivo
overrides.yaml
. - Añade las siguientes propiedades de
cassandra.backup
para habilitar la copia de seguridad. No elimine ninguna de las propiedades que ya estén configuradas. Dónde:cassandra: ... backup: enabled: true serviceAccountPath: sa_json_file_path dbStorageBucket: gcs_bucket_path schedule: backup_schedule_code ...
Propiedad Descripción enabled
La copia de seguridad está inhabilitada de forma predeterminada. Debes asignar el valor true
a esta propiedad.serviceAccountPath
Ruta del archivo JSON de la cuenta de servicio en tu sistema de archivos. Este archivo se descargó cuando ejecutaste ./tools/create-service-account
.dbStorageBucket
Ruta del segmento de almacenamiento de GCS con este formato: gs://bucket_name
. El campogs://
es obligatorio.schedule
Hora en la que se inicia la copia de seguridad, especificada en la sintaxis estándar de crontab. Predeterminado: 0 2 * * *
Nota: No programes una copia de seguridad que empiece poco después de aplicar la configuración de copia de seguridad a tu clúster. Cuando apliques la configuración de la copia de seguridad, Kubernetes volverá a crear los nodos de Cassandra. Si la copia de seguridad se inicia antes de que se reinicien los nodos (posiblemente varios minutos), se producirá un error.
... cassandra: storage: type: gcepd capacity: 50Gi gcepd: replicationType: regional-pd sslRootCAPath: "/Users/myhome/ssh/cassandra.crt" sslCertPath: "/Users/myhome/ssh/cassandra.crt" sslKeyPath: "/Users/myhome/ssh/cassandra.key" auth: default: password: "abc123" admin: password: "abc234" ddl: password: "abc345" dml: password: "abc456" nodeSelector: key: cloud.google.com/gke-nodepool value: apigee-data backup: enabled: true serviceAccountPath: "/Users/myhome/.ssh/my_cassandra_backup.json" dbStorageBucket: "gs://myname-cassandra-backup" schedule: "45 23 * * 6" ...
- Aplica los cambios de configuración al nuevo clúster. Por ejemplo:
./apigeectl apply -c 2_cassandra -v beta2
Restaurar copias de seguridad
La restauración toma los datos de la ubicación de la copia de seguridad y los restaura en un nuevo clúster de Cassandra con el mismo número de pods. El nuevo clúster debe tener un espacio de nombres diferente al de tu clúster del plano de ejecución.
Para restaurar copias de seguridad de Cassandra, sigue estos pasos:
- Crea un clúster de Kubernetes con un espacio de nombres nuevo. No puedes usar el mismo clúster o espacio de nombres que usaste en la instalación híbrida original.
- En el directorio raíz de la instalación híbrida, crea un archivo
overrides-restore.yaml
. - Copia la configuración completa de Cassandra del archivo
overrides.yaml
original en el nuevo. - Añade un elemento de espacio de nombres. No uses el mismo espacio de nombres que usaste para tu clúster original.
- Crea el nuevo clúster de Cassandra:
./apigeectl apply -c 2_cassandra -v beta2 -f ./overrides-restore.yaml
./apigeectl apply -c 2_cassandra-role -v beta2
namespace: your-restore-namespace cassandra: storage: type: gcepd capacity: 50Gi gcepd: replicationType: regional-pd nodeSelector: key: cloud.google.com/gke-nodepool value: apigee-data sslRootCAPath: path_to_root_ca_file sslCertPath: path_to_ssl_cert_file sslKeyPath: path_to_ssl_key_file auth: default: password: your_cassandra_password admin: password: admin_password ddl: password: ddl_password dml: password: dml_password restore: enabled: true snapshotTimestamp: timestamp serviceAccountPath: sa_json_file_path dbStorageBucket: gcs_bucket_path image: pullPolicy: Always
Propiedad | Descripción |
---|---|
ssl*Path , auth.* |
Usa las mismas credenciales de autenticación TLS que usaste para crear la base de datos de Cassandra original. |
snapshotTimestamp |
Marca de tiempo de la copia de seguridad de la instantánea que se va a restaurar. |
serviceAccountPath |
La ruta del sistema de archivos a la cuenta de servicio que has creado para la copia de seguridad. |
dbStorageBucket |
Ruta del segmento de almacenamiento de GCS donde se almacena la copia de seguridad, con este formato: gs://bucket_name . El campo gs:// es obligatorio. |
namespace: cassandra-restore cassandra: storage: type: gcepd capacity: 50Gi gcepd: replicationType: regional-pd sslRootCAPath: "/Users/myhome/ssh/cassandra.crt" sslCertPath: "/Users/myhome/ssh/cassandra.crt" sslKeyPath: "/Users/myhome/ssh/cassandra.key" auth: default: password: "abc123" admin: password: "abc234" ddl: password: "abc345" dml: password: "abc456" nodeSelector: key: cloud.google.com/gke-nodepool value: apigee-data restore: enabled: true snapshotTimestamp: "20190417002207" serviceAccountPath: "/Users/myhome/.ssh/my_cassandra_backup.json" dbStorageBucket: "gs://myname-cassandra-backup" image: pullPolicy: Always
donde snapshotTimestamp
es la marca de tiempo asociada a la copia de seguridad que vas a restaurar.
Ver los registros de restauración
Puedes consultar los registros de la tarea de restauración y buscar error
para asegurarte de que el registro de restauración no tenga errores.
Verificar que se ha completado la restauración
Para comprobar si se ha completado la operación de restauración, sigue estos pasos:
kubectl get pods NAME READY STATUS RESTARTS AGE apigee-cassandra-0 1/1 Running 0 1h apigee-cassandra-1 1/1 Running 0 1h apigee-cassandra-2 1/1 Running 0 59m apigee-cassandra-restore-b4lgf 0/1 Completed 0 51m
Ver los registros de restauración
Para ver los registros de restauración, sigue estos pasos:
kubectl logs -f apigee-cassandra-restore-b4lgf Restore Logs: Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] to download file gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1/backup_20190405011309_schema.tgz INFO: download sucessfully extracted the backup files from gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1 finished downloading schema.cql to create schema from 10.32.0.28 Warnings : dclocal_read_repair_chance table option has been deprecated and will be removed in version 4.0 dclocal_read_repair_chance table option has been deprecated and will be removed in version 4.0 Warnings : dclocal_read_repair_chance table option has been deprecated and will be removed in version 4.0 dclocal_read_repair_chance table option has been deprecated and will be removed in version 4.0 INFO: the schema has been restored starting apigee-cassandra-0 in default starting apigee-cassandra-1 in default starting apigee-cassandra-2 in default 84 95 106 waiting on waiting nodes $pid to finish 84 Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] INFO: restore downloaded tarball and extracted the file from gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1 INFO: restore downloaded tarball and extracted the file from gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1 INFO: restore downloaded tarball and extracted the file from gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1 INFO 12:02:28 Configuration location: file:/etc/cassandra/cassandra.yaml …... INFO 12:02:41 [Stream #e013ee80-5863-11e9-8458-353e9e3cb7f9] All sessions completed Summary statistics: Connections per host : 3 Total files transferred : 2 Total bytes transferred : 0.378KiB Total duration : 5048 ms Average transfer rate : 0.074KiB/s Peak transfer rate : 0.075KiB/s progress: [/10.32.1.155]0:1/1 100% 1:1/1 100% [/10.32.0.28]1:1/1 100% 0:1/1 100% [/10.32.3.220]0:1/1 100% 1:1/1 100% total: 100% 0.000KiB/s (avg: 0.074KiB/s) INFO 12:02:41 [Stream #e013ee80-5863-11e9-8458-353e9e3cb7f9] All sessions completed progress: [/10.32.1.155]0:1/1 100% 1:1/1 100% [/10.32.0.28]1:1/1 100% 0:1/1 100% [/10.32.3.220]0:1/1 100% 1:1/1 100% total: 100% 0.000KiB/s (avg: 0.074KiB/s) INFO 12:02:41 [Stream #e013ee80-5863-11e9-8458-353e9e3cb7f9] All sessions completed INFO 12:02:41 [Stream #e013ee80-5863-11e9-8458-353e9e3cb7f9] All sessions completed INFO: ./apigee/data/cassandra/data/ks1/user-9fbae960571411e99652c7b15b2db6cc restored successfully INFO: Restore 20190405011309 completed INFO: ./apigee/data/cassandra/data/ks1/user-9fbae960571411e99652c7b15b2db6cc restored successfully INFO: Restore 20190405011309 completed waiting on waiting nodes $pid to finish 106 Restore finished
Verificar una tarea de copia de seguridad
También puedes verificar tu trabajo de copia de seguridad después de programar tu cron de copia de seguridad. Una vez que se haya programado el cronjob, debería ver algo parecido a esto:
kubectl get pods NAME READY STATUS RESTARTS AGE apigee-cassandra-0 1/1 Running 0 2h apigee-cassandra-1 1/1 Running 0 2h apigee-cassandra-2 1/1 Running 0 2h apigee-cassandra-backup-1554515580-pff6s 0/1 Running 0 54s
Consultar los registros de copias de seguridad
La tarea de copia de seguridad:
- Crea un archivo
schema.cql
. - Lo sube a tu segmento de almacenamiento.
- Hace eco del nodo para crear una copia de seguridad de los datos y subirlos al mismo tiempo.
- Espera hasta que se hayan subido todos los datos.
kubectl logs -f apigee-cassandra-backup-1554515580-pff6s myusername-macbookpro:cassandra-backup-utility myusername$ kubectl logs -f apigee-cassandra-backup-1554577680-f9sc4 starting apigee-cassandra-0 in default starting apigee-cassandra-1 in default starting apigee-cassandra-2 in default 35 46 57 waiting on process 35 Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] Requested creating snapshot(s) for [all keyspaces] with snapshot name [20190406190808] and options {skipFlush=false} Snapshot directory: 20190406190808 INFO: backup created cassandra snapshot 20190406190808 tar: Removing leading `/' from member names /apigee/data/cassandra/data/ks1/mytest3-37bc2df0587811e98e8d875b0ed64754/snapshots/ /apigee/data/cassandra/data/ks1/mytest3-37bc2df0587811e98e8d875b0ed64754/snapshots/20190406190808/ /apigee/data/cassandra/data/ks1/mytest3-37bc2df0587811e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-Data.db Requested creating snapshot(s) for [all keyspaces] with snapshot name [20190406190808] and options {skipFlush=false} Requested creating snapshot(s) for [all keyspaces] with snapshot name [20190406190808] and options {skipFlush=false} Snapshot directory: 20190406190808 INFO: backup created cassandra snapshot 20190406190808 tar: Removing leading `/' from member names /apigee/data/cassandra/data/system/hints-2666e20573ef38b390fefecf96e8f0c7/snapshots/ /apigee/data/cassandra/data/system/hints-2666e20573ef38b390fefecf96e8f0c7/snapshots/20190406190808/ /apigee/data/cassandra/data/system/hints-2666e20573ef38b390fefecf96e8f0c7/snapshots/20190406190808/manifest.json /apigee/data/cassandra/data/system/prepared_statements-18a9c2576a0c3841ba718cd529849fef/snapshots/ /apigee/data/cassandra/data/system/prepared_statements-18a9c2576a0c3841ba718cd529849fef/snapshots/20190406190808/ /apigee/data/cassandra/data/system/prepared_statements-18a9c2576a0c3841ba718cd529849fef/snapshots/20190406190808/manifest.json /apigee/data/cassandra/data/system/range_xfers-55d764384e553f8b9f6e676d4af3976d/snapshots/ /apigee/data/cassandra/data/system/range_xfers-55d764384e553f8b9f6e676d4af3976d/snapshots/20190406190808/ /apigee/data/cassandra/data/system/range_xfers-55d764384e553f8b9f6e676d4af3976d/snapshots/20190406190808/manifest.json /apigee/data/cassandra/data/system/peer_events-59dfeaea8db2334191ef109974d81484/snapshots/ /apigee/data/cassandra/data/system/peer_events-59dfeaea8db2334191ef109974d81484/snapshots/20190406190808/ /apigee/data/cassandra/data/system/peer_events-59dfeaea8db2334191ef109974d81484/snapshots/20190406190808/manifest.json /apigee/data/cassandra/data/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/snapshots/ /apigee/data/cassandra/data/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/snapshots/20190406190808/ /apigee/data/cassandra/data/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/snapshots/20190406190808/manifest.json …… /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/ /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/ /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-Filter.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-CompressionInfo.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-Index.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-Statistics.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-Data.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-Index.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-Statistics.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-TOC.txt /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-Statistics.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-Summary.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-Filter.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-Summary.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-Index.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/manifest.json /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-Filter.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-Digest.crc32 /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-Summary.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-Data.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-TOC.txt /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/schema.cql /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-CompressionInfo.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-Digest.crc32 /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-TOC.txt /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-Data.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-Digest.crc32 /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-CompressionInfo.db …… /tmp/tokens.txt / [1 files][ 0.0 B/ 0.0 B] Operation completed over 1 objects. / [1 files][ 0.0 B/ 0.0 B] Operation completed over 1 objects. INFO: backup created tarball and transfered the file to gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1 INFO: removing cassandra snapshot INFO: backup created tarball and transfered the file to gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1 INFO: removing cassandra snapshot Requested clearing snapshot(s) for [all keyspaces] INFO: Backup 20190406190808 completed waiting on process 46 Requested clearing snapshot(s) for [all keyspaces] INFO: Backup 20190406190808 completed Requested clearing snapshot(s) for [all keyspaces] waiting on process 57 INFO: Backup 20190406190808 completed waiting result to get schema from 10.32.0.28 INFO: /tmp/schema.cql has been generated Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] tar: removing leading '/' from member names tmp/schema.cql Copying from... / [1 files][ 0.0 B/ 0.0 B] Operation completed over 1 objects. INFO: backup created tarball and transfered the file to gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1 finished uploading schema.cql