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

Alat Sumber Terbuka Teratas untuk Migrasi MySQL &MariaDB

Organisasi besar yang menggunakan platform database MySQL atau MariaDB sering kali dihadapkan pada kebutuhan untuk melakukan migrasi database dari satu tempat ke tempat lain. Terlepas dari platform, jenis perangkat lunak database (seperti dari RDBMS ke NoSQL atau NoSQL kembali ke RDBMS), atau jika itu hanya migrasi data, melakukan migrasi adalah pekerjaan dan biaya yang sangat besar.

Migrasi database akan selalu melibatkan proses migrasi data dari satu atau beberapa database sumber ke satu atau beberapa database target. Ini dapat melibatkan layanan migrasi basis data atau seperangkat alat mashup yang telah dibuat oleh para insinyur untuk membuat layanan dan menyesuaikan dengan masalah semacam ini.

Diharapkan bahwa migrasi basis data tidak berarti platform basis data sumber akan berakhir dengan platform targetnya persis seperti sumber asalnya. Setelah migrasi selesai, kumpulan data dari database target mungkin akan direstrukturisasi. Yang paling penting, setelah migrasi selesai sepenuhnya, adalah bahwa klien yang mengakses database akan diarahkan ke database sumber yang baru. Basis data sumber baru harus menyediakan salinan data yang tepat dari sumber, dan tanpa dampak pada kinerja yang dapat memengaruhi pengalaman pengguna secara keseluruhan.

Memindahkan data Anda dari satu platform ke platform tujuan target adalah tugas besar yang harus dilakukan. Inilah yang dicakup oleh migrasi basis data ketika sebuah organisasi atau perusahaan memutuskan untuk mematikan lampunya ke platform saat ini karena berbagai alasan. Alasan umum untuk memigrasikan data adalah karena efektivitas biaya ke platform tujuan target atau karena fleksibilitasnya pada penerapan dan skalabilitas. Sementara platform saat ini yang menghosting data produksi saat ini menyebabkan lebih banyak biaya untuk peningkatan dan skalabilitasnya, hal itu hanya memberatkan saat menerapkan perubahan kecil yang sebenarnya dapat digunakan dalam platform layanan mikro.

Dalam blog ini kita akan berfokus pada alat open source teratas yang dapat Anda gunakan untuk migrasi MySQL dan MariaDB pada migrasi database yang lebih homogen.

Alat Cadangan Untuk Migrasi Data

Jalur yang paling mudah digunakan saat melakukan migrasi adalah dengan menggunakan alat pencadangan basis data. Kita akan melihat apa saja alat tersebut dan bagaimana Anda dapat menggunakannya selama migrasi.

mysqldump/mysqlpump

Alat ini adalah salah satu utilitas paling terkenal untuk MySQL atau MariaDB sehingga admin database atau admin sistem akan mengaitkan alat ini untuk memigrasikan database lengkap atau sebagian salinan database. Untuk admin basis data yang tidak terbiasa dengan MySQL/MariaDB, alat ini memungkinkan Anda membuat salinan cadangan yang akan menghasilkan salinan logis data yang dapat Anda buang ke basis data target.

Pengaturan umum dengan menggunakan alat ini adalah, setiap kali basis data target terletak di tempat lain dan di-host di platform yang berbeda dari sumbernya, target bertindak sebagai budak atau replika. Menggunakan mysqldump biasanya dipanggil dengan --single-transaction pada sistem yang sibuk, dan dengan --master-data akan memberi Anda koordinat untuk menyiapkan budak di database target yang akan digunakan sebagai host untuk migrasi data. Sebuah alternatif untuk mysqldump juga mysqlpump tetapi dengan fitur yang lebih rendah namun dapat melakukan pemrosesan paralel database, dan objek dalam database, untuk mempercepat proses dump. Kelemahannya adalah, dengan mysqlpump, tidak ada opsi yang dapat Anda gunakan seperti --master-data yang sangat berguna jika Anda ingin membuat replika yang akan digunakan sebagai tujuan target untuk migrasi database.

mysqlpump menguntungkan jika data Anda lebih menganggur atau dimasukkan ke mode pemeliharaan sehingga tidak ada penulisan atau perubahan yang diproses yang sedang berlangsung ke database sumber. Ini lebih cepat dan lebih cepat dibandingkan dengan mysqldump.

