Memigrasikan skema dan data dari Teradata

Dengan menggabungkan BigQuery Data Transfer Service dan agen migrasi khusus, Anda dapat menyalin data dari instance data warehouse lokal Teradata ke BigQuery. Dokumen ini menjelaskan proses langkah demi langkah untuk memigrasikan data dari Teradata menggunakan BigQuery Data Transfer Service.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Enable the BigQuery, BigQuery Data Transfer Service, Cloud Storage, and Pub/Sub APIs.

    Enable the APIs

  5. Buat akun layanan:

    1. Di konsol Google Cloud, buka halaman Buat akun layanan.

      Buka Create service account
    2. Pilih project Anda.
    3. Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud akan mengisi kolom ID akun layanan berdasarkan nama ini.

      Di kolom Deskripsi akun layanan, masukkan sebuah deskripsi. Sebagai contoh, Service account for quickstart.

    4. Klik Buat dan lanjutkan.
    5. Berikan peran berikut ke akun layanan: roles/bigquery.user, roles/storage.objectAdmin, roles/iam.serviceAccountTokenCreator.

      Untuk memberikan peran, temukan daftar Pilih peran, lalu pilih peran.

      Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.

    6. Klik Lanjutkan.
    7. Klik Selesai untuk menyelesaikan pembuatan akun layanan.

      Jangan tutup jendela browser Anda. Anda akan menggunakannya pada langkah berikutnya.

  6. Membuat kunci akun layanan:

    1. Di konsol Google Cloud, klik alamat email untuk akun layanan yang telah dibuat.
    2. Klik Kunci.
    3. Klik Tambahkan kunci, lalu klik Buat kunci baru.
    4. Klik Create. File kunci JSON akan didownload ke komputer Anda.
    5. Klik Close.
  7. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  8. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  9. Enable the BigQuery, BigQuery Data Transfer Service, Cloud Storage, and Pub/Sub APIs.

    Enable the APIs

  10. Buat akun layanan:

    1. Di konsol Google Cloud, buka halaman Buat akun layanan.

      Buka Create service account
    2. Pilih project Anda.
    3. Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud akan mengisi kolom ID akun layanan berdasarkan nama ini.

      Di kolom Deskripsi akun layanan, masukkan sebuah deskripsi. Sebagai contoh, Service account for quickstart.

    4. Klik Buat dan lanjutkan.
    5. Berikan peran berikut ke akun layanan: roles/bigquery.user, roles/storage.objectAdmin, roles/iam.serviceAccountTokenCreator.

      Untuk memberikan peran, temukan daftar Pilih peran, lalu pilih peran.

      Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.

    6. Klik Lanjutkan.
    7. Klik Selesai untuk menyelesaikan pembuatan akun layanan.

      Jangan tutup jendela browser Anda. Anda akan menggunakannya pada langkah berikutnya.

  11. Membuat kunci akun layanan:

    1. Di konsol Google Cloud, klik alamat email untuk akun layanan yang telah dibuat.
    2. Klik Kunci.
    3. Klik Tambahkan kunci, lalu klik Buat kunci baru.
    4. Klik Create. File kunci JSON akan didownload ke komputer Anda.
    5. Klik Close.
  12. Kunci yang didownload memiliki format berikut:

    {
      "type": "service_account",
      "project_id": "PROJECT_ID",
      "private_key_id": "KEY_ID",
      "private_key": "-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY\n-----END PRIVATE KEY-----\n",
      "client_email": "SERVICE_ACCOUNT_EMAIL",
      "client_id": "CLIENT_ID",
      "auth_uri": "https://accounts.google.com/o/oauth2/auth",
      "token_uri": "https://accounts.google.com/o/oauth2/token",
      "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
      "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/SERVICE_ACCOUNT_EMAIL"
    }
    

    Pastikan Anda menyimpan kunci dengan aman karena dapat digunakan untuk melakukan autentikasi sebagai akun layanan Anda. Anda dapat memindahkan dan mengganti nama file ini jika perlu.

Menetapkan izin yang diperlukan

Pastikan akun utama yang digunakan untuk melakukan transfer memiliki peran berikut dalam project yang berisi tugas transfer:

  • Logs Viewer (roles/logging.viewer)
  • Admin Penyimpanan (roles/storage.admin), atau peran khusus yang memberikan izin berikut:
    • storage.objects.create
    • storage.objects.get
    • storage.objects.list
  • Admin BigQuery (roles/bigquery.admin), atau peran khusus yang memberikan izin berikut:
    • bigquery.datasets.create
    • bigquery.jobs.create
    • bigquery.jobs.get
    • bigquery.jobs.listAll
    • bigquery.transfers.get
    • bigquery.transfers.update

