Memuat data MySQL ke BigQuery
Untuk menjadwalkan transfer data berulang dari MySQL ke BigQuery, Anda dapat membuat konfigurasi transfer untuk menentukan objek data yang akan ditransfer, dan seberapa sering transfer data dijadwalkan. Setelah Anda menyiapkan konfigurasi transfer, BigQuery Data Transfer Service akan mentransfer data terbaru ke tabel BigQuery sesuai jadwal yang ditentukan.
Untuk mempelajari cara kerja transfer MySQL, lihat Pengantar transfer data MySQL.
Batasan
Transfer data MySQL tunduk pada batasan berikut:
- Jumlah maksimum koneksi simultan ke database MySQL ditentukan oleh parameter konfigurasi MySQL
max_connections. Secara default, setelan ini ditetapkan ke 151 koneksi, tetapi dapat dikonfigurasi ke batas yang lebih tinggi sesuai kebutuhan. Akibatnya, jumlah transfer serentak ke satu database MySQL dibatasi hingga jumlah maksimum tersebut. Batasan ini juga berarti bahwa jumlah tugas transfer serentak harus dibatasi hingga nilai yang lebih kecil dari jumlah maksimum koneksi serentak yang didukung oleh database MySQL. - Satu konfigurasi transfer hanya dapat mendukung satu operasi transfer data pada waktu tertentu. Jika transfer data kedua dijadwalkan untuk berjalan sebelum transfer pertama selesai, maka hanya transfer data pertama yang selesai, sementara transfer data lain yang tumpang-tindih dengan transfer pertama akan dilewati.
- Untuk menghindari transfer yang dilewati dalam satu konfigurasi transfer, sebaiknya tambah durasi waktu antara transfer data besar dengan mengonfigurasi opsi Frekuensi pengulangan.
- Selama transfer data, konektor MySQL mengidentifikasi
kolom kunci yang diindeks dan dipartisi untuk mentransfer data Anda dalam batch paralel. Oleh karena itu, sebaiknya tentukan kolom kunci utama atau gunakan kolom yang diindeks dalam tabel untuk meningkatkan performa dan mengurangi tingkat error dalam transfer data.
- Jika Anda memiliki batasan indeks atau kunci utama, hanya jenis kolom berikut yang didukung untuk membuat batch paralel:
INTEGERTINYINTSMALLINTFLOATREALDOUBLENUMERICBIGINTDECIMALDATE
- Transfer data MySQL yang tidak menggunakan kunci utama atau kolom yang diindeks tidak dapat mendukung lebih dari 2.000.000 data per tabel.
- Jika Anda memiliki batasan indeks atau kunci utama, hanya jenis kolom berikut yang didukung untuk membuat batch paralel:
Batasan transfer inkremental
Transfer MySQL inkremental tunduk pada batasan berikut:- Anda hanya dapat memilih
TIMESTAMPkolom sebagai kolom watermark. - Penyerapan inkremental hanya didukung untuk aset dengan kolom watermark yang valid.
- Nilai dalam kolom tanda air harus meningkat secara monoton.
- Transfer inkremental tidak dapat menyinkronkan operasi penghapusan di tabel sumber.
- Satu konfigurasi transfer hanya dapat mendukung penyerapan inkremental atau penuh.
- Anda tidak dapat memperbarui objek dalam daftar
assetsetelah penyerapan inkremental pertama dijalankan. - Anda tidak dapat mengubah mode tulis dalam konfigurasi transfer setelah operasi penyerapan inkremental pertama.
- Anda tidak dapat mengubah kolom tanda air atau kunci utama setelah menjalankan penyerapan inkremental pertama.
- Tabel BigQuery tujuan dikelompokkan menggunakan kunci utama yang disediakan dan tunduk pada batasan tabel pengelompokan.
Saat Anda memperbarui konfigurasi transfer yang ada ke mode penyerapan inkremental untuk pertama kalinya, transfer data pertama setelah pembaruan tersebut akan mentransfer semua data yang tersedia dari sumber data Anda. Setiap transfer data inkremental berikutnya hanya akan mentransfer baris baru dan yang diperbarui dari sumber data Anda.
Sebaiknya buat indeks pada kolom tanda air. Konektor ini menggunakan kolom watermark untuk filter dalam transfer inkremental, sehingga pengindeksan kolom ini dapat meningkatkan performa.
Saat melakukan transfer inkremental, Anda harus menggunakan pemetaan jenis data yang diperbarui.
Sebelum memulai
- Buat pengguna di database MySQL.
- Pastikan Anda telah menyelesaikan semua tindakan yang diperlukan untuk mengaktifkan BigQuery Data Transfer Service.
- Buat set data BigQuery untuk menyimpan data Anda.
- Pastikan Anda memiliki peran yang diperlukan untuk menyelesaikan tugas dalam dokumen ini.
Peran yang diperlukan
Untuk mendapatkan izin yang diperlukan guna membuat transfer data BigQuery Data Transfer Service,
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 ditetapkan ini berisi izin yang diperlukan untuk membuat transfer data BigQuery Data Transfer Service. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk membuat transfer data BigQuery Data Transfer Service:
-
Izin BigQuery Data Transfer Service:
-
bigquery.transfers.update -
bigquery.transfers.get
-
-
Izin BigQuery:
-
bigquery.datasets.get -
bigquery.datasets.getIamPolicy -
bigquery.datasets.update -
bigquery.datasets.setIamPolicy -
bigquery.jobs.create
-
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya.
Untuk mengetahui informasi selengkapnya, lihat Memberikan akses bigquery.admin.
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.
Koneksi jaringan
Jika alamat IP publik tidak tersedia untuk koneksi database MySQL, Anda harus menyiapkan lampiran jaringan.
Untuk petunjuk mendetail tentang penyiapan jaringan yang diperlukan, lihat dokumen berikut:
- Jika Anda mentransfer dari Cloud SQL, lihat Mengonfigurasi akses instance Cloud SQL.
- Jika Anda mentransfer dari AWS, lihat Menyiapkan AWS-Google Cloud VPN dan lampiran jaringan.
- Jika Anda mentransfer dari Azure, lihat MenyiapkanGoogle Cloud VPN dan lampiran jaringan Azure.
Memuat data MySQL ke BigQuery
Tambahkan data MySQL ke BigQuery dengan menyiapkan konfigurasi transfer menggunakan salah satu opsi berikut:
Konsol
Buka halaman Transfer data.
Klik Create transfer.
Di bagian Source type, untuk Source, pilih MySQL.
Di bagian Detail sumber data, lakukan hal berikut:
- Untuk Network attachment, pilih lampiran jaringan yang ada atau klik Create Network Attachment. Untuk mengetahui informasi selengkapnya, lihat bagian Koneksi jaringan dalam dokumen ini.
- Untuk Host, masukkan nama host atau alamat IP server database MySQL.
- Untuk Nomor port, masukkan nomor port untuk server database MySQL.
- Untuk Database name, masukkan nama database MySQL.
- Untuk Username, masukkan nama pengguna MySQL yang memulai koneksi database MySQL.
- Untuk Password, masukkan sandi pengguna MySQL yang memulai koneksi database MySQL.
- Untuk TLS Mode, pilih opsi dari menu. Untuk informasi selengkapnya tentang mode TLS, lihat Konfigurasi TLS.
- Untuk Trusted PEM Certificate, masukkan sertifikat publik dari certificate authority (CA) yang menerbitkan sertifikat TLS server database. Untuk mengetahui informasi selengkapnya, lihat Sertifikat Server Tepercaya (PEM).
- Untuk Enable legacy mapping, pilih true (default) untuk menggunakan pemetaan jenis data lama. Pilih false untuk menggunakan pemetaan jenis data yang diperbarui. Jika Anda melakukan transfer inkremental, nilai ini harus false. Untuk mengetahui informasi selengkapnya tentang update pemetaan jenis data, lihat 16 Maret 2027.
- Untuk Ingestion type, pilih Full atau Incremental.
- Jika Anda memilih Incremental (Preview), untuk Write mode, pilih Append atau Upsert. Untuk mengetahui informasi selengkapnya tentang berbagai mode penulisan, lihat Transfer penuh atau inkremental.
Untuk Objek MySQL yang akan ditransfer, klik Jelajahi.
Pilih objek yang akan ditransfer ke set data tujuan BigQuery. Anda juga dapat memasukkan objek apa pun secara manual untuk disertakan dalam transfer data di kolom ini.
- Jika Anda telah memilih Tambahkan sebagai mode penulisan inkremental, Anda harus memilih kolom sebagai kolom tanda air.
- Jika telah memilih Upsert sebagai mode penulisan inkremental, Anda harus memilih kolom sebagai kolom watermark, lalu memilih satu atau beberapa kolom sebagai kunci utama.
Di bagian Transfer config name, untuk Display name, masukkan nama tampilan untuk transfer. Nama transfer dapat berupa nilai apa pun yang memungkinkan Anda mengidentifikasi transfer jika perlu mengubahnya nanti.
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 akan berjalan saat Anda memicu transfer secara manual.
- Jika berlaku, pilih opsi Start now atau Start at a set time, lalu masukkan tanggal mulai dan waktu proses.
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.
Opsional: Di bagian Opsi notifikasi, lakukan hal berikut:
- Untuk mengaktifkan notifikasi email, klik tombol Notifikasi email ke posisi aktif. Saat Anda mengaktifkan opsi ini, administrator transfer akan menerima notifikasi email saat proses transfer gagal.
- Untuk mengonfigurasi notifikasi operasi Pub/Sub untuk transfer Anda, klik tombol Notifikasi Pub/Sub ke posisi aktif. Anda dapat memilih nama topik atau mengklik Buat topik untuk membuatnya.
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): Google Cloud project ID Anda.
Jika tanda
--project_idtidak diberikan untuk menentukan project tertentu, project default akan digunakan. - DATA_SOURCE: sumber data, yaitu
mysql. - 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 MySQL:connector.networkAttachment(opsional): nama lampiran jaringan untuk terhubung ke database MySQL.connector.database: nama database MySQL.connector.endpoint.host: nama host atau alamat IP database.connector.endpoint.port: nomor port database.connector.authentication.username: nama pengguna dari pengguna database.connector.authentication.password: sandi pengguna database. connector.connectionTypeconnector.connectionType(opsional): jenis koneksi untuk menentukan URL koneksi. Nilainya bisa berupaSERVICE,SID, atauTNS. Jika tidak diberikan, nilai defaultnya adalahSERVICE.connector.legacyMapping: ditetapkan ketrue(default) untuk menggunakan pemetaan jenis data lama. Tetapkan kefalseuntuk menggunakan pemetaan jenis data yang diperbarui. Jika Anda melakukan transfer inkremental, nilai ini harusfalse. Untuk mengetahui informasi selengkapnya tentang update pemetaan jenis data, lihat 16 Maret 2027.connector.tls.mode: tentukan konfigurasi TLS yang akan digunakan dengan transfer ini:ENCRYPT_VERIFY_CA_AND_HOSTuntuk mengenkripsi data, serta memverifikasi CA dan nama hostENCRYPT_VERIFY_CAuntuk mengenkripsi data, dan hanya memverifikasi CAENCRYPT_VERIFY_NONEhanya untuk enkripsi dataDISABLEtanpa enkripsi atau verifikasi
connector.tls.trustedServerCertificate: (opsional) memberikan satu atau beberapa sertifikat berenkode PEM. Hanya diperlukan jikaconnector.tls.modeadalahENCRYPT_VERIFY_CA_AND_HOSTatauENCRYPT_VERIFY_CA.ingestionType: tentukanfullatauincremental. Transfer inkremental didukung dalam pratinjau. Untuk mengetahui informasi selengkapnya, lihat Transfer penuh atau inkremental.writeMode: tentukanWRITE_MODE_APPENDatauWRITE_MODE_UPSERT.watermarkColumns: menentukan kolom dalam tabel Anda sebagai kolom watermark. Kolom ini wajib diisi untuk transfer inkremental.primaryKeys: menentukan kolom dalam tabel Anda sebagai kunci utama. Kolom ini wajib diisi untuk transfer inkremental.assets: daftar nama tabel MySQL yang akan ditransfer dari database MySQL sebagai bagian dari transfer.
Misalnya, perintah berikut membuat transfer MySQL bernama My Transfer:
bq mk --transfer_config --target_dataset=mydataset --data_source=mysql --display_name='My Transfer' --params='{"assets":["DB1/DEPARTMENT","DB1/EMPLOYEES"], "connector.authentication.username": "User1", "connector.authentication.password":"ABC12345", "connector.encryptionMode":"FULL", "connector.database":"DB1", "connector.endpoint.host":"54.74.220.23", "connector.endpoint.port":3306 "ingestionType":"incremental", "writeMode":"WRITE_MODE_APPEND", "watermarkColumns":["createdAt","createdAt"], "primaryKeys":[['dep_id'], ['report_by','report_title']], "connector.tls.mode": "ENCRYPT_VERIFY_CA_AND_HOST", "connector.tls.trustedServerCertificate": "PEM-encoded certificate"}'
Saat menentukan beberapa aset selama transfer inkremental, nilai
kolom watermarkColumns dan primaryKeys sesuai dengan
posisi nilai di kolom assets. Dalam contoh berikut,
dep_id sesuai dengan tabel DB1/USER1/DEPARTMENT, sedangkan report_by
dan report_title sesuai dengan tabel DB1/USER1/EMPLOYEES.
"primaryKeys":[['dep_id'], ['report_by','report_title']], "assets":["DB1/USER1/DEPARTMENT","DB1/USER1/EMPLOYEES"],
API
Gunakan
metode projects.locations.transferConfigs.create
dan berikan instance
resource TransferConfig.
Untuk menjalankan transfer data secara manual di luar jadwal reguler, Anda dapat memulai operasi pengisian ulang.
Memecahkan masalah
Jika Anda mengalami masalah saat menyiapkan transfer data, lihat Masalah transfer MySQL.
Metadata transfer
Anda juga dapat menggunakan konektor MySQL untuk mentransfer metadata ke Knowledge Catalog. Untuk mengetahui informasi selengkapnya, lihat Memuat metadata MySQL ke Knowledge Catalog.Langkah berikutnya
- Baca ringkasan tentang BigQuery Data Transfer Service.
- Pelajari cara mengelola transfer, termasuk mendapatkan informasi tentang konfigurasi transfer, membuat listingan konfigurasi transfer, dan melihat histori pelaksanaan transfer.
- Pelajari cara memuat data dengan operasi BigQuery Omni.