mydumper/myloader 

mydumper/myloader adalah alat yang sangat bagus dan efisien yang dapat Anda gunakan untuk pencadangan logis terutama untuk mengimpor data massal dengan kecepatan pemrosesan yang lebih cepat karena menawarkan paralelisme, kemampuan untuk mengirim data dengan potongan, mendukung ambang batas dan kontrol menilai melalui jumlah utas, baris, ukuran pernyataan, dan kompres hasilnya. Itu menghasilkan atau menyertakan file log biner dan posisi log yang sangat membantu jika Anda mengatur platform tujuan target untuk bertindak sebagai replika dari sumber dan lingkungan produksi saat ini.

Pada dasarnya, mydumper adalah biner dan perintah yang harus Anda jalankan melalui baris perintah untuk membuat cadangan logis. Padahal, myloader adalah biner dan perintah yang harus Anda gunakan saat memuat data ke tujuan target yang diinginkan. Fleksibilitasnya memungkinkan Anda untuk mengelola tingkat yang Anda inginkan saat memproses tindakan apakah itu membuat cadangan atau memuat data. Dengan menggunakan mydumper, Anda juga dapat membuat cadangan lengkap atau hanya sebagian salinan cadangan dari basis data sumber Anda. Ini sangat berguna jika Anda memerlukan data atau skema besar yang ingin Anda pindahkan dari host basis data saat ini, dan sedikit pindahkan ke tujuan target lain saat mulai menyiapkan pecahan basis data baru. Ini juga bisa menjadi salah satu cara untuk memigrasikan data besar dengan menarik segmen besar dari kumpulan data lalu memindahkannya tetapi sebagai simpul pecahan baru.

mydumper/myloader juga memiliki keterbatasan. Ini telah dihentikan dari pembaruan dari penulis asli tetapi disimpan oleh Max Bube namun alat ini masih digunakan secara luas bahkan untuk lingkungan produksi.

Percona XtraBackup/Cadangan MariaDB

XtraBackup Percona adalah hadiah untuk administrator database yang  tidak ingin menggunakan dan membelanjakan uang untuk Oracle MySQL Enterprise Backup perusahaan. Sementara Cadangan MariaDB bercabang dan berasal dari Percona XtraBackup, mereka juga memiliki Cadangan Perusahaan MariaDB.

Kedua alat ini memiliki konsep yang sama saat melakukan atau mengambil cadangan. Ini adalah pencadangan biner yang menawarkan pencadangan online panas, PITR, pencadangan tambahan dan penuh, pencadangan parsial, juga berguna untuk pemulihan data karena memahami pemulihan sehingga menghasilkan file dan posisi log biner, mendukung GTID, dan banyak lagi. Meskipun MariaDB Backup dan Percona XtraBackup adalah dua jenis perangkat lunak yang berbeda saat ini karena dirancang untuk mendukung database yang difokuskan untuk menyediakan cadangan. Pencadangan MariaDB pasti berlaku jika Anda ingin menggunakan atau mengambil cadangan dari sumber basis data MariaDB. Sedangkan Percona XtraBackup dapat diterapkan pada Oracle MySQL dan juga pada Percona Server atau beberapa server MySQL turunan seperti Percona XtraDB Server atau Galera Cluster for MySQL versi Codership.

Kedua backup sangat bermanfaat untuk migrasi database. Melakukan pencadangan online panas lebih cepat dan lebih cepat dan menghasilkan cadangan yang dapat langsung Anda gunakan untuk memuatnya ke basis data target Anda. Lebih sering, streaming backup berguna juga seperti Anda dapat melakukan backup online dan streaming data biner ke database target menggunakan socat atau netcat. Ini memungkinkan Anda untuk mempersingkat waktu migrasi karena pemindahan data ke tujuan target sedang dialirkan secara langsung.