Membuat set data

Buat set data BigQuery untuk menyimpan data Anda. Anda tidak perlu membuat tabel apa pun.

Membuat bucket Cloud Storage

Buat bucket Cloud Storage untuk staging data selama tugas transfer.

Menyiapkan lingkungan lokal

Selesaikan tugas di bagian ini agar dapat menyiapkan lingkungan lokal Anda untuk tugas transfer.

Persyaratan mesin lokal

  • Agen migrasi menggunakan koneksi JDBC dengan instance Teradata dan Google Cloud API. Pastikan akses jaringan tidak diblokir oleh firewall.
  • Pastikan Java Runtime Environment 8 atau yang lebih baru telah diinstal.
  • Pastikan Anda memiliki ruang penyimpanan yang cukup untuk metode ekstraksi yang telah dipilih, seperti yang dijelaskan dalam Metode ekstraksi.
  • Jika Anda telah memutuskan untuk menggunakan ekstraksi Teradata Parallel Transporter (TPT), pastikan utilitas tbuild telah diinstal. Untuk mengetahui informasi selengkapnya tentang cara memilih metode ekstraksi, lihat Metode ekstraksi.

Detail koneksi Teradata

  • Pastikan Anda memiliki nama pengguna dan sandi pengguna Teradata dengan akses baca ke tabel sistem dan tabel yang sedang dimigrasikan.

  • Pastikan Anda mengetahui nama host dan nomor port untuk terhubung ke instance Teradata.

Mendownload driver JDBC

Download file driver JDBC terajdbc4.jar dari Teradata ke komputer yang dapat terhubung ke data warehouse.

Tetapkan variabel GOOGLE_APPLICATION_CREDENTIALS

Tetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS ke kunci akun layanan yang Anda download di bagian Sebelum memulai.

Memperbarui aturan traffic keluar Kontrol Layanan VPC

Tambahkan project Google Cloud terkelola BigQuery Data Transfer Service (nomor project: 990232121269) ke aturan traffic keluar di perimeter Kontrol Layanan VPC.

Saluran komunikasi antara agen yang berjalan di infrastruktur lokal dan BigQuery Data Transfer Service adalah dengan memublikasikan pesan Pub/Sub ke setiap topik transfer. BigQuery Data Transfer Service harus mengirimkan perintah ke agen untuk mengekstrak data, dan agen harus memublikasikan pesan kembali ke BigQuery Data Transfer Service untuk memperbarui status dan menampilkan respons ekstraksi data.

Membuat file skema kustom

Untuk menggunakan file skema kustom, bukan deteksi skema otomatis, buat file secara manual, atau minta agen migrasi membuatkannya untuk Anda saat Anda melakukan inisialisasi agen.

Jika Anda membuat file skema secara manual dan bermaksud menggunakan Konsol Google Cloud untuk membuat transfer, upload file skema tersebut ke bucket Cloud Storage dalam project yang sama dengan yang Anda rencanakan untuk transfer singkat ini.

Mendownload agen migrasi

Download agen migrasi ke komputer yang dapat terhubung ke data warehouse. Pindahkan file JAR agen migrasi ke direktori yang sama dengan file JAR driver JDBC Teradata.

Menyiapkan transfer

Buat transfer dengan BigQuery Data Transfer Service.

Jika Anda ingin file skema kustom dibuat secara otomatis, gunakan agen migrasi untuk menyiapkan transfer.

Anda tidak dapat membuat transfer sesuai permintaan menggunakan alat command line bq. Sebagai gantinya, Anda harus menggunakan Konsol Google Cloud atau BigQuery Data Transfer Service API.

