MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Migrasi dari Oracle Database ke MariaDB - Yang Harus Anda Ketahui

Gartner memperkirakan bahwa pada tahun 2022, 50% dari database komersial yang ada akan dikonversi ke database open source. Terlebih lagi, 70% aplikasi internal baru akan dikembangkan pada platform database open source (State of the Open-Source DBMS Market, 2018).

Ini adalah angka yang tinggi mengingat kedewasaan, stabilitas, dan kekritisan perangkat lunak basis data yang populer dan berpemilik. Hal yang sama dapat diamati pada peringkat database teratas, di mana sebagian besar dari sepuluh database teratas adalah open source.

https://db-engines.com/en/ranking

Apa yang mendorong perusahaan untuk melakukan langkah seperti itu?

Mungkin ada banyak alasan untuk melakukan migrasi sistem database. Bagi sebagian orang, alasan utamanya adalah biaya lisensi dan kepemilikan; tapi apakah itu benar-benar hanya tentang biaya? Dan apakah open source cukup stabil untuk memindahkan sistem produksi penting ke dunia open source baru itu?

Basis data sumber terbuka, terutama yang baru dibawa ke dalam organisasi, sering kali berasal dari pengembang dalam tim proyek. Ini dipilih karena gratis (tidak memengaruhi pengeluaran eksternal proyek langsung) dan memenuhi persyaratan teknis saat itu.

Tetapi aspek gratis sebenarnya tidak datang begitu saja tanpa biaya karena Anda harus mempertimbangkan banyak faktor termasuk migrasi dan biaya jam kerja. Semakin lancar migrasi, semakin sedikit waktu dan uang yang dihabiskan untuk proyek tersebut.

Migrasi database dapat menjadi tantangan terutama untuk migrasi database kepemilikan yang heterogen seperti Oracle ke PostgreSQL, Oracle ke Percona atau MySQL. Struktur skema yang kompleks, tipe data, dan kode database seperti PL/SQL bisa sangat berbeda dari database target,
memerlukan langkah transformasi skema dan kode sebelum migrasi data dimulai.

Dalam artikel terbaru oleh rekan saya Paul Namuag, dia membahas cara memigrasi Oracle ke Percona.

Kali ini kita akan melihat apa yang harus Anda ketahui sebelum bermigrasi dari Oracle ke MariaDB.

MariaDB menjanjikan fitur perusahaan dan fitur migrasi yang dapat membantu memigrasikan database Oracle ke dunia open source.

Dalam posting blog ini kita akan membahas hal berikut:

  • Mengapa bermigrasi?
  • Perbedaan mesin penyimpanan
  • Pertimbangan konektivitas basis data
  • Instalasi &kemudahan administrasi
  • Perbedaan keamanan
  • Replikasi &HA
  • PL/SQL dan kode basis data
  • Pengelompokan dan penskalaan
  • Pencadangan dan pemulihan
  • Kompatibilitas awan
  • Pertimbangan lain-lain

Mengapa Bermigrasi dari Oracle?

Sebagian besar perusahaan akan menjalankan Oracle atau SQL Server, atau kombinasi keduanya, dengan sejumlah kecil basis data sumber terbuka yang terisolasi yang beroperasi secara independen. Usaha kecil hingga menengah cenderung menggunakan basis data sumber terbuka, terutama untuk aplikasi baru. Tapi ini berubah, dan seringkali, open source menjadi pilihan utama bahkan untuk organisasi besar.

Perbandingan cepat dari kedua sistem basis data ini terlihat sebagai berikut:

  • Hanya Oracle Express Edition yang bebas biaya, tetapi fiturnya sangat terbatas jika dibandingkan dengan MariaDB. Untuk fitur ekstensif, Oracle Standard Edition atau Oracle Enterprise Edition harus dibeli.
  • Di sisi lain, MariaDB dan komunitas MySQL bekerja keras untuk meminimalkan potensi kesenjangan fitur. Kepatuhan keamanan, pencadangan terkini, dan banyak fitur perusahaan lainnya kini tersedia di MariaDB.

