DBCluster). Gunakan rekomendasi ukuran ini untuk mengonfigurasi volume saat men-deploy di Kubernetes menggunakan operator AlloyDB Omni Kubernetes.
Saat Anda membuat resource kustom DBCluster,
operator AlloyDB Omni akan menyediakan PVC Kubernetes berdasarkan disk
yang Anda tentukan di kolom berikut:
- Instance utama dan instance standby ketersediaan tinggi (HA): dikonfigurasi di kolom
spec.primarySpec.resources.diskspada resource kustomDBClusterAnda. Jika Anda mengaktifkan ketersediaan tinggi dengan mengonfigurasi kolomspec.availability.numberOfStandbys, setiap replika standby menggunakan konfigurasi disk yang sama dengan instance utama. - Instance kumpulan baca: dikonfigurasi di
spec.resources.diskspada setiapDBInstanceresource kustom denganinstanceTypeditetapkan keReadPool. Jika Anda menghilangkan bagianspec.resourcespada resourceDBInstance, instance kumpulan baca akan mewarisi konfigurasi disk dari kolomspec.primarySpec.resourcesresourceDBClusterinduk.
Volume PVC yang didukung
Operator AlloyDB Omni tidak menyediakan semua volume PVC secara bersamaan:
- Selalu disediakan: operator selalu menyediakan
DataDisk,ObsDisk,BackupDisk, danLogDiskuntuk semua Pod instance database primer, standby HA, dan kumpulan baca. Anda harus menentukanDataDiskdan ukurannya secara eksplisit dalam manifes. PenentuanObsDisk,BackupDisk, danLogDiskdalam manifes bersifat opsional. Jika Anda menghilangkannya, seperti yang ditunjukkan dalam manifes penginstalan dasar, operator tetap menyediakan PVC ini menggunakan ukuran defaultnya. - Tidak disediakan secara default: operator tidak menyediakan volume
BackupRepoDisksaat Anda membuat resourceDBClustermandiri atau saat Anda menyimpan cadangan di Cloud Storage atau Amazon S3. Pod repositori cadangan dan PVCBackupRepoDisk-nya hanya disediakan saat Anda membuat resourceBackupPlanuntuk menyimpan cadangan secara lokal di cluster Kubernetes (yaitu, resourceBackupPlantanpa kolombackupLocationjarak jauh).
Tabel berikut menjelaskan volume persisten yang dikelola oleh operator AlloyDB Omni:
| Nama disk | Jalur pemasangan | Pod Target | Konfigurasi manifes | Perilaku penyediaan | Tujuan |
|---|---|---|---|---|---|
DataDisk |
/mnt/disks/pgsql |
Pod Database | Wajib | Selalu disediakan untuk setiap Pod database. | Menyimpan direktori cluster database PostgreSQL
(PGDATA), tabel, indeks, file sementara, dan segmen
write-ahead log (WAL) aktif. |
ObsDisk |
/obs |
Pod Database | Opsional (default: 2Gi) |
Selalu disediakan untuk setiap Pod database. | Menyimpan data yang dapat diamati, termasuk log server PostgreSQL
(postgresql.log), log pgAudit
(postgresql.audit), log internal
(postgresql.internal), dan arsip log .gz yang dirotasi. |
BackupDisk |
/backup |
Pod Database | Opsional (default: 10Gi) |
Selalu disediakan untuk setiap Pod database. | Menyediakan direktori penyiapan lokal untuk operasi pencadangan di Pod database. |
LogDisk |
/archive |
Pod Database | Opsional (default: 2Gi) |
Selalu disediakan untuk setiap Pod database. | Menyediakan tujuan pengarsipan WAL khusus untuk sidecar pencadangan kustom atau pihak ketiga. Jika Anda tidak menggunakan sidecar pengarsipan WAL kustom, Anda dapat menghilangkan disk ini dari manifes dan membiarkannya pada ukuran 2Gi default. |
BackupRepoDisk |
/backup |
Pod repositori cadangan | Opsional (default: 10Gi) |
Tidak disediakan secara default. Disediakan hanya jika resource
BackupPlan
menyimpan cadangan secara lokal
(tidak disediakan jika tidak ada BackupPlan yang dikonfigurasi atau jika
cadangan menggunakan Cloud Storage atau Amazon S3). |
Menyediakan volume khusus yang menyimpan cadangan database fisik, cadangan inkremental dan pencadangan diferensial, serta file WAL yang diarsipkan saat Anda menggunakan cadangan penyimpanan lokal. |
Rekomendasi penyesuaian ukuran PVC
Gunakan panduan berikut untuk menentukan ukuran setiap volume PVC berdasarkan workload, konfigurasi logging, dan strategi pencadangan Anda.
Volume DataDisk untuk penyimpanan database utama
Operator AlloyDB Omni selalu menyediakan volume DataDisk untuk setiap Pod database, dan Anda harus menentukan ukurannya secara eksplisit dalam manifes. Untuk
memperkirakan kapasitas minimum untuk DataDisk, gunakan formula berikut:
DataDisk capacity = (initial_dataset_size + projected_growth + max_wal_size) * 1.30
Saat Anda menentukan ukuran volume DataDisk, pertimbangkan faktor-faktor berikut:
- Overhead indeks: Indeks PostgreSQL dan tabel katalog sistem biasanya memerlukan penyimpanan tambahan sebesar 20% hingga 50% di luar data tabel mentah.
- Ruang kosong WAL aktif: transaksi tulis throughput tinggi mengakumulasi file WAL di direktori
pg_walhingga penyelesaian titik pemeriksaan. Alokasikan penyimpanan yang cukup untuk mengakomodasi parameter databasemax_wal_sizeyang dikonfigurasi (biasanya beberapa gigabyte hingga puluhan gigabyte, bergantung pada beban kerja Anda). Untuk melihat atau mengubah parameter database sepertimax_wal_size, lihat Mengonfigurasi parameter database. - File sementara dan operasi vacuum: pengurutan kueri, pembuatan indeks, pengindeksan ulang, dan operasi autovacuum memerlukan ruang disk sementara tambahan.
- Aturan penentuan ukuran umum: alokasikan 1,5 hingga 2 kali ukuran database mentah Anda, termasuk buffer keamanan minimal 30%.
ObsDisk untuk log diagnostik dan audit
Operator AlloyDB Omni selalu menyediakan volume ObsDisk untuk setiap Pod database (dengan ukuran default 2Gi jika Anda menghapusnya dari manifes). Jika
volume ObsDisk penuh, PostgreSQL tidak dapat menulis entri log baru, dan rotasi log
dapat terhenti. Untuk mengetahui informasi tentang cara mengonfigurasi setelan retensi dan rotasi log untuk volume ObsDisk, lihat Mengonfigurasi rotasi log.
Saat Anda menentukan ukuran volume ObsDisk, pertimbangkan panduan berikut:
- Logging standar: volume 4 GiB hingga 10 GiB sudah cukup untuk logging operasional standar dengan setelan rotasi log default (threshold rotasi 200 MB dan retensi 7 hari).
- Logging audit (pgAudit): saat Anda mengaktifkan logging audit dengan pgAudit, logging audit menghasilkan volume log yang jauh lebih tinggi. Alokasikan 20 GiB hingga 50 GiB atau lebih, bergantung pada kecepatan kueri dan kejelasan aturan audit Anda.
Volume BackupRepoDisk untuk repositori cadangan lokal
Tidak seperti disk Pod database, BackupRepoDisk tidak disediakan secara default.
Operator AlloyDB Omni menyediakan Pod repositori cadangan dan PVC BackupRepoDisk-nya hanya saat Anda membuat resource BackupPlan untuk menyimpan cadangan secara lokal di cluster Kubernetes Anda tanpa kolom backupLocation jarak jauh. Jika Anda tidak menyertakan disk ini dalam manifes DBCluster, disk akan menggunakan ukuran default 10Gi.
Jika Anda tidak mengonfigurasi resource BackupPlan, atau jika resource BackupPlan Anda menggunakan Cloud Storage dengan jenis GCS atau Amazon S3 dengan jenis S3, operator tidak akan menyediakan BackupRepoDisk. Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi rencana pencadangan dan mengubah ukuran penyimpanan cadangan, lihat Mencadangkan dan memulihkan di Kubernetes dan Mengubah ukuran disk cadangan.
Saat Anda menyimpan cadangan secara lokal, volume BackupRepoDisk menyimpan cadangan
penuh, diferensial, dan inkremental yang dikompresi bersama dengan file WAL yang diarsipkan. Total penyimpanan yang diperlukan bergantung pada ukuran database, laju perubahan data harian, jadwal pencadangan yang ditentukan di backupSchedules, dan periode retensi yang ditetapkan oleh backupRetainDays:
- Kompresi cadangan: cadangan terkompresi biasanya menggunakan 37% hingga 38% dari ukuran database yang tidak dikompresi, yang menunjukkan pengurangan ukuran sebesar 62% hingga 63%. Misalnya, database 50 GiB dikompresi menjadi sekitar 18,5 GiB.
- Jadwal dan retensi pencadangan: menggabungkan pencadangan penuh mingguan dengan pencadangan inkremental atau pencadangan diferensial harian memerlukan penyimpanan yang jauh lebih sedikit daripada melakukan pencadangan penuh harian.
Tabel berikut menunjukkan penggunaan penyimpanan puncak yang diukur dan ukuran BackupRepoDisk yang direkomendasikan (termasuk buffer 20%) di berbagai jadwal pencadangan untuk database 100 GiB dengan tingkat perubahan data harian 10% dan periode retensi 14 hari default (backupRetainDays: 14):
Jadwal pencadangan (backupSchedules) |
Pencadangan penuh puncak | Cadangan diferensial | Cadangan inkremental | File WAL yang diarsipkan | Puncak penyimpanan yang digunakan | Ukuran BackupRepoDisk yang direkomendasikan (+buffer 20%) |
|---|---|---|---|---|---|---|
| Penuh mingguan + inkremental harian | 148,0 GiB | 0 GiB | 66,6 GiB | 155,4 GiB | 370,0 GiB | 444 GiB (~4,4x ukuran database) |
| Penuh mingguan + diferensial pertengahan minggu + inkremental harian | 148,0 GiB | 22,2 GiB | 44,4 GiB | 155,4 GiB | 370,0 GiB | 444 GiB (~4,4x ukuran database) |
| Penuh mingguan + selisih harian | 148,0 GiB | 155,4 GiB | 0 GiB | 155,4 GiB | 458,8 GiB | 551 GiB (~5,5x ukuran database) |
| Hanya harian penuh (jadwal default) | 592,0 GiB | 0 GiB | 0 GiB | 111,0 GiB | 703,0 GiB | 844 GiB (~8,4x ukuran database) |
Volume BackupDisk untuk penyiapan pencadangan Pod database
Operator AlloyDB Omni selalu menyediakan volume BackupDisk untuk setiap Pod database dengan ukuran default 10 GiB (10Gi). AlloyDB Omni menggunakan volume BackupDisk sebagai direktori penyiapan lokal selama operasi pencadangan. Karena ukuran default 10 GiB sudah cukup
untuk operasi standar, Anda dapat menghapus BackupDisk dari manifes DBCluster
untuk menggunakan ukuran default.
Volume LogDisk untuk pengarsipan WAL kustom
Operator AlloyDB Omni selalu menyediakan volume LogDisk untuk setiap Pod database dengan ukuran default 2 GiB (2Gi). Anda hanya perlu menentukan ukuran kustom untuk volume LogDisk jika Anda men-deploy container sidecar kustom atau pihak ketiga yang mengarsipkan file WAL ke direktori /archive. Untuk deployment operator AlloyDB Omni standar yang menggunakan pencadangan bawaan, Anda dapat menghilangkan LogDisk dari manifes DBCluster dan membiarkannya pada ukuran 2Gi default.
Referensi ukuran menurut ukuran set data
Tabel berikut memberikan ukuran PVC yang direkomendasikan untuk ukuran set data mentah umum:
| Ukuran data mentah | Ukuran DataDisk yang direkomendasikan |
Ukuran ObsDisk yang direkomendasikan |
Ukuran BackupRepoDisk yang direkomendasikan (disediakan
hanya untuk cadangan lokal) |
Ukuran BackupDisk yang direkomendasikan |
Ukuran LogDisk yang direkomendasikan |
|---|---|---|---|---|---|
| 50 GiB | 100 GiB | 4 GiB (10 hingga 20 GiB dengan pgAudit) | 150 GiB | 10 GiB (default) | 2 GiB (default) |
| 200 GiB | 400 GiB | 10 GiB (20 hingga 50 GiB dengan pgAudit) | 600 GiB | 10 GiB (default) | 2 GiB (default) |
| 500 GiB | 1.000 GiB (1 TiB) | 15 GiB (30 hingga 60 GiB dengan pgAudit) | 1.500 GiB (1,5 TiB) | 10 GiB (default) | 2 GiB (default) |
| 1 TiB | 2.000 GiB (2 TiB) | 20 GiB (50 hingga 100 GiB dengan pgAudit) | 3.000 GiB (3 TiB) | 10 GiB (default) | 2 GiB (default) |
Memantau penggunaan disk dan metrik I/O
Anda dapat memantau penggunaan disk langsung di dalam database dan Pod repositori cadangan menggunakan kubectl atau dengan mengumpulkan metrik Prometheus yang diekspor oleh AlloyDB Omni.
Periksa penggunaan disk menggunakan kubectl
Untuk memeriksa penggunaan kapasitas disk saat ini pada volume PVC yang terpasang di dalam Pod database dan Pod repositori cadangan, jalankan perintah berikut:
Dapatkan nama Pod database untuk resource
DBClusterAnda:export DB_POD=$(kubectl get pod -n NAMESPACE -l alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME,alloydbomni.internal.dbadmin.goog/task-type=database -o jsonpath='{.items[0].metadata.name}')Ganti kode berikut:
NAMESPACE: namespace Kubernetes tempat cluster database Anda di-deploy.DB_CLUSTER_NAME: nama cluster database Anda.
Jalankan
df -hdi dalam container database untuk melihat kapasitas dan penggunaan volumeDataDisk(/mnt/disks/pgsql),ObsDisk(/obs),BackupDisk(/backup), danLogDisk(/archive):kubectl exec -n NAMESPACE "${DB_POD}" -c database -- df -h /mnt/disks/pgsql /obs /backup /archiveJika Anda mengonfigurasi resource
BackupPlanuntuk menyimpan cadangan secara lokal, dapatkan nama Pod repositori cadangan dan jalankandf -huntuk melihat kapasitas dan penggunaan volumeBackupRepoDisk(/backup):export BACKUP_REPO_POD=$(kubectl get pod -n NAMESPACE -l alloydbomni.internal.dbadmin.goog/dbcluster=DB_CLUSTER_NAME,alloydbomni.internal.dbadmin.goog/backup-repository -o jsonpath='{.items[0].metadata.name}') kubectl exec -n NAMESPACE "${BACKUP_REPO_POD}" -c backuprepo -- df -h /backup
Memantau metrik penyimpanan menggunakan Prometheus
AlloyDB Omni mengekspor metrik I/O disk dan penyimpanan di layanan
al-INSTANCE_ID-DB_CLUSTER_NAME-monitoring-system (port 9187). Untuk mempelajari cara meng-scrape dan membuat kueri metrik ini, lihat
Memantau AlloyDB Omni. Untuk mengetahui daftar lengkap metrik yang tersedia, lihat Metrik AlloyDB Omni.
Pantau metrik disk berikut:
- Penggunaan dan kapasitas penyimpanan: Pantau metrik
alloydb_omni_node_storage_usage_per_disk_bytedanalloydb_omni_node_storage_limit_per_disk_byte, yang melaporkan penyimpanan yang digunakan dan total kapasitas dalam byte untuk setiap volume menggunakan labeldisk(misalnya,DataDisk,ObsDisk, atauBackupDisk). Konfigurasi pemberitahuan saat penggunaan disk mencapai 80% dan 90% dari kapasitas sehingga Anda dapat memperluas volume sebelum kehabisan ruang. - Throughput disk dan operasi I/O: Pantau metrik
alloydb_omni_node_storage_read_bytes_count_totaldanalloydb_omni_node_storage_write_bytes_count_totaluntuk throughput baca dan tulis disk, serta metrikalloydb_omni_node_storage_read_ops_count_totaldanalloydb_omni_node_storage_write_ops_count_totaluntuk operasi I/O baca dan tulis.
Mengubah ukuran PVC untuk DBCluster yang ada
Jika Anda telah membuat resource DBCluster mengikuti
Membuat cluster database, manifes awal Anda kemungkinan hanya menentukan volume DataDisk (misalnya, 10Gi), sementara
operator AlloyDB Omni menyediakan volume ObsDisk (2Gi), BackupDisk
(10Gi), dan LogDisk (2Gi) dengan ukuran defaultnya. Anda dapat memperluas PVC ini dengan memperbarui manifes DBCluster.
Sebelum Anda mengubah ukuran PVC, tinjau persyaratan dan batasan berikut:
- Perluasan volume StorageClass: Anda hanya dapat meningkatkan ukuran disk jika resource
StorageClassKubernetes-nya menetapkanallowVolumeExpansion: true. Untuk mengetahui informasi selengkapnya, lihat Memperluas Klaim Volume Persisten. - Tidak ada penyusutan atau perubahan StorageClass: Anda tidak dapat mengurangi ukuran disk, dan Anda tidak dapat mengubah kolom
storageClassPVC yang ada setelah disediakan. - Mengubah ukuran disk berukuran default: Untuk memperluas disk yang sebelumnya
dihilangkan dari manifes (seperti volume
ObsDiskatau volumeBackupRepoDisk), tambahkan entri untuk disk tersebut ke kolomspec.primarySpec.resources.disksdengan kolomsizeyang lebih besar dari kapasitas default saat ini. Selalu pertahankanDataDiskdan entri disk lain yang ada dalam daftardiskssaat Anda memperbarui manifes. - Perilaku mulai ulang Pod: Saat Anda mengubah kolom
resources.disks, operator AlloyDB Omni akan memperbarui PVC yang mendasarinya dan memulai ulang Pod instance database untuk menerapkan spesifikasi resource baru. Lakukan perluasan penyimpanan selama masa pemeliharaan terencana atau konfigurasi ketersediaan tinggi untuk meminimalkan periode nonaktif.
Untuk memeriksa dan mengubah ukuran PVC untuk DBCluster, ikuti langkah-langkah berikut:
Cantumkan PVC di namespace cluster database Anda untuk memeriksa kapasitas saat ini dan resource
StorageClass:kubectl get pvc -n NAMESPACEGanti
NAMESPACEdengan namespace tempat Anda men-deployDBCluster(misalnya,default).Outputnya mirip dengan berikut ini untuk cluster bernama
my-db-cluster:NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE backupdisk-al-1060-my-db-cluster-0 Bound pvc-45a28be2-a111-40ed-9641-61b9d25f313b 10Gi RWO standard-rwo 10m datadisk-al-1060-my-db-cluster-0 Bound pvc-c23a1ab8-f97c-4449-9072-502b6d9ba869 10Gi RWO standard-rwo 10m logdisk-al-1060-my-db-cluster-0 Bound pvc-f0c41d15-bb13-4d28-b94b-01a28dc67ef6 2Gi RWO standard-rwo 10m obsdisk-al-1060-my-db-cluster-0 Bound pvc-69ea1ca7-a868-4dc9-a9f8-503d5e5f2387 2Gi RWO standard-rwo 10mPastikan resource
StorageClassyang digunakan oleh PVC Anda mendukung ekspansi volume:kubectl get storageclass STORAGE_CLASS_NAME -o jsonpath='{.allowVolumeExpansion}{"\n"}'Ganti
STORAGE_CLASS_NAMEdengan nama class penyimpanan dari kolomSTORAGECLASSoutput sebelumnya (misalnya,standard-rwo). Pastikan perintah menampilkantrue.Perbarui kolom
spec.primarySpec.resources.disksdi manifesDBClusteruntuk meningkatkan nilaisizevolumeDataDiskdan menambahkan disk berukuran default yang perlu Anda perluas (seperti volumeObsDiskatau volumeBackupRepoDisk).Contoh manifes berikut memperluas volume
DataDiskmenjadi400Gi, memperluas volumeObsDiskdari default2Gimenjadi10Gi, dan mengonfigurasi volumeBackupRepoDiskdi600Giuntuk beban kerja 200 GiB:apiVersion: alloydbomni.dbadmin.goog/v1 kind: DBCluster metadata: name: DB_CLUSTER_NAME namespace: NAMESPACE spec: databaseVersion: "18.3.0" primarySpec: adminUser: passwordRef: name: db-pw-DB_CLUSTER_NAME resources: cpu: 4 memory: 32Gi disks: - name: DataDisk size: 400Gi storageClass: STORAGE_CLASS_NAME - name: ObsDisk size: 10Gi storageClass: STORAGE_CLASS_NAME - name: BackupRepoDisk size: 600Gi storageClass: STORAGE_CLASS_NAMEGanti kode berikut:
DB_CLUSTER_NAME: nama cluster database Anda—misalnya,my-db-cluster.NAMESPACE: namespace cluster database Anda.STORAGE_CLASS_NAME: nama resourceStorageClassKubernetes yang digunakan oleh volume persisten Anda—misalnya,standard-rwo. Jika Anda menghapus kolomstorageClasssaat membuat cluster, Anda dapat terus menghapusnya agar operator menggunakanStorageClassdefault cluster Anda.
Terapkan manifes
DBClusteryang diupdate:kubectl apply -f DB_CLUSTER_MANIFEST.yamlGanti
DB_CLUSTER_MANIFESTdengan jalur ke file manifesDBClusterAnda.Verifikasi bahwa status PVC dan
DBClustermencerminkan ukuran yang diperluas:kubectl get pvc -n NAMESPACEAnda juga dapat memeriksa kolom status
allocatedResources.disksdi resourceDBCluster:kubectl get dbcluster DB_CLUSTER_NAME -n NAMESPACE -o jsonpath='{.status.primary.allocatedResources.disks}{"\n"}'Ganti kode berikut:
NAMESPACE: namespace cluster database Anda.DB_CLUSTER_NAME: nama cluster database Anda.
Untuk mengetahui informasi selengkapnya tentang cara mengubah ukuran resource komputasi dan penyimpanan, lihat Mengubah ukuran cluster database berbasis Kubernetes.
Langkah berikutnya
- Menginstal AlloyDB Omni menggunakan orchestrator container
- Mengelola dan memantau AlloyDB Omni
- Mengonfigurasi rotasi log
- Mencadangkan dan memulihkan di Kubernetes
- Mengelola ketersediaan tinggi di Kubernetes
- Membuat instance read pool di Kubernetes