Memigrasikan pengguna Oracle® ke Cloud SQL untuk PostgreSQL: Keamanan, operasi, pemantauan, dan logging

Dokumen ini adalah bagian dari rangkaian yang memberikan informasi dan panduan penting terkait perencanaan dan pelaksanaan migrasi database Oracle® 11g/12c ke Cloud SQL untuk PostgreSQL versi 12. Selain bagian penyiapan pendahuluan, rangkaian ini meliputi bagian berikut:

Keamanan

Bagian ini memberikan panduan tentang enkripsi, pengauditan, dan kontrol akses.

Enkripsi

Oracle dan Cloud SQL untuk PostgreSQL menawarkan mekanisme enkripsi data untuk menambahkan lapisan perlindungan tambahan di luar autentikasi pengguna dasar dan pengelolaan hak istimewa pengguna.

Enkripsi dalam penyimpanan

Data yang tidak bergerak melalui jaringan (disimpan) dikenal sebagai "data dalam penyimpanan". Oracle menawarkan mekanisme TDE (Transparent Data Encryption) untuk menambahkan lapisan enkripsi pada level sistem operasi. Di Cloud SQL, data dienkripsi menggunakan Advanced Encryption Standard (AES-256) 256 bit, atau yang lebih baik. Kunci data ini dienkripsi menggunakan kunci master yang disimpan dalam keystore yang aman dan diubah secara rutin. Untuk mengetahui informasi selengkapnya tentang enkripsi saat nonaktif, lihat Enkripsi dalam penyimpanan di Google Cloud.

Enkripsi saat transit

Oracle menawarkan Keamanan Lanjutan untuk menangani enkripsi data melalui jaringan. Cloud SQL mengenkripsi dan mengautentikasi semua data dalam pengiriman di satu atau beberapa lapisan jaringan saat data bergerak ke luar batas fisik yang tidak dikontrol oleh Google atau atas nama Google. Data dalam pengiriman di dalam batas fisik yang dikontrol oleh atau atas nama Google umumnya diautentikasi, tetapi mungkin tidak dienkripsi secara default. Anda dapat memilih tindakan keamanan tambahan mana yang akan diterapkan berdasarkan model ancaman Anda. Misalnya, Anda dapat mengonfigurasi SSL untuk koneksi intrazona ke Cloud SQL. Untuk mengetahui informasi tentang enkripsi dalam pengiriman, lihat Enkripsi data dalam pengiriman di Google Cloud.

Pengauditan

Oracle menyediakan beberapa metode untuk audit (misalnya, pengauditan standar dan terperinci). Sebaliknya, audit di Cloud SQL untuk PostgreSQL dapat dilakukan dengan cara berikut:

  • Ekstensi pgAudit. Merekam dan melacak operasi SQL yang dilakukan terhadap instance database tertentu.
  • Cloud Audit Logs. Mengaudit operasi administratif dan pemeliharaan yang dilakukan di instance Cloud SQL untuk PostgreSQL.

Kontrol akses

Pengguna dapat terhubung ke instance Cloud SQL untuk PostgreSQL menggunakan klien PostgreSQL dengan alamat IP statis yang diotorisasi atau menggunakan Proxy Cloud SQL, seperti koneksi database lainnya. Untuk sumber koneksi lainnya seperti App Engine atau Compute Engine, pengguna memiliki beberapa opsi seperti menggunakan Proxy Cloud SQL. Untuk mengetahui informasi selengkapnya mengenai opsi ini, lihat kontrol akses instance.

Cloud SQL untuk PostgreSQL terintegrasi dengan Identity and Access Management (IAM) dan menyediakan sekumpulan peran yang telah ditetapkan yang dirancang untuk membantu Anda mengontrol akses ke resource Cloud SQL. Peran ini memungkinkan pengguna IAM memulai berbagai operasi administratif seperti mulai ulang instance, pencadangan, dan failover. Lihat kontrol akses project untuk mengetahui informasi selengkapnya.