Pendekatan migrasi data yang paling umum saat menggunakan alat ini adalah menyalin data dari sumber lalu mengalirkan data ke tujuan target. Setelah berada di tujuan basis data target, Anda cukup menyiapkan cadangan biner dengan opsi --prepare di mana ia menerapkan log yang direkam selama waktu pembuatan cadangan sehingga akan menyalin data lengkap apa adanya dan persis dari titik waktu di mana cadangan diambil. Kemudian tetapkan tujuan database target sebagai replika untuk bertindak sebagai replika atau slave dari cluster sumber yang ada dan mereplikasi semua perubahan dan transaksi yang telah terjadi dari cluster utama.

Tentu saja ada batasan dalam menggunakan alat ini, tetapi administrator basis data harus tahu cara menggunakan alat ini dan juga bagaimana membatasi dan menyesuaikan penggunaan sesuai dengan penggunaan yang diinginkan. Anda mungkin tidak ingin menghambat basis data sumber Anda jika sumber Anda mengambil terlalu banyak lalu lintas atau pemrosesan besar sejak saat itu. Keterbatasannya juga memastikan bahwa ini adalah pengaturan yang homogen di mana sumber target adalah sistem yang kompatibel dengan Linux dan bukan pada lingkungan tipe Windows karena Percona XtraBackup dan MariaDB Backup hanya beroperasi di lingkungan Linux.

Alat Migrasi Skema Basis Data

Migrasi basis data tidak berbicara sendiri hanya pada alat dan tugas tertentu, lalu migrasi dapat terjadi. Ada banyak pertimbangan dan tugas yang mendasari selanjutnya yang harus dilakukan untuk memenuhi migrasi database yang lengkap. Salah satunya adalah migrasi skema atau migrasi database. Skema di MySQL/MariaDB adalah kumpulan data yang terdiri dari sekelompok tabel dengan kolom dan barisnya, peristiwa, pemicu, prosedur atau rutinitas tersimpan, dan fungsinya. Ada kalanya Anda mungkin hanya ingin memigrasikan skema atau hanya tabel. Katakanlah tabel tertentu pada skema memerlukan perubahan dalam struktur tabelnya dan itu membutuhkan pernyataan DDL. Masalahnya adalah, menjalankan pernyataan DDL langsung seperti ALTER TABLE ...ENGINE=InnoDB memblokir semua transaksi atau koneksi masuk yang juga akan merujuk atau digunakan ke tabel target. Untuk beberapa tabel besar yang terdiri dari definisi data yang panjang dan struktur tabel, ini menambah tantangan yang lebih nyata dan juga lebih rumit terutama jika tabel tersebut adalah tabel panas. Sedangkan dalam migrasi database, akan sulit untuk menyalin salinan lengkap yang tepat dari tabel lengkap tanpa downtime dari sumber. Jadi mari kita lihat apa ini.

pt-online-schema-change

Ini adalah bagian dari Percona Toolkit yang terkenal yang aslinya berasal dari Maatkit dan Aspersa. Alat ini sangat berguna saat melakukan perubahan definisi tabel terutama untuk tabel panas yang terdiri dari sejumlah besar data. Untuk beberapa pendekatan umum namun naif untuk melakukan perubahan definisi tabel, menjalankan ALTER TABLE dapat melakukan pekerjaan itu. Meskipun kasusnya cukup, ALTER TABLE tanpa menggunakan ALGORITHM=INPLACE menyebabkan salinan tabel lengkap yang memperoleh kunci metadata penuh dan itu berarti database Anda mungkin menumpuk dan terkunci untuk jangka waktu yang lama, terutama jika tabelnya sangat besar. Dalam hal ini, alat ini dibangun untuk memecahkan masalah itu. Alat ini sangat bermanfaat untuk migrasi database sedemikian rupa sehingga salinan tabel panas yang tidak konsisten terdeteksi dengan data yang sangat besar dari tujuan database target yang sudah Anda siapkan. Alih-alih melakukan pencadangan baik menggunakan salinan logis atau biner/fisik, pt-online-schema-change dapat digunakan yang menyalin baris dari tabel sumber ke tabel target potongan demi potongan. Anda bahkan dapat menyesuaikan perintah dengan panggilan yang tepat ke parameternya tergantung pada kebutuhan Anda.