Ada hal-hal yang selalu lebih fleksibel di MariaDB/MySQL daripada di pengaturan Oracle yang masif. Salah satunya adalah kemudahan replikasi dan skalabilitas cluster horizontal.

Perbedaan Mesin Penyimpanan

Pertama, mari kita mulai dengan beberapa dasar. Anda masih dapat mendengar banyak legenda dan mitos tentang keterbatasan MySQL atau MariaDB, yang sebagian besar mengacu pada masa-masa kelam ketika mesin penyimpanan utama adalah MyISAM.

MyISAM adalah mesin penyimpanan default dari MySQL 3.23 hingga digantikan oleh InnoDB di MariaDB 5.5. Ini adalah mesin ringan, non-transaksional dengan kinerja luar biasa, tetapi tidak menawarkan penguncian tingkat baris atau keandalan InnoDB.

Dengan InnoDB (mesin penyimpanan default), MariaDB menawarkan dua kunci tingkat baris standar, yaitu kunci bersama (S) dan kunci eksklusif (X). Sebuah kunci bersama diperoleh untuk membaca baris dan memungkinkan transaksi lain untuk membaca baris terkunci. Transaksi yang berbeda juga dapat memperoleh kunci bersama mereka sendiri.
Kunci tertentu diperoleh untuk menulis ke baris dan menghentikan transaksi tambahan dari mengunci baris yang sama.

InnoDB jelas telah menutupi kesenjangan fitur transaksional terbesar antara kedua sistem ini.

Karena sifat MariaDB yang dapat dicolokkan, ia menawarkan lebih banyak mesin penyimpanan sehingga Anda dapat menyesuaikannya dengan beban kerja tertentu dengan lebih baik. Yaitu. ketika ruang penting, Anda dapat menggunakan TokuDB yang menawarkan rasio kompresi hebat, Spider dioptimalkan untuk partisi dan pemisahan data, ColumnStore untuk penskalaan data besar.

Namun demikian, bagi mereka yang bermigrasi dari Oracle, rekomendasi saya adalah menggunakan mesin penyimpanan InnoDB terlebih dahulu.

Pertimbangan Konektivitas

MariaDB berbagi dengan Oracle dukungan yang baik untuk akses database termasuk driver ODBC dan JDBC, serta perpustakaan akses untuk Perl, Python, dan PHP. MySQL dan Oracle keduanya mendukung objek besar biner, karakter, numerik, dan tipe data tanggal. Jadi, Anda tidak akan kesulitan menemukan konektor yang tepat untuk layanan aplikasi Anda.

MariaDB tidak memiliki proses pendengar khusus untuk memelihara koneksi database nori alamat SCAN untuk database berkerumun seperti yang kita ketahui dari Oracle. Anda juga tidak akan menemukan layanan database yang fleksibel. Sebagai gantinya, Anda perlu mengonfigurasi secara manual antara soket Unix (cara lokal paling aman untuk menghubungkan DB - aplikasi di server yang sama), koneksi jarak jauh (secara default, MariaDB tidak mengizinkan login jarak jauh) dan juga pipa dan memori yang tersedia di Windows sistem saja. Untuk cluster, alamat SCAN perlu diganti dengan load balancer. MariaDB merekomendasikan untuk menggunakan produk mereka yang lain MaxScale, tetapi Anda juga dapat menemukan produk lain seperti ProxySQL atau HAproxy yang akan bekerja dengan MariaDB, dengan beberapa batasan. Meskipun menggunakan penyeimbang beban eksternal untuk MariaDB bisa jadi sulit, Anda mungkin menemukan fitur hebat yang, sebagai perbandingan, tidak tersedia di database Oracle.

Penyeimbang beban juga akan menjadi rekomendasi bagi mereka yang mencari Oracle Transparent Application Failover (TAF), Oracle Firewall DB atau beberapa fitur keamanan canggih seperti Oracle Connection Manager. Anda dapat menemukan lebih banyak tentang memilih penyeimbang beban yang tepat di buku putih berikut.

Meskipun teknologi ini gratis dan dapat digunakan secara manual menggunakan instalasi berbasis skrip, sistem seperti ClusterControl mengotomatiskan proses dengan antarmuka tunjuk dan klik. ClusterControl juga memungkinkan Anda menerapkan teknologi caching.

Kesederhanaan Instalasi &Administrasi

Versi Oracle DB terbaru yang tersedia menambahkan fitur instalasi yang telah lama ditunggu-tunggu:Oracle 18c sekarang dapat diinstal di Oracle Linux menggunakan RPM. Instalasi khusus berbasis Java selalu menjadi masalah bagi mereka yang ingin menulis otomatisasi untuk buku masak atau cuplikan kode Wayang mereka. Anda dapat menggunakan instalasi diam yang telah ditentukan sebelumnya tetapi file tersebut berubah dari waktu ke waktu dan tetap saja, Anda harus berurusan dengan dependensi-neraka. Instalasi berbasis RPM jelas merupakan langkah yang bagus.

Jadi bagaimana cara kerjanya di MariaDB?

Bagi mereka yang pindah dari dunia Oracle, selalu merupakan kejutan yang menyenangkan untuk melihat seberapa cepat Anda dapat menerapkan instance, membuat database baru, atau bahkan mengatur alur replikasi yang kompleks. Proses instalasi dan konfigurasi mungkin merupakan bagian terhalus dari proses migrasi. Meskipun memilih pengaturan yang tepat membutuhkan waktu dan pengetahuan.

Oracle menyediakan satu set distribusi biner MySQL. Ini termasuk distribusi biner generik dalam bentuk file tar terkompresi (file dengan ekstensi .tar.gz) untuk sejumlah platform dan binari dalam paket khusus platform. Pada platform Windows, Anda dapat menemukan wizard penginstalan standar melalui GUI.

Asisten konfigurasi database Oracle (DBCA) pada dasarnya tidak diperlukan karena Anda akan dapat membuat database dengan satu perintah baris.

CREATE [OR REPLACE] {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_specification] ...

create_specification:
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name

Anda juga dapat memiliki database dengan kumpulan database dan set karakter yang berbeda di bawah instance MariaDB yang sama.

Pengaturan replikasi hanya untuk mengaktifkan logging biner pada master (mirip dengan log arsip di Oracle) dan menjalankan perintah berikut pada slave untuk melampirkannya ke master.

CHANGE MASTER TO
MASTER_HOST = host,
MASTER_PORT = port,
MASTER_USER = replication_user,
MASTER_PASSWORD = password,
MASTER_AUTO_POSITION = 1;

Keamanan dan Kepatuhan

Oracle menyediakan keamanan database yang ditingkatkan.

Otentikasi pengguna dilakukan di Oracle dengan menentukan peran global selain lokasi, nama pengguna, dan kata sandi. Di Oracle, otentikasi Pengguna dilakukan dengan metode otentikasi yang berbeda termasuk otentikasi database, otentikasi eksternal, dan otentikasi proxy.

Untuk waktu yang lama peran tidak tersedia di MariaDB atau MySQL. MariaDB menambahkan peran dengan versi 10.2 setelah muncul di MySQL 8.0.

Peran, opsi yang banyak digunakan dalam pengaturan umum Oracle DB, dapat dengan mudah diubah di MariaDB, sehingga Anda tidak perlu membuang waktu untuk penyesuaian izin pengguna tunggal.

Buat, ubah pengguna, kata sandi:semuanya bekerja mirip dengan Oracle DB.

Untuk mencapai standar kepatuhan keamanan perusahaan, MariaDB menawarkan fitur bawaan seperti:

  • Audit plugin di
  • Enkripsi data tidak aktif
  • Sertifikat, koneksi TSS
  • PAM Plugin

Penawaran plugin audit semacam fine-grained auditing (FGA) atau AUDI SQL yang tersedia di Oracle. Ini tidak menawarkan serangkaian fitur yang sama, tetapi biasanya cukup baik untuk memenuhi audit kepatuhan keamanan.