Operasi

Bagian ini memberikan panduan tentang operasi ekspor dan impor, pencadangan dan pemulihan tingkat instance, serta instance standby untuk operasi hanya baca dan implementasi pemulihan dari bencana (disaster recovery).

Mengekspor dan mengimpor

Metode utama Oracle untuk menjalankan operasi ekspor dan impor logis adalah utilitas Data Pump, menggunakan perintah EXPDP/IMPDP (versi lama fungsi ekspor/impor Oracle menyertakan perintah exp/imp). Perintah yang setara dengan Cloud SQL untuk PostgreSQL adalah utilitas pg_dump dan pg_restore, yang menghasilkan file dump lalu mengimpornya pada tingkat database atau objek (termasuk mengekspor dan mengimpor metadata saja).

Tidak ada solusi Cloud SQL untuk PostgreSQL langsung yang setara untuk utilitas DBMS_DATAPUMP Oracle (metode Oracle untuk menerapkan fungsi EXPDP/IMPDP berinteraksi langsung dengan paket DBMS_DATAPUMP). Untuk melakukan konversi dari kode PL/SQL DBMS_DATAPUMP Oracle, gunakan kode alternatif (misalnya, Bash dan Python) untuk menerapkan elemen logika dan program Cloud SQL untuk PostgreSQL, pg_dump dan pg_restore untuk menjalankan operasi ekspor/impor.

Oracle SQL*Loader dapat digunakan untuk memuat file eksternal ke dalam tabel database. SQL*Loader dapat menggunakan file konfigurasi (disebut file kontrol), yang menyimpan metadata yang digunakan oleh SQL*Loader untuk menentukan cara data diurai dan dimuat ke dalam database Oracle. SQL*Loader mendukung file sumber tetap dan variabel.

Utilitas pg_dump dan pg_restore berjalan di tingkat klien dan terhubung dari jarak jauh ke instance Cloud SQL untuk PostgreSQL. File dump dibuat di sisi klien. Untuk memuat file eksternal ke Cloud SQL untuk PostgreSQL, gunakan perintah COPY dari antarmuka klien psql, atau gunakan Dataflow atau Dataproc. Bagian ini terutama berfokus pada perintah COPY Cloud SQL untuk PostgreSQL, yang merupakan padanan langsung dengan utilitas SQL*Loader Oracle.

Untuk pemuatan data yang lebih kompleks ke database Cloud SQL untuk PostgreSQL, pertimbangkan untuk menggunakan Dataflow atau Dataproc, yang melibatkan pembuatan proses ETL.

Untuk mengetahui informasi selengkapnya tentang Dataflow, baca Dokumentasi Dataflow, dan untuk mengetahui informasi lebih lanjut tentang Dataproc, lihat Dokumentasi Dataproc.

pg_dump

Utilitas klien pg_dump melakukan pencadangan dan output yang konsisten dalam format file skrip atau arsip. Dump skrip adalah sekumpulan pernyataan SQL yang dapat dieksekusi untuk mereproduksi definisi objek database dan data tabel asli. Pernyataan SQL ini dapat dimasukkan ke klien PostgreSQL mana pun untuk dipulihkan. Cadangan dalam format file arsip harus digunakan dengan pg_restore selama operasi pemulihan, tetapi cadangan memungkinkan objek selektif dipulihkan dan dirancang agar portabel di seluruh arsitektur.

Penggunaan:

-- Single database backup & specific tables backup
# pg_dump database_name > outputfile.sql
# pg_dump -t table_name database_name > outputfile.sql

-- Dump all tables in a given schema with a prefix and ignore a given table
# pg_dump -t 'schema_name.table_prefixvar>*' -T schema_name.ignore_table database_name > outputfile.sql

-- Backup metadata only - Schema only
# pg_dump -s database_name > metadata.sql

-- Backup in custom-format archive
pg_dump -Fc database_name > outputfile.dump