Jika Anda membuat transfer berulang, sebaiknya tentukan file skema agar data dari transfer berikutnya dapat dipartisi dengan benar saat dimuat ke BigQuery. Tanpa file skema, BigQuery Data Transfer Service akan menyimpulkan skema tabel dari data sumber yang ditransfer, dan semua informasi tentang partisi, pengelompokan, kunci utama, dan pelacakan perubahan akan hilang. Selain itu, transfer berikutnya melewati tabel yang telah dimigrasikan sebelumnya setelah transfer awal. Untuk mengetahui informasi selengkapnya tentang cara membuat file skema, lihat File skema kustom.

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka halaman BigQuery

  2. Klik Data transfers.

  3. Klik Buat Transfer.

  4. Di bagian Jenis sumber, lakukan hal berikut:

    • Pilih Migrasi: Teradata.
    • Untuk Nama konfigurasi transfer, masukkan nama tampilan untuk transfer, seperti My Migration. Nama tampilan dapat berupa nilai apa pun yang memungkinkan Anda mengidentifikasi transfer dengan mudah jika perlu mengubahnya nanti.
    • Opsional: Untuk Opsi jadwal, Anda dapat membiarkan nilai default Harian (berdasarkan waktu pembuatan) atau memilih waktu lain jika menginginkan transfer inkremental berulang. Jika tidak, pilih Sesuai permintaan untuk transfer satu kali.
    • Untuk Setelan tujuan, pilih set data yang sesuai.

      Migrasi umum Teradata baru.

  5. Di bagian Detail sumber data, lanjutkan dengan detail spesifik untuk transfer Teradata Anda.

    • Untuk Jenis database, pilih Teradata.
    • Untuk bucket Cloud Storage, cari nama bucket Cloud Storage untuk staging data migrasi. Jangan ketik awalan gs://, tetapi cukup masukkan nama bucket.
    • Untuk Nama database, masukkan nama database sumber di Teradata.
    • Untuk Pola nama tabel, masukkan pola untuk mencocokkan nama tabel di database sumber. Anda dapat menggunakan ekspresi reguler untuk menentukan pola. Contoh:

      • sales|expenses cocok dengan tabel yang bernama sales dan expenses.
      • .* cocok dengan semua tabel.
    • Untuk Email akun layanan, masukkan alamat email yang terkait dengan kredensial akun layanan yang digunakan oleh agen migrasi.

    • Opsional: Jika Anda menggunakan file skema kustom, masukkan jalur dan nama file dari file tersebut di kolom Jalur file skema. Jika Anda tidak memberikan file skema kustom, BigQuery akan otomatis mendeteksi skema tabel menggunakan data sumber yang ditransfer. Anda dapat membuat file skema sendiri, seperti yang ditunjukkan dalam gambar berikut, atau Anda dapat menggunakan agen migrasi untuk membantu Anda membuat file skema. Untuk informasi tentang cara membuat file skema, lihat melakukan inisialisasi agen migrasi.

  6. Di menu Service Account, pilih service account dari akun layanan yang terkait dengan project Google Cloud Anda. Anda dapat mengaitkan akun layanan dengan transfer Anda, bukan menggunakan kredensial pengguna. Untuk mengetahui informasi selengkapnya tentang cara menggunakan akun layanan dengan transfer data, lihat Menggunakan akun layanan.

  7. Opsional: Di bagian Opsi notifikasi, lakukan hal berikut:

    • Klik tombol Notifikasi email jika Anda ingin administrator transfer menerima notifikasi email saat transfer gagal.
    • Klik tombol Notifikasi Pub/Sub agar dapat mengonfigurasi notifikasi peluncuran Pub/Sub untuk transfer Anda. Untuk Pilih topik Pub/Sub, pilih nama topik atau klik Buat topik.
  8. Klik Save.

  9. Di halaman Detail transfer, klik tab Konfigurasi.

  10. Catat nama resource untuk transfer ini karena Anda memerlukannya untuk menjalankan agen migrasi.

bq

Saat Anda membuat transfer Cloud Storage menggunakan alat bq, konfigurasi transfer ditetapkan agar berulang setiap 24 jam. Untuk transfer sesuai permintaan, gunakan Konsol Google Cloud atau BigQuery Data Transfer Service API.

Anda tidak dapat mengonfigurasi notifikasi menggunakan alat bq.

Masukkan perintah bq mk dan berikan flag pelaksanaan transfer --transfer_config. Flag berikut juga diperlukan:

  • --data_source
  • --display_name
  • --target_dataset
  • --params
bq mk \
--transfer_config \
--project_id=project ID \
--target_dataset=dataset \
--display_name=name \
--service_account_name=service_account \
--params='parameters' \
--data_source=data source

