×
Community Blog Menggunakan Flink CDC sebagai real-time data streaming untuk menyinkronkan data terpisah dari tabel MySQL ke Hologres data warehouse

Menggunakan Flink CDC sebagai real-time data streaming untuk menyinkronkan data terpisah dari tabel MySQL ke Hologres data warehouse

Flink sepenuhnya memungkinkan Anda menyinkronkan data ke data warehouse secara real-time. Blog ini akan menjelaskan bagaimana cara menerapkan Flink untuk menyinkronkan data dari MySQL ke Hologres.

By Sunny Jovita, Solution Architect Intern

Flink sepenuhnya memungkinkan Anda menyinkronkan data ke data warehouse secara real-time. Blog ini akan menjelaskan bagaimana cara menerapkan Flink untuk menyinkronkan data dari MySQL ke Hologres.

1
Untuk mentrasfer data secara real-time, step pertama dimulai dengan Konektor CDC yang digunakan untuk membaca data snapshot dan data inkremental dari database MySQL.
Konektor CDC digunakan untuk menangkap perubahan data dalam database. Tidak hanya untuk menangkap perubahan data, skenario penerapannya sangat luas, termasuk:
‒ Distribusi data: Mendistribusikan sumber data (data source) ke database lainnya. Ini biasanya digunakan untuk decoupling bisnis dan microservices.
‒ Integrasi Data: Sumber data yang terdesentralisasi diintegrasikan ke dalam data warehouse untuk menghilangkan silo data dan memfasilitasi analisis selanjutnya.
‒ Migrasi data: umumnya digunakan untuk DBS (database backup) dan pemulihan bencana.

Kami akan menggunakan Flink CDC untuk menangkap perubahan dari ApsaraDB RDS for Mysql dan menyinkronkan perubahan ini ke penyimpanan Hologres data warehouse secara real-time.

Note: Flink CDC tidak hanya mendukung MySQL sebagai sumber data, tetapi juga mendukung database lain seperti MariaDB, Oracle, MongoDB, dll.

Hal yang perlu disediakan:

1) Akun Alibaba Cloud

2) Siapkan test data
Unduh test data dibawah ini ke komputer lokal anda.

3) Workspace Flink tipe “fully managed Flink”, dan berikan izin otorisasi kepada user RAM

Prasyarat

  • Anda harus melakukan otorisasi otomatis saat membeli Flink yang dikelola sepenuhnya untuk pertama kalinya.
    a) Log in ke konsol Flink.

b) Klik Purchase.
c) Pada halaman Authorization Request, klik Authorize in RAM.

Capture

d) Di halaman “Cloud Resource Access Authorization”, klik tombol Confirm Authorization Policy di bagian bawah halaman.

3

-Memberikan kebijakan “AliyunRDSFullAccess ke user RAM:
a) Masuk ke konsol RAM sebagain pengguna RAM atau menggunakan akun Alibaba Cloud Anda.
b) Di panel navigasi sebelah kiri, pilih Identitas > Pengguna > Tambahkan Izin ke pengguna target.

4

c) Pada halaman “Add Permissions”, pilih System Policy, scroll ke bawah dan cari “AliyunRDSFullAccess” serta “AliyunHologresFullAccess” dan klik OK.

5

Note: Jika anda melampirkan kebijakan ini ke user RAM, pengguna akun RAM tersebut dapat melihat semua informasi tentang semua instance dan membeli instance di konsol ApsaraDB RDS dan Hologres.

Prosedur untuk mengaktifkan layanan
1) Masuk ke konsol Realtime Compute for Apache Flink
2) Klik Purchase.

6

3) Pada halaman pembelian, isi informasi detailnya.
Capture

Secara default, proyek bernama sunny-flink2 akan diproduksi otomatis setelah workspace dibuat.

8

4) Sumber data (Data source as Upstream storage): create an ApsaraDB RDS for MySQL
a) Lakukan pembelian ApsaraDB RDS instance.
b) Setelah membeli instance, klik instance yang ditargetkan dan buka halaman Database.

9

c) Isi kolom yang wajib diisi. (note: disini kita akan membuat 3 database yaitu user_db1, user_db2, dan user_db3) sama seperti nama test data).

10

d) Setelah membuat database, buka halaman Akun, dan klik Create Account.

11

e) lengkapi detail pembuatan akun, pilih database yang ditargetkan, dan klik OK

12

f) Untuk masuk ke konsol DMS, klik tombol Log On to Database di sisi kanan.

13

g) Setelah anda login, anda akan melihat database yang telah dibuat sebelumnya. (db1, db2, db3).

14

h) Sebelum mengimport test data, pertama-tama kita perlu menetapkan diri anda sebagai administrator DBA. Untuk menetapkan diri sebagai administrator DBA, kita dapat pergi ke Users, klik Change, dan pilih role DBA.

