Menjadwalkan transfer MySQL
Konektor MySQL BigQuery Data Transfer Service memungkinkan Anda menyerap data dari instance MySQL ke BigQuery. Layanan ini mendukung instance MySQL yang dihosting di lingkungan lokal, di Cloud SQL, dan di penyedia cloud publik lainnya seperti Amazon Web Services (AWS) dan Microsoft Azure. Konektor MySQL BigQuery Data Transfer Service juga memungkinkan Anda membuat tugas transfer data berulang dan on-demand untuk mentransfer data dari database MySQL ke BigQuery.
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
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 MySQL,
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 MySQL. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
Izin berikut diperlukan untuk membuat transfer data MySQL:
-
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 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 VPN dan lampiran jaringan AWS-Google Cloud .
- Jika Anda mentransfer dari Azure, lihat Menyiapkan VPN dan lampiran jaringan Azure-Google Cloud .
Batasan
Transfer data MySQL tunduk pada batasan berikut:
- Jumlah maksimum koneksi serentak ke database MySQL ditentukan oleh parameter konfigurasi MySQL
max_connections
. Secara default, nilai ini ditetapkan ke 151 koneksi, tetapi dapat dikonfigurasi ke batas yang lebih tinggi sesuai kebutuhan. Akibatnya, jumlah transfer serentak yang dijalankan ke satu database MySQL dibatasi hingga jumlah maksimum tersebut. Batasan ini juga berarti bahwa jumlah tugas transfer serentak harus dibatasi pada nilai yang kurang dari jumlah maksimum koneksi serentak yang didukung oleh database MySQL. - Di MySQL, beberapa jenis data dipetakan ke jenis string di BigQuery untuk menghindari kehilangan data. Misalnya, jenis numerik yang ditentukan di MySQL yang tidak memiliki presisi dan skala yang ditentukan akan dipetakan ke jenis string di BigQuery.
Menyiapkan transfer data MySQL
Pilih salah satu opsi berikut:
Konsol
Buka halaman Data transfers.
Klik
Create transfer.Di bagian Source type, untuk Source, pilih MySQL.
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.
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.
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.
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 MySQL.
- Untuk Nomor port, masukkan nomor port untuk server database MySQL.
- Untuk Database name, masukkan nama database MySQL.
- Untuk Nama pengguna, masukkan nama pengguna MySQL yang memulai koneksi database MySQL.
- Untuk Sandi, masukkan sandi pengguna MySQL yang memulai koneksi database MySQL.
- Untuk Encryption mode, pilih Full dari menu untuk mengaktifkan validasi SSL penuh saat terhubung ke database MySQL, atau pilih Disable untuk tidak melakukan validasi SSL.
Untuk objek MySQL yang akan ditransfer, lakukan salah satu hal berikut:
- Klik Browse untuk memilih tabel MySQL yang diperlukan untuk transfer, lalu klik Select.
- Masukkan nama tabel secara manual di objek MySQL yang akan ditransfer.
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.
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.
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
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: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 pengguna database.connector.authentication.password
: sandi pengguna database. connector.connectionTypeconnector.connectionType
(opsional): jenis koneksi untuk menentukan URL koneksi. Ini dapat berupaSERVICE
,SID
, atauTNS
. Jika tidak diberikan, setelan defaultnya adalahSERVICE
.connector.encryptionMode
: mode enkripsi. Nilai ini dapat berupaFULL
untuk validasi SSL penuh saat terhubung ke database MySQL, atauDISABLE
untuk tidak ada validasi SSL.assets
: daftar nama tabel MySQL yang akan ditransfer dari database MySQL sebagai bagian dari transfer.
Misalnya, perintah berikut membuat transfer MySQL
yang disebut 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"}'
API
Gunakan
metode projects.locations.transferConfigs.create
dan berikan instance
resource TransferConfig
.
Pemetaan jenis data
Tabel berikut memetakan jenis data MySQL ke jenis data BigQuery yang sesuai.
Jenis data MySQL | Jenis data BigQuery |
---|---|
BIT |
BOOLEAN |
TINYINT |
INTEGER |
BOOL , BOOLEAN |
BOOLEAN |
SMALLINT |
INTEGER |
MEDIUMINT |
INTEGER |
INT , INTEGER |
INTEGER |
BIGINT |
BIGNUMERIC |
FLOAT |
FLOAT |
DOUBLE |
FLOAT |
DECIMAL |
BIGNUMERIC |
DATE |
DATE |
DATETIME |
TIMESTAMP |
TIMESTAMP |
TIMESTAMP |
TIME |
TIME |
YEAR |
DATE |
CHAR |
STRING |
VARCHAR |
STRING |
BINARY |
BYTES |
VARBINARY |
BYTES |
TINYBLOB |
BYTES |
TINYTEXT |
STRING |
BLOB |
BYTES |
TEXT |
STRING |
MEDIUMBLOB |
BYTES |
MEDIUMTEXT |
STRING |
LONGBLOB |
BYTES |
LONGTEXT |
STRING |
ENUM |
STRING |
SET |
STRING |
Memecahkan masalah
Jika Anda mengalami masalah saat menyiapkan transfer data, lihat Masalah transfer MySQL.
Langkah selanjutnya
- Untuk ringkasan BigQuery Data Transfer Service, lihat Apa itu BigQuery Data Transfer Service?.
- Untuk informasi cara menggunakan transfer, termasuk mendapatkan informasi tentang konfigurasi transfer, membuat listingan konfigurasi transfer, dan melihat histori pelaksanaan transfer, lihat Mengelola transfer.
- Pelajari cara memuat data dengan operasi lintas-cloud.