Sambungkan kluster PolarDB for MySQL ke OpenSearch sebagai sumber data untuk menyinkronkan data secara otomatis ke indeks pencarian Anda. OpenSearch menarik data lengkap sesuai permintaan atau berdasarkan jadwal, serta menjaga indeks tetap mutakhir dengan perubahan inkremental melalui binary logging.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Kluster PolarDB for MySQL yang menjalankan versi 5.6, 5.7, atau 8.0
Kluster berada di wilayah yang sama dengan aplikasi OpenSearch Anda
Kluster dibuat di bawah Akun Alibaba Cloud yang sama yang Anda gunakan untuk masuk ke Konsol OpenSearch (OpenSearch tidak dapat mengakses kluster milik akun lain)
Binary logging diaktifkan pada kluster (secara default dinonaktifkan — lihat Aktifkan binary logging di bawah ini)
Aktifkan binary logging
Tetapkan parameter berikut di kluster PolarDB for MySQL Anda sebelum menambahkannya sebagai sumber data:
| Parameter | Nilai yang diperlukan | Default | Catatan |
|---|---|---|---|
loose_polar_log_bin | ON_WITH_GTID | OFF | Mengaktifkan binary logging dengan mode GTID |
binlog_row_image | FULL | FULL | Sudah diatur dengan benar secara default; verifikasi bahwa nilainya belum diubah |
Untuk mengubah parameter ini, buka halaman Parameter Configuration di Konsol PolarDB.
Jika binary logging tidak diaktifkan, proses pengindeksan ulang (reindexing) mungkin terhenti. Jika hal ini terjadi, buat tabel uji di database sumber dan tulis atau perbarui satu atau dua baris per menit untuk menghasilkan log biner secara kontinu hingga proses pengindeksan ulang selesai.
Siapkan akun database
Akun database yang digunakan untuk menghubungkan sumber data memerlukan izin untuk membaca semua tabel di database sumber melalui Data Transmission Service (DTS). Verifikasi bahwa:
Akun tersebut dapat menjalankan
SHOW CREATE TABLE *.*dengan sukses.Akun tersebut memiliki izin
SELECTpada semua tabel yang ingin Anda sinkronkan.
Jangan mengubah akun database atau izinnya setelah sumber data dikonfigurasi. Perubahan akun akan menghentikan sinkronisasi real-time dan dapat mencegah pembuatan versi aplikasi baru. Jika Anda harus mengubah kredensial akun, hapus sumber data tersebut lalu tambahkan kembali dengan kredensial baru.
Tambahkan alamat IP OpenSearch ke daftar putih kluster
OpenSearch mengakses kluster PolarDB for MySQL Anda dari sekumpulan alamat IP tetap. Tambahkan blok CIDR untuk wilayah Anda ke daftar putih alamat IP kluster.
| Wilayah | Blok CIDR |
|---|---|
| Tiongkok (Hangzhou) | 100.104.190.128/26, 100.104.241.128/26 |
| Tiongkok (Beijing) | 100.104.16.192/26, 100.104.179.0/26 |
| Tiongkok (Shanghai) | 100.104.37.0/26, 100.104.46.0/26 |
| Tiongkok (Shenzhen) | 100.104.87.192/26, 1100.104.132.192/26 |
| Tiongkok (Qingdao) | 100.104.240.128/26, 1100.104.111.128/26 |
| Tiongkok (Zhangjiakou) | 100.104.155.192/26, 100.104.238.64/26 |
| Jerman (Frankfurt) | 100.104.127.0/26, 100.104.35.192/26 |
| AS (Silicon Valley) dan AS (Virginia) | 100.104.193.128/26, 100.104.119.128/26 |
| Singapura | 100.104.58.192/26, 100.104.74.192/26 |
Tidak ada biaya trafik yang dikenakan saat OpenSearch mengakses data PolarDB for MySQL, baik menggunakan titik akhir internal maupun publik. Anda dapat beralih antar titik akhir kapan saja.
Sambungkan sumber data PolarDB for MySQL
Konfigurasikan sumber data PolarDB for MySQL saat Anda membuat aplikasi baru. Untuk menambahkan sumber data ke aplikasi yang sudah ada, gunakan perubahan offline.
Pada panel Select Data Source, pilih PolarDB lalu klik Connect to Database.
Isi parameter koneksi lalu klik Connect. Jika koneksi gagal, OpenSearch akan menampilkan error:
Parameter Deskripsi Cluster ID ID kluster PolarDB for MySQL Anda. Temukan di Konsol PolarDB. ID ini bersifat case-sensitive. Contoh: pc-uf6c056ny9tiaj1l7Database Name Nama database yang akan disambungkan. Tidak case-sensitive. Username Akun database untuk membaca skema tabel dan data lengkap. Case-sensitive. Password Kata sandi untuk akun database. Tidak boleh mengandung tanda persen ( %).Error Resolusi Kluster PolarDB for MySQL tidak berada di wilayah yang sama dengan aplikasi OpenSearch. Verifikasi Cluster ID dan pastikan kluster serta aplikasi berada di wilayah yang sama. Jika wilayahnya cocok tetapi error tetap muncul, kirim tiket. Koneksi ke sumber data PolarDB for MySQL gagal. Periksa apakah Cluster ID, nama database, username, dan password semuanya benar. Tabel tidak ada di kluster PolarDB for MySQL saat ini. Verifikasi nama tabel dan pastikan tabel tersebut ada di kluster. Konfigurasi kluster PolarDB for MySQL tidak valid. Buka halaman konfigurasi parameter kluster ini di Konsol PolarDB dan perbaiki pengaturannya. Pilih tabel yang akan disinkronkan lalu klik OK.
Nama tabel bersifat case-sensitive.
Gunakan tanda bintang (
*) sebagai wildcard untuk mencocokkan beberapa tabel dengan awalan nama yang sama. Misalnya,table_*akan mencocokkantable_a,table_b, dan tabel serupa lainnya. Semua tabel yang cocok harus memiliki skema yang sama.
Konfigurasikan pemetaan bidang. OpenSearch secara otomatis memuat bidang sumber dari tabel. Petakan bidang tersebut ke bidang tujuan di aplikasi Anda. Untuk detail tentang mentransformasi nilai bidang selama sinkronisasi, lihat Plugin pemrosesan data.
Tentukan kondisi filter untuk mengontrol baris mana yang disinkronkan, lalu klik Submit untuk menyimpan skema aplikasi. Untuk detail sintaks filter, lihat Konfigurasikan kondisi untuk memfilter bidang di sumber data ApsaraDB RDS dan PolarDB.
Kondisi filter tidak didukung untuk aplikasi standar.
Cara kerja sinkronisasi data
Memahami cara OpenSearch memproses setiap baris membantu Anda memprediksi perilaku indeks dan menghindari ketidakkonsistenan data.
Sinkronisasi data lengkap
OpenSearch menarik semua baris dari database utama. Untuk setiap baris:
Jika baris tersebut belum ada di indeks, OpenSearch membuat dokumen baru.
Jika baris tersebut sudah ada di indeks, OpenSearch mengganti dokumen yang ada.
Baris yang tidak memenuhi kondisi filter tidak dimasukkan ke dalam indeks. Baris yang nilai kunci primernya cocok dengan dokumen yang sudah ada di tabel tujuan juga tidak dimasukkan.
Setelah sinkronisasi data lengkap selesai, OpenSearch beralih ke sinkronisasi inkremental menggunakan log biner untuk menerapkan perubahan berikutnya hampir secara real time.
Sinkronisasi inkremental
OpenSearch menangkap perubahan tingkat baris melalui log biner. Jika tidak ada data inkremental yang dihasilkan di sumber selama 15 hari atau lebih, sinkronisasi data mungkin gagal. Pulihkan dengan memicu perubahan offline manual. Untuk detailnya, lihat Lakukan perubahan offline.
Fitur yang didukung
Sinkronisasi data lengkap terjadwal atau sesuai permintaan: Tarik semua data di database atau tabel sumber secara manual, atau berdasarkan jadwal otomatis.
Penggabungan baris multi-tabel: Gabungkan baris dari beberapa tabel di satu atau beberapa sumber data menjadi satu tabel di aplikasi Anda. Tabel sumber harus memiliki skema yang sama dan konfigurasi plugin pemrosesan data yang identik. Nilai kunci primer duplikat dapat ditimpa.
Transformasi nilai bidang: Gunakan plugin pemrosesan data untuk mengonversi nilai bidang sumber sebelum diindeks.
Kondisi filter: Terapkan kondisi filter untuk hanya menyertakan baris yang cocok dari data lengkap atau inkremental.
Pencocokan tabel dengan wildcard: Gunakan
*untuk mencocokkan tabel dengan awalan nama yang sama.Instans klon: Kluster PolarDB for MySQL mendukung instans klon sebagai sumber data.
Pemisahan baca/tulis: Kluster PolarDB for MySQL mendukung pemisahan baca/tulis.
Batasan
| Batasan | Detail |
|---|---|
| Versi yang didukung | Hanya PolarDB for MySQL 5.6, 5.7, dan 8.0 |
| Persyaratan akun yang sama | Kluster PolarDB for MySQL harus dibuat oleh Akun Alibaba Cloud yang sama yang digunakan untuk mengakses Konsol OpenSearch |
| Persyaratan wilayah yang sama | Kluster dan aplikasi OpenSearch harus berada di wilayah yang sama |
| Aplikasi standar | Tidak dapat menggunakan SDK atau operasi API OpenSearch untuk mendorong data inkremental. Kondisi filter tidak didukung. |
| Pernyataan SQL yang tidak didukung | REPLACE INTO, TRUNCATE, dan DROP tidak didukung. Gunakan DELETE untuk menghapus data. |
| Pembatasan kata sandi | Kata sandi tidak boleh mengandung tanda persen (%). Kata sandi yang mengandung % menyebabkan pengindeksan ulang gagal dengan error "Illegal hex characters in escape (%) pattern". |
| Penggabungan bidang lintas-skema | Tidak dapat menggabungkan nilai bidang dari tabel sumber yang menggunakan skema berbeda |
| Rekomendasi parameter | Atur loose_max_statement_time dan connect_timeout ke 0 sebelum melakukan pengindeksan ulang atau perubahan offline. Sesuaikan nilainya berdasarkan beban kerja Anda setelah sinkronisasi data lengkap selesai. |
Catatan penggunaan
Tipe data
Bidang bertipe
DATETIMEatauTIMESTAMPdi tabel sumber dikonversi ke milidetik. Atur tipe bidang tujuan yang sesuai keTIMESTAMPdi aplikasi Anda.Saat memfilter baris berdasarkan bidang
DATEatauDATETIME, gunakan format lengkap:createtime>'2018-03-01 00:00:00'. Format pendek seperti'2018-3-1 00:00:00'akan menghasilkan error.
Beberapa sumber data
Konfigurasikan beberapa sumber data untuk satu tabel aplikasi, asalkan tabel sumber memiliki skema dan konfigurasi plugin pemrosesan data yang sama.
Jika sumber data ApsaraDB RDS for MySQL atau PolarDB dilampirkan ke instans PolarDB-X, tentukan nama shard database yang benar-benar digunakan di instans PolarDB-X. Setelah sharding database, setiap database logis di PolarDB-X memiliki satu database shadow dan delapan shard. Data ditulis ke shard secara acak.
Waktu impor data lengkap
OpenSearch hanya menarik data lengkap dari database utama. Jadwalkan impor data lengkap dan pembuatan ulang indeks selama jam sepi.
Enkripsi SSL
Jika enkripsi SSL diaktifkan pada kluster PolarDB for MySQL Anda, pastikan sertifikat SSL tetap valid. Sertifikat yang kedaluwarsa menyebabkan kegagalan koneksi.
Pemecahan masalah
Pengindeksan ulang terhenti setelah sumber data dikonfigurasi
Log biner mungkin tidak dihasilkan secara kontinu. Buat tabel uji di database sumber dan tulis atau perbarui satu atau dua baris per menit hingga proses pengindeksan ulang selesai. Hal ini memastikan aliran event log biner yang stabil.
Pengindeksan ulang gagal karena pembayaran tertunda
Jika aplikasi advanced yang dikonfigurasi dengan sumber data PolarDB for MySQL memiliki pembayaran tertunda, lunasi saldo yang tertunggak, lalu picu pengindeksan ulang secara manual dari Konsol OpenSearch.
Kunci primer duplikat saat menyinkronkan dari beberapa tabel
Saat Anda menyinkronkan dari beberapa tabel sumber dengan skema yang sama, nilai kunci primer duplikat di antara tabel menyebabkan dokumen saling menimpa. Untuk membuat kunci unik, gunakan plugin StringCatenateExtractor untuk menggabungkan kunci primer asli dengan nama tabel.
Tetapkan bidang sumber ke pk (ganti dengan nama bidang kunci primer aktual Anda) dan $table (variabel sistem yang berisi nama tabel), lalu gunakan tanda hubung (-) atau karakter kustom lain sebagai pemisah.
Misalnya, jika tabelnya adalah my_table_0 dan nilai kunci primernya adalah 123456, kunci gabungannya menjadi 123456-my_table_0.