Enkripsi data tidak aktif Enkripsi data saat istirahat dapat menjadi persyaratan untuk peraturan keamanan seperti HIPAA atau PCI DSS. Enkripsi semacam itu dapat diterapkan pada berbagai level - Anda dapat mengenkripsi seluruh disk tempat file disimpan. Anda hanya dapat mengenkripsi database MySQL melalui fungsionalitas yang tersedia di versi terbaru MySQL atau MariaDB. Enkripsi juga dapat diimplementasikan pada aplikasi sehingga mengenkripsi data sebelum disimpan dalam database. Setiap opsi memiliki kelebihan dan kekurangannya:enkripsi disk hanya dapat membantu jika disk dicuri secara fisik, tetapi file tidak akan dienkripsi pada server database yang sedang berjalan.

PAM Plugin memperluas fungsionalitas logging ke akun pengguna yang ketat dengan pengaturan LDAP. Bahkan, saya merasa lebih mudah untuk menyiapkannya daripada Integrasi LDAP dengan Oracle Database.

Replikasi &HA

MariaDB terkenal dengan kesederhanaan dan fleksibilitas replikasinya. Secara default, Anda dapat membaca atau bahkan menulis ke server standby/slave Anda. Untungnya, versi MySQL 10.X membawa banyak peningkatan signifikan pada Replikasi, termasuk ID Transaksi Global, checksum peristiwa, slave multi-utas, dan slave/master yang aman dari gangguan untuk membuat replikasi menjadi lebih baik. DBA yang terbiasa dengan membaca dan menulis replikasi MySQL akan mengharapkan solusi serupa atau bahkan lebih sederhana dari kakaknya, Oracle. Sayangnya tidak secara default.

Implementasi siaga fisik standar untuk Oracle ditutup untuk operasi baca-tulis apa pun. Faktanya, Oracle menawarkan variasi logis tetapi memiliki banyak keterbatasan, dan tidak dirancang untuk HA. Solusi untuk masalah ini adalah fitur berbayar tambahan yang disebut Active Data Guard, yang dapat Anda gunakan untuk membaca data dari standby saat Anda menerapkan redo log.

Active Data Guard adalah solusi tambahan berbayar untuk perangkat lunak pemulihan bencana Data Guard gratis dari Oracle yang hanya tersedia untuk Oracle Database Enterprise Edition (lisensi dengan biaya tertinggi). Ini memberikan akses hanya baca, sambil terus menerapkan perubahan yang dikirim dari database utama. Sebagai database siaga aktif, ini membantu menurunkan permintaan baca, pelaporan, dan pencadangan tambahan dari database utama. Arsitektur produk dirancang untuk memungkinkan database siaga diisolasi dari kegagalan yang mungkin terjadi pada database utama.

Fitur menarik dari database Oracle 12c dan sesuatu yang akan dilewatkan oleh Oracle DBA adalah validasi korupsi data. Pemeriksaan korupsi Oracle Data Guard dilakukan untuk memastikan bahwa data berada dalam keselarasan yang tepat sebelum data disalin ke database standby. Mekanisme ini juga dapat digunakan untuk memulihkan blok data pada primer langsung dari database siaga.

MariaDB menawarkan berbagai metode replikasi dan fitur replikasi seperti:

  • sinkron,
  • asinkron,
  • semi-sinkron

Kumpulan fitur untuk replikasi MariaDB kaya. Dengan replikasi sinkron, Anda dapat mengatur failover tanpa kerugian transaksi tulis. Untuk mengurangi penundaan replikasi asinkron, Anda mungkin ingin menggunakan replikasi paralel In-order pada slave. Peristiwa yang dapat dikompresi adalah peristiwa yang biasanya berukuran signifikan:Peristiwa kueri (untuk DDL dan DML dalam replikasi berbasis pernyataan), dan peristiwa baris (untuk DML dalam replikasi berbasis baris). Mirip dengan opsi kompresi lainnya Replikasi terkompresi MariaDB transparan. Seperti disebutkan sebelumnya, seluruh proses sangat mudah dibandingkan dengan replikasi fisik dan logis Oracle Data Guard.

PL/SQL dan Kode Basis Data

Sekarang kita sampai pada bagian yang sulit:PL/SQL.

Sementara replikasi dan HA dengan MariaDB berkuasa. Oracle adalah raja PL/SQL, tidak diragukan lagi.

PL/SQL adalah hambatan utama untuk migrasi ke dunia open source di banyak organisasi. Tapi MariaDB tidak menyerah di sini.

