Menjadwalkan transfer PostgreSQL

Konektor BigQuery Data Transfer Service untuk PostgreSQL membantu pengguna membuat tugas transfer data on demand dan berulang untuk mentransfer data dari instance PostgreSQL mereka ke BigQuery. Konektor ini mendukung instance PostgreSQL yang dihosting di lingkungan lokal, Cloud SQL, serta penyedia cloud publik lainnya seperti Amazon Web Services (AWS) dan Microsoft Azure.

Batasan

Transfer data PostgreSQL tunduk pada batasan berikut:

  • Jumlah maksimum transfer serentak yang berjalan ke satu database PostgreSQL ditentukan oleh jumlah maksimum koneksi serentak yang didukung oleh database PostgreSQL. Jumlah tugas transfer serentak harus dibatasi pada nilai yang kurang dari jumlah maksimum koneksi serentak yang didukung oleh database PostgreSQL.
  • Di PostgreSQL, beberapa jenis data dipetakan ke jenis string di BigQuery untuk menghindari kehilangan data. Misalnya, jenis numerik yang ditentukan di PostgreSQL yang tidak memiliki presisi dan skala yang ditentukan akan dipetakan ke jenis string di BigQuery.

Sebelum memulai

Peran yang diperlukan

Jika ingin menyiapkan notifikasi operasi transfer untuk Pub/Sub, pastikan Anda memiliki izin Identity and Access Management (IAM) pubsub.topics.setIamPolicy. Izin Pub/Sub tidak diperlukan jika Anda hanya menyiapkan notifikasi email. Untuk informasi selengkapnya, lihat Notifikasi operasi BigQuery Data Transfer Service.

Untuk mendapatkan izin yang diperlukan guna membuat transfer data PostgreSQL, minta administrator untuk memberi Anda peran IAM BigQuery Admin (roles/bigquery.admin) di project Anda. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.

Peran yang telah ditentukan ini berisi izin yang diperlukan untuk membuat transfer data PostgreSQL. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk membuat transfer data PostgreSQL:

  • bigquery.transfers.update
  • bigquery.datasets.get

Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.

Koneksi jaringan

Jika alamat IP publik tidak tersedia untuk koneksi database PostgreSQL, Anda harus menyiapkan lampiran jaringan.

Untuk petunjuk mendetail tentang penyiapan jaringan yang diperlukan, lihat dokumen berikut:

Menyiapkan transfer data PostgreSQL

Pilih salah satu opsi berikut:

Konsol

  1. Buka halaman Data transfers.

    Buka Data transfers

  2. Klik Create transfer.

  3. Di bagian Source type, untuk Source, pilih PostgreSQL.

  4. Di bagian Transfer config name, untuk Display name, masukkan nama untuk transfer. Nama transfer dapat berupa nilai apa pun yang memungkinkan Anda mengidentifikasi transfer jika perlu mengubahnya nanti.

  5. Di bagian Opsi jadwal, lakukan tindakan berikut:

    • Pilih frekuensi pengulangan. Jika memilih opsi Jam, Hari (default), Minggu, atau Bulan, Anda juga harus menentukan frekuensinya. Anda juga dapat memilih opsi Custom untuk membuat frekuensi pengulangan yang lebih spesifik. Jika Anda memilih opsi On-demand, transfer data ini hanya berjalan saat Anda memicu transfer secara manual.
    • Jika berlaku, pilih opsi Start now atau Start at a set time dan masukkan tanggal mulai dan waktu proses.
  6. Di bagian Destination settings, untuk Dataset, pilih set data yang Anda buat untuk menyimpan data, atau klik Create new dataset dan buat set data untuk digunakan sebagai set data tujuan.

  7. Di bagian Detail sumber data, lakukan hal berikut:

    • Untuk Network attachment, pilih lampiran jaringan yang ada atau klik Create Network Attachment. Untuk informasi selengkapnya, lihat bagian Koneksi jaringan dalam dokumen ini.
    • Untuk Host, masukkan nama host atau alamat IP server database PostgreSQL.
    • Untuk Nomor port, masukkan nomor port untuk server database PostgreSQL.
    • Untuk Nama database, masukkan nama database PostgreSQL.
    • Untuk Nama Pengguna, masukkan nama pengguna pengguna PostgreSQL yang memulai koneksi database PostgreSQL.
    • Untuk Sandi, masukkan sandi pengguna PostgreSQL yang memulai koneksi database PostgreSQL.
    • Untuk objek PostgreSQL yang akan ditransfer, lakukan salah satu tindakan berikut:

      • Klik Browse untuk memilih tabel PostgreSQL yang diperlukan untuk transfer, lalu klik Select.
      • Masukkan nama tabel secara manual di objek PostgreSQL yang akan ditransfer.

    Detail sumber data di halaman Buat transfer

  8. Opsional: Di menu Akun layanan, tentukan akun layanan kustom untuk memberikan otorisasi transfer. Pastikan akun layanan yang digunakan memiliki semua peran dan izin yang diperlukan. Untuk mengetahui informasi selengkapnya, lihat Mentransfer pemilik sebagai akun layanan.

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

    • Untuk mengaktifkan notifikasi email, klik tombol Notifikasi email ke posisi aktif. Jika Anda mengaktifkan opsi ini, administrator transfer akan menerima notifikasi email saat transfer yang dijalankan gagal.
    • Untuk mengonfigurasi notifikasi operasi Pub/Sub untuk transfer Anda, klik tombol Notifikasi Pub/Sub ke posisi aktif. Anda dapat memilih nama topik atau klik Buat topik untuk membuatnya.
  10. Klik Simpan.

