Template SourceDB ke Spanner adalah pipeline batch yang menyalin data dari database relasional ke database Spanner yang ada. Pipeline ini menggunakan JDBC untuk terhubung ke database relasional. Anda dapat menggunakan template ini untuk menyalin data dari database relasional mana pun dengan driver JDBC yang tersedia ke Spanner. Hanya mendukung jenis MySQL yang terbatas
Untuk lapisan perlindungan tambahan, Anda juga dapat meneruskan kunci Cloud KMS bersama dengan parameter nama pengguna, sandi, dan string koneksi yang dienkode Base64 dan dienkripsi dengan kunci Cloud KMS. Lihat endpoint enkripsi API Cloud KMS untuk mengetahui detail tambahan tentang mengenkripsi parameter nama pengguna, sandi, dan string koneksi Anda.
Persyaratan pipeline
- Driver JDBC untuk database relasional harus tersedia.
- Tabel Spanner harus ada sebelum eksekusi pipeline.
- Tabel Spanner harus memiliki skema yang kompatibel.
- Database relasional harus dapat diakses dari subnet tempat Dataflow berjalan.
Parameter template
Parameter yang diperlukan
- sourceConfigURL: URL file konfigurasi koneksi sumber. Format file bergantung pada jenis sumber. Untuk Astra, file ini akan mengarah ke file konfigurasi koneksi Astra (contoh). Untuk JDBC, parameter ini akan mengarah ke file konfigurasi sharding JDBC (sample). Untuk Cassandra, kolom ini akan mengarah ke file konfigurasi driver Cassandra (sample). Parameter ini wajib diisi. Sebagai contoh,
gs://your-bucket/source-config.jsonNilai defaultnya adalah kosong. - instanceId: Instance Cloud Spanner tujuan.
- databaseId: Database Cloud Spanner tujuan.
- projectId: Ini adalah nama project Cloud Spanner.
- outputDirectory: Direktori ini digunakan untuk membuang data yang gagal/dilewati/difilter dalam migrasi.
Parameter opsional
- sourceDbDialect: Nilai yang mungkin adalah
CASSANDRA,MYSQL,POSTGRESQL,ORACLE, danSQLSERVER. Nilai defaultnya: MYSQL. - jdbcDriverJars: Daftar file JAR driver yang dipisahkan koma. Contoh,
gs://your-bucket/driver_jar1.jar,gs://your-bucket/driver_jar2.jar. Nilai defaultnya adalah kosong. - jdbcDriverClassName: Nama class driver JDBC. Contoh,
com.mysql.jdbc.Driver. Nilai defaultnya adalah: com.mysql.jdbc.Driver. - tables: Tabel yang akan dimigrasikan dari sumber. Nilai defaultnya adalah kosong.
- numPartitions: Jumlah partisi. Ini, bersama dengan batas bawah dan atas, membentuk langkah partisi untuk ekspresi klausa WHERE yang dihasilkan dan digunakan untuk membagi kolom partisi secara merata. Jika input kurang dari 1, angka akan ditetapkan ke 1. Nilai defaultnya adalah: 0.
- fetchSize: Jumlah baris yang akan diambil per halaman yang dibaca untuk sumber JDBC. Jika tidak disetel, nilai ini akan disimpulkan secara otomatis dari jenis mesin pekerja dan perkiraan ukuran baris, yang akan kembali ke 50.000 baris jika tidak dapat disimpulkan (misalnya, saat jenis mesin pekerja tidak ditentukan). Jika dialek sumber adalah Mysql, lihat catatan di bawah. Pada akhirnya, hal ini diterjemahkan menjadi panggilan Statement.setFetchSize di lapisan Jdbc. Parameter ini HANYA boleh digunakan jika nilai default memunculkan error memori.Catatan untuk Sumber MySql: FetchSize diabaikan oleh konektor Mysql kecuali jika
useCursorFetch=truejuga merupakan bagian dari properti koneksi. Untuk dialek MySql, pipeline akan menambahkanuseCursorFetch=trueke properti koneksi secara default, kecuali jika parameter fetchSize ditetapkan secara eksplisit ke 0. - spannerHost: Endpoint Cloud Spanner yang akan dipanggil dalam template. Contoh,
https://batch-spanner.googleapis.com. Secara default: https://batch-spanner.googleapis.com. - maxConnections: Mengonfigurasi kumpulan koneksi JDBC di setiap pekerja dengan jumlah koneksi maksimum. Gunakan angka negatif untuk tanpa batas. Contoh,
-1. Nilai defaultnya adalah: 0. - sessionFilePath: Jalur file sesi di Cloud Storage yang berisi informasi pemetaan dari Spanner Migration Tool. Nilai defaultnya adalah kosong.
- transformationJarPath: Lokasi jar kustom di Cloud Storage yang berisi logika transformasi kustom untuk memproses data. Nilai defaultnya adalah kosong.
- transformationClassName: Nama class yang sepenuhnya memenuhi syarat yang memiliki logika transformasi kustom. Kolom ini wajib diisi jika transformationJarPath ditentukan. Nilai defaultnya adalah kosong.
- transformationCustomParameters: String yang berisi parameter kustom yang akan diteruskan ke class transformasi kustom. Nilai defaultnya adalah kosong.
- insertOnlyModeForSpannerMutations: Secara default, pipeline menggunakan Upsert untuk menulis baris ke Spanner. Artinya, baris yang ada akan ditimpa. Jika mode InsertOnly diaktifkan, penyisipan akan digunakan, bukan upsert, dan baris yang ada tidak akan ditimpa.
- batchSizeForSpannerMutations: BatchSize dalam byte untuk Mutasi Spanner. Jika ditetapkan kurang dari 0, default SpannerIO Apache Beam akan digunakan, yaitu 1 MB. Setel ini ke 0 atau 10, untuk menonaktifkan mutasi batch.
- spannerPriority: Prioritas permintaan untuk panggilan Cloud Spanner. Nilai harus berupa salah satu dari: [
HIGH,MEDIUM,LOW]. Defaultnya adalahHIGH. - tableOverrides: Ini adalah penggantian nama tabel dari sumber ke Spanner. Data tersebut ditulis dalam format berikut: [{SourceTableName1, SpannerTableName1}, {SourceTableName2, SpannerTableName2}]Contoh ini menunjukkan pemetaan tabel Singers ke Vocalists dan tabel Albums ke Records. Contoh,
[{Singers, Vocalists}, {Albums, Records}]. Nilai defaultnya adalah kosong. - columnOverrides: Ini adalah penggantian nama kolom dari sumber ke spanner. Ditulis dalam format berikut: [{SourceTableName1.SourceColumnName1, SourceTableName1.SpannerColumnName1}, {SourceTableName2.SourceColumnName1, SourceTableName2.SpannerColumnName1}]Perhatikan bahwa SourceTableName harus tetap sama dalam pasangan sumber dan Spanner. Untuk mengganti nama tabel, gunakan tableOverrides.Contoh ini menunjukkan pemetaan SingerName ke TalentName dan AlbumName ke RecordName dalam tabel Singers dan Albums. Contoh,
[{Singers.SingerName, Singers.TalentName}, {Albums.AlbumName, Albums.RecordName}]. Nilai defaultnya adalah kosong. - schemaOverridesFilePath: File yang menentukan penggantian nama tabel dan kolom dari sumber ke Spanner. Nilai defaultnya adalah kosong.
- uniformizationStageCountHint: Petunjuk untuk jumlah tahap penyeragaman. Saat ini Hanya berlaku untuk sumber berbasis jdbc seperti MySQL atau PostgreSQL. Biarkan 0 atau default untuk menonaktifkan penyeragaman. Setel ke -1 untuk jumlah tahap log(numPartition). Jika ruang kunci utama sumber Anda didistribusikan secara merata (misalnya, kunci yang bertambah otomatis dengan banyak celah), sebaiknya biarkan tidak diaktifkan. Jika keyspace Anda tidak seragam, Anda mungkin akan menemukan VM yang lambat dalam eksekusi alur data. Dalam kasus seperti ini, Anda dapat menyetelnya ke -1 untuk mengaktifkan penyeragaman. Menetapkannya secara manual ke nilai selain 0 atau -1 akan membantu Anda menyetel kompromi antara overhead yang ditambahkan oleh tahap penyeragaman dan peningkatan performa karena distribusi tugas yang lebih baik.
- failureInjectionParameter: Parameter injeksi kegagalan. Hanya digunakan untuk pengujian. Nilai defaultnya adalah kosong.
- maxCommitDelay: Waktu jeda commit maksimum untuk mengoptimalkan throughput tulis di Spanner. Referensi https://cloud.google.com/spanner/docs/throughput-optimized-writes.Set -1 agar Spanner memilih nilai default. Tetapkan ke nilai positif untuk mengganti pertukaran throughput vs. latensi yang paling sesuai. Nilai defaultnya adalah -1.
- gcsOutputDirectory: Direktori ini digunakan untuk menulis file AVRO dari data yang dibaca dari sumber. Contoh,
gs://your-bucket/your-path. Nilai defaultnya adalah kosong. - disabledAlgorithms: Algoritma yang dipisahkan koma yang akan dinonaktifkan. Jika nilai ini disetel ke
none, tidak ada algoritma yang dinonaktifkan. Gunakan parameter ini dengan hati-hati, karena algoritma yang dinonaktifkan secara default mungkin memiliki kerentanan atau masalah performa. Contoh,SSLv3, RC4. - extraFilesToStage: Jalur Cloud Storage atau secret Secret Manager yang dipisahkan koma untuk file yang akan di-stage di worker. File ini disimpan di direktori /extra_files di setiap worker. Misalnya,
gs://<BUCKET_NAME>/file.txt,projects/<PROJECT_ID>/secrets/<SECRET_ID>/versions/<VERSION_ID>.
Menjalankan template
Konsol
- Buka halaman Dataflow Membuat tugas dari template. Buka Membuat tugas dari template
- Di kolom Nama tugas, masukkan nama tugas yang unik.
- Opsional: Untuk Endpoint regional, pilih nilai dari menu drop-down. Region default-nya adalah
us-central1.Untuk mengetahui daftar region tempat Anda dapat menjalankan tugas Dataflow, lihat Lokasi Dataflow.
- Dari menu drop-down Template Dataflow, pilih template Sourcedb to Spanner.
- Di kolom parameter yang disediakan, masukkan nilai parameter Anda.
- Klik Jalankan tugas.
gcloud CLI
Di shell atau terminal Anda, jalankan template:
gcloud dataflow flex-template run JOB_NAME \ --template-file-gcs-location=gs://dataflow-templates/VERSION/flex/Sourcedb_to_Spanner_Flex \ --project=PROJECT_ID \ --region=REGION_NAME \ --parameters \ sourceConfigURL=SOURCE_CONFIG_URL,\ instanceId=INSTANCE_ID,\ databaseId=DATABASE_ID,\ projectId=PROJECT_ID,\ outputDirectory=OUTPUT_DIRECTORY,\
Ganti kode berikut:
JOB_NAME: nama tugas unik pilihan AndaVERSION: versi template yang ingin Anda gunakanAnda dapat menggunakan nilai berikut:
latestuntuk menggunakan template versi terbaru, yang tersedia di folder induk tanpa tanggal di bucket— gs://dataflow-templates/latest/- nama versi, seperti
2023-09-12-00_RC00, untuk menggunakan template versi tertentu, yang dapat ditemukan bertingkat di masing-masing folder induk yang diberi tanggal dalam bucket— gs://dataflow-templates/
REGION_NAME: region tempat Anda ingin men-deploy tugas Dataflow—misalnya,us-central1SOURCE_CONFIG_URL: URL untuk terhubung ke host database sumber. Nilainya bisa 1. URL koneksi JDBC - yang harus berisi host, port, dan nama db sumber, serta dapat secara opsional berisi properti seperti autoReconnect, maxReconnects, dll. Format: `jdbc:mysql://{host}:{port}/{dbName}?{parameters}`2. Jalur konfigurasi shardINSTANCE_ID: ID Instance Cloud Spanner.DATABASE_ID: ID Database Cloud Spanner.PROJECT_ID: Project ID Cloud Spanner.OUTPUT_DIRECTORY: Direktori Output untuk peristiwa yang gagal/dilewati/difilter
API
Untuk menjalankan template menggunakan REST API, kirim permintaan POST HTTP. Untuk mengetahui informasi selengkapnya tentang API dan cakupan otorisasinya, lihat projects.templates.launch.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch { "launchParameter": { "jobName": "JOB_NAME", "parameters": { "sourceConfigURL": "SOURCE_CONFIG_URL", "instanceId": "INSTANCE_ID", "databaseId": "DATABASE_ID", "projectId": "PROJECT_ID", "outputDirectory": "OUTPUT_DIRECTORY", }, "containerSpecGcsPath": "gs://dataflow-templates/VERSION/flex/Sourcedb_to_Spanner_Flex", "environment": { "maxWorkers": "10" } } }
Ganti kode berikut:
PROJECT_ID: Google Cloud Project ID tempat Anda ingin menjalankan tugas DataflowJOB_NAME: nama tugas unik pilihan AndaVERSION: versi template yang ingin Anda gunakanAnda dapat menggunakan nilai berikut:
latestuntuk menggunakan template versi terbaru, yang tersedia di folder induk tanpa tanggal di bucket— gs://dataflow-templates/latest/- nama versi, seperti
2023-09-12-00_RC00, untuk menggunakan template versi tertentu, yang dapat ditemukan bertingkat di masing-masing folder induk yang diberi tanggal dalam bucket— gs://dataflow-templates/
LOCATION: region tempat Anda ingin men-deploy tugas Dataflow—misalnya,us-central1SOURCE_CONFIG_URL: URL untuk terhubung ke host database sumber. Nilainya bisa 1. URL koneksi JDBC - yang harus berisi host, port, dan nama db sumber, serta dapat secara opsional berisi properti seperti autoReconnect, maxReconnects, dll. Format: `jdbc:mysql://{host}:{port}/{dbName}?{parameters}`2. Jalur konfigurasi shardINSTANCE_ID: ID Instance Cloud Spanner.DATABASE_ID: ID Database Cloud Spanner.PROJECT_ID: Project ID Cloud Spanner.OUTPUT_DIRECTORY: Direktori Output untuk peristiwa yang gagal/dilewati/difilter