15
16
17

i) Klik impor data untuk mengimpor test data ke setiap masing-masing database.

18

j) Tentukan nama database, import mode, file type, dan upload data anda sesuai dengan nama database anda. (jika anda memilih user_db1, unggah test data user_db1 anda). Klik Submit.

19

k) Setelah anda mengupload test data, klik Execute untuk memulai proses.

20
21

l) Anda dapat mencoba menjalankan kueri “select” di setiap database untuk mengecek apakah data telah berhasil diimpor.

22

5) Downstream storage: purchase a Hologres instance.
a) Beli hologres instance.
23

Note: Setelah anda membeli instance Hologres, database bernama postgres akan dibuat secara otomatis. Database ini dialokasikan dengan sedikit sumber daya dan hanya digunakan untuk tujuan manajemen. Kami menyarankan anda untuk membuat database baru untuk menjalankan Hologres.

b) Membuat Database
Bagian ini menjelaskan cara membuat database di konsol Hologres.
-Masuk ke konsol Hologres. Klik Instance dan temukan instance yang ingin anda buat databasenya.

24

-Di panel sisi kiri halaman detail instance, klik Database Management.

25

-Di halaman DB Authorization, klik New Database di pojok kanan atas.

26

-Di dalam kotak dialog, pilih nama instance yang ditargetkan, masukan nama database (disini nama database adalah user_holo), dan tentukan model izin (simple permissions policy). Kami menyarankan anda untuk memilih SPM.

27

-Klik OK. Anda dapat melihat database yang dibuat di halaman DB Authorization.

28

Integrasi data sepenuhnya secara otomatis dari database MySQL ke Flink

Bagian ini akan menunjukkan kepada anda bagaimana menggunakan Flink CDC untuk melakukan streaming data secara real-time untuk scenario di atas. Seluruh proses menggunakan sintaks SQL standar tanpa satu baris kode Java atau instalasi IDE.

Bagian berikut berupa struktur alur dari ApsaraDB RDS for MySQL ke Hologres melalui Flink:

29

Anda juga dapat menggunakan data sources lain seperti Postgres/Oracle dan MaxCompute/ElasticSearch sebagai data warehousenya (data destination).

Step 1: membuat catalogs
Katalog menyediakan metadata, seperti database, tabel, dan informasi lain yang diperlukan untuk mengakses data yang disimpan dalam database atau sistem eksternal lainnya.
Jika Anda ingin menyinkronkan seluruh database, menggabungkan, dan menyinkronkan tabel dalam database yang di-shard, atau menyinkronkan satu tabel, Anda harus membuat katalog tujuan (destination catalog). Anda juga harus membuat katalog sumber (source catalog) untuk mendapatkan daftar tabel sumber dan informasi tentang tabel sumber. Anda dapat membuat katalog sumber dan tujuan di konsol Flink yang dikelola sepenuhnya. Dalam contoh ini, katalog sumber adalah RDS ApsaraDB untuk katalog MySQL dan katalog tujuan adalah katalog Hologres.

Mengapa Kita perlu membuat katalog?
Salah satu aspek terpenting dari pemrosesan data adalah mengelola metadata. Katalog menyediakan API terpadu untuk mengelola metadata dan membuatnya dapat diakses dari Table API dan SQL Queries. Dengan memiliki katalog, Anda dapat dengan jelas memisahkan data dan membuatnya tersedia untuk dikonsumsi. Tanpa katalog, umumnya pengguna sering bekerja membabi buta, dan ini membuat mereka menghabiskan terlalu banyak waktu untuk mencari kumpulan data dan lokasinya. Katalog sangat menyederhanakan langkah-langkah yang diperlukan untuk memulai Flink dengan sistem pengguna yang ada, dan meningkatkan pengalaman pengguna secara signifikan.

1) Membuat katalog ApsaraDB RDS for MySQL bernama mysql.
Untuk informasi lebih lanjut lihat, Konfigurasi katalog MySQL.

30

2) Buat katalog Hologres bernama holo.
Untuk informasi selengkapnya, lihat Membuat katalog Hologres.

31

3) Pada tab Schema, konfirmasikan bahwa katalog mysql dan holo telah dibuat.

32

33

Note: Sebenarnya, ada cara lain untuk membuat katalog untuk table tujuan dan sumber (destination and source tables), yaitu dengan menggunakan sintaks SQL “create catalog DDL”.

-Membuat table sumber MySQL CDC
Sama seperti membuat katalog MySQL, tabel CDC MySQL adalah table sumber streaming dari database MySQL. Hanya saja perbedaannya adalah dalam mengimplementasikannya. Untuk membuat katalog MySQL, pengguna hanya perlu meng-klik fitur “create catalog”, sedangkan tabel CDC MySQL bisa dibuat dengan menggunakan sintaks DDL. Sebelum menyinkronkan data ke Flink, tabel katalog dan CDC MySQL akan membaca data historis lengkap dari database MySQL dan kemudian membaca data dari file log biner. Klik di sini untuk mempelajari lebih lanjut tentang Membuat table MySQL CDC.

