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

Apa yang Baru di MySQL Galera Cluster 4.0

MySQL Galera Cluster 4.0 adalah anak baru di blok database dengan fitur baru yang sangat menarik. Saat ini hanya tersedia sebagai bagian dari MariaDB 10.4 tetapi di masa depan akan bekerja juga dengan MySQL 5.6, 5.7 dan 8.0. Dalam posting blog ini kami ingin membahas beberapa fitur baru yang menyertai Galera Cluster 4.0.

Replikasi Streaming Cluster Galera

Fitur baru yang paling penting dalam rilis ini adalah replikasi streaming. Sejauh ini proses sertifikasi untuk Galera Cluster berjalan dengan cara yang seluruh transaksi harus disertifikasi setelah selesai.

Proses ini tidak ideal dalam beberapa skenario...

  1. Hotspot dalam tabel, baris yang sangat sering diperbarui pada banyak node - ratusan transaksi cepat yang berjalan di beberapa node, memodifikasi kumpulan baris yang sama mengakibatkan seringnya deadlock dan rollback transaksi
  2. Transaksi berjalan lama - jika sebuah transaksi membutuhkan waktu yang signifikan untuk diselesaikan, ini secara serius meningkatkan kemungkinan bahwa beberapa transaksi lain, sementara itu, pada node lain, dapat mengubah beberapa baris yang juga diperbarui oleh transaksi yang panjang. Hal ini mengakibatkan kebuntuan selama sertifikasi dan salah satu transaksi harus dibatalkan.
  3. Transaksi besar - jika suatu transaksi mengubah sejumlah besar baris, kemungkinan besar transaksi lain, pada saat yang sama, pada simpul yang berbeda, akan memodifikasi salah satu baris yang telah dimodifikasi oleh transaksi besar tersebut. Hal ini menyebabkan kebuntuan selama sertifikasi dan salah satu transaksi harus dibatalkan. Selain itu, transaksi besar akan membutuhkan waktu tambahan untuk diproses, dikirim ke semua node di cluster dan disertifikasi. Ini bukan situasi yang ideal karena menambah penundaan pada commit dan memperlambat seluruh cluster.

Untungnya, replikasi streaming dapat mengatasi masalah ini. Perbedaan utama adalah bahwa sertifikasi terjadi dalam potongan di mana tidak perlu menunggu seluruh transaksi selesai. Akibatnya, bahkan jika transaksi besar atau panjang, sebagian besar (atau semua, tergantung pada pengaturan yang akan kita bahas sebentar lagi) baris dikunci pada semua node, mencegah kueri lain untuk memodifikasinya.

Opsi Replikasi Streaming Cluster MySQL Galera

Ada dua opsi konfigurasi untuk replikasi streaming: 

wsrep_trx_fragment_size 

Ini memberitahu seberapa besar sebuah fragmen seharusnya (secara default disetel ke 0, yang berarti replikasi streaming dinonaktifkan)

wsrep_trx_fragment_unit 

Ini memberi tahu apa sebenarnya fragmen itu. Secara default adalah byte, tetapi juga bisa berupa 'pernyataan' atau 'baris'.

Variabel tersebut dapat (dan seharusnya) disetel pada tingkat sesi, sehingga memungkinkan pengguna untuk memutuskan kueri tertentu mana yang harus direplikasi menggunakan replikasi streaming. Menyetel unit ke 'pernyataan' dan ukuran ke 1 memungkinkan, misalnya, menggunakan replikasi streaming hanya untuk satu kueri yang, misalnya, memperbarui hotspot.

Anda dapat mengonfigurasi Galera 4.0 untuk mengesahkan setiap baris yang telah Anda modifikasi dan mengunci semua node saat melakukannya. Hal ini membuat replikasi streaming hebat dalam memecahkan masalah dengan seringnya deadlock yang, sebelum Galera 4.0, hanya dapat diselesaikan dengan mengarahkan semua penulisan ke satu node.

Tabel WSREP

Galera 4.0 memperkenalkan beberapa tabel, yang akan membantu memantau status cluster:

  • wsrep_cluster
  • wsrep_cluster_members
  • wsrep_streaming_log

Semuanya terletak di skema 'mysql'. wsrep_cluster akan memberikan wawasan tentang status cluster. wsrep_cluster_members akan memberi Anda informasi tentang node yang merupakan bagian dari cluster. wsrep_streaming_log membantu melacak status replikasi streaming.

Fitur Mendatang Cluster Galera

Codership, perusahaan di balik Galera, belum selesai. Kami bisa mendapatkan preview roadmap dari CEO Seppo Jaakola yang diberikan di Percona Live awal tahun ini. Rupanya, kita akan melihat fitur-fitur seperti dukungan transaksi XA dan enkripsi gcache. Ini benar-benar berita bagus.

Dukungan untuk transaksi XA akan dimungkinkan berkat replikasi streaming. Singkatnya, transaksi XA adalah transaksi terdistribusi yang dapat berjalan di beberapa node. Mereka menggunakan komit dua fase, yang pertama-tama membutuhkan semua kunci yang diperlukan untuk menjalankan transaksi di semua node dan kemudian, setelah selesai, komit perubahan. Di versi sebelumnya, Galera tidak memiliki sarana untuk mengunci sumber daya pada node jarak jauh, dengan replikasi streaming, ini telah berubah.

Gcache adalah file yang menyimpan writeset. Isinya dikirim ke node joiner yang meminta transfer data. Jika semua data disimpan di gcache, joiner hanya akan menerima transaksi yang hilang dalam proses yang disebut Incremental State Transfer (IST). Jika gcache tidak berisi semua data yang diperlukan, State Snapshot Transfer (SST) akan diperlukan dan seluruh dataset harus ditransfer ke node yang bergabung.

Gcache berisi informasi tentang perubahan terbaru, oleh karena itu sangat bagus untuk melihat kontennya dienkripsi untuk keamanan yang lebih baik. Dengan diperkenalkannya standar keamanan yang lebih baik melalui semakin banyak peraturan, perangkat lunak akan menjadi lebih baik dalam mencapai kepatuhan.

Kesimpulan

Kami sangat menantikan untuk melihat bagaimana Galera Cluster 4.0 akan bekerja pada database daripada MariaDB. Mampu menggunakan MySQL 5.7 atau 8.0 dengan Galera Cluster akan sangat bagus. Bagaimanapun, Galera adalah salah satu solusi replikasi sinkron yang paling banyak diuji yang tersedia di pasar.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Otomasi Basis Data dengan Wayang:Menyebarkan Replikasi MySQL &MariaDB

  2. Bagaimana RLIKE Bekerja di MariaDB

  3. Ubah Hasil Kueri menjadi Daftar Dipisahkan Koma di MariaDB

  4. Mengumumkan ClusterControl 1.7.3:Peningkatan Dukungan PostgreSQL &Opsi Penerapan Cloud Baru

  5. Bagaimana REPLACE() Bekerja di MariaDB