Dengan keterangan:

  • project ID adalah project ID Anda. Jika --project_id tidak diberikan untuk menentukan project tertentu, project default akan digunakan.
  • dataset adalah set data yang ingin Anda targetkan (--target_dataset) untuk konfigurasi transfer.
  • name adalah nama tampilan (--display_name) untuk konfigurasi transfer. Nama tampilan transfer dapat berupa nilai apa pun yang memungkinkan Anda mengidentifikasi transfer jika Anda perlu mengubahnya nanti.
  • service_account adalah nama akun layanan yang digunakan untuk mengautentikasi transfer Anda. Akun layanan harus dimiliki oleh project_id yang sama dengan yang digunakan untuk membuat transfer dan harus memiliki semua izin yang diperlukan yang tercantum.
  • parameters berisi parameter (--params) untuk konfigurasi transfer yang dibuat dalam format JSON. Misalnya: --params='{"param":"param_value"}'
    • Untuk migrasi Teradata, gunakan parameter berikut:
      • bucket adalah bucket Cloud Storage yang akan berfungsi sebagai area staging selama migrasi.
      • database_type merupakan Teradata.
      • agent_service_account adalah alamat email yang terkait dengan akun layanan yang Anda buat.
      • database_name adalah nama database sumber di Teradata.
      • table_name_patterns adalah pola untuk mencocokkan nama tabel di database sumber. Anda dapat menggunakan ekspresi reguler untuk menentukan pola. Pola ini harus mengikuti sintaksis ekspresi reguler Java. Misalnya:
        • sales|expenses cocok dengan tabel yang bernama sales dan expenses.
        • .* cocok dengan semua tabel.
  • data_source adalah sumber data (--data_source): on_premises.

Misalnya, perintah berikut akan membuat transfer Teradata bernama My Transfer menggunakan bucket Cloud Storage mybucket dan set data target mydataset. Transfer akan memigrasikan semua tabel dari mydatabase data warehouse Teradata dan file skema opsionalnya adalah myschemafile.json.

bq mk \
--transfer_config \
--project_id=123456789876 \
--target_dataset=MyDataset \
--display_name='My Migration' \
--params='{"bucket": "mybucket", "database_type": "Teradata",
"database_name":"mydatabase", "table_name_patterns": ".*",
"agent_service_account":"myemail@mydomain.com", "schema_file_path":
"gs://mybucket/myschemafile.json"}' \
--data_source=on_premises

Setelah menjalankan perintah, Anda akan menerima pesan seperti berikut:

[URL omitted] Please copy and paste the above URL into your web browser and follow the instructions to retrieve an authentication code.

Ikuti petunjuknya, lalu tempel kode autentikasi di command line.

API

Gunakan metode projects.locations.transferConfigs.create dan berikan instance resource TransferConfig.

Java

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

import com.google.api.gax.rpc.ApiException;
import com.google.cloud.bigquery.datatransfer.v1.CreateTransferConfigRequest;
import com.google.cloud.bigquery.datatransfer.v1.DataTransferServiceClient;
import com.google.cloud.bigquery.datatransfer.v1.ProjectName;
import com.google.cloud.bigquery.datatransfer.v1.TransferConfig;
import com.google.protobuf.Struct;
import com.google.protobuf.Value;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

// Sample to create a teradata transfer config.
public class CreateTeradataTransfer {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    final String projectId = "MY_PROJECT_ID";
    String datasetId = "MY_DATASET_ID";
    String databaseType = "Teradata";
    String bucket = "cloud-sample-data";
    String databaseName = "MY_DATABASE_NAME";
    String tableNamePatterns = "*";
    String serviceAccount = "MY_SERVICE_ACCOUNT";
    String schemaFilePath = "/your-schema-path";
    Map<String, Value> params = new HashMap<>();
    params.put("database_type", Value.newBuilder().setStringValue(databaseType).build());
    params.put("bucket", Value.newBuilder().setStringValue(bucket).build());
    params.put("database_name", Value.newBuilder().setStringValue(databaseName).build());
    params.put("table_name_patterns", Value.newBuilder().setStringValue(tableNamePatterns).build());
    params.put("agent_service_account", Value.newBuilder().setStringValue(serviceAccount).build());
    params.put("schema_file_path", Value.newBuilder().setStringValue(schemaFilePath).build());
    TransferConfig transferConfig =
        TransferConfig.newBuilder()
            .setDestinationDatasetId(datasetId)
            .setDisplayName("Your Teradata Config Name")
            .setDataSourceId("on_premises")
            .setParams(Struct.newBuilder().putAllFields(params).build())
            .setSchedule("every 24 hours")
            .build();
    createTeradataTransfer(projectId, transferConfig);
  }

  public static void createTeradataTransfer(String projectId, TransferConfig transferConfig)
      throws IOException {
    try (DataTransferServiceClient client = DataTransferServiceClient.create()) {
      ProjectName parent = ProjectName.of(projectId);
      CreateTransferConfigRequest request =
          CreateTransferConfigRequest.newBuilder()
              .setParent(parent.toString())
              .setTransferConfig(transferConfig)
              .build();
      TransferConfig config = client.createTransferConfig(request);
      System.out.println("Cloud teradata transfer created successfully :" + config.getName());
    } catch (ApiException ex) {
      System.out.print("Cloud teradata transfer was not created." + ex.toString());
    }
  }
}