pg_restore

Program klien pg_restore memulihkan database PostgreSQL dari arsip yang dibuat oleh pg_dump. Jika nama database tidak ditentukan, pg_restore akan meng-output skrip yang berisi perintah SQL yang diperlukan untuk membuat ulang database yang mirip dengan pg_dump.

Penggunaan:

-- Connect to an existing database and restore the backup archive
pg_restore -d database_name outputfile.dump

-- Create and restore the database from the backup archive
pg_restore -C -d database_name outputfile.dump

Perintah COPY psql

psql adalah antarmuka klien command line ke Cloud SQL untuk PostgreSQL. Dengan perintah COPY, psql membaca file yang ditentukan dalam argumen perintah dan merutekan data antara server dan sistem file lokal.

Penggunaan:

-- Connect to an existing database and restore the backup archive
psql -p 5432 -U username -h cloud_sql_instance_ip -d database_name -c "\copy emps from '/opt/files/inputfile.csv' WITH csv;" -W

Ekspor/impor Cloud SQL untuk PostgreSQL:

Link dokumentasi berikut menggambarkan cara menggunakan gcloud CLI untuk berinteraksi dengan instance Cloud SQL dan Cloud Storage untuk menerapkan operasi Ekspor dan Impor.

Pencadangan dan pemulihan tingkat instance

Di Cloud SQL, tugas pencadangan dan pemulihan ditangani melalui pencadangan database otomatis dan on demand.

Dengan cadangan, Anda dapat memulihkan instance Cloud SQL untuk memulihkan data yang hilang atau memulihkan data dari masalah instance. Sebaiknya aktifkan pencadangan otomatis untuk instance apa pun yang berisi data yang perlu dilindungi dari kehilangan atau kerusakan.

Anda dapat membuat cadangan kapan saja. Hal ini berguna jika Anda akan melakukan operasi yang berisiko pada database, atau jika Anda memerlukan cadangan dan tidak ingin menunggu periode pencadangan. Anda dapat membuat cadangan sesuai permintaan untuk instance apa pun, baik instance tersebut telah mengaktifkan pencadangan otomatis atau belum.

Pencadangan sesuai permintaan tidak dihapus secara otomatis seperti pencadangan otomatis. Pesan akan tetap ada sampai Anda menghapusnya atau sampai instance-nya dihapus. Karena tidak dihapus secara otomatis, pencadangan sesuai permintaan dapat berdampak jangka panjang pada biaya tagihan jika Anda tidak menghapusnya

Saat mengaktifkan pencadangan otomatis, Anda menentukan periode pencadangan 4 jam. Pencadangan dimulai selama periode ini. Jika memungkinkan, jadwalkan pencadangan saat instance Anda memiliki aktivitas paling sedikit. Jika data Anda belum berubah sejak pencadangan terakhir, tidak ada cadangan yang diambil.

Cloud SQL menyimpan hingga 7 cadangan otomatis untuk setiap instance. Penyimpanan yang digunakan oleh cadangan dikenai biaya yang lebih rendah, bergantung pada region tempat cadangan disimpan. Untuk mengetahui daftar harga selengkapnya, lihat Harga Cloud SQL untuk PostgreSQL.

Anda dapat menggunakan pemulihan instance database Cloud SQL untuk PostgreSQL guna memulihkan ke instance yang sama, menimpa data yang ada, atau memulihkan ke instance lain. Dengan Cloud SQL untuk PostgreSQL, Anda juga dapat memulihkan database PostgreSQL ke titik waktu tertentu dengan mengaktifkan opsi pencadangan otomatis.

Untuk mengetahui informasi selengkapnya tentang cara membuat atau mengelola pencadangan on demand dan otomatis, lihat Membuat dan mengelola pencadangan on demand dan otomatis.

Tabel berikut mencantumkan operasi pencadangan dan pemulihan umum di Oracle dan padanannya di Cloud SQL untuk PostgreSQL:

