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 beberapa aplikasi dan pengguna secara global melalui penggunaan kemampuan keamanan terkelola Google 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 mengaktifkan pemisahan baca/tulis antara node utama dan replika baca di bawah 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:
- ID Instance: Masukkan nama untuk 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 deployment instance PostgreSQL.)
- Region dan Zone: Pilih region dan zona. Praktik terbaiknya adalah men-deploy instance PostgreSQL di region yang sama dengan layanan Google Cloud terkait (misalnya, aplikasi) atau yang jaraknya dekat dengan pengguna guna mengurangi latensi dalam proses pengolahan data. Setelah memilih region, Anda tidak dapat mengubahnya nanti.
- Database version: Pilih versi terbaru, atau jika Anda membutuhkannya, 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 yang diizinkan. Jaringan yang diizinkan adalah koneksi yang diizinkan yang dapat ditetapkan 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/dtk) serta IOP baca dan tulis untuk database Anda. Sesuaikan kapasitas penyimpanan berdasarkan persyaratan IOP dan throughput disk yang diharapkan.
Pencadangan otomatis dan ketersediaan tinggi: Anda menggunakan fitur pencadangan otomatis, yang diaktifkan secara default, 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 Ketersediaan tinggi (regional).
Flag: Setelan ini menentukan metode Cloud SQL untuk mengontrol setelan dan parameter untuk instance Anda; setelan ini setara dengan file
postgresql.conf
dari instance PostgreSQL yang tidak dikelola. Untuk listingan lengkap, 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 memerlukan mulai ulang instance dan dapat menyebabkan gangguan layanan singkat. Anda dapat mendaftar untuk menerima notifikasi melalui 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-a
Tetapkan sandi untuk pengguna default PostgreSQL (contoh sintaksis):
gcloud sql users set-password postgres \ --instance INSTANCE_NAME \ --password PASSWORD
Anda dapat menentukan opsi tambahan berikut:
- Versi database: Salah satu versi PostgreSQL yang didukung.
- Jenis penyimpanan: SSD atau HDD sebagai jenis penyimpanan.
- Kapasitas penyimpanan: Setelan penyimpanan awal untuk instance.
- Peningkatan penyimpanan otomatis: Otomatisasi Cloud SQL untuk menambahkan penyimpanan tambahan saat ruang kosong hampir habis.
- Ketersediaan tinggi: Ketersediaan tinggi Cloud SQL.
- Pencadangan otomatis: Periode waktu mulai untuk pencadangan.
- Pemulihan point-in-time: Pemulihan point-in-time dan write-ahead logging.
- Masa pemeliharaan: Periode satu jam saat Cloud SQL dapat melakukan pemeliharaan yang mengganggu.
- Waktu pemeliharaan: Waktu yang dipilih untuk menjalankan update pada instance PostgreSQL. Anda dapat menentukan pratinjau untuk update sebelumnya atau produksi untuk update selanjutnya.
- Flag database: Flag database PostgreSQL untuk mengontrol setelan dan parameter.
Perintah
gcloud
berikut 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=100
Untuk mengetahui informasi selengkapnya, baca bagian Membuat instance.
Pemilihan instance
Pemilihan atau 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 dengan inti 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 tampilan V$LICENSE
):
SQL> SELECT CPU_CORE_COUNT_CURRENT FROM V$LICENSE;
Contoh resource laporan Oracle AWR (Laporan Oracle AWR 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 benchmark. Hasil dari benchmark membantu Anda menyelesaikan pemilihan instance.
Konfigurasi ketersediaan tinggi
Untuk mengimplementasikan solusi pemulihan dari bencana (disaster recovery), mirip dengan Data Guard dari Oracle, Cloud SQL untuk PostgreSQL menawarkan kemampuan ketersediaan tinggi yang menyediakan failover otomatis dari instance utama cluster ke Instance standbynya. 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 yang utama juga diterapkan ke standby.
Jika terjadi kegagalan utama, seperti instance yang tidak responsif atau kegagalan tingkat zona, Cloud SQL akan melakukan failover otomatis. Instance utama dipantau oleh heartbeat, yang terjadi dalam interval 1 detik, dengan failover diaktifkan setelah sekitar 60 detik tidak ada heartbeat yang diterima dari instance utama. Pada tahap ini, instance utama gagal melalui 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 pembacaan saat bertindak sebagai standby; dengan Cloud SQL, hanya replika baca yang dapat digunakan untuk mengurangi beban baca dari yang 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
- Pada 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 instance PostgreSQL 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 failover dengan cara yang sama.
gcloud
Aktifkan HA dengan menetapkan parameter
availability-type
keregional
:gcloud sql instances create postgresql01 \ --cpu=2 \ --memory=7680MB \ --region=us-central1 \ --zone=us-central1-a \ --availability-type=regional
Periksa apakah instance PostgreSQL yang ada telah mengonfigurasi HA:
gcloud sql instances describe INSTANCE_NAME
Jika output dari perintah ini menyertakan
availabilityType: REGIONAL
, berarti HA sudah diaktifkan. Jika outputnya menyertakanavailabilityType: ZONAL
, berarti HA tidak dikonfigurasi dan dapat diaktifkan menggunakan perintahpatch
:gcloud sql instances patch INSTANCE_NAME --availability-type REGIONAL
Mulai pengujian failover dari primer ke standby:
gcloud sql instances failover PRIMARY_INSTANCE_NAME
Untuk gagal kembali, jalankan perintah failover yang sama pada primer baru.
Pengguna dan akun admin
Dua akun pengguna PostgreSQL default dilengkapi dengan semua penginstalan Cloud SQL untuk PostgreSQL. Akun ini adalah postgres
dan cloudsqlimportexport
.
akun postgres
Akun postgres
adalah akun administrator dan setara dengan pengguna SYS
atau SYSTEM
Oracle berdasarkan Cloud PaaS. Karena Cloud SQL untuk PostgreSQL adalah layanan terkelola, pengguna postgres
, tidak seperti pengguna SYS
atau SYSTEM
Oracle, tidak dapat mengakses prosedur dan tabel sistem tertentu yang memerlukan hak istimewa lanjutan.
Pengguna postgres
adalah bagian dari peran cloudsqlsuperuser
, dan memiliki atribut (hak istimewa) berikut: CREATEROLE
, CREATEDB
, dan LOGIN
. Class ini tidak memiliki atribut SUPERUSER
atau REPLICATION
.
akun cloudsqlimportexport
Akun cloudsqlimportexport
dibuat dengan kumpulan hak istimewa minimal yang diperlukan untuk operasi impor/ekspor CSV. Anda memiliki opsi untuk membuat pengguna sendiri
untuk melakukan operasi ini, tetapi jika tidak, pengguna
cloudsqlimportexport
default akan digunakan. Pengguna cloudsqlimportexport
adalah pengguna
sistem, dan Anda tidak dapat menggunakannya secara langsung.
Pengelolaan akun (menambahkan, 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
Mencantumkan 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 (Lainnya) di samping akun.
Dari layar ini, Anda dapat mengklik Create user account untuk membuat pengguna PostgreSQL baru.
gcloud
Cantumkan akun pengguna yang ada:
gcloud sql users list --instance=postgresql01
Outputnya mirip dengan yang berikut ini:
NAME HOST Postgres
Buat akun pengguna
appuser
, setel sandi, 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 ini 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 level database PostgreSQL (misalnya, membaca dari tabel atau tampilan tertentu) menggunakan perintah
GRANT
/REVOKE
melalui 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 pada screenshot berikut.
Pemantauan instance database PostgreSQL
Alat pemantauan utama Oracle adalah Enterprise Manager dan Grid/Cloud Control. Alat ini memungkinkan Anda melakukan pemantauan instance database secara real-time di sesi database dan tingkat pernyataan SQL.
Cloud SQL untuk PostgreSQL memberikan kemampuan pemantauan yang sebanding melalui Konsol Google Cloud. Dari sana, Anda bisa mendapatkan tampilan ringkasan instance database, termasuk pemakaian CPU, penggunaan penyimpanan, penggunaan memori, operasi baca/tulis, koneksi aktif, transaksi per detik, dan byte masuk/keluar. Perlu diperhatikan bahwa Google Cloud Observability menyediakan metrik pemantauan tambahan untuk Cloud SQL untuk PostgreSQL, seperti permintaan failover otomatis dan jeda replikasi antara replika baca dan utama.
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. Ada metrik tertentu untuk memeriksa status replikasi antara instance replika baca dan utama. Metrik ini digunakan untuk mengisi halaman ringkasan instance replika baca di Konsol Google Cloud.
Atau, Anda 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 membuat kueri tampilan performa dinamis yang dikenal sebagai tampilan "V$". Tampilan V$SESSION
dan V$PROCESS
biasanya digunakan untuk mendapatkan insight real-time tentang aktivitas database saat ini melalui pernyataan SQL. Anda dapat memantau aktivitas sesi di PostgreSQL dengan cara yang sama, baik melalui perintah PostgreSQL maupun pernyataan SQL.
Tampilan 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 panjang
Untuk mengidentifikasi transaksi yang berjalan lama yang dapat menyebabkan masalah performa, buat kueri tampilan dinamis pg_stat_activity
. Anda dapat mengidentifikasi kueri yang berjalan lama
dengan menerapkan filter yang sesuai pada kolom seperti query_start
dan
state
.
Pemantauan kunci
Anda dapat memantau kunci database melalui tampilan dinamis pg_locks
, yang memberikan informasi real-time tentang pertentangan kunci yang dapat menyebabkan 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.
Anda melakukan penskalaan secara vertikal dengan menambahkan lebih banyak resource ke instance Cloud SQL, misalnya meningkatkan jumlah CPU dan memori yang ditetapkan instance. Throughput jaringan instance bergantung pada nilai yang Anda pilih untuk CPU dan memori.
Cloud SQL mendukung ruang penyimpanan hingga 30 TB. Menambahkan kapasitas penyimpanan umumnya akan meningkatkan throughput dan IOP disk instance. Perhatikan bahwa throughput jaringan instance Cloud SQL mencakup pembacaan/penulisan data Anda (throughput disk) serta konten kueri, perhitungan, dan data lain yang tidak tersimpan di database Anda. Penting untuk mempertimbangkan faktor-faktor ini saat menskalakan instance Cloud SQL secara vertikal.
Anda melakukan penskalaan secara horizontal 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. Anda dapat melakukan pencadangan on demand kapan saja dan pencadangan 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, menimpa data yang ada, atau ke instance baru. Selain itu, Cloud SQL untuk PostgreSQL memungkinkan Anda memulihkan database PostgreSQL ke titik waktu tertentu asalkan pemulihan point-in-time diaktifkan dan opsi pencadangan otomatis diaktifkan.
Cloud SQL untuk PostgreSQL menyediakan kemampuan clone database. Clone harus dibuat dari instance utama (yaitu, tidak dapat dibuat dari replika). Anda dapat menjalankan pencadangan, pemulihan, dan clone database dari Konsol Google 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 informasi selengkapnya, lihat dokumentasi API.
Langkah selanjutnya
- Pelajari akun pengguna Cloud SQL untuk PostgreSQL lebih lanjut.
- Pelajari lebih lanjut Cloud SQL untuk PostgreSQL bagi pengguna Oracle:
- Memigrasikan pengguna Oracle ke Cloud SQL untuk PostgreSQL: Terminologi dan fungsi
- Memigrasikan pengguna Oracle ke Cloud SQL untuk PostgreSQL: Jenis data, pengguna, dan tabel
- Memigrasikan pengguna Oracle ke Cloud SQL untuk PostgreSQL: Kueri, prosedur tersimpan, fungsi, dan pemicu
- 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.