Langkah-langkah di halaman ini mengasumsikan bahwa cluster database Kubernetes sumber dibuat di Google Kubernetes Engine, dan disk cadangan adalah persistent disk Compute Engine. Panduan ini juga mengasumsikan bahwa server tunggal AlloyDB Omni target diinstal di virtual machine (VM) Compute Engine.
Jika Anda menggunakan lingkungan lain, lihat dokumentasi masing-masing untuk mereplikasi langkah-langkah ini di lingkungan Anda.
Alur kerja berikut menjelaskan langkah-langkah cloning:
- Identifikasi informasi disk cadangan, seperti nama volume persisten dan handler persistent disk Compute Engine, untuk disk cadangan cluster database sumber.
- Pasang disk cadangan cluster database sumber ke server target.
- Gunakan perintah
pgBackRestuntuk memverifikasi bahwa cadangan sumber dapat diakses. - Gunakan perintah
pgBackRestuntuk memulihkan cadangan ke cluster database target.
Sebelum memulai
- Pastikan Anda memiliki akses ke disk cadangan tempat cadangan cluster database sumber Anda disimpan.
- Cluster database AlloyDB Omni target server tunggal dibuat. Untuk mengetahui informasi selengkapnya tentang cara menginstal AlloyDB Omni di Kubernetes, lihat Menginstal AlloyDB Omni.
- Pastikan Anda login ke database sebagai pengguna
postgres.
Mendapatkan informasi disk cadangan sumber
Sebagai bagian dari proses pemulihan, tentukan nama Persistent Volume Claim (PVC) disk cadangan untuk cluster database sumber Anda. PVC digunakan dalam Kubernetes untuk mengelola penyimpanan persisten untuk aplikasi.
Contoh perintah berikut membantu menentukan nama PV pokok dan handler persistent disk Compute Engine menggunakan nama PVC disk cadangan.
Hubungkan ke cluster GKE tempat Anda membuat cluster database sumber AlloyDB Omni:
kubectl get pvc -n DB_CLUSTER_NAMESPACE | grep DB_CLUSTER_NAME | grep backupdiskGanti kode berikut:
DB_CLUSTER_NAMESPACE: namespace Kubernetes untuk pencadangan ini. Namespace ini harus cocok dengan namespace cluster database.DB_CLUSTER_NAME: nama cluster database ini—misalnya,my-db-cluster.
Berikut adalah contoh responsnya.
backupdisk-al-fe8c-dbcluster-sample-0 Bound pvc-36d8f05d-ef1a-4750-ac01-9bb330c15b3a 10Gi RWO standard-rwo 5d21h ```Gunakan nama disk cadangan dari langkah sebelumnya—misalnya,
backupdisk-al-fe8c-dbcluster-sample-0, untuk menemukan nama PV pokok:kubectl get pvc/PVC_NAME -n DB_CLUSTER_NAMESPACE -o jsonpath={.spec.volumeName}Ganti kode berikut:
PVC_NAME: nama PVC disk cadangan dari respons di langkah sebelumnya—misalnyabackupdisk-al-fe8c-dbcluster-sample-0.
Temukan handler persistent disk Compute Engine yang mendasarinya:
kubectl get pv/$PV_NAME -o json | jq -r .spec.csi.volumeHandleGanti kode berikut:
PV_NAME: nama PV disk cadangan dari respons di langkah sebelumnya.
Berikut adalah contoh respons:
projects/my-project/zones/us-central1-a/disks/pvc-89f91fba-6cd2-4bfa-84ed-cb5969b446c3Ekspor nama disk cadangan sebagai variabel yang digunakan di bagian berikutnya:
export BACKUP_DISK=pvc-89f91fba-6cd2-4bfa-84ed-cb5969b446c3
Pasang disk cadangan ke server target
Dengan asumsi bahwa server target adalah server AlloyDB Omni yang diinstal di virtual machine Compute Engine, pasang disk cadangan ke server.
Jalankan perintah
gcloud compute instances attach-diskuntuk memasang disk:gcloud compute instances attach-disk GCE_INSTANCE_NAME \ --disk ${BACKUP_DISK} \ --zone=$GCE_ZONEGanti kode berikut:
GCE_INSTANCE_NAME: nama instance tempat server target Anda diinstal di mesin virtual Compute Engine.GCE_ZONE: zona tempat instance mesin virtual Compute Engine Anda berada.
Pasang disk cadangan ke server target:
lsblk mkdir -p /mnt/disks/backupdisk mount -o discard,defaults /dev/sdb /mnt/disks/backupdiskTambahkan pemasangan bind kustom ke file
dataplane.confAlloyDB Omni di direktori/var/alloydb/config:PG_BIND_MOUNTS=/mnt/disks/backupdisk:/mnt/disks/backups:rshared
Untuk mengetahui informasi selengkapnya tentang pemasangan bind di docker, lihat Pemasangan bind.
- Mulai ulang server target:
Docker
docker restart CONTAINER_NAMEGanti CONTAINER_NAME dengan nama penampung AlloyDB Omni baru—misalnya, my-omni-1.
Podman
podman restart CONTAINER_NAMEGanti CONTAINER_NAME dengan nama penampung AlloyDB Omni baru—misalnya, my-omni-1.
Perbarui file konfigurasi pgBackRest
Perbarui file pgBackRest yang ada di direktori disk cadangan dengan jalur repositori baru.
Di server target, buka direktori
/mnt/disks/backupdisk:cd /mnt/disks/backupdiskPerbarui jalur
pg1-pathke direktori sementara dalam filepgbackrest.confuntuk menghindari penimpaan data yang ada. Direktoridata-restoreddibuat secara otomatis sebagai bagian dari proses pemulihan:sudo sed -i 's|.*pg1-path.*|pg1-path=/mnt/disks/pgsql/data-restored|' pgbackrest.confPerbarui jalur
repo1-pathke direktori sementara dalam filepgbackrest.conf:sudo sed -i 's|.*repo1-path.*|repo1-path=/mnt/disks/backups/repo|' conf.d/repo1-local-backupplan.conf
Memverifikasi cadangan sumber di cluster database target
Login ke server target, dan jalankan perintah pgBackRest untuk memverifikasi bahwa cadangan cluster database sumber dapat diakses di server target:
Docker
sudo docker exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/backups --stanza=db --repo=1 infoPodman
sudo podman exec CONTAINER_NAME pgbackrest --config-path=/mnt/disks/backups --stanza=db --repo=1 infoBerikut adalah contoh respons:
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
Stempel waktu dalam respons digunakan untuk memulihkan cadangan penuh atau memulihkan dari titik waktu dalam periode pemulihan.
Pulihkan cadangan di server target
Setelah Anda mengidentifikasi cadangan atau titik waktu yang ingin dipulihkan, jalankan perintah pgBackRest di server target Anda. Untuk mengetahui informasi selengkapnya
tentang perintah ini, lihat Perintah
Restore.
Berikut beberapa contoh perintah pemulihan pgBackRest:
Memulihkan dari cadangan
pgbackrest --config-path=/mnt/disks/backups --stanza=db --repo=1 restore --set=20240213-231400F --type=immediate --target-action=promote --delta --link-all --log-level-console=infoMemulihkan dari titik waktu
pgbackrest --config-path=/mnt/disks/backups --stanza=db --repo=1 restore --target="2024-01-22 11:27:22" --type=time --target-action=promote --delta --link-all --log-level-console=info
Menyalin data ke server target
Setelah perintah pemulihan berhasil diselesaikan, Anda dapat menyalin data dari direktori sementara data-restored ke direktori data AlloyDB saat ini.
Di server target, hentikan layanan database:
Docker
docker stop CONTAINER_NAMEPodman
podman stop CONTAINER_NAMEGanti nama direktori data saat ini menjadi nama lain sebagai praktik terbaik:
mv ~/alloydb-data/data ~/alloydb-data/data-oldGanti nama direktori sementara
data-restoredmenjadi direktori data saat ini:mv ~/alloydb-data/data-restored ~/alloydb-data/dataPerbarui nilai
pg1-pathdalam filepostgresql.auto.confuntuk memuat data yang dipulihkan:vim ~/alloydb-data/data/postgresql.auto.conf # Verify postgresql.auto.conf. # Do not edit this file manually! # It will be overwritten by the ALTER SYSTEM command. # Recovery settings generated by pgBackRest restore on 2024-03-13 20:47:11 restore_command = 'pgbackrest --config-path=/mnt/disks/pgsql --pg1-path=/mnt/disks/pgsql/data --repo=1 --stanza=db archive-get %f "%p"' recovery_target = 'immediate' recovery_target_action = 'promote' recovery_target_timeline = 'current'Di server target, mulai layanan database:
Docker
docker start CONTAINER_NAMEPodman
podman start CONTAINER_NAME
Setelah layanan database dimulai, Anda dapat terhubung ke instance utama dan menjalankan kueri untuk memverifikasi bahwa data dipulihkan dari cadangan. Untuk mengetahui informasi selengkapnya, lihat Menghubungkan ke AlloyDB Omni di satu server.