Deskripsi Oracle (Pengelola Pemulihan - RMAN) Cloud SQL untuk PostgreSQL
Pencadangan otomatis terjadwal Buat tugas DBMS_SCHEDULER yang akan menjalankan skrip RMAN Anda secara terjadwal. gcloud sql instances patch INSTANCE_NAME --backup-start-time HH:MM
Pencadangan database lengkap secara manual BACKUP DATABASE PLUS ARCHIVELOG; gcloud sql backups create --async --instance INSTANCE_NAME
Memulihkan database RUN
{
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN;
}
gcloud sql backups list --instance INSTANCE_NAME
gcloud sql backups restore BACKUP_ID --restore-instance=INSTANCE_NAME
Diferensial inkremental BACKUP INCREMENTAL LEVEL 0 DATABASE;
BACKUP INCREMENTAL LEVEL 1 DATABASE;
Semua pencadangan dilakukan secara inkremental, tanpa opsi untuk memilih jenis inkremental.
Kumulatif inkremental BACKUP INCREMENTAL LEVEL 0 CUMULATIVE DATABASE;
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;
Semua pencadangan dilakukan secara inkremental, tanpa opsi untuk memilih jenis inkremental.
Memulihkan database ke titik waktu tertentu RUN
{
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
SET UNTIL TIME "TO_DATE('19-SEP-2017 23:45:00','DD-MON-YYYY HH24:MI:SS')";
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN RESETLOGS;
}
gcloud sql instances clone SOURCE_INSTANCE_NAME NEW_INSTANCE_NAME \
--point-in-time TIMESTAMP
Log arsip database cadangan BACKUP ARCHIVELOG ALL; Tidak didukung.

Instance standby untuk implementasi operasi hanya baca dan pemulihan dari bencana

Oracle Active Data Guard memungkinkan instance standby berfungsi sebagai endpoint hanya baca, sementara data baru masih diterapkan melalui log arsip dan pengulangan. Anda juga dapat menggunakan Oracle GoldenGate untuk mengaktifkan instance tambahan untuk tujuan pembacaan sementara modifikasi data diterapkan secara real time, yang berfungsi sebagai solusi Change Data Capture (CDC).

Cloud SQL untuk PostgreSQL menggunakan instance standby untuk ketersediaan tinggi. Instance ini tetap disinkronkan dengan instance utama melalui replikasi tingkat disk. Tidak seperti Active Data Guard, layanan ini tidak terbuka untuk pembacaan atau penulisan. Saat jaringan utama mati atau tidak responsif selama sekitar 60 detik, sistem utama akan otomatis beralih ke instance standby. Dalam beberapa detik, pertukaran peran dan jabatan utama yang baru mengambil alih.

Cloud SQL untuk PostgreSQL juga menawarkan replika baca untuk menskalakan permintaan baca. Instance ini dirancang untuk melimpahkan operasi baca dari instance utama, bukan sebagai instance standby untuk pemulihan dari bencana. Tidak seperti instance standby, replika baca tetap sinkron dengan replika baca utama secara asinkron. Ini dapat berada di zona yang berbeda dari zona utama dan juga di region yang berbeda. Anda dapat membuat replika baca menggunakan Google Cloud Console atau gcloud CLI. Perhatikan bahwa beberapa operasi memerlukan reboot instance (misalnya, menambahkan ketersediaan tinggi ke instance utama yang ada).

Logging dan pemantauan

File log pemberitahuan Oracle adalah sumber utama untuk mengidentifikasi peristiwa sistem umum dan peristiwa error agar dapat memahami siklus proses instance database Oracle apa pun (terutama memecahkan masalah peristiwa kegagalan dan peristiwa error).

