Untuk informasi berbasis Kubernetes, lihat Mencadangkan dan memulihkan di Kubernetes.
Untuk mengetahui informasi selengkapnya tentang pgBackRest, lihat panduan penggunanya.
Sebelum memulai
Sebelum mengonfigurasi AlloyDB Omni agar berfungsi dengan pgBackRest, selesaikan prasyarat berikut:
- Instal dan jalankan AlloyDB Omni di server yang Anda kontrol.
- Siapkan penyimpanan data persisten untuk instance AlloyDB Omni Anda.
Konfigurasi dasar dengan cadangan lokal
Langkah-langkah di bagian ini akan memandu Anda melakukan penyiapan dasar pgBackRest. Konfigurasi dasar tidak mengaktifkan pencadangan sesuai jadwal. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan pencadangan terjadwal.
Karena pgBackRest adalah produk pihak ketiga yang fleksibel dan kompatibel dengan AlloyDB Omni, Anda dapat mengubah langkah-langkah ini sesuai kebutuhan dan preferensi Anda.
Memasang volume cadangan ke container Anda
Untuk tujuan organisasi, sebaiknya buat dan pasang volume terpisah untuk cadangan pgBackRest. Untuk menyiapkan volume baru, selesaikan langkah-langkah berikut:
Jika container Anda berjalan, hentikan dan hapus.
Docker
docker stop CONTAINER_NAME
docker rm CONTAINER_NAME
Docker
docker stop CONTAINER_NAME
docker rm CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
podman rm CONTAINER_NAME
Podman
podman stop CONTAINER_NAME
podman rm CONTAINER_NAME
Ganti variabel berikut:
CONTAINER_NAME
: Nama yang Anda gunakan untuk container.
Buat direktori cadangan di sistem file penampung Anda.
Docker
mkdir -p BACKUP_DIR
Docker
mkdir -p BACKUP_DIR
Podman
mkdir -p BACKUP_DIR
Podman
mkdir -p BACKUP_DIR
Ganti variabel berikut:
BACKUP_DIR
: Direktori host tempat cadangan Anda akan disimpan.
Buat ulang penampung Anda dengan volume cadangan baru.
Docker
docker run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Docker
docker run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
Podman
podman run -d --name CONTAINER_NAME \ -e POSTGRES_PASSWORD=NEW_PASSWORD \ -v DATA_DIR:/var/lib/postgresql/data \ -v BACKUP_DIR:/var/lib/postgresql/backups \ -p HOST_PORT:5432 \ --restart=always \ docker.io/google/alloydbomni:latest
Ganti variabel berikut:
CONTAINER_NAME
: Nama yang Anda gunakan untuk container.NEW_PASSWORD
: Sandi yang ditetapkan untuk penggunapostgres
penampung baru setelah pembuatannya. Perhatikan bahwaNEW_PASSWORD
hanya akan menyetel sandi baru jikaDATA_DIR
adalah lokasi baru.DATA_DIR
: Jalur direktori host tempat data Anda disimpan.DATA_DIR
: Jalur direktori host tempat data Anda disimpan.BACKUP_DIR
: Direktori host tempat cadangan Anda akan disimpan.HOST_PORT
: Port TCP di mesin host yang harus digunakan container untuk memublikasikan port5432
-nya sendiri. Untuk menggunakan port default PostgreSQL di mesin host juga, tentukan5432
.
Buat direktori cadangan, di container Anda, dapat dibaca oleh
postgres
.Docker
docker exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups
Docker
docker exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups
Podman
podman exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups
Podman
podman exec CONTAINER_NAME chown -R postgres:postgres /var/lib/postgresql/backups
Ganti variabel berikut:
CONTAINER_NAME
: Nama yang Anda gunakan untuk container.
Mengonfigurasi cadangan lokal
pgBackRest membuat subdirektori untuk setiap cadangan yang diambil dan menyertakan file manifes teks biasa.
pgBackRest menggunakan istilah stanza untuk merujuk pada konfigurasi untuk cluster database PostgreSQL. Nama stanza bersifat arbitrer dan tidak harus cocok dengan server host, cluster PostgreSQL, atau nama database. Dokumentasi pgBackRest menyarankan untuk memberi nama stanza sesuai dengan fungsi cluster.
Repositori adalah tempat cadangan ditulis. pgBackRest mendukung penulisan ke lebih dari satu repositori dalam stanza tertentu. Sebagian besar parameter konfigurasi yang terkait dengan
repositori diindeks dengan nilai numerik. Misalnya, repo1-
. Parameter yang terkait dengan cluster PostgreSQL juga diindeks secara terpisah. Contoh, pg1-
.
pgBackRest memanfaatkan file konfigurasi, yang disebut pgbackrest.conf
, untuk menyimpan
parameter global dan khusus stanza.
Untuk membuat dan menginisialisasi file konfigurasi untuk mencadangkan cluster AlloyDB Omni, buat file pgbackrest.conf
di direktori pencadangan sisi host yang Anda buat di Pasang volume cadangan ke container Anda.
[global]
# Paths (all mandatory):
repo1-path=/var/lib/postgresql/backups
spool-path=/var/lib/postgresql/backups/spool
lock-path=/var/lib/postgresql/backups
# Retention details:
repo1-retention-full=3
repo1-retention-full-type=count
repo1-retention-diff=16
# Force a checkpoint to start backup immediately:
start-fast=y
# Logging parameters:
log-path=/var/lib/postgresql/backups
log-level-console=info
log-level-file=info
# Recommended ZSTD compression:
compress-type=zst
# Other performance parameters:
archive-async=y
archive-push-queue-max=1024MB
archive-get-queue-max=256MB
archive-missing-retry=y
[global:archive-push]
process-max=2
[global:archive-get]
process-max=2
[omni]
pg1-user=postgres
pg1-socket-path=/tmp
pg1-path=/var/lib/postgresql/data
Beberapa parameter bersifat wajib, tetapi parameter lainnya dapat disesuaikan untuk memenuhi persyaratan spesifik Anda jika diperlukan, seperti berikut:
repo1-path
: Lokasi direktori tempat cadangan ditulis. Sebaiknya gunakan lokasi yang dapat dilihat oleh server host dan penampung.log-path
: Lokasi direktori tempat file log ditulis. Jika Anda ingin menulis file log ke lokasi terpisah, tidak tercampur dengan cadangan itu sendiri, sesuaikan parameter ini.repo1-retention-full
: Jumlah cadangan penuh yang akan dipertahankan.repo1-retention-full-type
: Apakah retensi diukur berdasarkan jumlah atau jangka waktu (hari).repo1-retention-diff
: Jumlah cadangan diferensial yang akan dipertahankan.
Setelan parameter lain yang tidak penting, tetapi direkomendasikan, yang kompatibel dengan AlloyDB Omni dalam file konfigurasi mencakup hal berikut:
log-level-console
: Tingkat logging yang ditulis ke layar (STDOUT) saat menjalankan perintah pgBackup. Anda dapat menyesuaikannya agar sesuai dengan kebutuhan Anda dalam file konfigurasi, atau mengganti nilai ini dengan argumen command line--log-level-console
. Defaultnya adalahwarn
.start-fast
: Memaksa titik pemeriksaan untuk memulai pencadangan dengan cepat. Defaultnya adalahn
.archive-async
: Mendorong file segmen WAL secara asinkron untuk performa. Defaultnya adalahn
.process-max
: Jumlah maksimum proses yang akan digunakan untuk kompresi dan transfer. Biasanya disetel kemax_cpu/4
di cluster utama ataumax_cpu/2
di cluster standby. Defaultnya adalah1
.compress-type
: Algoritma kompresi yang akan digunakan. Defaultnya adalahgz
.
Ada banyak parameter konfigurasi pgBackRest lainnya yang dapat disesuaikan. Dokumentasi ini hanya mencakup parameter wajib untuk konfigurasi AlloyDB Omni default dan beberapa setelan parameter yang direkomendasikan. Untuk mengetahui daftar lengkap parameter konfigurasi, lihat dokumentasi online Referensi Konfigurasi pgBackRest.
Setelah mengonfigurasi pgBackRest, repositori target tempat cadangan ditulis harus diinisialisasi dengan membuat stanza, yang menggunakan parameter seperti yang ditetapkan dalam file konfigurasi.
Untuk mengonfigurasi database Anda untuk pencadangan, selesaikan langkah-langkah berikut:
Buat stanza menggunakan perintah
stanza-create
.Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni stanza-create
Ganti variabel berikut:
CONTAINER_NAME
: Nama yang Anda gunakan untuk container.
Konfigurasi database Anda untuk pencadangan.
Docker
docker exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/backups --stanza=omni archive-push %p';" \ -c "ALTER SYSTEM SET archive_mode=on;" \ -c "ALTER SYSTEM SET max_wal_senders=10;" \ -c "ALTER SYSTEM SET wal_level=replica;"
Docker
docker exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/backups --stanza=omni archive-push %p';" \ -c "ALTER SYSTEM SET archive_mode=on;" \ -c "ALTER SYSTEM SET max_wal_senders=10;" \ -c "ALTER SYSTEM SET wal_level=replica;"
Podman
podman exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/backups --stanza=omni archive-push %p';" \ -c "ALTER SYSTEM SET archive_mode=on;" \ -c "ALTER SYSTEM SET max_wal_senders=10;" \ -c "ALTER SYSTEM SET wal_level=replica;"
Podman
podman exec -u postgres CONTAINER_NAME psql \ -c "ALTER SYSTEM SET archive_command='pgbackrest --config-path=/var/lib/postgresql/backups --stanza=omni archive-push %p';" \ -c "ALTER SYSTEM SET archive_mode=on;" \ -c "ALTER SYSTEM SET max_wal_senders=10;" \ -c "ALTER SYSTEM SET wal_level=replica;"
Ganti variabel berikut:
CONTAINER_NAME
: Nama yang Anda gunakan untuk container.
Mulai ulang penampung Anda.
Docker
docker restart CONTAINER_NAME
Docker
docker restart CONTAINER_NAME
Podman
podman restart CONTAINER_NAME
Podman
podman restart CONTAINER_NAME
Ganti variabel berikut:
CONTAINER_NAME
: Nama yang Anda gunakan untuk container.
Validasi konfigurasi pencadangan.
Docker
docker exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"
Docker
docker exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"
Podman
podman exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"
Podman
podman exec -u postgres CONTAINER_NAME psql \ -c "SELECT name, setting FROM pg_catalog.pg_settings WHERE name IN ('archive_command', 'archive_mode', 'max_wal_senders', 'wal_level') ORDER BY name"
Ganti variabel berikut:
CONTAINER_NAME
: Nama yang Anda gunakan untuk container.
Lakukan pemeriksaan pgBackRest.
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ check
Ganti variabel berikut:
CONTAINER_NAME
: Nama yang Anda gunakan untuk container.
Melakukan pencadangan
Lakukan pencadangan penuh.
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full \ backup
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full \ backup
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full \ backup
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=full \ backup
Ganti variabel berikut:
CONTAINER_NAME
: Nama yang Anda gunakan untuk container.
Lakukan pencadangan diferensial.
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff \ backup
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff \ backup
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff \ backup
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ --type=diff \ backup
Ganti variabel berikut:
CONTAINER_NAME
: Nama yang Anda gunakan untuk container.
Laporan cadangan.
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ info
Ganti variabel berikut:
CONTAINER_NAME
: Nama yang Anda gunakan untuk container.
Menyiapkan pencadangan terjadwal
Untuk menyiapkan pencadangan terjadwal, buat cron job yang menjalankan perintah pgbackrest backup
sesering yang diperlukan. Untuk mengetahui informasi selengkapnya, lihat
Menjadwalkan pencadangan.
Konfigurasi kustom dan cadangan jarak jauh
Setelah konfigurasi dasar berfungsi, Anda dapat menyesuaikan file konfigurasi agar sesuai dengan kebutuhan dan preferensi Anda menggunakan opsi yang didokumentasikan dalam referensi konfigurasi pgBackRest.
Hal ini mencakup penentuan repositori cadangan tambahan yang berada di komputer jarak jauh, atau di cloud. Jika Anda menentukan beberapa repositori, pgBackRest akan menulis ke semuanya secara bersamaan sebagai tindakan pencadangan defaultnya.
Misalnya, pgBackRest mendukung penggunaan bucket Cloud Storage sebagai repositori cadangan, dengan sejumlah opsi konfigurasi terkait. Bagian berikut menunjukkan salah satu cara untuk menggunakan opsi ini.
Contoh konfigurasi menggunakan Cloud Storage
Langkah-langkah di bagian ini didasarkan pada file konfigurasi yang diperkenalkan di Konfigurasi dasar dengan cadangan lokal. Perubahan pada file tersebut menentukan repositori cadangan kedua di bucket Cloud Storage, yang diakses melalui Identity and Access Management (IAM).
Gaya autentikasi otomatis dalam contoh ini memerlukan cluster AlloyDB Omni untuk berjalan di instance VM Compute Engine. Jika Anda tidak menjalankan AlloyDB Omni di instance VM Compute Engine, Anda tetap dapat mencadangkan ke bucket Cloud Storage menggunakan metode autentikasi lain, seperti kunci akun layanan yang disimpan ke sistem file lokal. Google Cloud
Untuk memperluas file konfigurasi sebelumnya guna menentukan repositori pgBackRest berbasis Cloud Storage, ikuti langkah-langkah berikut:
Konfigurasi izin bucket untuk mengizinkan akun layanan yang terlampir ke instance VM Anda menulis ke bucket. Hal ini memerlukan peran IAM Storage Object User yang ditetapkan di akun layanan tersebut.
Tambahkan baris berikut ke bagian
[global]
pada filepgbackrest.conf
Anda:# Cloud Storage access details: repo2-type=gcs repo2-gcs-key-type=auto repo2-storage-verify-tls=n # Cloud Storage bucket and path details: repo2-gcs-bucket=BUCKET_NAME repo2-path=PATH_IN_BUCKET # Cloud Storage backup retention parameters: repo2-retention-full=8 repo2-retention-full-type=count
Ganti variabel berikut:
BUCKET_NAME
: Nama bucket Cloud Storage tempat Anda ingin pgBackRest menyimpan cadangan.PATH_IN_BUCKET
: Jalur direktori di bucket Cloud Storage tempat Anda ingin pgBackRest menyimpan cadangan.
Lakukan inisialisasi lokasi pencadangan berbasis cloud menggunakan perintah
pgbackrest stanza-create
:Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create
Docker
docker exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create
Podman
podman exec -u postgres CONTAINER_NAME pgbackrest \ --config-path=/var/lib/postgresql/backups \ --stanza=omni \ stanza-create
Ganti variabel berikut:
CONTAINER_NAME
: Nama yang Anda gunakan untuk container.
Setelah Anda menginisialisasi repositori cadangan di bucket Cloud Storage
menggunakan perintah pgbackrest stanza-create
, pgBackRest dapat mencadangkan hingga dua
lokasi:
Lokasi dalam sistem file lokal, yang ditentukan di tempat lain dalam file konfigurasi sebagai
repo1-path
. Ini adalah lokasi default saat--repo
tidak ditentukan dalam perintahpgbackrest
.Bucket Cloud Storage, yang ditentukan menggunakan
repo2-gcs-bucket
direktif konfigurasi yang disiapkan oleh contoh ini. Untuk menggunakan bucket Cloud Storage, tentukan--repo=2
dalam perintahpgbackrest
.