Menyiapkan Cloud SQL untuk PostgreSQL untuk penggunaan produksi

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

  1. Di Konsol Google Cloud, buka halaman SQL>Instances.

    Buka Instance

  2. Klik Create instance, lalu klik Choose PostgreSQL.

  3. 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.
  4. Klik Create untuk men-deploy instance PostgreSQL. Atau, klik Show configuration options untuk menetapkan konfigurasi tambahan.

    Membuat instance PostgreSQL.

    • 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.

        Menyiapkan koneksi jaringan.

      • 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.

        Kapasitas penyimpanan sebesar 10 GB.Kapasitas penyimpanan 100 GB.

      • 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:

        Menentukan key-value pair yang mengategorikan instance PostgreSQL Anda.

gcloud

  1. Buat instance PostgreSQL:

    gcloud sql instances create postgresql01 \
        --cpu=2 \
        --memory=7680MB \
        --region=us-central1 --zone=us-central1-a
    
  2. 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 versions 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):

Contoh resource laporan Oracle AWR.

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

  1. Pada halaman pembuatan instance, klik Show configuration options>Auto backup and high availability>Availability, lalu pilih opsi High availability (regional).
  2. Untuk instance PostgreSQL yang sudah ada, edit instance PostgreSQL dengan mengikuti langkah sebelumnya. Tindakan ini memerlukan reboot database.
  3. Jika ingin memulai failover untuk tujuan pengujian, buka halaman Cloud SQL lalu klik Failover.

    Memulai failover untuk pengujian.

    Anda dapat mengaktifkan failover dengan cara yang sama.

gcloud

  1. Aktifkan HA dengan menetapkan parameter availability-type ke regional:

    gcloud sql instances create postgresql01 \
        --cpu=2 \
        --memory=7680MB \
        --region=us-central1 \
        --zone=us-central1-a \
        --availability-type=regional
    
  2. 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 menyertakan availabilityType: ZONAL, berarti HA tidak dikonfigurasi dan dapat diaktifkan menggunakan perintah patch:

    gcloud sql instances patch INSTANCE_NAME --availability-type REGIONAL
    
  3. 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

  1. Mencantumkan akun yang ada dari Konsol Google Cloud: Buka Cloud SQL Console>Select PostgreSQL Instance>Users.

    Mencantumkan akun yang ada.

  2. 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.

    Mengubah password dan menghapus akun.

gcloud

  1. Cantumkan akun pengguna yang ada:

    gcloud sql users list --instance=postgresql01
    

    Outputnya mirip dengan hal berikut ini:

    NAME       HOST
    Postgres
    
  2. Buat akun pengguna appuser, setel sandi, dan hapus appuser:

    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 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.

Melihat log di Cloud Logging.

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 Kemampuan Observabilitas Google Cloud memberikan metrik pemantauan tambahan untuk Cloud SQL untuk PostgreSQL, seperti permintaan failover otomatis dan jeda replikasi antara replika utama dan replika baca.

Contoh grafik berikut menunjukkan grafik transaksi per detik selama 6 jam terakhir:

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