Rumah  >  Artikel  >  pangkalan data  >  Apakah cara untuk menyegerakkan data MySQL ke Elasticsearch?

Apakah cara untuk menyegerakkan data MySQL ke Elasticsearch?

王林
王林ke hadapan
2023-05-30 20:49:041014semak imbas

1. Penyegerakan lapisan perniagaan

Memandangkan operasi data MySQL juga selesai dalam lapisan perniagaan, adalah wajar untuk menyegerakkan sumber data lain dalam lapisan perniagaan Pendekatan yang lebih biasa ialah menggunakan ORM Write kod penyegerakan yang berkaitan dalam cangkuk cangkuk.

Kelemahan pendekatan ini ialah apabila semakin banyak perkhidmatan, bahagian penyegerakan mungkin terlalu berselerak, menjadikannya sukar untuk mengemas kini lelaran Sebagai contoh, penghijrahan indeks ES yang tidak serasi mungkin terjejas .

2. Penyegerakan middleware

Apabila seni bina aplikasi berkembang menjadi perkhidmatan mikro, setiap perkhidmatan mungkin tidak lagi memanggil MySQL secara langsung, tetapi melalui lapisan middleware middleware pada masa ini, ia boleh The middleware beroperasi MySQL semasa menyegerakkan sumber data lain.

Kaedah ini memerlukan perisian tengah untuk menyesuaikan diri dan mempunyai kerumitan tertentu.

3. Tugas berjadual disegerakkan berdasarkan medan updated_at

Tetapkan medan khas dalam struktur jadual MySQL, seperti updated_at (masa kemas kini data Berdasarkan medan ini, pertanyaan tugas yang dijadualkan). data Berubah sebenar untuk mencapai kemas kini tambahan data.

Anda boleh menggunakan Logstash sumber terbuka untuk melengkapkan kaedah ini.

Sudah tentu, kelemahannya juga jelas, iaitu operasi pemadaman data tidak boleh disegerakkan.

4. Menghuraikan penyegerakan binlog

Contohnya, terusan yang terkenal.

Menyamar sebagai hamba untuk menghuraikan log binari MySQL untuk mengetahui tentang perubahan data.

Ini adalah penyelesaian yang agak matang dalam industri.

Kaedah ini memerlukan anda menetapkan mod binlog-format MySQL kepada ROW.

5. Parse binlog — format campuran / pernyataan

MySQL binlog mempunyai tiga format:

  • ROW mod, binlog mengikut baris ke rekod perubahan data; dalam mod

  • statement, binlog merekodkan pernyataan SQL; rekod mungkin merupakan pernyataan SQL atau setiap baris perubahan corak

  • Dalam beberapa kes, MySQL mixed anda mungkin tidak ditetapkan kepada mod ROW, pada masa ini masa, kita masih boleh menghuraikan binlog secara seragam untuk melengkapkan penyegerakan, tetapi sudah tentu apa yang dihuraikan di sini masih pernyataan SQL asal atau setiap perubahan baris mod

    Pada masa ini, kita perlu menganalisisnya mengikut business Parsing SQL ini atau perubahan dalam setiap baris, seperti menggunakan padanan biasa atau pokok sintaks abstrak AST, dsb., dan kemudian segerakkan data berdasarkan hasil penghuraian.
Keterbatasan kaedah ini juga jelas Pertama, anda perlu menyesuaikan SQL analisis perniagaan anda Kedua, senario kemas kini kelompok mungkin sukar dikendalikan, jika data anda hanya diubah suai kunci, Atau memadamkannya akan berfungsi dengan lebih baik.

Atas ialah kandungan terperinci Apakah cara untuk menyegerakkan data MySQL ke Elasticsearch?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam