Saat Anda perlu melakukan pencarian teks lengkap atau analisis kompleks pada data bisnis di PolarDB for MySQL, mengoperasikan database secara langsung dapat memengaruhi stabilitas beban kerja transaksi inti. Fitur AutoETL yang disediakan oleh PolarSearch node pada PolarDB menyinkronkan data secara terus-menerus dan otomatis dari node baca/tulis ke node PolarSearch dalam kluster yang sama, sehingga menyediakan layanan data terpadu. Anda dapat menggunakan tampilan pencarian atau prosedur tersimpan ETL untuk membuat tautan sinkronisasi data tanpa perlu men-deploy atau memelihara alat ETL tambahan, sehingga mencapai sinkronisasi data sekaligus mengisolasi beban kerja pencarian dan analisis dari beban kerja pemrosesan transaksi online.
Saat Anda menggunakan AutoETL untuk membuat tautan, Anda secara default memberikan otorisasi kepada mesin AutoETL untuk mengakses data PolarDB guna keperluan sinkronisasi data.
Ikhtisar
AutoETL adalah kemampuan sinkronisasi data bawaan dari PolarDB for MySQL. Fitur ini memungkinkan aliran data otomatis antara berbagai jenis node dalam kluster yang sama. Versi saat ini hanya mendukung sinkronisasi dari PolarDB for MySQL ke node PolarSearch dalam kluster yang sama untuk pencarian dan analisis berkinerja tinggi.
AutoETL menyediakan dua metode untuk membuat tautan sinkronisasi data:
Tampilan pencarian: Gunakan sintaks
CREATE SEARCH VIEWuntuk menentukan logika sinkronisasi data dalam SQL standar. Cocok untuk sebagian besar skenario sinkronisasi tabel tunggal dan agregasi multi-tabel. Sistem secara otomatis menangani detail koneksi tingkat dasar.Prosedur tersimpan ETL (
dbms_etl.sync_by_sql): Gunakan sintaks kompatibel Flink SQL untuk menentukan logika pembersihan data, transformasi, dan agregasi kompleks melalui prosedur tersimpan.
Lingkup penerapan
Sebelum menggunakan AutoETL, pastikan persyaratan berikut terpenuhi:
Versi kluster:
Tampilan pencarian:
MySQL 8.0.1. Versi revisi harus 8.0.1.1.54 atau lebih baru.
MySQL 8.0.2. Versi revisi harus 8.0.2.2.34 atau lebih baru.
Prosedur tersimpan ETL (sync_by_sql):
MySQL 8.0.1. Versi revisi harus 8.0.1.1.52 atau lebih baru.
MySQL 8.0.2. Versi revisi harus 8.0.2.2.33 atau lebih baru.
Binlog: Kluster harus memiliki Enable binary logging yang diaktifkan.
Arah sinkronisasi: Hanya sinkronisasi dari PolarDB for MySQL ke PolarSearch node.
Batasan DDL: Saat melakukan operasi DDL pada tabel sumber yang memiliki tampilan pencarian atau prosedur tersimpan ETL, ikuti aturan tertentu untuk menghindari gangguan sinkronisasi. Beberapa perubahan yang tidak kompatibel memerlukan pembuatan ulang tampilan pencarian. Untuk informasi lebih lanjut, lihat Aturan dan praktik terbaik perubahan DDL.
Tipe data: Tipe
BITdan tipe data spasial sepertiGEOMETRY、POINT、LINESTRING、POLYGON、MULTIPOINT、MULTILINESTRING、MULTIPOLYGON、GEOMETRYCOLLECTIONtidak didukung untuk sinkronisasi.Batasan kueri tampilan pencarian: Tampilan pencarian saat ini hanya mendukung penentuan semantik sinkronisasi dan tidak mendukung kueri data. Untuk mengkueri data, hubungkan langsung ke PolarSearch node.
Sumber daya komputasi: AutoETL menggunakan CU sebagai unit komputasi. Secara default, jumlah CU dalam kluster adalah dua kali jumlah total CPU semua node PolarSearch node. Anda dapat melihat penggunaan CU kluster saat ini di halaman , pada tab AutoETL.
Tampilan pencarian
Tampilan pencarian adalah mekanisme sinkronisasi data deklaratif yang disediakan oleh AutoETL. Anda dapat menggunakan sintaks SQL standar untuk membuat tampilan pencarian, dan sistem secara otomatis membuat tautan sinkronisasi data berkelanjutan dari tabel sumber ke PolarSearch node.
Buat tampilan pencarian
Sintaks
CREATE SEARCH VIEW view_name [(column_list, PRIMARY KEY (pk_column_list))]
[WITH (option_list)]
AS select_statement;Parameter
Parameter | Wajib | Deskripsi |
| Ya | Nama tampilan pencarian, yang juga merupakan nama indeks target di PolarSearch node. |
| Tidak | Tentukan secara manual kolom-kolom tampilan pencarian. Pisahkan beberapa kolom dengan Catatan Pada sinkronisasi tabel tunggal, Anda tidak perlu menentukan |
| Tidak | Kolom kunci primer tampilan pencarian. Struktur ini sesuai dengan pemetaan indeks di PolarSearch node, sehingga Jika tidak ditentukan, kolom pertama dari |
| Tidak | Konfigurasi sinkronisasi yang secara eksplisit ditentukan saat membuat tampilan pencarian, seperti paralelisme sinkronisasi, penggunaan sumber daya komputasi per pekerja sinkronisasi, dan nama indeks tujuan. Pisahkan beberapa konfigurasi dengan |
| Ya | Pernyataan |
Batasan dan catatan penggunaan
Tabel sumber harus berisi kunci primer atau kunci unik.
Anda harus memiliki izin
ALTERpada semua tabel sumber dalam tampilan pencarian, serta izinSELECTpada kolom terkait atau seluruh tabel.Setelah tampilan pencarian dibuat, kolom baru yang ditambahkan ke tabel sumber tidak disinkronkan secara otomatis. Untuk menyinkronkan kolom baru, lihat Ubah tampilan pencarian.
Untuk menggunakan konfigurasi indeks tujuan khusus, Anda dapat terlebih dahulu membuat indeks di PolarSearch node dan menentukan konfigurasinya secara manual, lalu membuat tampilan pencarian. Jika indeks tujuan belum ada saat pembuatan, sistem akan membuatnya secara otomatis.
Untuk mengonfigurasi parameter sinkronisasi lanjutan untuk agregasi multi-tabel atau kueri kompleks, seperti konversi bidang JSON dan bidang routing, lihat Konfigurasi parameter AutoETL dan praktik terbaik.
Persiapan data
Anda dapat membuat data uji yang digunakan dalam contoh berikut dengan menjalankan pernyataan SQL berikut di PolarDB for MySQL.
CREATE DATABASE IF NOT EXISTS db1;
CREATE DATABASE IF NOT EXISTS db2;
USE db1;
CREATE TABLE IF NOT EXISTS t1 (
id INT PRIMARY KEY,
c1 VARCHAR(100),
c2 VARCHAR(100)
);
INSERT INTO t1(id, c1, c2) VALUES
(1, 'apple', 'red'),
(2, 'banana', 'yellow'),
(3, 'grape', 'purple');
USE db2;
CREATE TABLE IF NOT EXISTS t2 (id INT PRIMARY KEY, c2 INT);
INSERT INTO t2(id, c2) VALUES (1, 111), (2, 222), (4, 444);Contoh
Sinkronisasi tabel lengkap: Sinkronkan
db1.t1ke PolarSearch. Nama tampilanview_testjuga merupakan nama indeks target di PolarSearch.CREATE SEARCH VIEW view_test AS SELECT * FROM db1.t1;Sinkronisasi kolom tertentu: Sinkronkan hanya kolom
c1danc2, serta tentukan secara manual tipe kolom dan kunci primernya.CREATE SEARCH VIEW view_test1 AS SELECT c1, c2 FROM db1.t1;Parameter sinkronisasi tertentu: Tentukan konfigurasi sinkronisasi melalui klausa
WITHsaat membuat tampilan pencarian. Contoh berikut menyinkronkan kolomdb1.t1c1danc2ke PolarSearch dan mengatur paralelisme sinkronisasi menjadi 2.CREATE SEARCH VIEW view_test6 WITH ('parallelism' = '2') AS SELECT c1, c2 FROM db1.t1;Sinkronisasi filter bersyarat: Sinkronkan hanya data yang memenuhi kondisi
WHERE.CREATE SEARCH VIEW view_test2 AS SELECT id, c1, c2 FROM db1.t1 WHERE c1 > 10;JOIN multi-tabel: Gabungkan
db1.t1dandb2.t2melaluiiddan sinkronkan hasilnya ke PolarSearch.CREATE SEARCH VIEW view_test3(id, c1, c2) AS SELECT t1.id, t1.c1, t2.c2 FROM db1.t1 AS t1 LEFT JOIN db2.t2 AS t2 ON t1.id = t2.id;UNION multi-tabel: Gabungkan beberapa tabel dengan struktur yang sama dan sinkronkan. Setiap pernyataan
SELECTharus memiliki jumlah dan tipe kolom yang sama.CREATE SEARCH VIEW view_test4(id, c2) AS SELECT id, c2 FROM db1.t1 UNION ALL SELECT id, c2 FROM db2.t2;Agregasi kelompok: Sinkronkan data setelah agregasi kelompok. Saat menggunakan
GROUP BY, Anda harus menentukan kolom dan kunci primer secara manual.CREATE SEARCH VIEW view_test5 (id, max_c) AS SELECT t1.id, MAX(t1.c1) AS max_c FROM db1.t1 GROUP BY t1.id;
Verifikasi data
Periksa status sinkronisasi tampilan pencarian:
SHOW SEARCH VIEW STATUS;Saat statusnya active, sinkronisasi data tampilan pencarian berjalan normal. Hubungkan ke PolarSearch node, gunakan REST API kompatibel Elasticsearch untuk memverifikasi data:
# Ganti <user>:<password> dengan kredensial node PolarSearch dan <polarsearch_endpoint> dengan titik akhir dan port node PolarSearch
curl -u <user>:<password> -X GET "http://<polarsearch_endpoint>/view_test/_search"Kelola tampilan pencarian
Anda dapat menggunakan perintah berikut untuk melihat tampilan pencarian yang telah dibuat, atau menghentikan, memulai ulang, atau membangun ulang sinkronisasi data. Semua perintah harus dijalankan di klien database setelah terhubung ke kluster.
Lihat status semua tampilan pencarian
SHOW SEARCH VIEW STATUS;Hasilnya sebagai berikut. Saat statusnya active, sinkronisasi data tampilan pencarian berjalan normal.
+------------+--------+----------+---------+---------------------+---------------------+
| View Name | Type | Status | Message | Created_at | Updated_at |
+------------+--------+----------+---------+---------------------+---------------------+
| view_test | search | active | | 2026-03-18 18:44:12 | 2026-03-18 18:51:37 |
+------------+--------+----------+---------+---------------------+---------------------+Lihat pernyataan CREATE dari tampilan pencarian tertentu
SHOW CREATE SEARCH VIEW view_test;Hasilnya sebagai berikut:
+-----------+------------------------------------------------------+
| View Name | Create Search View |
+-----------+------------------------------------------------------+
| view_test | CREATE SEARCH VIEW view_test AS SELECT * FROM db1.t1 |
+-----------+------------------------------------------------------+Hentikan tampilan pencarian
Saat Anda perlu memodifikasi atau membangun ulang indeks target di PolarSearch node, untuk menghindari kesalahan penulisan sinkronisasi, Anda dapat terlebih dahulu menghentikan sinkronisasi data tampilan pencarian. Setelah modifikasi indeks di PolarSearch node selesai, mulai ulang tampilan pencarian.
ALTER SEARCH VIEW view_test STOP;Mulai ulang tampilan pencarian
Mulai ulang tampilan pencarian yang dihentikan atau sedang berjalan.
ALTER SEARCH VIEW view_test RESTART;Bangun ulang tampilan pencarian
Baca ulang semua data dari tabel sumber dan tulis ke PolarSearch node.
Pembangunan ulang melakukan pemindaian ulang semua data di tabel sumber. Proses ini mungkin memakan waktu lama jika volume datanya besar.
Pembangunan ulang tidak menghapus data indeks yang ada di PolarSearch node. Sebaliknya, data tersebut ditimpa secara langsung.
ALTER SEARCH VIEW view_test REBUILD;Hapus tampilan pencarian
Menghapus tampilan pencarian adalah operasi berisiko tinggi. Konfirmasi sebelum melanjutkan. Operasi ini menghentikan sinkronisasi data tampilan pencarian dan membersihkan sumber daya terkait, tetapi tidak menghapus data indeks di PolarSearch.
DROP SEARCH VIEW view_name;Sistem menangani penghapusan berdasarkan status tampilan pencarian:
Tampilan pencarian
active: Statusnya pertama kali berubah menjadidropping. Setelah sistem menyelesaikan pembersihan sumber daya dan penghapusan data indeks target, statusnya berubah menjadidropped.Tampilan pencarian
dropped: Sistem sepenuhnya menghapus informasi tampilan pencarian.Tampilan pencarian dengan status lain: Sistem tidak mendukung penghapusan.
Ubah tampilan pencarian
Setelah tampilan pencarian dibuat, Anda dapat menyesuaikan parameter runtime-nya atau memodifikasi logika sinkronisasinya, seperti menambahkan bidang sinkronisasi atau mengubah kondisi kueri. AutoETL menyediakan tiga metode modifikasi:
Untuk menyesuaikan hanya parameter runtime seperti paralelisme dan penggunaan sumber daya komputasi, gunakan Modifikasi parameter. Tidak diperlukan perubahan pada SQL sinkronisasi.
Saat memodifikasi logika sinkronisasi, utamakan Modifikasi SQL in-place. Jika definisi SQL kompatibel, sinkronisasi dilanjutkan dari checkpoint awal tanpa perlu sinkronisasi ulang penuh. Anda dapat merujuk ke Aturan dan praktik terbaik perubahan DDL untuk menentukan apakah definisi SQL kompatibel.
Jika definisi SQL tidak kompatibel dan modifikasi in-place tidak memungkinkan, gunakan metode modifikasi “indeks baru + tampilan pencarian baru” untuk membangun ulang.
Modifikasi parameter
Untuk tampilan pencarian yang sedang berjalan, Anda dapat memodifikasi parameter runtime-nya menggunakan sintaks berikut. AutoETL secara otomatis membaca konfigurasi baru dan memulai ulang tampilan pencarian.
Sintaks
ALTER SEARCH VIEW view_name UPDATE WITH (new_option_list);Contoh
view_test Sesuaikan paralelisme menjadi 8, CPU per pekerja menjadi 4, dan konkurensi per pekerja menjadi 8:
ALTER SEARCH VIEW view_test UPDATE WITH ('parallelism' = '8', 'link.tm.cpu' = '4', 'link.tm.slots' = '8');Modifikasi SQL in-place
Modifikasi SQL in-place secara langsung mengubah SQL sinkronisasi tampilan pencarian yang sudah ada tanpa membuat indeks PolarSearch baru atau tampilan pencarian baru, serta tanpa perlu mengalihkan kueri bisnis, sehingga mengurangi waktu sinkronisasi penuh. Jika definisi SQL kompatibel, sinkronisasi dilanjutkan dari checkpoint awal. Jika tidak, modifikasi gagal, dan sistem secara otomatis mengembalikan ke definisi sebelum modifikasi serta memulai ulang tampilan pencarian.
Sintaks
ALTER SEARCH VIEW view_name UPDATE
[TO (column_list, PRIMARY KEY (pk_column_list))]
AS new_select_statement;Contoh
Sinkronkan kolom baru dari tabel sumber: Tampilan pencarian tabel lengkap tidak secara otomatis menyinkronkan kolom baru yang ditambahkan ke tabel sumber setelah tampilan dibuat. Setelah tabel sumber
db1.t1menambahkan kolom baru, jalankan pernyataan berikut untuk menyinkronkan data kolom baru ke PolarSearch.ALTER SEARCH VIEW view_test UPDATE;Sesuaikan kolom yang disinkronkan: Awalnya menyinkronkan kolom
c1danc2. Ubah agar hanya menyinkronkan kolomc1.ALTER SEARCH VIEW view_test UPDATE AS SELECT c1 FROM db1.t1;Sesuaikan kondisi filter: Ubah kondisi
WHEREdaric1 > 10menjadic1 > 20.ALTER SEARCH VIEW view_test UPDATE AS SELECT id, c1, c2 FROM db1.t1 WHERE c1 > 20;
Modifikasi “indeks baru + tampilan pencarian baru”
Jika definisi SQL tidak kompatibel dan modifikasi in-place tidak memungkinkan, gunakan metode “indeks baru + tampilan pencarian baru” untuk membangun ulang, sehingga kueri bisnis tidak terganggu.
Buat tampilan pencarian baru dan sinkronkan ke indeks PolarSearch baru.
Gunakan
SHOW SEARCH VIEW STATUSuntuk memeriksa status tampilan pencarian baru. Saat latensi sinkronisasi turun menjadi 0 hingga 1 detik, alihkan logika kueri bisnis dari indeks lama ke indeks baru.Hapus tampilan pencarian lama.
Untuk dampak perubahan DDL tabel sumber terhadap tampilan pencarian dan praktik modifikasi terperinci, lihat Aturan dan praktik terbaik perubahan DDL.
Prosedur tersimpan ETL (sync_by_sql)
Untuk skenario yang memerlukan transformasi, agregasi, atau komputasi kompleks, Anda dapat menggunakan prosedur tersimpan CALL dbms_etl.sync_by_sql untuk menentukan logika sinkronisasi data menggunakan sintaks kompatibel Flink SQL.
Buat tautan sinkronisasi
Sintaks
Sebelum memanggil dbms_etl.sync_by_sql, Anda dapat menggunakan variabel sesi (seperti Konfigurasi parameter AutoETL dan praktik terbaik) dari esl_link_options、esl_sink_options untuk mengatur konfigurasi sinkronisasi tautan. Mesin AutoETL secara otomatis membaca variabel ini saat membuat tautan.
CALL dbms_etl.sync_by_sql("search", "<sync_sql>");Contoh
Informasi koneksi untuk tabel sumber dan tujuan, seperti alamat host, port, dan kredensial, dikonfigurasi secara otomatis oleh sistem. Anda tidak perlu menentukannya secara manual dalam klausa WITH.
CALL dbms_etl.sync_by_sql("search", "
-- Langkah 1: Definisikan tabel sumber PolarDB
CREATE TEMPORARY TABLE `db1`.`t1` (
`id` BIGINT,
`c1` STRING,
PRIMARY KEY (`id`) NOT ENFORCED
) WITH (
'connector' = 'mysql',
'database-name' = 'db1',
'table-name' = 't1'
);
-- Langkah 2: Definisikan tabel tujuan PolarSearch
CREATE TEMPORARY TABLE `dest` (
`id` BIGINT,
`max_c` STRING,
PRIMARY KEY (`id`) NOT ENFORCED
) WITH (
'connector' = 'opensearch',
'index' = 'dest'
);
-- Langkah 3: Definisikan logika komputasi dan penyisipan
INSERT INTO `dest`
SELECT
`t1`.`id`,
MAX(`t1`.`c1`)
FROM `db1`.`t1` AS `t1`
GROUP BY `t1`.`id`;
");Verifikasi data
Hubungkan ke PolarSearch node, gunakan REST API kompatibel Elasticsearch untuk mengkueri dan memverifikasi bahwa data telah disinkronkan.
# Ganti <polarsearch_endpoint> dengan titik akhir node PolarSearch
curl -u <user>:<password> -X GET "http://<polarsearch_endpoint>/dest/_search"Kelola tautan sinkronisasi
Anda dapat menggunakan perintah berikut untuk melihat tautan sinkronisasi yang telah dibuat, atau menghentikan, memulai ulang, atau membangun ulang sinkronisasi data. Semua perintah harus dijalankan di klien database setelah terhubung ke kluster.
Lihat semua tautan
CALL dbms_etl.show_sync_link();Lihat tautan tertentu berdasarkan ID
Ganti <sync_id> dengan ID yang dikembalikan saat tautan dibuat.
CALL dbms_etl.show_sync_link_by_id('<sync_id>')\GPenjelasan hasil yang dikembalikan:
*************************** 1. row ***************************
SYNC_ID: crb5rmv8rttsg
NAME: crb5rmv8rttsg
SYSTEM: search
SYNC_DEFINITION: db1.t1 -> dest
SOURCE_TABLES: db1.t1
SINK_TABLES: dest
STATUS: active -- Status tautan. active menunjukkan operasi normal
MESSAGE: -- Jika terjadi kesalahan, pesan kesalahan akan ditampilkan di sini
CREATED_AT: 2024-05-20 11:55:06
UPDATED_AT: 2024-05-20 17:28:04
OPTIONS:...Hentikan tautan
Saat Anda perlu memodifikasi atau membangun ulang indeks target di PolarSearch node, untuk menghindari kesalahan penulisan sinkronisasi, Anda dapat terlebih dahulu menghentikan tautan sinkronisasi. Setelah modifikasi indeks di PolarSearch node selesai, mulai ulang tautan tersebut.
CALL dbms_etl.stop_sync_link('<sync_id>');Mulai ulang tautan
Mulai ulang tautan sinkronisasi yang dihentikan atau sedang berjalan.
CALL dbms_etl.restart_sync_link('<sync_id>');Bangun ulang tautan
Baca ulang semua data dari tabel sumber dan tulis ke PolarSearch node. Pembangunan ulang melakukan pemindaian ulang semua data di tabel sumber. Proses ini mungkin memakan waktu lama jika volume datanya besar. Pembangunan ulang tidak menghapus data indeks yang ada di PolarSearch node. Sebaliknya, data tersebut ditimpa secara langsung.
CALL dbms_etl.rebuild_sync_link('<sync_id>');Hapus tautan sinkronisasi
Operasi ini menghentikan sinkronisasi data dan membersihkan sumber daya terkait.
Menghapus tautan sinkronisasi adalah operasi berisiko tinggi. Konfirmasi sebelum melanjutkan. Operasi ini menghentikan sinkronisasi data tautan dan membersihkan sumber daya terkait, tetapi tidak menghapus data indeks di PolarSearch.
CALL dbms_etl.drop_sync_link('<sync_id>');Sistem menangani penghapusan drop_sync_link berbeda-beda tergantung status tautan:
Tautan
active: Statusnya pertama kali berubah menjadidropping. Setelah sistem menyelesaikan pembersihan sumber daya tautan dan data indeks target, statusnya berubah menjadidropped.Tautan
dropped: Sistem sepenuhnya menghapus informasi tautan.Tautan dengan status lain: Sistem tidak mendukung penghapusan.
Ubah tautan sinkronisasi
Setelah tautan sinkronisasi dibuat, Anda dapat menyesuaikan parameter runtime-nya atau memodifikasi SQL sinkronisasinya. Mirip dengan tampilan pencarian, AutoETL menyediakan tiga metode modifikasi:
Untuk menyesuaikan hanya parameter runtime seperti paralelisme dan penggunaan sumber daya komputasi, gunakan Modifikasi parameter. Tidak diperlukan perubahan pada SQL sinkronisasi.
Saat memodifikasi SQL sinkronisasi, utamakan Modifikasi SQL in-place. Jika definisi SQL kompatibel, sinkronisasi dilanjutkan dari checkpoint awal tanpa perlu sinkronisasi ulang penuh. Anda dapat merujuk ke Aturan dan praktik terbaik perubahan DDL untuk menentukan apakah definisi SQL kompatibel.
Jika definisi SQL tidak kompatibel dan modifikasi in-place tidak memungkinkan, gunakan metode modifikasi “indeks baru + tautan baru” untuk membangun ulang.
Modifikasi parameter
Untuk tautan sinkronisasi yang sedang berjalan, Anda dapat terlebih dahulu mengatur konfigurasi tautan baru melalui variabel sesi esl_link_options, lalu panggil dbms_etl.update_sync_link untuk menerapkan konfigurasi tersebut. AutoETL secara otomatis membaca konfigurasi esl_link_options yang baru dan memulai ulang tautan sinkronisasi.
Sintaks
SET esl_link_options = "<new_option_list>";
CALL dbms_etl.update_sync_link('<sync_id>', '');Contoh
Tautan 8f4228x2uq12z Sesuaikan paralelisme menjadi 8, CPU per pekerja menjadi 4, dan konkurensi per pekerja menjadi 8:
SET esl_link_options = "'parallelism' = '8', 'link.tm.cpu' = '4', 'link.tm.slots' = '8'";
CALL dbms_etl.update_sync_link('8f4228x2uq12z', '');Modifikasi SQL in-place
Modifikasi SQL in-place secara langsung mengubah SQL sinkronisasi tautan yang sudah ada, tanpa membuat indeks PolarSearch baru atau tautan baru, serta tanpa perlu mengalihkan kueri bisnis, sehingga mengurangi waktu sinkronisasi penuh. Jika definisi SQL sebelum dan sesudah modifikasi kompatibel, sinkronisasi dilanjutkan dari checkpoint awal; jika tidak kompatibel, modifikasi gagal, sistem secara otomatis mengembalikan ke definisi sinkronisasi sebelum modifikasi dan memulai ulang tautan.
Sintaks
<new_sync_sql> memerlukan SQL sinkronisasi baru yang lengkap. Strukturnya sama dengan SQL sinkronisasi dalam dbms_etl.sync_by_sql saat tautan dibuat.
CALL dbms_etl.update_sync_link('<sync_id>', '<new_sync_sql>');Contoh
Tautan 8f4228x2uq12z ubah kondisi filter menjadi c1 > 20:
CALL dbms_etl.update_sync_link('8f4228x2uq12z', "
CREATE TEMPORARY TABLE `db1`.`t1` (
`id` BIGINT,
`c1` STRING,
PRIMARY KEY (`id`) NOT ENFORCED
) WITH (
'connector' = 'mysql',
'database-name' = 'db1',
'table-name' = 't1'
);
CREATE TEMPORARY TABLE `dest` (
`id` BIGINT,
`c1` STRING,
PRIMARY KEY (`id`) NOT ENFORCED
) WITH (
'connector' = 'opensearch',
'index' = 'dest'
);
INSERT INTO `dest` SELECT `id`, `c1` FROM `db1`.`t1` WHERE `c1` > 20;
");Modifikasi “indeks baru + tautan baru”
Jika definisi SQL tidak kompatibel dan modifikasi in-place tidak memungkinkan, gunakan metode “indeks baru + tautan baru” untuk membangun ulang, sehingga kueri bisnis tidak terganggu. Ambil contoh modifikasi tautan A:
Buat tautan B berdasarkan SQL sinkronisasi baru dan sinkronkan ke indeks PolarSearch baru.
Gunakan
CALL dbms_etl.show_sync_link_by_id('<sync_id>')untuk memeriksa status tautan B. Saat latensi sinkronisasi tautan B turun menjadi 0 hingga 1 detik, alihkan logika kueri bisnis dari indeks lama ke indeks baru.Setelah memastikan tautan B berjalan stabil, jalankan
CALL dbms_etl.drop_sync_link('<sync_id>')untuk menghapus tautan lama A.