Dalam menyinkronkan tabel database MySQL, pembuatan tabel katalog dan tabel CDC hanya memiliki implementasi yang berbeda.
34

35

-Membuat table tujuan Hologres.
Bagian ini berupa sintaks DDL yang digunakan untuk membuat tabel hasil/table tujuan di Hologres.

36

Step 2: Membuat Session cluster
a) Di panel navigasi sebelah kiri, klik Draft Editor.
b) klik New.

37

c) Di panel navigasi sebelah kiri, klik Session Cluster dan klik Create Session Cluster.

38

d) Lengkapi bagian pembuatan session dan klik Create Session Cluster.

39

40

e) Anda akan melihat cluster yang dibuat setelah Anda mengklik tombol Create Session Cluster. Klik Start untuk menjalankan cluster.

41

f) Kembali ke Draft Editor. Di kotak dialog New Draft, konfigurasikan parameter draf. Pilih cluster1 yang telah Anda buat untuk deployment.

42

Step 3: Menjalankan data sinkronisasi draf
a) Salin kode berikut ke draft editor
Kode berikut menunjukan cara menyinkronkan semua tabel dan menggabungkan tabel user01 sampai user09 ke tabel user_holo.users hologres.

USE CATALOG holo;

BEGIN STATEMENT SET;

-- Menyinkronkan semua tabel dari database tpc_ds ApsaraDB RDS for MySQL ke database tpc_ds Hologres.  
CREATE DATABASE IF NOT EXISTS tpc_ds
AS DATABASE mysql.tpc_ds INCLUDING ALL TABLES;

-- Sinkronisasi tabel user01 sampai user09 ke tabel user_holo.users Hologres. CREATE TABLE IF NOT EXISTS user_holo.users
AS TABLE mysql.`user_db[0-9]+`.`user[0-9]+`;

END;

Step 4: Mulai deployment
a) Di pojok kanan atas Draft Editor, klik Publish.

43

Note: pernyataan CREATE TABLE digunakan untuk menyinkronkan tabel user01 sampai user09 dari 3 database berbeda ke satu tabel Hologres bernama users.

Namun, jika anda ingin menyinkronkan semua tabel dari satu database ke hologres, gunakan CREATE DATABASE.

b) Buka halaman Deployment, temukan deployment yang diinginkan dan klik Start di kolom tindakan untuk memulai sinkronisasi ke Hologres.

44

c) Anda dapat melihat status dan informasi deployment di halaman deployment setelah job1 dimulai. Jika tertulis berjalan, ini berarti deployment berhasil dan data sedang disinkronkan.

45

Step 5: Melihat hasil sinkronisasi data
a) Pergi ke Konsol Hologres.
b) Di panel navigasi sebelah kiri, klik Go to Holoweb. Pada halaman Metadata Management Holoweb, lihat tabel gabungan di database user_holo dari instance Hologres.

46
47

c) Untuk memeriksa apakah sudah tersinkronisasi sepenuhnya, di pojok kanan atas tab pengguna, klik Query table.
48

d) Masukan kueri berikut dan klik Run.

select * from users order by _db_name,_table_name,id;

e) Kita dapat melihat data yang diminta di bagian output.

49

Step 6: Melihat hasil sinkronisasi tambahan
Mari kita buat beberapa perubahan di database MySQL, dan kemudian data di tabel Hologres users juga akan berubah secara real-time.
a) Pergi ke konsol DMS, Klik tombol Log on to Database di sisi kanan.

50

b) Masukan user baru di tabel db_1.user01
INSERT INTO user_01 VALUES (111,"Sunny");
51

c) Perbarui pengguna di tabel user02
UPDATE user02 SET name='Jovita' WHERE id=2;
52

d) Setelah menjalankan setiap step, kita dapat mengkueri tabel pengguna menggunakan “SELECT * from users” di Hologres untuk melihat perubahannya.

Hasil kueri terakhir adalah sebagai berikut:
53

Dari hasil terbaru di Hologres, kita dapat melihat bahwa ada rekor baru (user_db1, user01, 111) dan nama (user_db2, user02, 2) telah diperbarui ke “Jovita”. Hasilnya persis sama dengan perubahan yang kita buat di MySQL. Ini menunjukkan bahwa periode pemrosesan dari MySQL ke Hologres tidak diragukan lagi adalah real-time.

0 2 2
Share on

Alibaba Cloud Indonesia

100 posts | 17 followers

You may also like

Comments