Selain menggunakan, pt-online-schema-change juga menggunakan pemicu. Dengan menggunakan pemicu, lalu lintas berikutnya atau yang sedang berlangsung yang mencoba menerapkan perubahan ke tabel referensi itu juga harus disalin ke database target yang bertindak sebagai replika dari cluster database sumber saat ini. Ini menyalin semua data persis data apa yang dimiliki database sumber ke database target Anda yang terletak di platform yang berbeda, misalnya. Menggunakan pemicu berlaku untuk digunakan untuk MySQL dan MariaDB selama mesinnya adalah InnoDB dan memiliki kehadiran kunci utama di tabel itu, yang merupakan persyaratan. Anda mungkin tahu bahwa InnoDB menggunakan mekanisme penguncian baris yang memungkinkan, untuk sejumlah potongan (sekelompok catatan tertentu), pt-online-schema-change akan mencoba menyalinnya dan kemudian menerapkan pernyataan INSERT ke tabel target . Tabel target adalah tabel dummy yang bertindak sebagai salinan target dari tabel sumber yang ada. pt-online-schema-change meskipun memungkinkan pengguna untuk menghapus tabel dummy atau membiarkan tabel dummy ditempatkan sampai administrator siap untuk menghapus tabel itu. Perhatikan bahwa, menjatuhkan atau menghapus tabel memperoleh meta-datalock. Karena memperoleh pemicu, setiap perubahan selanjutnya harus disalin persis ke tabel target tanpa meninggalkan perbedaan pada tabel target atau dummy.

gh-ost

Membagikan konsep yang sama dengan pt-online-schema-change. Alat ini mendekati secara berbeda dibandingkan dengan pt-online-schema-change. Saya akan mengatakan, migrasi alat skema ini mendekati hambatan berbasis produksi yang dapat menyebabkan database Anda melambat dan mungkin macet menyebabkan cluster database Anda jatuh dalam mode pemeliharaan atau turun untuk jangka waktu yang tidak diketahui, sampai masalahnya adalah terselesaikan. Masalah ini biasanya disebabkan oleh pemicu. Jika Anda memiliki tabel sibuk atau panas yang mengalami perubahan skema atau perubahan definisi tabel, pemicu dapat menyebabkan database Anda menumpuk karena pertikaian kunci. Pemicu MySQL/MariaDB memungkinkan database Anda menentukan pemicu untuk INSERT, UPDATE, dan DELETE. Jika tabel target berada di hotspot, maka itu bisa berakhir buruk. Basis data Anda mulai menjadi lebih lambat hingga macet kecuali Anda dapat menghentikan kueri yang masuk tersebut atau yang terbaik adalah menghapus pemicunya, tetapi bukan itu yang dimaksud dengan pendekatan yang ideal.

Karena masalah itu, gh-ost mengatasi masalah itu. Ini bertindak seolah-olah ada server log biner tempat peristiwa atau transaksi masuk dicatat dalam format log biner, khususnya menggunakan RBR (Replikasi Berbasis Baris). Bahkan, sangat aman dan tidak terlalu mengkhawatirkan dampak yang harus Anda hadapi. Bahkan, Anda juga memiliki opsi untuk melakukan tes atau menjalankan kering (sama seperti dengan pt-online-schema-change) tetapi mengujinya langsung ke replika atau node slave. Ini sempurna jika Anda ingin bermain-main dan memeriksa salinan persisnya ke database target Anda selama migrasi.

Alat ini sangat fleksibel sesuai dengan kebutuhan Anda dan menyiratkan jaminan bahwa cluster Anda tidak akan macet atau mungkin berakhir melakukan failover atau pemulihan data jika memburuk. Untuk informasi lebih lanjut dan ingin mempelajari alat ini, saya sarankan membaca posting ini dari Github oleh Shlomi Noach.

Alat OSC Lainnya