MariaDB 10.3 (juga dikenal sebagai MariaDB TX 3.0) telah menambahkan beberapa fitur baru yang menakjubkan termasuk konstruksi SEQUENCE, paket gaya Oracle, dan tipe data ROW – membuat migrasi menjadi lebih mudah.

Dengan parameter baru SQL_MODE =ORACLE, MariaDB sekarang dapat mengurai, bergantung pada kasusnya, sekumpulan Oracle PL/SQL lama tanpa menulis ulang kode.

Seperti yang dapat kita temukan di halaman cerita pelanggan mereka menggunakan kompatibilitas inti Oracle PL/SQL di MariaDB TX 3.0, Development Bank of Singapore (DBS) telah mampu memigrasikan lebih dari setengah aplikasi penting bisnis mereka hanya dalam 12 bulan dari Oracle Basis data ke MariaDB.

Mode kompatibilitas baru membantu dengan sintaks berikut:

  • Sintaks Loop
  • Deklarasi Variabel
  • Konstruk Prosedur Tersimpan Non-ANSI
  • Sintaks Kursor
  • Parameter Prosedur Tersimpan
  • Pewarisan Tipe Data (%TYPE, %ROWTYPE)
  • Pengecualian gaya PL/SQL
  • Sinonim untuk Tipe SQL Dasar (VARCHAR2, NUMBER, …)

Tetapi jika kita melihat versi 10.2 yang lebih lama, beberapa kompatibilitas antara Oracle dan MariaDB muncul sebelumnya seperti:

  • Ekspresi tabel umum
  • Kueri SQL rekursif
  • Fungsi Windows, NTILETE, RANK, DENESE_RANK.

Parsing PL/SQL asli atau dalam beberapa kasus, eksekusi langsung dari prosedur Oracle asli dapat sangat mengurangi biaya pengembangan.

Fitur lain yang sangat berguna yang ditambahkan oleh SQL_MODE=Oracle adalah sequences. Implementasi sequence di MariaDB Server 10.3 mengikuti standar SQL:2003 dan mencakup kompatibilitas sintaks dengan Oracle.

Untuk membuat urutan, pernyataan buat digunakan:

CREATE SEQUENCE Sequence_1 
  START WITH 1  
  INCREMENT BY 1;

Saat dibuat urutan dapat digunakan misalnya dengan sisipan seperti:

INSERT INTO database (database_id, database_name) VALUES(Sequence_1.NEXTVAL, 'MariaDB');

Pengelompokan dan Penskalaan

MariaDB adalah cluster database multi-master yang asinkron, aktif-aktif.

Cluster MariaDB berbeda dari apa yang dikenal sebagai Cluster MySQL Oracle - NDB.

Cluster MariaDB didasarkan pada plugin replikasi multi-master yang disediakan oleh Codership (Galera). Sejak versi 5.5, teknologi Galera (wsrep API) merupakan bagian integral dari MariaDB. Arsitektur plugin Galera berdiri di atas tiga lapisan inti:sertifikasi, replikasi, dan kerangka kerja komunikasi grup.

Lapisan sertifikasi menyiapkan set tulis dan melakukan pemeriksaan sertifikasi pada mereka, menjamin bahwa mereka dapat diterapkan.

Lapisan Replikasi mengelola protokol replikasi dan menyediakan kemampuan pemesanan total.

Kerangka Komunikasi Grup mengimplementasikan arsitektur plugin yang memungkinkan sistem lain terhubung melalui skema backend gcomm.

Perbedaan utama dari Oracle RAC adalah setiap node memiliki data yang terpisah. Oracle RAC umumnya disalahartikan sebagai solusi HA pelengkap sementara disk biasanya berada dalam array disk yang sama. MariaDB tidak hanya menawarkan penyimpanan redundan tetapi juga mendukung pengelompokan lokasi geografis tanpa memerlukan serat khusus.

Pencadangan dan Pemulihan

Oracle menawarkan banyak mekanisme pencadangan termasuk pencadangan panas, pencadangan, impor, ekspor, dan banyak lainnya.