Agen migrasi

Jika ingin, Anda dapat menyiapkan transfer langsung dari agen migrasi. Untuk mengetahui informasi selengkapnya, lihat Melakukan inisialisasi agen migrasi.

Melakukan inisialisasi agen migrasi

Anda harus melakukan inisialisasi agen migrasi untuk transfer baru. Inisialisasi hanya diperlukan sekali untuk transfer, baik berulang maupun tidak. Inisialisasi hanya mengonfigurasi agen migrasi, dan tidak memulai transfer.

Jika akan menggunakan agen migrasi untuk membuat file skema kustom, pastikan Anda memiliki direktori yang dapat ditulis dalam direktori kerja dengan nama yang sama seperti project yang ingin digunakan untuk transfer ini. Di sini agen migrasi akan membuat file skema. Misalnya, jika Anda bekerja di /home dan menyiapkan transfer di project myProject, buat direktori /home/myProject dan pastikan direktori tersebut dapat ditulis oleh pengguna.

  1. Buka sesi baru. Pada command line, berikan perintah inisialisasi, yang mengikuti bentuk ini:

    java -cp \
    OS-specific-separated-paths-to-jars (JDBC and agent) \
    com.google.cloud.bigquery.dms.Agent \
    --initialize
    

    Contoh berikut menunjukkan perintah inisialisasi saat file JAR driver JDBC dan agen migrasi berada di direktori migration lokal:

    Unix, Linux, Mac OS

    java -cp \
    /usr/local/migration/terajdbc4.jar:/usr/local/migration/mirroring-agent.jar \
    com.google.cloud.bigquery.dms.Agent \
    --initialize
    

    Windows

    Salin semua file ke dalam folder C:\migration (atau sesuaikan jalur dalam perintah), lalu jalankan:

    java -cp C:\migration\terajdbc4.jar;C:\migration\mirroring-agent.jar com.google.cloud.bigquery.dms.Agent --initialize
    
  2. Jika diminta, konfigurasi opsi berikut:

    1. Pilih apakah akan menyimpan template Teradata Parallel Transporter (TPT) ke disk, atau tidak. Jika berencana menggunakan metode ekstraksi TPT, Anda dapat mengubah template tersimpan dengan parameter yang sesuai dengan instance Teradata.
    2. Ketik jalur ke direktori lokal yang dapat digunakan oleh tugas transfer untuk ekstraksi file. Pastikan Anda memiliki ruang penyimpanan minimum yang direkomendasikan seperti yang dijelaskan dalam Metode ekstraksi.
    3. Ketik nama host database.
    4. Ketik port database.
    5. Pilih apakah akan menggunakan Teradata Parallel Transporter (TPT) sebagai metode ekstraksi, atau tidak.
    6. Opsional: Ketik jalur ke file kredensial database.
    7. Pilih apakah akan menentukan nama konfigurasi BigQuery Data Transfer Service.

      Jika Anda melakukan inisialisasi agen migrasi untuk transfer yang telah Anda siapkan, lakukan langkah berikut:

      1. Ketik Nama resource transfer. Anda dapat menemukannya di tab Konfigurasi di halaman Detail transfer untuk transfer.
      2. Saat diminta, ketik jalur dan nama file untuk file konfigurasi agen migrasi yang akan dibuat. Lihat file ini saat menjalankan agen migrasi untuk memulai transfer.
      3. Lewati langkah-langkah yang tersisa.

      Jika Anda menggunakan agen migrasi untuk menyiapkan transfer, tekan Enter untuk melanjutkan ke perintah berikutnya.

    8. Ketik ID Project Google Cloud.

    9. Ketik nama database sumber di Teradata.

    10. Ketik pola untuk mencocokkan nama tabel di database sumber. Anda dapat menggunakan ekspresi reguler untuk menentukan pola. Contoh:

      • sales|expenses cocok dengan tabel yang bernama sales dan expenses.
      • .* cocok dengan semua tabel.
    11. Opsional: Ketik jalur ke file skema JSON lokal. Tindakan ini sangat direkomendasikan untuk transfer berulang.

      Jika Anda tidak menggunakan file skema, atau jika Anda ingin agen migrasi membuatnya untuk Anda, tekan Enter untuk melanjutkan ke prompt berikutnya.

    12. Pilih apakah akan membuat file skema baru atau tidak.

      Jika Anda ingin membuat file skema:

      1. Ketik yes.
      2. Ketik nama pengguna dari pengguna teradata yang memiliki akses baca ke tabel sistem dan tabel yang ingin Anda migrasikan.
      3. Ketik sandi untuk pengguna tersebut.

        Agen migrasi membuat file skema dan meng-output lokasinya.

      4. Ubah file skema untuk menandai partisi, pengelompokan, kunci utama, dan kolom pelacakan perubahan, serta verifikasi bahwa Anda ingin menggunakan skema ini untuk konfigurasi transfer. Lihat File skema kustom untuk mendapatkan tip.

      5. Tekan Enter untuk melanjutkan ke prompt berikutnya.

      Jika Anda tidak ingin membuat file skema, ketik no.

    13. Ketik nama bucket Cloud Storage target untuk data migrasi staging sebelum memuatnya ke BigQuery. Jika Anda meminta agen migrasi membuat file skema kustom, file tersebut juga akan diupload ke bucket ini.

    14. Ketik nama set data tujuan di BigQuery.

    15. Ketik nama tampilan untuk konfigurasi transfer.

    16. Ketik jalur dan nama file untuk file konfigurasi agen migrasi yang akan dibuat.

  3. Setelah memasukkan semua parameter yang diminta, agen migrasi akan membuat file konfigurasi dan meng-outputnya ke jalur lokal yang Anda tentukan. Lihat bagian berikutnya untuk mempelajari file konfigurasi lebih lanjut.

