Bagian ini membahas cara mengonfigurasi pencadangan dan pemulihan database Cassandra menggunakan ssh dan sistem file Anda, bukan menggunakan Google Cloud. Lihat juga:
Apa yang dimaksud dengan pencadangan dan pemulihan Cassandra dengan penyimpanan kustom?
Pencadangan dengan penyimpanan kustom menyimpan cadangan database Cassandra Anda ke file terkompresi dalam sistem file server yang Anda tentukan. Pencadangan dilakukan sesuai jadwal yang Anda tentukan dalam file penggantian.
Koneksi ke server dilakukan melalui SSH aman.
Menyiapkan pencadangan tanpa Layanan Cloud
Langkah-langkah berikut menyertakan contoh umum untuk menyelesaikan tugas tertentu, seperti membuat pasangan kunci SSH. Gunakan metode yang sesuai dengan penginstalan Anda.
Tentukan server Linux atau Unix untuk pencadangan Anda. Server ini harus dapat dijangkau menggunakan SSH dari
runtime hybrid Apigee Anda. Perangkat harus memiliki penyimpanan yang cukup untuk cadangan Anda.
Siapkan server SSH di server, atau pastikan server tersebut memiliki server SSH aman yang dikonfigurasi.
Buat pasangan kunci SSH dan simpan file kunci pribadi di jalur yang dapat diakses dari platform runtime hibrida Anda. Anda harus menggunakan sandi kosong untuk pasangan kunci atau pencadangan akan gagal. Contoh:
ssh-keygen -t rsa -b 4096 -C exampleuser@example.com
Enter file in which to save the key (/Users/exampleuser/.ssh/id_rsa): $APIGEE_HOME/hybrid-files/certs/ssh_key
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ssh_key
Your public key has been saved in ssh_key.pub
The key fingerprint is:
SHA256:DWKo334XMZcZYLOLrd/8HNpjTERPJJ0mc11UYmrPvSA exampleuser@example.com
The key's randomart image is:
+---[RSA 4096]----+
| +. ++X|
| . . o.=.*+|
| . o . . o==o |
| . . . =oo+o...|
| . S +E oo .|
| . . .. . o .|
| . . . . o.. |
| . ...o ++. |
| .. .. +o+. |
+----[SHA256]-----+
Buat akun pengguna di server cadangan dengan nama apigee. Pastikan
pengguna apigee baru memiliki direktori beranda di /home.
Di server cadangan, buat direktori ssh di direktori /home/apigee baru.
Salin kunci publik (ssh_key.pub dalam contoh sebelumnya) ke dalam file bernama
authorized_keys di direktori /home/apigee/ssh baru. Contoh:
cd /home/apigee
mkdir .sshcd .sshvi authorized_keys
Di server cadangan, buat direktori cadangan dalam direktori /home/apigee/. Direktori cadangan dapat berupa direktori apa pun selama pengguna apigee memiliki akses
ke direktori tersebut. Contoh:
cd /home/apigee
mkdir cassandra-backup
Uji koneksi. Anda harus memastikan bahwa pod Cassandra dapat terhubung ke
server cadangan menggunakan SSH:
Nama direktori cadangan di server cadangan Anda. Ini harus berupa direktori dalam
home/apigee (direktori cadangan bernama cassandra_backup
di langkah saat Anda membuat direktori cadangan).
Dengan YOUR_OVERRIDES_FILE adalah jalur ke file penggantian yang baru saja Anda edit.
Mengonfigurasi pemulihan
Pemulihan mengambil data Anda dari lokasi cadangan dan memulihkan data ke cluster Cassandra baru dengan jumlah node yang sama. Tidak ada data yang diambil dari cluster Cassandra lama.
Petunjuk pemulihan di bawah ini ditujukan untuk deployment satu region yang tidak menggunakan Google Cloud Storage untuk pencadangan. Untuk deployment lainnya, lihat hal berikut:
Buat namespace baru dalam cluster Kubernetes yang ada yang akan digunakan untuk memulihkan deployment huntime campuran. Jangan gunakan nama namespace asli untuk namespace baru.
Jangan gunakan namespace lama untuk pemulihan.
Di direktori penginstalan campuran root, buat file overrides-restore.yaml
baru.
Salin konfigurasi Cassandra lengkap dari file overrides.yaml
asli ke file overrides-restore.yaml baru. Contoh:
cp ./overrides.yaml ./overrides-restore.yaml
Tambahkan elemen namespace ke file overrides-restore.yaml baru.
Nama namespace baru yang Anda buat di langkah 1
untuk cluster Cassandra baru. Jangan gunakan namespace yang sama dengan yang Anda gunakan untuk
cluster asli.
restore:enabled
Pemulihan dinonaktifkan secara default. Anda harus menetapkan properti
ini ke true.
Nama direktori cadangan di server cadangan Anda.
Ini harus berupa direktori dalam
home/apigee (direktori cadangan bernama cassandra_backup
di langkah saat Anda membuat direktori cadangan).
restore:cloudProvider
HYBRID
Properti cloudProvider: "HYBRID" wajib diisi.
restore:snapshotTimestamp
BACKUP_TO_RESTORE
Cadangan tertentu yang ingin Anda pulihkan, yang ditentukan dalam
sintaksis crontab standar (tidak ada karakter pengganti yang diizinkan).
Ubah label app pada node Cassandra di namespace lama dengan menjalankan perintah berikut:
Buat deployment runtime hybrid baru. Tindakan ini akan membuat cluster Cassandra baru dan mulai memulihkan data cadangan ke cluster:
./apigeectl init -f ../overrides-restore.yaml
./apigeectl apply -f ../overrides-restore.yaml
Setelah pemulihan selesai, traffic harus dialihkan untuk menggunakan cluster Cassandra di namespace baru. Jalankan perintah berikut untuk mengalihkan traffic:
kubectl get rs -n OLD_NAMESPACE # look for the 'apigee-connect' replicaset
Setelah pengalihan traffic selesai, Anda dapat mengonfigurasi ulang pencadangan di cluster yang dipulihkan dengan menghapus konfigurasi restore dan menambahkan konfigurasi backup ke file overrides-restore.yaml. Ganti YOUR_RESTORE_NAMESPACE dengan nama namespace baru yang dibuat di langkah 1.
[[["Mudah dipahami","easyToUnderstand","thumb-up"],["Memecahkan masalah saya","solvedMyProblem","thumb-up"],["Lainnya","otherUp","thumb-up"]],[["Sulit dipahami","hardToUnderstand","thumb-down"],["Informasi atau kode contoh salah","incorrectInformationOrSampleCode","thumb-down"],["Informasi/contoh yang saya butuhkan tidak ada","missingTheInformationSamplesINeed","thumb-down"],["Masalah terjemahan","translationIssue","thumb-down"],["Lainnya","otherDown","thumb-down"]],["Terakhir diperbarui pada 2025-08-18 UTC."],[[["\u003cp\u003eThis document provides instructions for configuring custom storage backups of the Cassandra database in Apigee hybrid version 1.4, which is end of life and should be upgraded.\u003c/p\u003e\n"],["\u003cp\u003eTo set up backups, a dedicated Linux or Unix server must be designated, accessible via SSH, with sufficient storage, and an SSH key pair with no passphrase is required for the connection.\u003c/p\u003e\n"],["\u003cp\u003eThe backup schedule and destination are configured in the \u003ccode\u003eoverrides.yaml\u003c/code\u003e file, where you specify the server's IP, storage directory, private key file path, and the use of \u003ccode\u003eHYBRID\u003c/code\u003e as the cloud provider.\u003c/p\u003e\n"],["\u003cp\u003eRestoring a backup involves creating a new namespace, a new \u003ccode\u003eoverrides-restore.yaml\u003c/code\u003e file with the original Cassandra configuration, and applying the configuration to create a new Cassandra cluster with the data from the designated backup.\u003c/p\u003e\n"],["\u003cp\u003eAfter the restore you must route traffic to the new cluster, and after this, the restore setup can be deleted and a backup setup can be made.\u003c/p\u003e\n"]]],[],null,["# Backup and recovery with custom storage\n\n| You are currently viewing version 1.4 of the Apigee hybrid documentation. **This version is end of life.** You should upgrade to a newer version. For more information, see [Supported versions](/apigee/docs/hybrid/supported-platforms#supported-versions).\n\n\nThis section discusses how to configure backup and recovery of your Cassandra database\nusing `ssh` and your file system instead of using Google Cloud. See also:\n\n- [Cassandra backup and recovery](/apigee/docs/hybrid/v1.4/backup-recovery)\n- [Cassandra datastore](/apigee/docs/hybrid/v1.4/what-is-hybrid#cassandra-datastore)\n\nWhat is Cassandra backup and recovery with custom storage?\n----------------------------------------------------------\n\n\nBackup with custom storage stores backups of your Cassandra database to compressed files in the file system of\na server you specify. Backups occur on a schedule you specify in your overrides file.\nThe connection to the server is by secure SSH.\n| **Note:** You must ensure there is enough space on the file system for the backups, and adjust the frequency of the backups to avoid unnecessarily filling the alloted storage space. Apigee does not dictate a retention policy for the backup files. You may want to create a retention policy for files appropriate to your installation.\n\nSetting up backups without Cloud Services\n-----------------------------------------\n\n\nThe following steps include common examples for completing specific tasks, like creating an SSH\nkey pair. Use the methods that are appropriate to your installation.\n\n\nThe procedure has the following parts:\n\n- [Set up the server and SSH](#server-ssh)\n- [Set the schedule and destination for backup](#overrides-backup)\n- [Set up for recovery](#overrides-restore)\n\n### Set up the server and SSH\n\n1. Designate a Linux or Unix server for your backups. This server must be reachable using SSH from your Apigee hybrid runtime plane. It must have enough storage for your backups.\n2. Set up an SSH server on the server, or ensure that it has a secure SSH server configured. **Caution:** For security purposes, make sure your SSH server is up to date.\n3. Create an SSH key pair and store the private key file in a path that is accessible from your hybrid runtime plane. **You must use a blank password for your key pair or the backup will fail** . For example: \n\n ssh-keygen -t rsa -b 4096 -C \u003cvar translate=\"no\"\u003eexampleuser@example.com\u003c/var\u003e\n Enter file in which to save the key (/Users/exampleuser/.ssh/id_rsa): $APIGEE_HOME/hybrid-files/certs/ssh_key\n Enter passphrase (empty for no passphrase):\n Enter same passphrase again:\n Your identification has been saved in ssh_key\n Your public key has been saved in ssh_key.pub\n The key fingerprint is:\n SHA256:DWKo334XMZcZYLOLrd/8HNpjTERPJJ0mc11UYmrPvSA exampleuser@example.com\n The key's randomart image is:\n +---[RSA 4096]----+\n | +. ++X|\n | . . o.=.*+|\n | . o . . o==o |\n | . . . =oo+o...|\n | . S +E oo .|\n | . . .. . o .|\n | . . . . o.. |\n | . ...o ++. |\n | .. .. +o+. |\n +----[SHA256]-----+\n\n4. Create a user account on the backup server with the name `apigee`. Make sure the new `apigee` user has a home directory under `/home`.\n5. On the backup server, create an `ssh` directory in the new `/home/apigee` directory.\n6. Copy the public key (`ssh_key.pub` in the previous example) into a file named `authorized_keys` in the new `/home/apigee/ssh` directory. For example: \n\n cd /home/apigee\n mkdir .ssh\n cd .ssh\n vi authorized_keys\n\n7. On your backup server, create a backup directory within the `/home/apigee/` directory. The backup directory can be any directory as long as the `apigee` user has access to it. For example: \n\n cd /home/apigee\n mkdir cassandra-backup\n\n8. Test the connection. You need to make sure that your Cassandra pods can connect to your backup server using SSH:\n 1. Log into the shell of your Cassandra pod. For example: \n\n ```\n kubectl exec -it -n apigee APIGEE_CASSANDRA_DEFAULT_0 -- /bin/bash\n ```\n\n\n Where \u003cvar translate=\"no\"\u003eAPIGEE_CASSANDRA_DEFAULT_0\u003c/var\u003e is the name of a Cassandra pod. Change this to\n the name of the pod you want to connect from.\n 2. Connect by SSH to your backup server, using the server IP address: \n\n ```\n ssh apigee@BACKUP_SERVER_IP\n ```\n | **Note:** You may see a warning at this point saying your server's fingerprint is unrecognized and asks if you would like to continue. For purposes of this test, this means you can successfully reach your backup server from your Cassandra pod. You do not need to continue.\n\n### Set the schedule and destination for backup\n\n\nYou set the schedule and destination for backups in your `overrides.yaml` file.\n\n1. Add the following parameters to your `overrides.yaml` file:\n\n ### Parameters\n\n ```actionscript-3\n cassandra:\n backup:\n enabled: true\n keyFile: \"\u003cvar translate=\"no\"\u003ePATH_TO_PRIVATE_KEY_FILE\u003c/var\u003e\"\n server: \"\u003cvar translate=\"no\"\u003eBACKUP_SERVER_IP\u003c/var\u003e\"\n storageDirectory: \"/home/apigee/\u003cvar translate=\"no\"\u003eBACKUP_DIRECTORY\u003c/var\u003e\"\n cloudProvider: \"HYBRID\" # required verbatim \"HYBRID\" (all caps)\n schedule: \"\u003cvar translate=\"no\"\u003eSCHEDULE\u003c/var\u003e\"\n ```\n\n ### Example\n\n ```actionscript-3\n cassandra:\n backup:\n enabled: true\n keyFile: \"/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key\"\n server: \"34.56.78.90\"\n storageDirectory: \"/home/apigee/cassbackup\"\n cloudProvider: \"HYBRID\"\n schedule: \"0 2 * * *\"\n ```\n\n\n Where:\n\n2. Use `apigeectl` to apply the backup configuration to the storage scope of your cluster: \n\n ```\n $APIGEECTL_HOME/apigeectl --datastore -f YOUR_OVERRIDES_FILE\n ```\n\n\n Where \u003cvar translate=\"no\"\u003eYOUR_OVERRIDES_FILE\u003c/var\u003e is the path to the overrides file you just edited.\n\n### Configure restore\n\n\nRestoration takes your data from the backup location and restores the data into a new\nCassandra cluster with the same number of nodes. No data is taken from the old Cassandra\ncluster.\n\n\nThe restoration instructions below are for single region deployments that do not\nuse Google Cloud Storage for backups. For other deployments, see the following:\n\n- For single region deployments that do use Google Cloud Storage for backups, see [Cassandra backup and recovery](/apigee/docs/hybrid/v1.4/backup-recovery).\n- For multi-region deployments, see [Multi-region deployment on GKE and GKE on-prem](/apigee/docs/hybrid/v1.4/multi-region).\n\n\nTo restore Cassandra backups:\n\n1. Create a new namespace within the existing Kubernetes cluster that will be used to restore the hybrid huntime deployment. Do not use the original namespace name for the new namespace. Do not use the old namespace for restoration.\n2. In the root hybrid installation directory, create a new `overrides-restore.yaml` file.\n3. Copy the complete Cassandra configuration from your original `overrides.yaml` file into the new `overrides-restore.yaml` file. For example: \n\n ```\n cp ./overrides.yaml ./overrides-restore.yaml\n ```\n4. Add a namespace element to the new `overrides-restore.yaml` file.\n\n ### Parameters\n\n ```actionscript-3\n namespace: YOUR_RESTORE_NAMESPACE\n cassandra:\n ...\n restore:\n enabled: true\n keyFile: \"\u003cvar translate=\"no\"\u003ePATH_TO_PRIVATE_KEY_FILE\u003c/var\u003e\"\n server: \"\u003cvar translate=\"no\"\u003eBACKUP_SERVER_IP\u003c/var\u003e\"\n storageDirectory: \"/home/apigee/\u003cvar translate=\"no\"\u003eBACKUP_DIRECTORY\u003c/var\u003e\"\n cloudProvider: \"HYBRID\" # required verbatim \"HYBRID\" (all caps)\n snapshotTimestamp: \"\u003cvar translate=\"no\"\u003eBACKUP_TO_RESTORE\u003c/var\u003e\"\n ...\n ```\n\n ### Example\n\n ```actionscript-3\n namespace: cassandra-restore\n cassandra:\n restore:\n enabled: true\n keyFile: \"/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key\"\n server: \"34.56.78.90\"\n storageDirectory: \"/home/apigee/cassbackup\"\n cloudProvider: \"HYBRID\"\n snapshotTimestamp: \"20201001183903\"\n ```\n5. Where:\n\n6. Change the `app` label on any Cassandra nodes in the old namespace by executing the following command: \n\n ```\n kubectl label pods --overwrite --namespace=OLD_NAMESPACE -l app=apigee-cassandra app=apigee-cassandra-old\n ```\n7. Create a new hybrid runtime deployment. This will create a new Cassandra cluster and begin restoring the backup data into the cluster: \n\n ```\n ./apigeectl init -f ../overrides-restore.yaml\n ``` \n\n ```\n ./apigeectl apply -f ../overrides-restore.yaml\n ```\n8.\n Once the restoration is complete, the traffic must be switched to use the Cassandra\n cluster in the new namespace. Run the following commands to switch the traffic:\n\n ```\n kubectl get rs -n OLD_NAMESPACE # look for the 'apigee-connect' replicaset\n ``` \n\n ```\n kubectl patch rs -n OLD_NAMESPACE APIGEE_CONNECT_RS_NAME -p '{\"spec\":{\"replicas\" : 0}}'\n ```\n9. Once the traffic switch is complete, you can reconfigure backups on the restored cluster by removing the `restore` configuration and adding the `backup` configuration to the `overrides-restore.yaml` file. Replace \u003cvar translate=\"no\"\u003eYOUR_RESTORE_NAMESPACE\u003c/var\u003e with the new namespace name created in [step 1](#create-namespace). \n\n ```actionscript-3\n namespace: YOUR_RESTORE_NAMESPACE\n cassandra:\n ...\n backup:\n enabled: true\n serviceAccountPath: SA_JSON_FILE_PATH\n dbStorageBucket: CLOUD_STORAGE_BUCKET_PATH\n schedule: BACKUP_SCHEDULE_CODE\n ...\n ```\n\n\n Then apply the `backup` configuration with the following command: \n\n ```\n ./apigeectl apply -f ../overrides-restore.yaml\n ```"]]