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

Bermigrasi dari MySQL Enterprise ke MariaDB 10.3

Meskipun berbagi warisan yang sama dengan MySQL, MariaDB adalah database yang berbeda. Selama bertahun-tahun ketika versi baru MySQL dan MariaDB dirilis, kedua proyek telah berbeda menjadi dua platform RDBMS yang berbeda.

MariaDB menjadi distribusi basis data utama di banyak platform Linux dan semakin populer akhir-akhir ini. Pada saat yang sama, ini menjadi sistem database yang sangat menarik bagi banyak perusahaan. Ini mendapatkan fitur yang mendekati kebutuhan perusahaan seperti enkripsi, pencadangan panas, atau kompatibilitas dengan basis data berpemilik.

Tetapi bagaimana fitur baru memengaruhi kompatibilitas MariaDB dengan MySQL? Apakah masih drop pengganti MySQL? Bagaimana perubahan terbaru memperkuat proses migrasi? Kami akan mencoba menjawabnya di artikel ini.

Yang Perlu Anda Ketahui Sebelum Meningkatkan

MariaDB dan MySQL berbeda satu sama lain secara signifikan dalam dua tahun terakhir, terutama dengan kedatangan versi terbaru mereka:MySQL 8.0, MariaDB 10.3 dan MariaDB 10.4 RC (kami membahas fitur baru MariaDB 10.4 RC baru-baru ini jadi Jika Anda ingin baca lebih lanjut tentang apa yang akan datang di 10.4 silakan periksa dua blog rekan saya Krzysztof, Apa yang Baru di MariaDB 10.4 dan yang kedua tentang Apa yang Baru di Cluster MariaDB 10.4).

Dengan rilis MariaDB 10.3, MariaDB mengejutkan banyak orang karena tidak lagi menjadi pengganti MySQL. MariaDB tidak lagi menggabungkan fitur MySQL baru dengan MariaDB noir memecahkan bug MySQL. Namun demikian versi 10.3 sekarang menjadi alternatif nyata untuk Oracle MySQL Enterprise serta database milik perusahaan lainnya seperti Oracle 12c (MSSQL dalam versi 10.4).

Pemeriksaan Awal dan pembatasan

Migrasi adalah proses yang rumit, apa pun versi yang Anda tingkatkan. Ada beberapa hal yang perlu Anda ingat saat merencanakan ini, seperti perubahan penting antara versi RDBMS serta pengujian terperinci yang perlu memimpin proses peningkatan apa pun. Ini sangat penting jika Anda ingin mempertahankan ketersediaan selama peningkatan versi.

Memutakhirkan ke versi utama yang baru melibatkan risiko, dan penting untuk merencanakan seluruh proses dengan cermat. Dalam dokumen ini, kita akan melihat perubahan baru yang penting dalam versi 10.3 (dan 10.4) mendatang dan menunjukkan cara merencanakan proses pengujian.

Untuk meminimalkan risiko, mari kita lihat perbedaan dan batasan platform.

Dimulai dengan konfigurasi ada beberapa parameter yang memiliki nilai default yang berbeda. MariaDB menyediakan matriks perbedaan parameter. Itu dapat ditemukan di sini.

Di MySQL 8.0, caching_sha2_password adalah plugin otentikasi default. Peningkatan ini harus meningkatkan keamanan dengan menggunakan algoritma SHA-256. MySQL mengaktifkan plugin ini secara default, sedangkan MariaDB tidak. Meskipun sudah ada permintaan fitur yang dibuka dengan MariaDB MDEV-9804. MariaDB menawarkan plugin ed25519 sebagai gantinya yang tampaknya menjadi alternatif yang baik untuk metode otentikasi lama.

Dukungan MariaDB untuk enkripsi pada tabel dan tablespace telah ditambahkan di versi 10.1.3. Dengan tabel Anda dienkripsi, data Anda hampir tidak mungkin dicuri oleh seseorang. Jenis enkripsi ini juga memungkinkan organisasi Anda untuk mematuhi peraturan pemerintah seperti GDPR.

MariaDB mendukung kumpulan utas koneksi, yang paling efektif dalam situasi di mana kueri relatif pendek dan beban terikat pada CPU. Pada edisi komunitas MySQL, jumlah utas statis, yang membatasi fleksibilitas dalam situasi ini. Paket perusahaan MySQL mencakup kemampuan threadpool.

MySQL 8.0 menyertakan skema sys, satu set objek yang membantu administrator database dan insinyur perangkat lunak menafsirkan data yang dikumpulkan oleh Skema Kinerja. Objek skema sistem dapat digunakan untuk kasus penggunaan optimasi dan diagnosis. MariaDB tidak menyertakan peningkatan ini.

Satu lagi adalah kolom tak terlihat. Kolom tak terlihat memberikan fleksibilitas untuk menambahkan kolom ke tabel yang ada tanpa takut merusak aplikasi. Fitur ini tidak tersedia di MySQL. Ini memungkinkan pembuatan kolom yang tidak tercantum dalam hasil pernyataan SELECT *, juga tidak perlu diberi nilai dalam pernyataan INSERT saat namanya tidak disebutkan dalam pernyataan.

