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

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

Keamanan

Bagian ini memberikan panduan tentang enkripsi, audit, 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 (Enkripsi Data Transparan) untuk menambahkan lapisan enkripsi pada tingkat sistem operasi. Di Cloud SQL, data dienkripsi menggunakan Advanced Encryption Standard 256 bit (AES-256), 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 dalam penyimpanan, lihat Enkripsi dalam penyimpanan di Google Cloud.

Enkripsi dalam pengiriman

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 berpindah ke luar batas-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 intra-zona ke Cloud SQL. Untuk mengetahui informasi tentang enkripsi dalam pengiriman, lihat Enkripsi dalam pengiriman di Google Cloud.

Audit

Oracle menyediakan beberapa metode untuk audit (misalnya, audit 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 diizinkan 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 disaster recovery.

Ekspor dan impor

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

Cloud SQL untuk PostgreSQL tidak memiliki solusi yang merupakan padanan langsung dari utilitas DBMS_DATAPUMP Oracle (metode Oracle untuk menerapkan fungsionalitas 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 mengimplementasikan elemen logika, serta program pg_dump dan pg_restore Cloud SQL untuk PostgreSQL untuk menjalankan operasi ekspor/impor.

Oracle SQL*Loader dapat digunakan untuk memuat file eksternal ke tabel database. SQL*Loader dapat menggunakan file konfigurasi (disebut file kontrol), yang berisi metadata yang digunakan SQL*Loader menentukan bagaimana data harus diurai dan dimuat ke 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 berfokus terutama pada perintah COPY Cloud SQL untuk PostgreSQL, yang merupakan padanan langsung dari utilitas SQL*Loader Oracle.

Untuk pemuatan data yang lebih kompleks ke database Cloud SQL untuk PostgreSQL, pertimbangkan penggunaan 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 yang konsisten dan menghasilkan output dalam format file skrip atau arsip. Dump skrip adalah sekumpulan pernyataan SQL yang dapat dieksekusi untuk mereproduksi definisi objek database dan data tabel aslinya. Pernyataan SQL ini dapat dimasukkan ke klien PostgreSQL mana pun untuk pemulihan. Cadangan dalam format file arsip harus digunakan dengan pg_restore selama operasi pemulihan, tetapi pencadangan memungkinkan objek tertentu 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 menghasilkan skrip 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 menjelaskan cara menggunakan gcloud CLI untuk berinteraksi dengan instance Cloud SQL dan dengan 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 sesuai permintaan.

Dengan cadangan, Anda dapat memulihkan instance Cloud SQL untuk mengembalikan 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. Cadangan 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 maupun belum.

Cadangan sesuai permintaan tidak otomatis dihapus seperti cadangan otomatis. Cadangan akan tetap ada sampai Anda menghapusnya atau sampai instance terkaitnya dihapus. Karena tidak otomatis dihapus, dalam jangka panjang, cadangan sesuai permintaan dapat memengaruhi biaya tagihan jika Anda tidak menghapusnya.

Jika mengaktifkan pencadangan otomatis, Anda perlu mengalokasikan waktu 4 jam sebagai periode pencadangan. Pencadangan akan dimulai selama periode ini. Jika memungkinkan, jadwalkan pencadangan saat aktivitas di instance Anda 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 lebih rendah, bergantung pada region tempat cadangan disimpan. Untuk mengetahui daftar harga selengkapnya, lihat Harga Cloud SQL untuk PostgreSQL.

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

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

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

Deskripsi Oracle (Recovery Manager - RMAN) Cloud SQL untuk PostgreSQL
Pencadangan otomatis terjadwal Membuat 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 bersifat inkremental, tanpa opsi untuk memilih jenis inkremental.
Kumulatif inkremental BACKUP INCREMENTAL LEVEL 0 CUMULATIVE DATABASE;
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;
Semua pencadangan bersifat 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 disaster recovery

Active Data Guard Oracle memungkinkan instance standby berfungsi sebagai endpoint hanya baca, sementara data baru masih sedang diterapkan melalui log redo dan arsip. Anda juga dapat menggunakan GoldenGate Oracle guna mengaktifkan instance tambahan untuk operasi baca, sementara modifikasi data diterapkan secara real time. Dalam hal ini, GoldenGate berfungsi sebagai solusi Change Data Capture (CDC).

Cloud SQL untuk PostgreSQL menggunakan instance standby untuk memberikan ketersediaan tinggi. Instance ini dipertahankan selalu sinkron dengan instance utama melalui replikasi tingkat disk. Tidak seperti Active Data Guard, instance standby tidak tersedia untuk operasi baca atau tulis. Saat instance utama tidak aktif atau tidak responsif selama sekitar 60 detik, peralihan otomatis ke instance standby akan terjadi. Dalam beberapa detik, peran ditukar dan instance utama yang baru akan mengambil alih.

Cloud SQL untuk PostgreSQL juga menawarkan replika baca untuk menskalakan permintaan baca. Replika baca dirancang untuk mengurangi beban operasi baca dari instance utama, bukan sebagai instance standby untuk disaster recovery. Tidak seperti instance standby, replika baca dipertahankan selalu selaras dengan instance utama secara asinkron. Replika baca dapat berada di zona, atau bahkan region, yang berbeda dengan instance utama. Anda dapat membuat replika baca menggunakan KonsolGoogle Cloud 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 merupakan sumber utama untuk mengidentifikasi peristiwa sistem umum dan peristiwa error guna memahami siklus proses instance database Oracle (terutama memecahkan masalah peristiwa kegagalan dan peristiwa error).

Log pemberitahuan Oracle menampilkan informasi tentang:

  • Peringatan dan error instance database Oracle (ORA- + angka error).
  • Peristiwa startup dan shutdown instance database Oracle.
  • Masalah terkait jaringan dan koneksi.
  • Peristiwa peralihan redo log database.
  • File detail migrasi Oracle mungkin disertai dengan link untuk memberikan informasi tambahan terkait peristiwa database tertentu.

Oracle menyediakan file log khusus untuk berbagai layanan seperti LISTENER, ASM, dan Enterprise Manager (OEM). Komponen yang setara tidak tersedia 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 menerapkan filter berdasarkan tingkat peristiwa log (misalnya Critical, Error, atau Warning). 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 Top Activity Graph) dan berguna untuk pemantauan instance database secara real-time di tingkat sesi atau pernyataan SQL. Cloud SQL untuk PostgreSQL memberikan kapabilitas pemantauan serupa menggunakan KonsolGoogle 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 lain-lain.

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 memantau instance utama, yakni menggunakan metrik pemantauan Konsol Google Cloud (seperti yang dijelaskan sebelumnya). Selain itu, terdapat metrik pemantauan khusus untuk memantau penundaan replikasi—yang menentukan jeda antara instance utama ke instance replika baca dalam satuan 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 dasar di Cloud SQL untuk PostgreSQL yang dianggap sebagai tugas rutin administrator database (DBA) seperti Oracle atau Cloud SQL untuk PostgreSQL.

Pemantauan sesi

Pemantauan sesi di Oracle dilakukan 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 dengan menggunakan pernyataan SQL. Anda dapat memantau aktivitas sesi dengan mengkueri tabel virtual dinamis pg_stat_activity:

postgres=> select * from pg_stat_activity;

Pemantauan transaksi yang berjalan lama

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

Pemantauan penguncian

Anda dapat memantau penguncian database menggunakan tabel virtual dinamis pg_locks, yang memberikan informasi real-time tentang kejadian penguncian yang dapat menimbulkan masalah performa.

Langkah berikutnya