Saya dapat mengatakan, kedua alat tersebut lebih merupakan pendekatan yang direkomendasikan tetapi alternatif lain yang juga dapat Anda coba. Sebagian besar, alat ini menerapkan pemicu MySQL/MariaDB sehingga entah bagaimana berbagi konsep yang sama dengan pt-online-schema-change. Berikut daftarnya:

  • LHM - Migrasi basis data gaya Rails adalah cara yang berguna untuk mengembangkan skema data Anda dengan cara yang gesit. Sebagian besar proyek Rails dimulai seperti ini, dan pada awalnya, membuat perubahan dengan cepat dan mudah.
  • OnlineSchemaChange - Dibuat dan diprakarsai oleh Facebook. Alat ini digunakan untuk membuat perubahan skema untuk tabel MySQL dengan cara yang tidak memblokir
  • TableMigrator - Diprakarsai oleh Serius Business dan mantan karyawan Twitter. Alat ini memiliki prinsip yang sama dengan migrasi tanpa henti dari tabel besar di MySQL. Ini diimplementasikan menggunakan Rails sehingga dapat berguna jika Anda memiliki lingkungan aplikasi Ruby-on-Rails.
  • oak-online-alter-table - ini adalah alat lama yang dibuat oleh Shlomi Noach meskipun entah bagaimana mendekati pendekatan yang sama dengan pt-online-schema-change dan melakukan operasi ALTER TABLE non-blocking

Alat Wisaya Migrasi Basis Data

Ada beberapa alat migrasi yang menawarkan penggunaan gratis yang sangat bermanfaat sampai batas tertentu. Apa yang lebih menguntungkan dengan menggunakan alat wizard migrasi adalah bahwa mereka memiliki GUI yang Anda dapat memiliki kenyamanan untuk melihat struktur saat ini atau hanya mengikuti langkah-langkah yang disediakan UI selama migrasi. Mungkin ada banyak layanan atau alat wizard tetapi itu bukan open source dan tidak tersedia secara gratis. Tentu saja, migrasi database adalah proses yang sangat kompleks namun sistematis, tetapi untuk beberapa kasus, ini membutuhkan kerja keras dan upaya. Mari kita lihat alat gratis ini.

MySQL Workbench

Seperti namanya, ini untuk MySQL dan database turunan seperti Server Percona misalnya, dapat berguna dalam hal migrasi database. Karena MariaDB telah sepenuhnya beralih ke rute yang berbeda terutama sejak versi 10.2, ada beberapa masalah ketidakcocokan yang mungkin Anda temui jika Anda mencoba menggunakan ini dari sumber atau target MariaDB. Workbench dapat digunakan untuk jenis database yang heterogen seperti yang berasal dari database sumber yang berbeda dan ingin membuang data ke MySQL.

MySQL Workbench terdiri dari versi komunitas dan perusahaan. Namun, versi komunitas tersedia secara gratis sebagai GPL yang dapat Anda temukan di sini https://github.com/mysql/mysql-workbench. Seperti yang dinyatakan dalam dokumentasi, MySQL Workbench Memungkinkan Anda untuk bermigrasi dari Microsoft SQL Server, Microsoft Access, Sybase ASE, SQLite, SQL Anywhere, PostreSQL, dan tabel, objek, dan data RDBMS lainnya ke MySQL. Migrasi juga mendukung migrasi dari versi MySQL sebelumnya ke rilis terbaru.

phpMyAdmin

Bagi mereka yang bekerja sebagai pengembang web yang menggunakan tumpukan LAMP, alat ini tidak mengherankan jika menjadi salah satu pisau tentara swiss mereka saat menangani tugas basis data. phpMyAdmin adalah perangkat lunak gratis yang ditulis dalam PHP, dimaksudkan untuk menangani administrasi MySQL melalui Web. phpMyAdmin mendukung berbagai operasi di MySQL dan MariaDB. Operasi yang sering digunakan (mengelola database, tabel, kolom, relasi, indeks, pengguna, izin, dll) dapat dilakukan melalui antarmuka pengguna, sementara Anda masih memiliki kemampuan untuk mengeksekusi pernyataan SQL secara langsung.

Meskipun cukup sederhana dalam hal impor dan ekspor, yang penting adalah menyelesaikan pekerjaan. Meskipun untuk migrasi yang lebih besar dan lebih kompleks, ini mungkin tidak cukup untuk menangani kebutuhan yang Anda inginkan.

HeidiSQL