MariaDB memutuskan untuk tidak mengimplementasikan dukungan JSON asli (salah satu fitur utama MySQL 5.7 dan 8.0) karena mereka mengklaim itu bukan bagian dari standar SQL. Sebagai gantinya, untuk mendukung replikasi dari MySQL, mereka hanya mendefinisikan alias untuk JSON, yang sebenarnya adalah kolom LONGTEXT. Untuk memastikan bahwa dokumen JSON yang valid dimasukkan, fungsi JSON_VALID dapat digunakan sebagai batasan CHECK (default untuk MariaDB 10.4.3). MariaDB tidak dapat mengakses format MySQL JSON secara langsung.

Oracle mengotomatiskan banyak tugas dengan MySQL Shell. Selain SQL, MySQL Shell juga menawarkan kemampuan skrip untuk JavaScript dan Python.

Proses Migrasi Menggunakan mysqldump

Setelah kami mengetahui keterbatasan kami, proses instalasi cukup sederhana. Ini cukup banyak terkait dengan instalasi standar dan impor menggunakan mysqldump. Alat pencadangan MySQL Enterprise tidak kompatibel dengan MariaDB sehingga cara yang disarankan adalah menggunakan mysqldump. Berikut adalah contoh proses yang dilakukan pada Centos 7 dan MariaDB 10.3.

Buat dump di server MySQL Enterprise

$ mysqldump --routines --events --triggers --single-transaction db1 > export_db1.sql

Bersihkan indeks cache yum

sudo yum makecache fast

Instal MariaDB 10.3

sudo yum -y install MariaDB-server MariaDB-client

Mulai layanan MariaDB.

sudo systemctl start mariadb
sudo systemctl enable mariadb

Amankan MariaDB dengan menjalankan mysql_secure_installation.

# mysql_secure_installation 

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

Impor sampah

Mysql -uroot -p
> tee import.log
> source export_db1.sql
Review the import log.

$vi import.log

Untuk menerapkan lingkungan, Anda juga dapat menggunakan ClusterControl yang memiliki opsi untuk menerapkan dari awal.

ClusterControl Menyebarkan MariaDB

ClusterControl juga dapat digunakan untuk mengatur replikasi atau mengimpor cadangan dari MySQL Enterprise Edition.

Proses Migrasi Menggunakan Replikasi

Pendekatan lain untuk migrasi antara MySQL Enterprise dan MariaDB adalah dengan menggunakan proses replikasi. Versi MariaDB memungkinkan untuk mereplikasinya, dari database MySQL - yang berarti Anda dapat dengan mudah memigrasikan database MySQL ke MariaDB. Versi MySQL Enterprise tidak mengizinkan replikasi dari server MariaDB, jadi ini adalah rute satu arah.

Berdasarkan dokumentasi MariaDB:https://mariadb.com/kb/en/library/mariadb-vs- kompatibilitas mysql/. X mengacu pada dokumentasi MySQL.Sumber daya terkait ClusterControl untuk MariaDB Yang Baru di MariaDB 10.4 Cara Mengelola MySQL - untuk Oracle DBA

Berikut adalah beberapa aturan umum yang ditunjukkan oleh MariaDB.

  • Mereplikasi dari MySQL 5.5 ke MariaDB 5.5+ seharusnya bisa. Anda ingin MariaDB menjadi versi yang sama atau lebih tinggi dari server MySQL Anda.
  • Saat menggunakan MariaDB 10.2+ sebagai slave, mungkin perlu menyetel binlog_checksum ke NONE.
  • Mereplikasi dari MySQL 5.6 tanpa GTID ke MariaDB 10+ seharusnya bisa.
  • Replikasi dari MySQL 5.6 dengan GTID, binlog_rows_query_log_events, dan peristiwa yang dapat diabaikan berfungsi mulai dari MariaDB 10.0.22 dan MariaDB 10.1.8. Dalam hal ini, MariaDB akan menghapus MySQL GTID dan event lain yang tidak dibutuhkan dan sebagai gantinya menambahkan GTID-nya sendiri.

Bahkan jika Anda tidak berencana untuk menggunakan replikasi dalam proses migrasi/pengalihan, memilikinya adalah pembangun kepercayaan yang baik adalah dengan mereplikasi server produksi Anda pada kotak pasir pengujian, lalu mempraktikkannya.

Kami harap entri blog pengantar ini membantu Anda memahami penilaian dan proses implementasi MySQL Enterprise Migration 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. 8 Cara Menambahkan Satu Jam ke Datetime di MariaDB

  2. 4 Cara untuk Memeriksa apakah Tabel Ada di MariaDB

  3. Perbaiki "ERROR 1136 (21S01):Jumlah kolom tidak cocok dengan jumlah nilai pada baris 1" saat Memasukkan Data di MariaDB

  4. Bagaimana POW() Bekerja di MariaDB

  5. Pencadangan Basis Data - Membandingkan MariaDB Mariabackup dan Percona Xtrabackup