Berlawanan dengan MySQL, MariaDB menawarkan alat eksternal untuk cadangan panas yang disebut mariabackup. Ini adalah fork dari Percona XtraBackup yang dirancang untuk bekerja dengan tabel terenkripsi dan terkompresi dan merupakan metode pencadangan yang disarankan untuk database MariaDB.

MariaDB Server 10.1 memperkenalkan MariaDB Compression dan Data-at-Rest Encryption, tetapi solusi pencadangan yang ada tidak mendukung kemampuan pencadangan penuh untuk fitur-fitur ini. Jadi MariaDB memutuskan untuk memperluas XtraBackup (versi 2.3.8) dan menamai solusi ini Mariabackup.

Percona dan Mariabackup menawarkan fungsionalitas yang serupa, tetapi jika Anda tertarik dengan perbedaannya, Anda dapat menemukannya di sini.

Apa yang tidak ditawarkan MariaDB adalah katalog pemulihan dari cadangan basis data Anda. Untungnya, ini dapat diperluas dengan sistem pihak ketiga seperti ClusterControl.

Kompatibilitas Cloud

Infrastruktur cloud semakin populer akhir-akhir ini. Meskipun VM cloud mungkin tidak dapat diandalkan seperti server tingkat perusahaan, penyedia cloud utama menawarkan berbagai alat untuk meningkatkan ketersediaan layanan. Anda dapat memilih antara arsitektur EC2 atau DBaaS seperti Amazon RDS.

Amazon RDS mendukung MariaDB Server 10.3. Itu tidak mendukung SQL_MODE=Oracle tetapi Anda masih dapat menemukan serangkaian fitur yang membuatnya lebih mudah untuk bermigrasi. Amazon cloud mendukung tugas manajemen umum seperti pemantauan, pencadangan, penerapan multi A-Z, dll.

Penyedia cloud populer lainnya, Google Cloud, juga menawarkan versi MariaDB terbaru. Anda dapat menerapkannya sebagai container atau image VM bersertifikat library Bintami.

Azure juga menawarkan implementasi MariaDB sendiri. Ini mirip dengan Amazon RDS, dengan pencadangan, penskalaan, dan build dalam ketersediaan tinggi. SLA yang dijamin adalah 99,99% yang setara dengan 4 m 23 detik per bulan waktu henti.

Pertimbangan Lain-lain

Seperti yang disebutkan di awal artikel ini, migrasi Oracle ke MariaDB adalah proses multi-tahap. Saran umum adalah jangan mencoba memigrasikan semua basis data sekaligus. Membagi migrasi ke dalam kelompok-kelompok kecil, dalam kebanyakan skenario, merupakan pendekatan terbaik.

Jika Anda tidak terbiasa dengan teknologi, cobalah. Anda harus merasa percaya diri dengan platform dan mengetahui pro dan kontranya. Pengujian akan membangun kepercayaan diri dan memengaruhi keputusan Anda terkait migrasi.

Ada alat menarik yang dapat membantu Anda dengan proses migrasi PL/SQL yang paling sulit. Yang sangat menarik adalah dbconvert, Alat Konversi Skema AWS - Dokumentasi AWS.

Selama bertahun-tahun MariaDB telah memperoleh dukungan dan kedewasaan Perusahaan untuk menjalankan sistem transaksi data yang kritis dan kompleks. Dengan versi terbaru, MariaDB telah menambahkan beberapa fitur baru yang hebat seperti kompatibilitas SQL_Mode=Oracle, membuat proses transisi lebih mudah dari sebelumnya.

Terakhir, Anda dapat bergabung dengan saya pada 12 Maret untuk webinar di mana saya akan memandu Anda melalui semua yang perlu Anda ketahui terkait migrasi dari database Oracle ke MariaDB.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana TIMESTAMP() Bekerja di MariaDB

  2. Cara Memotong Teks dengan Ellipsis di MariaDB

  3. ClusterControl - Manajemen Cadangan Tingkat Lanjut - mariabackup Bagian I

  4. 4 Fungsi untuk Mengembalikan Bulan dari Tanggal di MariaDB

  5. MariaDB CURRENT_DATE() Dijelaskan