File konfigurasi untuk agen migrasi

File konfigurasi yang dibuat pada langkah inisialisasi terlihat mirip dengan contoh ini:


{
  "agent-id": "81f452cd-c931-426c-a0de-c62f726f6a6f",
  "transfer-configuration": {
    "project-id": "123456789876",
    "location": "us",
    "id": "61d7ab69-0000-2f6c-9b6c-14c14ef21038"
  },
  "source-type": "teradata",
  "console-log": false,
  "silent": false,
  "teradata-config": {
    "connection": {
      "host": "localhost"
    },
    "local-processing-space": "extracted",
    "database-credentials-file-path": "",
    "max-local-storage": "50GB",
    "gcs-upload-chunk-size": "32MB",
    "use-tpt": true,
    "transfer-views": false,
    "max-sessions": 0,
    "spool-mode": "NoSpool",
    "max-parallel-upload": 4,
    "max-parallel-extract-threads": 1,
    "session-charset": "UTF8",
    "max-unload-file-size": "2GB"
  }
}
   

Opsi transfer tugas di file konfigurasi agen migrasi

  • transfer-configuration: Informasi tentang konfigurasi transfer ini di BigQuery.
  • teradata-config: Informasi khusus untuk ekstraksi Teradata ini:

    • connection: Informasi nama host dan port
    • local-processing-space: Folder ekstraksi tempat agen akan mengekstrak data tabel, sebelum menguploadnya ke Cloud Storage.
    • database-credentials-file-path: (Opsional) Jalur ke file yang berisi kredensial untuk terhubung ke database Teradata secara otomatis. File harus berisi dua baris untuk kredensial. Anda dapat menggunakan nama pengguna/sandi, seperti yang ditunjukkan pada contoh berikut:
      username=abc
      password=123
      
      Anda juga dapat menggunakan secret dari SecretManager:
      username=abc
      secret_resource_id=projects/my-project/secrets/my-secret-name/versions/1
      
      Saat menggunakan file kredensial, berhati-hatilah ketika mengontrol akses ke folder tempat Anda menyimpannya di sistem file lokal karena file tersebut tidak akan dienkripsi. Jika tidak ada jalur yang diberikan, Anda akan diminta untuk memasukkan nama pengguna dan sandi saat memulai agen.
    • max-local-storage: Jumlah maksimum penyimpanan lokal yang akan digunakan untuk ekstraksi di direktori staging yang ditentukan. Nilai defaultnya adalah 50GB. Format yang didukung adalah: numberKB|MB|GB|TB.

      Dalam semua mode ekstraksi, file akan dihapus dari direktori staging lokal Anda setelah diupload ke Cloud Storage.

    • use-tpt: Mengarahkan agen migrasi untuk menggunakan Teradata Parallel Transporter (TPT) sebagai metode ekstraksi.

      Untuk setiap tabel, agen migrasi akan membuat skrip TPT, memulai proses tbuild, dan menunggu hingga selesai. Setelah proses tbuild selesai, agen akan mencantumkan dan mengupload file yang diekstrak ke Cloud Storage, lalu menghapus skrip TPT. Untuk mengetahui informasi selengkapnya, lihat Metode ekstraksi.

    • transfer-views: Mengarahkan agen migrasi agar juga mentransfer data dari tampilan. Gunakan ini hanya jika Anda memerlukan penyesuaian data selama migrasi. Dalam kasus lainnya, migrasikan tampilan ke Tampilan BigQuery. Opsi ini memiliki prasyarat berikut:

      • Anda hanya dapat menggunakan opsi ini dengan Teradata versi 16.10 dan yang lebih baru.
      • Tampilan harus memiliki kolom "partisi" bilangan bulat yang ditentukan dan mengarah ke ID partisi untuk baris yang ditentukan dalam tabel dasar.
    • max-sessions: Menentukan jumlah sesi maksimum yang digunakan oleh tugas ekspor (FastExport atau TPT). Jika ditetapkan ke 0, database Teradata akan menentukan jumlah sesi maksimum untuk setiap tugas ekspor.

    • gcs-upload-chunk-size: File besar diupload ke Cloud Storage dalam bentuk potongan. Parameter ini beserta max-parallel-upload digunakan untuk mengontrol jumlah data yang diupload ke Cloud Storage secara bersamaan. Misalnya, jika gcs-upload-chunk-size adalah 64 MB dan max-parallel-upload adalah 10 MB, maka agen migrasi secara teori dapat mengupload 640 MB (64 MB * 10) data secara sama. Jika potongan gagal diupload, seluruh potongan harus dicoba lagi. Ukuran potongan harus kecil.

    • max-parallel-upload: Nilai ini menentukan jumlah maksimum thread yang digunakan oleh agen migrasi untuk mengupload file ke Cloud Storage. Jika tidak ditentukan, setelan defaultnya adalah jumlah prosesor yang tersedia untuk mesin virtual Java. Aturan praktisnya adalah memilih nilai berdasarkan jumlah inti yang Anda miliki di mesin yang menjalankan agen. Jadi, jika Anda memiliki inti n, thread optimal harus berjumlah n. Jika intinya bersifat hyper-thread, thread optimal harus berjumlah (2 * n). Ada juga setelan lain seperti bandwidth jaringan yang harus Anda pertimbangkan saat menyesuaikan max-parallel-upload. Menyesuaikan parameter ini dapat meningkatkan performa upload ke Cloud Storage.

    • spool-mode : Pada umumnya, mode NoSpool adalah opsi terbaik. NoSpool adalah nilai default dalam konfigurasi agen. Anda dapat mengubah parameter ini jika salah satu kekurangan NoSpool berlaku untuk kasus Anda.

    • max-unload-file-size: Menentukan ukuran maksimum file yang diekstrak. Parameter ini tidak diterapkan untuk ekstraksi TPT.

    • max-parallel-extract-threads: Konfigurasi ini hanya digunakan dalam mode FastExport. Fungsi ini menentukan jumlah thread paralel yang digunakan untuk mengekstrak data dari Teradata. Menyesuaikan parameter ini dapat meningkatkan performa ekstraksi.

    • tpt-template-path: Gunakan konfigurasi ini untuk memberikan skrip ekstraksi TPT kustom sebagai input. Anda dapat menggunakan parameter ini untuk menerapkan transformasi ke data migrasi.

    • schema-mapping-rule-path: (Opsional) Jalur ke file konfigurasi yang berisi pemetaan skema untuk mengganti aturan pemetaan default. Beberapa jenis pemetaan hanya berfungsi dengan mode Teradata Parallel Transporter (TPT).

      Contoh: Pemetaan dari jenis Teradata TIMESTAMP ke jenis BigQuery DATETIME:

      {
      "rules": [
        {
          "database": {
              "name": "database.*",
              "tables": [
                 {
                   "name": "table.*"
                 }
              ]
          },
          "match": {
            "type": "COLUMN_TYPE",
            "value": "TIMESTAMP"
          },
          "action": {
            "type": "MAPPING",
            "value": "DATETIME"
          }
        }
      ]
      }
      

      Atribut:

      • database: (Opsional) name adalah ekspresi reguler yang akan disertakan dalam database. Semua {i>database<i} disertakan secara {i>default<i}.
      • tables: (Opsional) berisi array tabel. name adalah ekspresi reguler yang akan disertakan dalam tabel. Semua tabel disertakan secara {i>default<i}.
      • match: (Wajib)
        • type nilai yang didukung: COLUMN_TYPE.
        • value nilai yang didukung: TIMESTAMP, DATETIME.
      • action: (Wajib)
        • type nilai yang didukung: MAPPING.
        • value nilai yang didukung: TIMESTAMP, DATETIME.
    • compress-output: (Opsional) menentukan perlu atau tidaknya data dikompresi sebelum disimpan di Cloud Storage. Nilai ini hanya diterapkan dalam mode tpt. Secara default, nilainya adalah false.