bq

Masukkan perintah bq mk dan berikan flag pembuatan transfer --transfer_config:

bq mk \
    --transfer_config \
    --project_id=PROJECT_ID \
    --data_source=DATA_SOURCE \
    --display_name=DISPLAY_NAME \
    --target_dataset=DATASET \
    --params='PARAMETERS'

Ganti kode berikut:

  • PROJECT_ID (opsional): project ID Google Cloud Anda. Jika flag --project_id tidak diberikan untuk menentukan project tertentu, project default akan digunakan.
  • DATA_SOURCE: sumber data, yaitu postgresql.
  • DISPLAY_NAME: nama tampilan untuk konfigurasi transfer data. Nama transfer dapat berupa nilai apa pun yang memungkinkan Anda mengidentifikasi transfer jika perlu mengubahnya nanti.
  • DATASET: set data target untuk konfigurasi transfer data.
  • PARAMETERS: parameter untuk konfigurasi transfer yang dibuat dalam format JSON. Contoh: --params='{"param":"param_value"}'. Berikut adalah parameter untuk transfer PostgreSQL:

    • networkAttachment (opsional): nama lampiran jaringan untuk terhubung ke database PostgreSQL.
    • connector.database: nama database PostgreSQL.
    • connector.endpoint.host: nama host atau alamat IP database.
    • connector.endpoint.port: nomor port database.
    • connector.authentication.username: nama pengguna pengguna database.
    • connector.authentication.password: sandi pengguna database.
    • assets: daftar nama tabel PostgreSQL yang akan ditransfer dari database PostgreSQL sebagai bagian dari transfer.

Misalnya, perintah berikut membuat transfer PostgreSQL yang disebut My Transfer:

bq mk \
    --transfer_config \
    --target_dataset=mydataset \
    --data_source=postgresql \
    --display_name='My Transfer' \
    --params='{"assets":["DB1/PUBLIC/DEPARTMENT","DB1/PUBLIC/EMPLOYEES"], \
        "connector.authentication.username": "User1", \
        "connector.authentication.password":"ABC12345", \
        "connector.database":"DB1", \
        "Connector.endpoint.host":"192.168.0.1", \
        "Connector.endpoint.port":"1520"}' 

API

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

Pemetaan jenis data

Tabel berikut memetakan jenis data PostgreSQL ke jenis data BigQuery yang sesuai.

Jenis data PostgreSQL Jenis data BigQuery
bigint INTEGER
bigserial INTEGER
bit(n) STRING
bit varying(n) STRING
boolean BOOLEAN
bytea BYTES
character STRING
character varying STRING
double precision FLOAT
integer INTEGER
numeric(precision, scale)/decimal(precision, scale) NUMERIC
real FLOAT
smallint INTEGER
smallserial INTEGER
serial INTEGER
text INTEGER
date DATE
time [ (p) ] [ without timezone ] TIMESTAMP
time [ (p) ] with time zone TIMESTAMP
timestamp [ (p) ] [ without timezone ] TIMESTAMP
timestamp [ (p) ] with time zone TIMESPAMP
xml STRING
tsquery STRING
tsvector STRING
uuid STRING
box STRING
cidr STRING
circle STRING
inet STRING
interval STRING
json STRING
jsonb STRING
line STRING
lseg STRING
macaddr STRING
macaddr8 STRING
money STRING
path STRING
point STRING
polygon STRING

Memecahkan masalah

Jika Anda mengalami masalah saat menyiapkan transfer data, lihat Masalah transfer PostgreSQL.

Langkah selanjutnya