Template Datastream ke MySQL atau PostgreSQL (Stream)

Template Datastream ke SQL adalah pipeline streaming yang membaca data Datastream dan mereplikasinya ke database MySQL atau PostgreSQL apa pun. Template tersebut membaca data dari Cloud Storage menggunakan notifikasi Pub/Sub dan mereplikasi data ini ke dalam tabel replika SQL.

Template tidak mendukung bahasa definisi data (DDL) dan mengharapkan semua tabel sudah ada dalam database. Replikasi menggunakan transformasi stateful Dataflow untuk memfilter data yang tidak berlaku dan memastikan konsistensi data yang tidak berurutan. Misalnya, jika versi baris yang lebih baru telah diteruskan, versi yang terlambat dari baris tersebut akan diabaikan. Bahasa manipulasi data (DML) yang dieksekusi adalah upaya terbaik untuk mereplikasi sumber secara sempurna ke data target. Pernyataan DML yang dieksekusi mengikuti aturan berikut ini:

  • Jika ada kunci utama, operasi penyisipan dan pembaruan menggunakan sintaksis pembaruan (yaitu INSERT INTO table VALUES (...) ON CONFLICT (...) DO UPDATE).
  • Jika ada kunci utama, penghapusan akan direplikasi sebagai DML penghapusan.
  • Jika tidak ada kunci utama, operasi penyisipan dan pembaruan akan disisipkan ke dalam tabel.
  • Jika tidak ada kunci utama, penghapusan akan diabaikan.

Jika Anda menggunakan utilitas Oracle ke Postgres, tambahkan ROWID di SQL sebagai kunci utama jika belum ada.

Persyaratan pipeline

  • Aliran Datastream yang siap atau sudah mereplikasi data.
  • Notifikasi Pub/Sub Cloud Storage diaktifkan untuk data Datastream.
  • Database PostgreSQL diisi dengan skema yang diperlukan.
  • Akses jaringan antara pekerja Dataflow dan PostgreSQL telah disiapkan.

Parameter template

Parameter Deskripsi
inputFilePattern Lokasi file yang akan direplikasi oleh file Datastream di Cloud Storage. Lokasi file ini biasanya merupakan jalur root untuk streaming.
gcsPubSubSubscription Langganan Pub/Sub dengan notifikasi file Datastream. Misalnya, projects/my-project-id/subscriptions/my-subscription-id.
inputFileFormat Format file output yang dihasilkan oleh Datastream. Misalnya avro,json. Default, avro.
databaseHost Host SQL yang akan dihubungkan.
databaseUser Pengguna SQL dengan semua izin yang diperlukan untuk menulis ke semua tabel dalam replikasi.
databasePassword Sandi untuk pengguna SQL tertentu.
databasePort (Opsional) Port database SQL yang akan dihubungkan. Default, 5432.
databaseName (Opsional) Nama database SQL yang akan dihubungkan. Default, postgres.
streamName (Opsional) Nama atau template aliran data yang akan di-polling untuk mengetahui informasi skema. Default, {_metadata_stream}.

Menjalankan template

Konsol

  1. Buka halaman Create job from template Dataflow.
  2. Buka Buat tugas dari template
  3. Di kolom Job name, masukkan nama pekerjaan yang unik.
  4. Opsional: Untuk Endpoint regional, pilih nilai dari menu drop-down. Region default-nya adalah us-central1.

    Untuk daftar region tempat Anda dapat menjalankan tugas Dataflow, lihat Lokasi Dataflow.

  5. Dari menu drop-down Dataflow template, pilih the Cloud Datastream to SQL template.
  6. Di kolom parameter yang disediakan, masukkan parameter value Anda.
  7. Klik Run job.

gcloud

Di shell atau terminal Anda, jalankan template:

gcloud dataflow flex-template run JOB_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --enable-streaming-engine \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/Cloud_Datastream_to_SQL \
    --parameters \
inputFilePattern=GCS_FILE_PATH,\
gcsPubSubSubscription=GCS_SUBSCRIPTION_NAME,\
databaseHost=DATABASE_HOST,\
databaseUser=DATABASE_USER,\
databasePassword=DATABASE_PASSWORD
  

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud tempat Anda ingin menjalankan tugas Dataflow
  • JOB_NAME: nama pekerjaan unik pilihan Anda
  • REGION_NAME: region tempat Anda ingin men-deploy tugas Dataflow, misalnya us-central1
  • VERSION: the version of the template that you want to use

    You can use the following values:

  • GCS_FILE_PATH: jalur Cloud Storage ke data Datastream. Contoh: gs://bucket/path/to/data/
  • GCS_SUBSCRIPTION_NAME: langganan Pub/Sub untuk membaca file yang diubah. Contoh: projects/my-project-id/subscriptions/my-subscription-id.
  • DATABASE_HOST: IP host SQL Anda.
  • DATABASE_USER: pengguna SQL Anda.
  • DATABASE_PASSWORD: sandi SQL Anda.

API

Untuk menjalankan template menggunakan REST API, kirim permintaan HTTP POST. Untuk informasi selengkapnya tentang API dan cakupan otorisasinya, lihat projects.templates.launch.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
   "launch_parameter": {
      "jobName": "JOB_NAME",
      "parameters": {

          "inputFilePattern": "GCS_FILE_PATH",
          "gcsPubSubSubscription": "GCS_SUBSCRIPTION_NAME",
          "databaseHost": "DATABASE_HOST",
          "databaseUser": "DATABASE_USER",
          "databasePassword": "DATABASE_PASSWORD"
      },
      "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Cloud_Datastream_to_SQL",
   }
}
  

Ganti kode berikut:

  • PROJECT_ID: ID project Google Cloud tempat Anda ingin menjalankan tugas Dataflow
  • JOB_NAME: nama pekerjaan unik pilihan Anda
  • LOCATION: region tempat Anda ingin men-deploy tugas Dataflow, misalnya us-central1
  • VERSION: the version of the template that you want to use

    You can use the following values:

  • GCS_FILE_PATH: jalur Cloud Storage ke data Datastream. Contoh: gs://bucket/path/to/data/
  • GCS_SUBSCRIPTION_NAME: langganan Pub/Sub untuk membaca file yang diubah. Contoh: projects/my-project-id/subscriptions/my-subscription-id.
  • DATABASE_HOST: IP host SQL Anda.
  • DATABASE_USER: pengguna SQL Anda.
  • DATABASE_PASSWORD: sandi SQL Anda.

Langkah selanjutnya