HeidiSQL adalah perangkat lunak gratis, dan bertujuan agar mudah dipelajari. "Heidi" memungkinkan Anda melihat dan mengedit data dan struktur dari komputer yang menjalankan salah satu sistem database MariaDB, MySQL, Microsoft SQL, PostgreSQL, dan SQLite. Diciptakan pada tahun 2002 oleh Ansgar, HeidiSQL termasuk alat paling populer untuk MariaDB dan MySQL di seluruh dunia.

Untuk tujuan migrasi, ini memungkinkan Anda mengekspor dari satu server/database langsung ke server/database lain. Ini juga memiliki fitur impor untuk memungkinkan bidang teks seperti CSV, dan juga mengekspor baris tabel juga ke berbagai jenis file yang didukung seperti CSV, HTML, XML, SQL, LaTeX, Wiki Markup dan PHP Array. Meskipun dibuat untuk mengelola database untuk keperluan administrasi server db, namun Anda dapat menggunakannya untuk hal-hal migrasi sederhana.

Percona Toolkit Sebagai Pisau Swiss Army Anda

Percona Toolkit adalah perangkat lunak terkenal yang didistribusikan sebagai perangkat lunak sumber terbuka di bawah garansi GPL. Percona Toolkit adalah kumpulan alat baris perintah canggih yang biasa digunakan secara internal oleh Percona tetapi juga berlaku untuk pekerjaan basis data apa pun yang terkait terutama untuk server MySQL/MariaDB.

Jadi bagaimana dan mengapa ini juga membantu untuk migrasi data terutama dalam migrasi MySQL/MariaDB? Mereka memiliki sejumlah alat di sini yang bermanfaat untuk digunakan saat migrasi dan setelah migrasi.

Seperti yang disebutkan sebelumnya, pendekatan umum dari migrasi data adalah menjadikan server tujuan target sebagai replika dari klaster basis data sumber utama tetapi dalam pengaturan yang homogen. Ini berarti, jika situasi berpindah dari lokal ke penyedia cloud publik, Anda dapat menyiapkan node terpilih dari platform tersebut dan node ini akan mereplikasi semua transaksi dari cluster utama. Dengan menggunakan alat pencadangan, Anda mungkin dapat mencapai jenis penyiapan migrasi ini. Tapi itu tidak berakhir di sana. Percona Toolkit memiliki alat pt-table-checksum/pt-table-sync misalnya untuk membantu Anda mengidentifikasi inkonsistensi data antara lokal versus server database tujuan target. Dengan pt-table-checksum, Anda dapat melakukan perhitungan checksum berdasarkan serangkaian potongan untuk semua database atau hanya secara selektif checksum pada database tertentu, atau tabel tertentu, atau bahkan rentang catatan tabel. pt-table-sync akan digunakan untuk melakukan sinkronisasi data sehingga database target Anda akan disegarkan kembali dengan salinan baru dari data persis dari cluster sumber utama.

Di sisi lain, pt-upgrade sangat berguna setelah migrasi dari alat pencadangan dilakukan. Dengan pt-upgrade, Anda dapat menggunakan alat ini untuk melakukan analisis dengan menjalankan serangkaian kueri, misalnya, dari file log kueri yang lambat. Hasil ini dapat digunakan untuk membandingkan dari database sumber dan terhadap server database target.

Ringkasan

Migrasi basis data, terutama dari penyiapan yang heterogen, bisa sangat rumit. Namun pada pengaturan yang homogen itu bisa sangat mudah; terlepas dari apakah datanya besar atau kecil selama Anda dilengkapi dengan alat yang tepat dan, tentu saja, pendekatan sistematis yang benar untuk menentukan bahwa migrasi selesai dengan data yang konsisten. Ada kalanya migrasi memerlukan konsultasi dengan para ahli, tetapi selalu merupakan awal yang baik untuk datang dan mencoba dengan alat sumber terbuka ini untuk mencapai tugas migrasi database yang Anda inginkan.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Meningkatkan Kinerja Backend Bagian 2/3:Menggunakan Indeks Basis Data

  2. Upgrade ke Jira Terbaru dengan Server MariaDB Versi Terbaru

  3. Bagaimana TIDAK REGEXP Bekerja di MariaDB

  4. HOUR() vs EXTRACT(HOUR ...) di MariaDB:Apa Bedanya?

  5. Fungsi Numerik MariaDB (Daftar Lengkap)