Dokumen ini menjelaskan cara menyiapkan Cloud SQL untuk PostgreSQL untuk penggunaan produksi. Cloud SQL untuk PostgreSQL adalah layanan RDBMS terkelola sepenuhnya yang terintegrasi dengan ekosistem Google Cloud. Cloud SQL untuk PostgreSQL memiliki sejumlah fitur dan kemampuan utama:
- Melayani berbagai aplikasi dan pengguna secara global melalui penggunaan kemampuan keamanan terkelolaGoogle Cloud, termasuk VPC dan enkripsi data otomatis dalam penyimpanan dan saat transit.
- Mendukung arsitektur ketersediaan tinggi menggunakan instance utama dan standby serta failover otomatis di antara keduanya.
- Mendukung workload database terdistribusi dengan memungkinkan pemisahan operasi baca/tulis antara node utama dan replika baca di dalam cluster database yang sama.
- Mendukung pencadangan otomatis yang terintegrasi dengan Cloud Storage dan pemeliharaan database otomatis.
- Mendukung berbagai workload pemrosesan transaksional online (OLTP).
Men-deploy instance Cloud SQL untuk PostgreSQL
Anda dapat menyiapkan instance Cloud SQL untuk PostgreSQL dalam beberapa langkah menggunakan Konsol Google Cloud atau Google Cloud CLI. Kedua metode tersebut dijelaskan di sini.
Konsol
Di Konsol Google Cloud , buka halaman SQL>Instances.
Klik Create instance, lalu klik Choose PostgreSQL.
Di halaman Create a PostgreSQL instance, berikan detail berikut:
- Instance ID: Masukkan nama instance. Nama instance bersifat permanen dan tidak dapat diubah nanti.
- Default user password: Pilih sandi pengguna postgres sebagai akun administrator default. (Anda dapat membuat pengguna tambahan setelah men-deploy instance PostgreSQL.)
- Region dan Zone: Pilih region dan zona. Praktik terbaiknya adalah men-deploy instance PostgreSQL di region yang sama dengan layanan Google Cloud terkaitnya (misalnya aplikasi) atau yang jarak geografisnya dekat dengan pengguna untuk mengurangi latensi pemrosesan data. Setelah memilih region, Anda tidak dapat mengubahnya lagi.
- Database version: Pilih versi terbaru, atau jika perlu, versi terbaru yang tersedia.
Klik Create untuk men-deploy instance PostgreSQL. Atau, klik Show configuration options untuk menetapkan konfigurasi tambahan.
Opsi konfigurasi tambahan:
Konektivitas: Biasanya, Anda menghubungkan instance PostgreSQL ke jaringan melalui alamat IP publik, alamat IP pribadi, dan jaringan resmi. Jaringan resmi adalah koneksi yang diizinkan yang dapat Anda tetapkan untuk membuat koneksi jarak jauh—misalnya, menyetujui koneksi dari alamat IP tertentu dari klien.
Jenis mesin dan penyimpanan: Pilih jenis mesin berdasarkan resource yang dialokasikan (vCPU, RAM), jenis penyimpanan (SSD atau HDD), dan kapasitas penyimpanan. Peningkatan kapasitas penyimpanan juga akan meningkatkan throughput disk yang didukung (MB/s) serta IOP baca dan tulis untuk database Anda. Sesuaikan kapasitas penyimpanan berdasarkan persyaratan IOP dan throughput disk yang diharapkan.