Menjalankan agen migrasi

Setelah melakukan inisialisasi agen migrasi dan membuat file konfigurasi, gunakan langkah-langkah berikut untuk menjalankan agen dan memulai migrasi:

  1. Jalankan agen dengan menentukan jalur ke driver JDBC, agen migrasi, dan file konfigurasi yang telah dibuat di langkah inisialisasi sebelumnya.

    java -cp \
    OS-specific-separated-paths-to-jars (JDBC and agent) \
    com.google.cloud.bigquery.dms.Agent \
    --configuration-file=path to configuration file
    

    Unix, Linux, Mac OS

    java -cp \
    /usr/local/migration/Teradata/JDBC/terajdbc4.jar:mirroring-agent.jar \
    com.google.cloud.bigquery.dms.Agent \
    --configuration-file=config.json
    

    Windows

    Salin semua file ke dalam folder C:\migration (atau sesuaikan jalur dalam perintah), lalu jalankan:

    java -cp C:\migration\terajdbc4.jar;C:\migration\mirroring-agent.jar com.google.cloud.bigquery.dms.Agent --configuration-file=config.json
    

    Jika Anda siap melanjutkan migrasi, tekan Enter dan agen akan melanjutkan jika classpath yang diberikan selama inisialisasi bernilai valid.

  2. Saat diminta, ketik nama pengguna dan sandi untuk koneksi database. Jika nama pengguna dan sandi bernilai valid, migrasi data akan dimulai.

    Opsional Di perintah untuk memulai migrasi, Anda juga dapat menggunakan flag yang meneruskan file kredensial ke agen, bukan memasukkan nama pengguna dan sandi setiap waktu. Lihat parameter opsional database-credentials-file-path dalam file konfigurasi agen untuk informasi mengetahui selengkapnya. Saat menggunakan file kredensial, ambil langkah yang sesuai untuk mengontrol akses ke folder tempat Anda menyimpannya di sistem file lokal, karena file tersebut tidak akan dienkripsi.

  3. Biarkan sesi ini terbuka hingga migrasi selesai. Jika Anda membuat transfer migrasi berulang, biarkan sesi ini tetap terbuka tanpa batas waktu. Jika sesi ini terganggu, transfer saat ini dan selanjutnya akan gagal.

  4. Pantau secara berkala apakah agen berjalan atau tidak. Jika proses transfer sedang berlangsung dan tidak ada agen yang merespons dalam waktu 24 jam, proses transfer akan gagal.

  5. Jika agen migrasi berhenti berfungsi saat transfer sedang berlangsung atau dijadwalkan, Konsol Google Cloud akan menampilkan status error dan meminta Anda untuk memulai ulang agen. Untuk memulai agen migrasi lagi, lanjutkan dari awal bagian ini, menjalankan agen migrasi, dengan perintah untuk menjalankan agen migrasi . Anda tidak perlu mengulangi perintah inisialisasi. Transfer dilanjutkan dari titik tempat tabel tidak selesai.

Melacak progres migrasi

Anda dapat melihat status migrasi di Konsol Google Cloud. Anda juga dapat menyiapkan notifikasi Pub/Sub atau email. Lihat Notifikasi BigQuery Data Transfer Service.

BigQuery Data Transfer Service menjadwalkan dan memulai transfer yang dijalankan pada jadwal yang ditentukan setelah pembuatan konfigurasi transfer. Agen migrasi harus berjalan saat proses transfer aktif. Jika tidak ada info terbaru dari agen dalam waktu 24 jam, proses transfer akan gagal.

Contoh status migrasi di Konsol Google Cloud:

Status migrasi

Mengupgrade agen migrasi

Jika versi baru agen migrasi tersedia, Anda harus memperbarui agen migrasi secara manual. Untuk menerima pemberitahuan BigQuery Data Transfer Service, Anda harus berlangganan catatan rilis.

Langkah selanjutnya