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 MySQL versi 5.7, instance generasi kedua. Seri ini mencakup bagian-bagian berikut:
- Memigrasikan pengguna Oracle ke Cloud SQL untuk MySQL: Terminologi dan fungsionalitas
- Memigrasikan pengguna Oracle ke Cloud SQL untuk MySQL: Jenis data, pengguna, dan tabel
- Memigrasikan pengguna Oracle ke Cloud SQL untuk MySQL: Kueri, serta prosedur, fungsi, dan pemicu tersimpan
- Memigrasikan pengguna Oracle ke Cloud SQL untuk MySQL: Keamanan, operasi, pemantauan, dan logging (dokumen ini)
Keamanan
Bagian ini menjelaskan perbedaan enkripsi data antara Oracle dan Cloud SQL untuk MySQL serta membahas audit kontrol akses Cloud SQL untuk MySQL.
Enkripsi data Oracle
Selain autentikasi pengguna dasar dan pengelolaan hak istimewa pengguna, Oracle menawarkan mekanisme TDE (Transparent Data Encryption) untuk menambahkan lapisan enkripsi tambahan ke keamanan data dalam penyimpanan di level sistem operasi. Setelah dikonfigurasi, TDE Oracle diimplementasikan oleh sistem secara otomatis dan tidak memerlukan interaksi manual apa pun dari pengguna. Untuk mengimplementasikan TDE Oracle, sebaiknya konfigurasi mekanisme ini secara eksplisit (dengan perintah) pada objek database yang diperlukan dan didukung, yang dapat menerima jenis enkripsi ini—misalnya tablespace, tabel, atau kolom. Untuk menangani keamanan data dalam pengiriman, sebaiknya Anda menerapkan solusi keamanan jaringan.
Enkripsi data Cloud SQL untuk MySQL
Google Cloud menyediakan beberapa lapisan enkripsi untuk melindungi data pelanggan dalam penyimpanan di produk Google Cloud , termasuk Cloud SQL. Cloud SQL dienkripsi menggunakan enkripsi AES-128 atau AES-256. Untuk mendapatkan informasi tambahan, lihat topik berikut mengenai enkripsi dalam penyimpanan. Tidak seperti enkripsi Oracle (yang harus diimplementasikan melalui tindakan konfigurasi), Google Cloud mengenkripsi data pelanggan dalam penyimpanan, tanpa perlu tindakan apa pun. Dari perspektif konversi skema, tidak ada tindakan yang diperlukan, dan enkripsi tetap transparan bagi pengguna.
Untuk lebih memahami cara Google Cloud menangani enkripsi data dalam pengiriman, baca Cara enkripsi dikelola untuk data dalam pengiriman.
Audit
Oracle menyediakan beberapa metode audit, seperti audit standar dan terperinci. Sebaliknya, MySQL secara default tidak menyediakan solusi audit yang setara. Untuk mengatasi keterbatasan ini, Anda dapat menggunakan dasbor dan pemantauan Google Cloud, tetapi agar dapat menangkap operasi DML/DDL database, Anda dapat menggunakan log kueri lambat, log umum, dan log error sebagai solusi audit yang lebih andal.
Untuk mengimplementasikan solusi ini, sebaiknya Anda menggunakan instance FLAGS untuk mengaktifkan log kueri lambat dan log umum. Selain itu, Anda perlu mengelola retensi log tersebut sesuai dengan kebutuhan bisnis Anda.
Anda dapat menggunakan log audit Google Cloud untuk mengumpulkan informasi audit. Log ini mencakup tiga level utama:
- Log audit aktivitas admin (diaktifkan secara default)
- Log audit akses data (dinonaktifkan secara default)
- Baca cara mengonfigurasi log akses data.
- Perhatikan bahwa log audit akses data tidak mencatat operasi akses data di resource yang dapat diakses tanpa login keGoogle Cloud.
- Log audit peristiwa sistem (diaktifkan secara default)
Melihat log audit Google Cloud
Berikut jalur akses untuk melihat log audit: KonsolGoogle Cloud > Home > Activity
Anda dapat memfilter tingkat perincian informasi antar-tingkat audit. Screenshot berikut menampilkan audit aktivitas admin.
Halaman Cloud Logging
Berikut jalur akses untuk halaman logging: KonsolGoogle Cloud > Cloud Logging
Anda dapat memfilter tingkat perincian informasi antar-jenis log. Screenshot berikut menunjukkan audit log umum (data audit untuk pengguna, host, dan pernyataan SQL).
Kontrol akses Cloud SQL untuk MySQL
Pengguna dapat terhubung ke instance Cloud SQL untuk MySQL menggunakan klien MySQL dengan alamat IP statis yang diizinkan atau menggunakan Proxy Cloud SQL, dengan cara yang mirip dengan koneksi database lainnya. Untuk sumber koneksi lainnya seperti App Engine atau Compute Engine, pengguna memiliki beberapa opsi seperti menggunakan Proxy Cloud SQL. Opsi ini dijelaskan lebih mendetail di bagian Kontrol akses instance.
Operasi
Bagian ini membahas ekspor dan impor, pencadangan dan pemulihan tingkat instance, scheduler peristiwa MySQL (untuk tugas database), serta instance standby untuk operasi hanya baca dan disaster recovery.
Ekspor dan impor
Metode utama Oracle untuk menjalankan operasi ekspor dan impor logika adalah utilitas Data Pump, yang menggunakan perintah EXPDP/IMPDP (versi lama fungsionalitas ekspor/impor Oracle menyertakan perintah exp dan imp). Perintah yang setara di MySQL adalah utilitas mysqldump dan mysqlimport, yang menghasilkan file dump lalu mengimpornya di tingkat database atau objek (termasuk mengekspor dan mengimpor metadata saja).
MySQL tidak memiliki solusi yang merupakan padanan langsung dari utilitas DBMS_DATAPUMP Oracle (metode Oracle untuk menerapkan fungsionalitas EXPDP/IMPDP yang berinteraksi langsung dengan paket DBMS_DATAPUMP). Untuk melakukan konversi dari kode PL/SQL DBMS_DATAPUMP Oracle, gunakan kode alternatif (misalnya Bash atau Python) untuk mengimplementasikan elemen logika, serta gunakan mysqldump dan mysqlimport MySQL untuk menjalankan operasi ekspor/impor.
Utilitas mysqldump dan mysqlimport MySQL berjalan di tingkat klien (sebagai bagian dari program klien MySQL), yang terhubung dari jarak jauh ke instance Cloud SQL untuk MySQL. File dump dibuat di sisi klien.
mysqldump:
Utilitas klien menjalankan pencadangan logika dan impor data (sebagai sql). Tindakan ini menghasilkan sekumpulan pernyataan SQL yang dapat dieksekusi untuk mereproduksi definisi objek database dan data tabel aslinya. Utilitas mysqldump juga dapat menghasilkan output dalam format CSV, teks delimited lainnya, atau XML. Keunggulan utama format output ini adalah Anda dapat melihat atau mengedit output ekspor sebelum memulihkannya, karena bentuknya adalah file teks. Kelemahan utamanya adalah utilitas ini tidak dimaksudkan sebagai solusi cepat atau skalabel untuk mencadangkan data dalam jumlah besar.
Penggunaan mysqldump:
-- Single database backup & specific tables backup # mysqldump database_name > outpitfile.sql # mysqldump database_name tbl1 tbl2 > outpitfile.sql -- Back up all databases # mysqldump --all-databases > all_databases.sql -- Ignore a given table # mysqldump --databases db1 --ignore-table db1.tbl > outpitfile.sql -- Back up metadata only - Schema only # mysqldump --no-data db1 > bck.sql -- Include stored procedures and functions (routines) # mysqldump db1 --routines > db1.sql -- Back up only rows by a given WHERE condition # mysqldump db1 tbl1 --where="col1=1" > bck.sql -- Include triggers for each dumped table (default) # mysqldump db1 tbl1 —triggers > bck.sql
mysqlimport:
Ini adalah program klien yang menyediakan antarmuka command line ke pernyataan SQL LOAD
DATA INFILE. mysqlimport sering digunakan untuk mengimpor data dari file teks atau CSV ke dalam tabel MySQL dengan struktur yang bersesuaian.
SQL*Loader Oracle dapat dikonversi menjadi mysqlimport karena keduanya memiliki kesamaan fungsionalitas, yakni memuat data dari file eksternal.
Penggunaan mysqlimport:
-- Example of loading data from a CSV file into a table:
-- Create a table named csv_file
mysql> create table file(col1 int, col2 varchar(10));
-- Create a CSV file (delimited by tab)
# echo 1 A > file.csv
# echo 2 B >> file.csv
# echo 3 C >> file.csv
-- Import the CSV file into the csv_file table
-- Note that the file and table name must be named identically
# mysqlimport -u USER -p -h HOSTNAME/IP DB_NAME --local file.csv
csv_file: Records: 3 Deleted: 0 Skipped: 0 Warnings: 0
-- Verify
# mysql -u USER -p -h HOSTNAME/IP DB_NAME -e "SELECT * FROM file"
+------+------+
| col1 | col2 |
+------+------+
| 1 | A |
| 2 | B |
| 3 | C |
+------+------+
-- Example of using LOAD DATA INFILE to load a CSV file (using the same
table from the previous example, with the CSV delimiter defined by
comma)
mysql> LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE file
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n' (col1, col2);
mysql> SELECT * FROM file;
+------+------+
| col1 | col2 |
+------+------+
| 1 | A |
| 2 | B |
| 3 | C |
+------+------+
Ekspor/impor Cloud SQL untuk MySQL:
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
Migrasi dari RMAN atau Data Pump Oracle serta menyertakan opsi pencadangan dan pemulihan tambahan (misalnya snapshot VM, cold backup, atau alat pihak ketiga) ke Cloud SQL untuk MySQL merupakan operasi sederhana. Kode atau pengetahuan tambahan tidak diperlukan. Anda dapat mengelola proses ini menggunakan KonsolGoogle Cloud atau Google Cloud CLI. (Contoh di atas dikompilasi dengan instance Cloud SQL generasi kedua.)
Metode pencadangan database di MySQL adalah pencadangan sesuai permintaan dan pencadangan otomatis.
Anda dapat menggunakan pemulihan instance database Cloud SQL untuk MySQL jika ingin memulihkan ke instance yang sama (dengan menimpa data yang ada) atau memulihkan ke instance berbeda. Dengan Cloud SQL untuk MySQL, Anda juga dapat memulihkan database MySQL ke titik waktu (point-in-time) tertentu menggunakan logging biner dengan opsi pencadangan otomatis diaktifkan.
Cloud SQL untuk MySQL memberikan kemampuan untuk meng-clone versi independen database sumber. Fitur ini hanya berlaku untuk database utama (master) atau clone lain dan tidak dapat diambil dari instance replika baca. Anda juga dapat menggunakan fitur ini untuk memulihkan instance MySQL dari waktu tertentu, sehingga memungkinkan pemulihan data jika diperlukan. Anda dapat menerapkan pemulihan database Cloud SQL untuk MySQL menggunakan KonsolGoogle Cloud atau gcloud CLI.
Scheduler peristiwa MySQL (tugas database)
Untuk memulai prosedur database yang telah ditetapkan, fungsionalitas scheduler peristiwa di MySQL setara dengan DBMS_JOBS atau DBMS_SCHEDULER di Oracle. Secara default, parameter database event_scheduler ditetapkan ke OFF. Jika diperlukan, parameter ini dapat dialihkan ke ON menggunakan flag Cloud SQL.
Anda dapat menggunakan scheduler peristiwa MySQL untuk menjalankan perintah DML/DDL secara eksplisit atau untuk menjadwalkan prosedur atau fungsi tersimpan pada waktu tertentu dan dengan logika tertentu.
Pertimbangan konversi untuk DBMS_JOBS atau DBMS_SCHEDULER Oracle:
Semua tugas Oracle harus dikonversi ke dalam sintaksis dan fungsionalitas MySQL secara manual atau dengan menggunakan alat konversi PL/SQL yang tersedia secara komersial.
Gunakan pernyataan berikut untuk memverifikasi parameter value event_scheduler saat ini dari eksekusi klien:
mysql> SHOW VARIABLES LIKE '%event_s%';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | ON |
+-----------------+-------+
Contoh scheduler peristiwa:
DBMS_ScheduleR Oracle
SQL> BEGIN DBMS_SCHEDULER.CREATE_JOB ( job_name => 'job_sessions_1d_del', job_type => 'PLSQL_BLOCK', job_action => 'BEGIN DELETE FROM sessions WHERE session_date < SYSDATE - 1; END;', start_date => SYSTIMESTAMP, repeat_interval => 'FREQ=DAILY', end_date => NULL, enabled => TRUE, comments => 'Deletes last day data from the sessions table'); END; /Konversi EVENT MySQL:
mysql> CREATE EVENT job_sessions_1d_del ON SCHEDULE EVERY 1 DAY COMMENT 'Deletes last day data from the sessions table' DO DELETE FROM sessions WHERE session_date < DATE_SUB(SYSDATE(), INTERVAL 1 DAY);Metadata scheduler peristiwa MySQL:
mysql> SELECT * FROM INFORMATION_SCHEMA.EVENTS \G; -- OR mysql> SHOW EVENTS FROM HR;
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 MySQL mendukung pemisahan operasi baca/tulis dengan menggunakan replika baca untuk mengarahkan semua workload baca atau analitik dari instance utama ke sumber replika alternatif secara hampir real-time. Anda dapat menerapkan setelan untuk replika baca Cloud SQL untuk MySQL melalui Konsol Google Cloud atau gcloud CLI.
Cloud SQL untuk MySQL mendukung opsi replikasi tambahan: mereplikasi ke instance MySQL eksternal dan mereplikasi dari instance MySQL eksternal.
Anda dapat mengimplementasikan Active Data Guard dan GoldenGate Oracle sebagai solusi disaster recovery (DR), yang menambahkan instance standby yang sudah disinkronkan dengan instance utama.
Replika baca Cloud SQL untuk MySQL tidak dimaksudkan sebagai instance standby dalam skenario DR. Untuk keperluan itu, Cloud SQL memungkinkan pengguna mengonfigurasi instance MySQL untuk ketersediaan tinggi (menggunakan Konsol Google Cloud atau gcloud CLI).
Beberapa operasi mungkin memerlukan reboot instance (misalnya, menambahkan HA ke instance utama yang ada). Dari perspektif SLA ketersediaan tinggi (HA), jika instance utama tidak responsif selama sekitar 60 detik, instance standby HA akan tersedia setelah koneksi ulang dilakukan. Jika ingin mengaktifkan HA untuk Cloud SQL untuk MySQL, lihat petunjuk berikut.
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.
Selain itu, Oracle menyediakan file log khusus untuk berbagai layanan seperti LISTENER, ASM, dan Enterprise Manager (OEM). Komponen yang setara tidak tersedia di Cloud SQL untuk MySQL.
Jenis-jenis log Cloud SQL untuk MySQL:
| Jenis log MySQL | Deskripsi | Catatan |
|---|---|---|
| Log aktivitas | Berisi data tentang panggilan API atau tindakan administratif lainnya yang mengubah konfigurasi atau metadata instance Cloud SQL untuk MySQL. | Log ini adalah salah satu dari tiga log dalam grup Cloud Audit Logs. |
| Log akses data | Berisi data tentang panggilan API yang membaca konfigurasi atau metadata resource, serta panggilan API dari pengguna yang membuat, memodifikasi, atau membaca data resource yang disediakan pengguna. | Log ini adalah salah satu dari tiga log dalam grup Cloud Audit Logs. Perlu diperhatikan bahwa log ini hanya mencatat operasi akses data di instance MySQL untuk peristiwa yang dapat diakses tanpa login keGoogle Cloud. |
mysql.err |
Ini adalah file log utama MySQL, yang setara dengan log pemberitahuan di Oracle. Keduanya menampung logging peristiwa instance database, seperti peristiwa startup dan shutdown, serta peristiwa error dan peringatan. | Panduan pesan error MySQL 5.7. |
mysql-slow.log |
Log kueri lambat di MySQL mengumpulkan data tentang kueri yang melebihi konfigurasi yang telah ditetapkan, misalnya setiap kueri yang memiliki waktu proses lebih dari 2 detik (defaultnya adalah 10 detik). | Dinonaktifkan secara default. Untuk mengaktifkan log ini, tetapkan variabel berikut (parameter database):
|
mysql-general.log |
Log ini mengumpulkan data tentang koneksi dan pemutusan koneksi klien serta pernyataan SQL yang dijalankan terhadap instance database MySQL ini. Log ini berguna untuk pemecahan masalah dan biasanya diatur ke OFF saat operasi selesai. |
Dinonaktifkan secara default. Untuk mengaktifkan, variabel general_log perlu ditetapkan ke ON. |
| Log biner | Server MySQL menggunakan logging biner untuk mencatat semua pernyataan yang memodifikasi data. Penggunaan utama log ini adalah untuk pencadangan dan replikasi. | Secara default, parameter logging biner di Cloud SQL untuk MySQL diaktifkan untuk mengaktifkan pemulihan dan deployment replika baca.
Untuk mengaktifkan logging biner, tetapkan parameter konfigurasi log_bin ke ON. |
| Log relai | Berisi pernyataan yang diterima dari log biner utama untuk mengimplementasikan semua modifikasi data di instance subordinat (replika baca). | Hanya berlaku untuk instance sekunder (slave) dan replika baca. |
Melihat log operasi Cloud SQL untuk MySQL
Cloud Logging adalah platform utama untuk melihat semua detail log. Anda dapat memilih log yang berbeda-beda dan menerapkan filter berdasarkan tingkat peristiwa log (misalnya Critical, Error, atau Warning). Jangka waktu peristiwa dan pemfilteran teks bebas juga tersedia.
Contoh
Screenshot berikut menunjukkan penemuan kueri tertentu dalam file mysql-slow.log menggunakan jangka waktu kustom sebagai kriteria filter.
Pemantauan instance database MySQL
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 MySQL memberikan kapabilitas pemantauan serupa menggunakan Konsol Google Cloud . Anda dapat melihat informasi ringkas tentang instance database Cloud SQL untuk MySQL 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 MySQL. Screenshot berikut menampilkan grafik kueri MySQL selama 12 jam terakhir.
Pemantauan replika baca MySQL
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 detik (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 MySQL, yang memberikan status database utama dan subordinat, serta status log biner dan log relai.
Anda dapat menggunakan pernyataan SQL berikut untuk memverifikasi status replika baca:
mysql> SHOW SLAVE STATUS;
Pemantauan MySQL
Bagian ini menjelaskan metode pemantauan dasar di MySQL yang dianggap sebagai tugas rutin administrator database (Oracle atau MySQL).
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 di MySQL menggunakan perintah dan pernyataan SQL. Misalnya, perintah SHOW PROCESSLIST MySQL memberikan detail berikut tentang aktivitas sesi:
mysql> SHOW PROCESSLIST;
Anda juga dapat mengkueri dan memfilter hasil SHOW PROCESSLIST menggunakan pernyataan SELECT:
mysql> SELECT * FROM information_schema.processlist;
Pemantauan transaksi yang berjalan lama
Untuk mengidentifikasi transaksi yang berjalan lama secara real-time yang dapat menimbulkan masalah performa, Anda dapat mengkueri tabel virtual dinamis information_schema.innodb_trx. Tabel virtual ini hanya menampilkan kumpulan data untuk transaksi terbuka yang berjalan di instance database MySQL.
Pemantauan penguncian
Anda dapat memantau penguncian database menggunakan tabel virtual dinamis information_schema.innodb_locks, yang memberikan informasi real-time tentang kejadian penguncian yang dapat menimbulkan masalah performa.