Pencadangan otomatis dan ketersediaan tinggi: Fitur pencadangan otomatis, yang diaktifkan secara default, digunakan untuk menentukan jangka waktu melakukan pencadangan otomatis. Selain itu, opsi pemulihan point-in-time, yang menggunakan write-ahead log, juga diperlukan untuk membuat replika baca. Log ini diperbarui secara teratur dan menggunakan ruang penyimpanan. Untuk menghindari masalah penyimpanan yang tidak terduga, sebaiknya aktifkan peningkatan penyimpanan otomatis saat menggunakan pemulihan point-in-time. Ketersediaan tinggi dinonaktifkan secara default (multi-zona). Untuk mengaktifkan failover otomatis, pilih opsi High availability (regional).
Flag: Setelan ini menentukan metode Cloud SQL untuk mengontrol setelan dan parameter instance Anda; setelan ini setara dengan file
postgresql.confpada instance PostgreSQL yang tidak dikelola. Untuk mengetahui daftar lengkapnya, lihat dokumentasi produk. Mengubah nilai flag atau menetapkan flag baru mungkin mengharuskan instance dimulai ulang.Pemeliharaan: Bagian ini menentukan periode waktu yang Anda pilih untuk melakukan tugas pemeliharaan, termasuk perbaikan bug dan upgrade versi minor. Perhatikan bahwa operasi pemeliharaan umumnya mengharuskan instance dimulai ulang dan dapat menyebabkan gangguan singkat pada layanan. Anda dapat mendaftar untuk menerima notifikasi email tentang peristiwa pemeliharaan mendatang.
Label: Di bagian ini, Anda menentukan key-value pair untuk mengategorikan instance PostgreSQL—misalnya:
gcloud
Buat instance PostgreSQL:
gcloud sql instances create postgresql01 \ --cpu=2 \ --memory=7680MB \ --region=us-central1 --zone=us-central1-aTetapkan sandi untuk pengguna default PostgreSQL (contoh sintaksis):
gcloud sql users set-password postgres \ --instance INSTANCE_NAME \ --password PASSWORDAnda dapat menentukan opsi tambahan berikut:
- Database version: Salah satu versi PostgreSQL yang didukung.
- Storage type: SSD atau HDD sebagai jenis penyimpanan.
- Storage capacity: Setelan penyimpanan awal untuk instance.
- Automatic storage increase: Otomatisasi Cloud SQL untuk menambahkan penyimpanan tambahan saat ruang kosong hampir habis.
- High-availability: Ketersediaan tinggi Cloud SQL.
- Automatic backups: Periode waktu mulai untuk pencadangan.
- Point-in-time recovery: Pemulihan point-in-time dan write-ahead logging.
- Maintenance window: Periode satu jam saat Cloud SQL dapat melakukan pemeliharaan disruptif.
- Maintenance window: Waktu yang dipilih untuk menjalankan update instance PostgreSQL. Anda dapat memilih preview untuk update sebelumnya atau production untuk update selanjutnya.
- Database flags: Flag database PostgreSQL untuk mengontrol setelan dan parameter.
Perintah
gcloudberikut membuat instance Cloud SQL untuk PostgreSQL dengan beberapa opsi tambahan:gcloud sql instances create postgresql01 \ --cpu=2 \ --memory=7680MB \ --region=us-central1 \ --zone=us-central1-a \ --database-version=POSTGRES_12 \ --storage-type=SSD \ --storage-size=100 \ --storage-auto-increase \ --availability-type=regional \ --backup-start-time=23:30 \ --enable-point-in-time-recovery \ --maintenance-window-day=sun \ --maintenance-window-hour=11 \ --maintenance-release-channel=production \ --database-flags max_connections=100Untuk mengetahui informasi selengkapnya, baca bagian Membuat instance.
Pemilihan instance
Pemilihan atau penyesuaian ukuran instance melibatkan pemilihan jenis mesin yang dapat mendukung workload Oracle® Anda di Cloud SQL untuk PostgreSQL. Jenis instance dibagi menjadi dua grup utama:
- Mesin dengan inti bersama: Hemat biaya.
- Instance core khusus: Mendukung beberapa vCPU dan rasio memori.
Untuk mengetahui informasi selengkapnya tentang jenis instance, lihat Harga Cloud SQL.
Untuk menyesuaikan ukuran instance, mulailah dengan menganalisis resource yang dialokasikan dan digunakan oleh database sumber Anda. Anda bisa mendapatkan setelan resource database Oracle dari tampilan sistem V$OSSTAT atau dari laporan AWR Oracle (lihat contoh berikut):
Memori fisik (jumlah total byte memori fisik di server database):
SQL> SELECT ROUND(MAX(VALUE)/1024/1024/1024) AS MEM_SIZE_GB
FROM V$OSSTAT
WHERE STAT_NAME = 'PHYSICAL_MEMORY_BYTES';
Memori yang dialokasikan:
SQL> SELECT NAME, VALUE, DISPLAY_VALUE FROM V$PARAMETER
WHERE NAME LIKE '%sga%' OR NAME LIKE '%memory%';
Core CPU (jumlah core CPU yang tersedia):
SQL> SELECT VALUE FROM V$OSSTAT
WHERE STAT_NAME = 'NUM_CPU_CORES';
Core CPU (diidentifikasi oleh instance Oracle menggunakan tabel virtual V$LICENSE):
SQL> SELECT CPU_CORE_COUNT_CURRENT FROM V$LICENSE;
Contoh resource laporan AWR Oracle (Laporan AWR Oracle dapat memberikan insight tambahan tentang karakteristik workload instance Oracle tertentu):
Jika Anda memiliki informasi resource database sumber, sebaiknya pilih jenis instance Cloud SQL yang paling cocok dan jalankan beberapa tolok ukur. Hasil dari tolok ukur membantu Anda menyelesaikan pemilihan instance.
Konfigurasi ketersediaan tinggi
Untuk mengimplementasikan solusi disaster recovery, yang mirip dengan Data Guard di Oracle, Cloud SQL untuk PostgreSQL menawarkan kemampuan ketersediaan tinggi yang menyediakan failover otomatis dari instance utama cluster ke Instance standby-nya. Instance standby berada di zona yang berbeda di region yang sama dengan instance utama. Instance standby tetap disinkronkan melalui replikasi sinkron antara persistent disk instance utama dan standby. Metode ini memastikan bahwa semua modifikasi data pada instance utama juga diterapkan ke instance standby.
Jika instance utama mengalami kegagalan, seperti instance tidak responsif atau terjadi kegagalan tingkat zona, Cloud SQL akan menjalankan failover otomatis. Instance utama dipantau dengan heartbeat, yang terjadi dalam interval 1 detik. Failover akan diaktifkan jika tidak ada heartbeat yang diterima dari instance utama setelah sekitar 60 detik. Pada tahap ini, instance utama menjalankan failover ke mode standby, sehingga memberikan akses data ke aplikasi atau klien secara transparan, sementara replika baca yang ada tetap beroperasi. Perlu diperhatikan bahwa tidak seperti Active Data Guard, instance standby tidak terbuka untuk operasi baca saat bertindak sebagai instance standby. Di Cloud SQL, hanya replika baca yang dapat digunakan untuk mengurangi beban operasi baca dari instance utama.
Anda dapat mengaktifkan fitur ketersediaan tinggi (HA) Cloud SQL untuk PostgreSQL saat membuat instance atau untuk instance PostgreSQL yang sudah ada. Berikut langkah-langkahnya:
Konsol
- Di halaman pembuatan instance, klik Show configuration options>Auto backup and high availability>Availability, lalu pilih opsi High availability (regional).
- Untuk instance PostgreSQL yang sudah ada, edit dengan mengikuti langkah sebelumnya. Tindakan ini memerlukan reboot database.
Jika ingin memulai failover untuk tujuan pengujian, buka halaman Cloud SQL, lalu klik Failover.
Anda dapat mengaktifkan failback dengan cara yang sama.
gcloud
Aktifkan HA dengan menetapkan parameter
availability-typekeregional:gcloud sql instances create postgresql01 \ --cpu=2 \ --memory=7680MB \ --region=us-central1 \ --zone=us-central1-a \ --availability-type=regionalPeriksa apakah HA telah dikonfigurasi di instance PostgreSQL yang ada:
gcloud sql instances describe INSTANCE_NAME
Jika output dari perintah ini mencantumkan
availabilityType: REGIONAL, HA sudah diaktifkan. Jika output mencantumkanavailabilityType: ZONAL, HA tidak dikonfigurasi dan dapat diaktifkan menggunakan perintahpatch:gcloud sql instances patch INSTANCE_NAME --availability-type REGIONAL
Mulai pengujian failover dari instance utama ke instance standby:
gcloud sql instances failover PRIMARY_INSTANCE_NAME
Untuk mengaktifkan failback, jalankan perintah failover yang sama di instance utama baru.
Pengguna dan akun admin
Setiap penginstalan Cloud SQL untuk PostgreSQL disertai dengan dua akun pengguna PostgreSQL default. Akun ini adalah postgres dan cloudsqlimportexport.
Akun postgres
Akun postgres adalah akun administrator dan setara dengan pengguna SYS atau SYSTEM di Oracle pada Cloud PaaS. Karena Cloud SQL untuk PostgreSQL adalah layanan terkelola, pengguna postgres, tidak seperti pengguna SYS atau SYSTEM di Oracle, tidak dapat mengakses prosedur dan tabel sistem tertentu yang memerlukan hak istimewa lanjutan.
Pengguna postgres merupakan bagian dari peran cloudsqlsuperuser dan memiliki atribut (hak istimewa) berikut: CREATEROLE, CREATEDB, dan LOGIN. Pengguna ini tidak memiliki atribut SUPERUSER atau REPLICATION.
Akun cloudsqlimportexport
Akun cloudsqlimportexport dibuat dengan kumpulan hak istimewa terbatas yang diperlukan untuk operasi impor/ekspor CSV. Anda dapat membuat pengguna sendiri untuk menjalankan operasi ini, tetapi jika tidak, pengguna cloudsqlimportexport default akan digunakan. Pengguna cloudsqlimportexport adalah pengguna sistem, dan Anda tidak dapat menggunakannya secara langsung.
Pengelolaan akun (menambah, menghapus, atau mengubah sandi)
Pengelolaan akun mencakup pembuatan akun pengguna baru, mengubah sandi akun yang ada, dan menghapus akun yang tidak diperlukan lagi. Anda dapat menjalankan operasi akun ini melalui Konsol Google Cloud , alat gcloud, atau klien PostgreSQL
Konsol
Tampilkan daftar akun yang ada dari Konsol Google Cloud : Buka Cloud SQL Console>Select PostgreSQL Instance>Users.
Ubah sandi akun atau hapus akun sepenuhnya dengan mengklik ikon tiga titik (More) di samping akun.
Dari layar ini, Anda dapat mengklik Create user account untuk membuat pengguna PostgreSQL baru.
gcloud
Tampilkan daftar akun pengguna yang ada:
gcloud sql users list --instance=postgresql01Outputnya mirip dengan berikut:
NAME HOST PostgresBuat akun pengguna
appuser, tetapkan sandinya, dan hapusappuser:gcloud sql users create appuser \ --instance=postgresql01 --password=PASSWORD gcloud sql users set-password appuser \ --host=% --instance=postgresql01 --prompt-for-password gcloud sql users delete appuser --instance=postgresql01
PostgreSQL
Lakukan tindakan yang sama langsung dari klien PostgreSQL standar—misalnya:
postgres=> create user appuser with login password 'my_password'; postgres=> alter user appuser password 'my_password'; postgres=> drop user appuser;Anda dapat mengonfigurasi izin tingkat database PostgreSQL (misalnya membaca dari tabel atau tabel virtual tertentu) menggunakan perintah
GRANT/REVOKEmelalui klien PostgreSQL.
Pemantauan dan pemberitahuan
Cloud Logging adalah alat logging utama di Google Cloud. Alat ini digunakan untuk mengumpulkan dan melihat berbagai log pemantauan untuk resource seperti Cloud SQL untuk PostgreSQL.
Dengan Cloud Logging, Anda dapat melihat log untuk Cloud SQL untuk PostgreSQL yang difilter berdasarkan tingkat peristiwa (misalnya Critical, Error, atau Warning), jangka waktu peristiwa, dan penelusuran teks bebas, seperti dalam screenshot berikut.
Pemantauan instance database PostgreSQL
Alat pemantauan utama di Oracle adalah Enterprise Manager dan Grid/Cloud Control. Alat ini memungkinkan Anda memantau instance database secara real-time di tingkat sesi database dan pernyataan SQL.
Cloud SQL untuk PostgreSQL menyediakan kemampuan pemantauan yang sebanding melalui Konsol Google Cloud . Dari sana, Anda dapat memperoleh tampilan ringkasan instance database, termasuk pemanfaatan CPU, penggunaan penyimpanan, penggunaan memori, operasi baca/tulis, koneksi aktif, transaksi per detik, dan byte masuk/keluar. Perhatikan bahwa Google Cloud Observability menyediakan metrik pemantauan tambahan untuk Cloud SQL untuk PostgreSQL, seperti permintaan failover otomatis dan jeda replikasi antara instance utama dan replika baca.
Contoh grafik berikut menunjukkan grafik transaksi per detik selama 6 jam terakhir:
Memantau replika baca
Anda dapat memantau replika baca melalui Konsol Google Cloud dengan cara yang sama seperti memantau instance utama. Terdapat metrik tertentu untuk memeriksa status replikasi antara instance utama dan replika baca. Metrik ini digunakan untuk mengisi halaman ringkasan instance replika baca di KonsolGoogle Cloud .
Anda juga dapat memeriksa status replikasi dari command line:
gcloud sql instances describe REPLICA_NAME
Opsi ketiga adalah memeriksa status replikasi melalui klien PostgreSQL. Perintah PostgreSQL berikut memeriksa status replika baca:
postgres=> \x on Expanded display is on. postgres=> select * from pg_stat_replication; -[ RECORD 1 ]----+------------------------------------------- pid | 74733 usesysid | 16388 usename | cloudsqlreplica application_name | PROJECT_ID:REPLICA_NAME client_addr | REPLICA_IP client_hostname | client_port | 41660 backend_start | 2020-09-28 06:59:38.783981+00 backend_xmin | state | streaming sent_lsn | 0/2939FFA8 write_lsn | 0/2939FFA8 flush_lsn | 0/2939FFA8 replay_lsn | 0/2939FFA8 write_lag | flush_lag | replay_lag | sync_priority | 0 sync_state | async reply_time | 2020-09-28 07:17:52.714969+00 postgres=>
Pemantauan database PostgreSQL
Bagian ini menjelaskan beberapa tugas pemantauan tambahan yang dianggap rutin untuk DBA PostgreSQL.
Pemantauan sesi
Sesi Oracle dipantau dengan mengkueri tabel virtual performa dinamis yang disebut tabel virtual "V$". Tabel virtual V$SESSION dan V$PROCESS umum digunakan untuk mendapatkan insight real-time tentang aktivitas database saat ini melalui pernyataan SQL. Anda dapat memantau aktivitas sesi di PostgreSQL dengan cara yang mirip, baik melalui perintah PostgreSQL maupun pernyataan SQL.
Tabel virtual dinamis pg_stat_activity PostgreSQL memberikan informasi mendetail tentang aktivitas sesi database saat ini:
postgres=> \x on postgres=> select * from pg_stat_activity where backend_type = 'client backend' and usename != 'cloudsqladmin'; -[ RECORD 1 ]----+----------------------------------------------------------------------------------------------------- datid | 14052 datname | postgres pid | 74750 usesysid | 16389 usename | postgres application_name | psql client_addr | CLIENT_IP client_hostname | client_port | 51904 backend_start | 2020-09-28 07:01:30.214099+00 xact_start | 2020-09-28 07:28:48.982115+00 query_start | 2020-09-28 07:28:48.982115+00 state_change | 2020-09-28 07:28:48.982117+00 wait_event_type | wait_event | state | active backend_xid | backend_xmin | 88513 query | select * from pg_stat_activity where backend_type = 'client backend' and usename != 'cloudsqladmin'; backend_type | client backend postgres=>
Pemantauan transaksi yang berjalan lama
Untuk mengidentifikasi transaksi yang berjalan lama yang dapat menimbulkan masalah performa, Anda dapat mengkueri tabel virtual dinamis pg_stat_activity. Anda dapat mengidentifikasi kueri yang berjalan lama dengan menerapkan filter yang sesuai pada kolom seperti query_start dan state.
Pemantauan penguncian
Anda dapat memantau penguncian database menggunakan tabel virtual dinamis pg_locks, yang memberikan informasi real-time tentang pertentangan penguncian yang dapat menimbulkan masalah performa.
Pemberitahuan
Anda dapat menggunakan pemberitahuan selain pemantauan dan logging. Anda juga dapat membuat pemberitahuan untuk kondisi tertentu.
Penskalaan
Cloud SQL untuk PostgreSQL mendukung opsi penskalaan vertikal dan horizontal.
Penskalaan vertikal dilakukan dengan menambahkan lebih banyak resource ke instance Cloud SQL, misalnya meningkatkan jumlah CPU dan memori yang ditetapkan ke instance. Throughput jaringan instance Anda bergantung pada nilai yang dipilih untuk CPU dan memori.
Cloud SQL mendukung ruang penyimpanan hingga 30 TB. Menambah kapasitas penyimpanan umumnya akan meningkatkan throughput dan IOP disk instance. Perhatikan bahwa throughput jaringan instance Cloud SQL mencakup operasi baca/tulis data (throughput disk) serta isi kueri, kalkulasi, dan data lain yang tidak disimpan di database Anda. Faktor-faktor ini sebaiknya dipertimbangkan saat menskalakan instance Cloud SQL secara vertikal.
Penskalaan horizontal dilakukan dengan membuat replika baca. Replika baca memungkinkan Anda menskalakan workload baca ke instance Cloud SQL terpisah tanpa memengaruhi performa dan ketersediaan instance utama.
Pencadangan dan pemulihan
Ada dua metode pencadangan database untuk Cloud SQL untuk PostgreSQL: sesuai permintaan dan otomatis. Pencadangan sesuai permintaan dapat dilakukan kapan saja dan cadangan akan dipertahankan sampai Anda menghapusnya. Pencadangan otomatis menggunakan periode pencadangan 4 jam dan dipertahankan selama 7 hari.
Anda dapat memulihkan cadangan database Cloud SQL untuk PostgreSQL ke instance yang sama dengan menimpa data yang ada, atau ke instance baru. Selain itu, Cloud SQL untuk PostgreSQL memungkinkan Anda memulihkan database PostgreSQL ke titik waktu tertentu dengan syarat pemulihan point-in-time dan opsi pencadangan otomatis diaktifkan.
Cloud SQL untuk PostgreSQL menyediakan kemampuan clone database. Clone harus dibuat dari instance utama; clone tidak dapat dibuat dari instance replika. Anda dapat menjalankan pencadangan, pemulihan, dan clone database dari KonsolGoogle Cloud atau gcloud CLI.
Otomatisasi
Anda dapat menggunakan Cloud SQL Admin API untuk sepenuhnya mengotomatiskan pengelolaan instance Cloud SQL untuk PostgreSQL. Cloud SQL Admin API adalah REST API untuk mengontrol berbagai jenis resource seperti Instance, Database, Pengguna, Flag, Operasi, SslCert, Tingkat, dan BackupRun. Untuk mengetahui informasi selengkapnya, lihat dokumentasi API.
Langkah berikutnya
- Pelajari lebih lanjut akun pengguna Cloud SQL untuk PostgreSQL.
- Pelajari lebih lanjut Cloud SQL untuk PostgreSQL bagi pengguna Oracle:
- Memigrasikan pengguna Oracle ke Cloud SQL untuk PostgreSQL: Terminologi dan fungsionalitas
- Memigrasikan pengguna Oracle ke Cloud SQL untuk PostgreSQL: Jenis data, pengguna, dan tabel
- Memigrasikan pengguna Oracle ke Cloud SQL untuk PostgreSQL: Kueri, serta prosedur, fungsi, dan pemicu tersimpan
- Memigrasikan pengguna Oracle ke Cloud SQL untuk PostgreSQL: Keamanan, operasi, pemantauan, dan logging
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.