Log pemberitahuan Oracle menampilkan informasi mengenai hal berikut:

  • Peringatan dan error instance database Oracle (ORA- + angka error).
  • Peristiwa startup dan penonaktifan instance database Oracle.
  • Masalah terkait jaringan dan koneksi.
  • Database mengulang peristiwa pengalihan log.
  • File rekaman aktivitas Oracle mungkin disebutkan dengan link untuk detail tambahan terkait peristiwa database tertentu.

Oracle menyediakan file log khusus untuk berbagai layanan seperti LISTENER, ASM, dan Enterprise Manager (OEM), yang tidak memiliki komponen yang setara di Cloud SQL untuk PostgreSQL.

Melihat log operasi Cloud SQL untuk PostgreSQL

Cloud Logging adalah platform utama untuk melihat semua entri log di postgres.log (setara dengan alert.log di Oracle). Anda dapat memfilter menurut tingkat peristiwa log (misalnya, Penting, Error, atau Peringatan). Jangka waktu peristiwa dan pemfilteran teks bebas juga tersedia.

Melihat log di konsol.

Pemantauan instance database Cloud SQL untuk PostgreSQL

Dasbor pemantauan UI utama Oracle merupakan bagian dari produk OEM dan Grid/Cloud Control (misalnya, Grafik Aktivitas Teratas) dan berguna untuk pemantauan instance database secara real-time di tingkat sesi atau pernyataan SQL. Cloud SQL untuk PostgreSQL memberikan kemampuan pemantauan serupa menggunakan Konsol Google Cloud. Anda dapat melihat informasi ringkas tentang instance database Cloud SQL untuk PostgreSQL dengan beberapa metrik pemantauan seperti penggunaan CPU, penggunaan penyimpanan, penggunaan memori, operasi baca/tulis, byte masuk/keluar, koneksi aktif, dan lainnya.

Cloud Logging mendukung metrik pemantauan tambahan untuk Cloud SQL untuk PostgreSQL. Screenshot berikut menunjukkan grafik kueri Cloud SQL untuk PostgreSQL selama 12 jam terakhir.

Grafik kueri selama 12 jam terakhir.

Pemantauan replika baca Cloud SQL untuk PostgreSQL

Anda dapat memantau replika baca dengan cara yang sama seperti Anda memantau instance utama, menggunakan metrik pemantauan konsol Google Cloud (seperti yang dijelaskan sebelumnya). Selain itu, ada metrik pemantauan khusus untuk memantau penundaan replikasi, yaitu menentukan jeda antara instance utama ke instance replika baca dalam byte (dapat dipantau dari tab ringkasan instance replika-baca) di konsol Google Cloud).

Anda dapat menggunakan gcloud CLI untuk mengambil status replikasi:

gcloud sql instances describe REPLICA_NAME

Anda juga dapat melakukan pemantauan replikasi menggunakan perintah dari klien PostgreSQL, yang menyediakan status database utama dan standby.

Anda dapat menggunakan pernyataan SQL berikut untuk memverifikasi status replika baca:

postgres=> select * from pg_stat_replication;

Pemantauan Cloud SQL untuk PostgreSQL

Bagian ini menjelaskan metode pemantauan Cloud SQL untuk PostgreSQL dasar yang dianggap sebagai tugas rutin yang dilakukan oleh administrator database (DBA) seperti Oracle atau Cloud SQL untuk PostgreSQL.

Pemantauan sesi

Pemantauan sesi Oracle dilakukan 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 dengan menggunakan pernyataan SQL. Anda dapat memantau aktivitas sesi dengan membuat kueri tampilan dinamis pg_stat_activity:

postgres=> select * from pg_stat_activity;

Pemantauan transaksi yang panjang

Anda dapat mengidentifikasi kueri yang berjalan lama dengan menerapkan filter yang sesuai pada kolom seperti query_start dan state dalam tampilan dinamis pg_stat_activity.

Pemantauan kunci

Anda dapat memantau penguncian database menggunakan tampilan dinamis pg_locks, yang memberikan informasi real-time tentang kemunculan kunci yang dapat menyebabkan masalah performa.

Langkah selanjutnya