Salin Data MySQL Menggunakan Baris Perintah - AWS Data Pipeline

AWS Data Pipeline tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS Data Pipeline dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Salin Data MySQL Menggunakan Baris Perintah

Anda dapat membuat alur untuk menyalin data dari tabel MySQL ke file di bucket Amazon S3.

Prasyarat

Sebelum memulai tutorial ini, Anda harus menyelesaikan langkah berikut:

  1. Pasang dan konfigurasi antarmuka baris perintah (CLI). Untuk informasi selengkapnya, lihat Mengakses AWS Data Pipeline.

  2. Pastikan bahwa peran IAM bernama DataPipelineDefaultRoledan DataPipelineDefaultResourceRoleada. AWS Data Pipeline Konsol membuat peran ini untuk Anda secara otomatis. Jika Anda belum pernah menggunakan AWS Data Pipeline konsol setidaknya sekali, maka Anda harus membuat peran ini secara manual. Untuk informasi selengkapnya, lihat Peran IAM untuk AWS Data Pipeline.

  3. Mengatur bucket Amazon S3 dan instans Amazon RDS. Untuk informasi selengkapnya, lihat Sebelum Anda Memulai.

Mendefinisikan Alur dalam Format JSON

Contoh skenario ini menunjukkan bagaimana menggunakan definisi alur JSON dan CLI AWS Data Pipeline untuk menyalin data (baris) dari tabel dalam basis data MySQL ke file CSV (nilai yang dipisahkan koma) dalam bucket Amazon S3 pada interval waktu yang ditentukan.

Ini adalah file JSON definisi alur lengkap diikuti dengan penjelasan untuk setiap bagiannya.

catatan

Kami merekomendasikan bahwa Anda menggunakan editor teks yang dapat membantu Anda memverifikasi sintaks file yang diformat JSON, dan nama file menggunakan ekstensi file .json.

{ "objects": [ { "id": "ScheduleId113", "startDateTime": "2013-08-26T00:00:00", "name": "My Copy Schedule", "type": "Schedule", "period": "1 Days" }, { "id": "CopyActivityId112", "input": { "ref": "MySqlDataNodeId115" }, "schedule": { "ref": "ScheduleId113" }, "name": "My Copy", "runsOn": { "ref": "Ec2ResourceId116" }, "onSuccess": { "ref": "ActionId1" }, "onFail": { "ref": "SnsAlarmId117" }, "output": { "ref": "S3DataNodeId114" }, "type": "CopyActivity" }, { "id": "S3DataNodeId114", "schedule": { "ref": "ScheduleId113" }, "filePath": "s3://example-bucket/rds-output/output.csv", "name": "My S3 Data", "type": "S3DataNode" }, { "id": "MySqlDataNodeId115", "username": "my-username", "schedule": { "ref": "ScheduleId113" }, "name": "My RDS Data", "*password": "my-password", "table": "table-name", "connectionString": "jdbc:mysql://your-sql-instance-name.id.region-name.rds.amazonaws.com:3306/database-name", "selectQuery": "select * from #{table}", "type": "SqlDataNode" }, { "id": "Ec2ResourceId116", "schedule": { "ref": "ScheduleId113" }, "name": "My EC2 Resource", "role": "DataPipelineDefaultRole", "type": "Ec2Resource", "resourceRole": "DataPipelineDefaultResourceRole" }, { "message": "This is a success message.", "id": "ActionId1", "subject": "RDS to S3 copy succeeded!", "name": "My Success Alarm", "role": "DataPipelineDefaultRole", "topicArn": "arn:aws:sns:us-east-1:123456789012:example-topic", "type": "SnsAlarm" }, { "id": "Default", "scheduleType": "timeseries", "failureAndRerunMode": "CASCADE", "name": "Default", "role": "DataPipelineDefaultRole", "resourceRole": "DataPipelineDefaultResourceRole" }, { "message": "There was a problem executing #{node.name} at for period #{node.@scheduledStartTime} to #{node.@scheduledEndTime}", "id": "SnsAlarmId117", "subject": "RDS to S3 copy failed", "name": "My Failure Alarm", "role": "DataPipelineDefaultRole", "topicArn": "arn:aws:sns:us-east-1:123456789012:example-topic", "type": "SnsAlarm" } ] }

Simpul Data MySQL

Komponen MySqlDataNode pipa input mendefinisikan lokasi untuk data input; dalam hal ini, instans Amazon RDS. MySqlDataNode Komponen input didefinisikan oleh bidang-bidang berikut:

{ "id": "MySqlDataNodeId115", "username": "my-username", "schedule": { "ref": "ScheduleId113" }, "name": "My RDS Data", "*password": "my-password", "table": "table-name", "connectionString": "jdbc:mysql://your-sql-instance-name.id.region-name.rds.amazonaws.com:3306/database-name", "selectQuery": "select * from #{table}", "type": "SqlDataNode" },
Id

Nama yang ditetapkan pengguna, yang merupakan label untuk referensi Anda saja.

nama pengguna

Nama pengguna aku basis data yang memiliki izin yang cukup untuk mengambil data dari tabel basis data. Ganti my-username dengan nama pengguna Anda.

Jadwal

Sebuah referensi ke komponen jadwal yang kita buat di baris sebelumnya dari file JSON.

Nama

Nama yang ditetapkan pengguna, yang merupakan label untuk referensi Anda saja.

*Kata Sandi

Kata sandi untuk akun database dengan awalan tanda bintang untuk menunjukkan bahwa AWS Data Pipeline harus mengenkripsi nilai kata sandi. Ganti my-password dengan kata sandi yang benar untuk pengguna Anda. Bidang kata sandi didahului oleh karakter khusus tanda bintang. Untuk informasi selengkapnya, lihat Karakter khusus.

Tabel

Nama tabel basis data yang mengandung data untuk disalin. Ganti table-name dengan nama tabel database Anda.

connectionString

String koneksi JDBC untuk CopyActivity objek untuk terhubung ke database.

selectQuery

Sebuah query SQL SELECT valid yang menentukan data untuk menyalin dari tabel basis data. Perhatikan bahwa #{table} adalah ekspresi yang kembali menggunakan nama tabel yang disediakan oleh variabel “tabel” di baris sebelumnya dari file JSON.

Tipe

SqlDataNode Tipe, yang merupakan instance Amazon RDS menggunakan MySQL dalam contoh ini.

catatan

MySqlDataNode Jenis ini tidak digunakan lagi. Meskipun Anda masih dapat menggunakan MySqlDataNode, kami sarankan untuk menggunakan SqlDataNode.

Simpul Data Amazon S3

Selanjutnya, komponen pipa input S3Output mendefinisikan lokasi untuk file output; dalam hal ini, file CSV di lokasi bucket Amazon S3. DataNode Komponen output S3 didefinisikan oleh bidang-bidang berikut:

{ "id": "S3DataNodeId114", "schedule": { "ref": "ScheduleId113" }, "filePath": "s3://example-bucket/rds-output/output.csv", "name": "My S3 Data", "type": "S3DataNode" },
Id

ID yang ditetapkan pengguna, yang merupakan label untuk referensi Anda saja.

Jadwal

Sebuah referensi ke komponen jadwal yang kita buat di baris sebelumnya dari file JSON.

filePath

Jalur ke data yang terkait dengan simpul data, yang merupakan file output CSV dalam contoh ini.

Nama

Nama yang ditetapkan pengguna, yang merupakan label untuk referensi Anda saja.

Tipe

Jenis objek pipeline, yaitu S3 DataNode agar sesuai dengan lokasi tempat data berada, di bucket Amazon S3.

Sumber Daya

Ini adalah definisi sumber daya komputasi yang melakukan operasi penyalinan. Dalam contoh ini, AWS Data Pipeline harus secara otomatis membuat sebuah EC2 instance untuk melakukan tugas copy dan mengakhiri sumber daya setelah tugas selesai. Bidang yang didefinisikan di sini mengontrol pembuatan dan fungsi EC2 instance yang melakukan pekerjaan. Sumber EC2 daya didefinisikan oleh bidang-bidang berikut:

{ "id": "Ec2ResourceId116", "schedule": { "ref": "ScheduleId113" }, "name": "My EC2 Resource", "role": "DataPipelineDefaultRole", "type": "Ec2Resource", "resourceRole": "DataPipelineDefaultResourceRole" },
Id

ID yang ditetapkan pengguna, yang merupakan label untuk referensi Anda saja.

Jadwal

Jadwal untuk membuat sumber daya komputasi ini.

Nama

Nama yang ditetapkan pengguna, yang merupakan label untuk referensi Anda saja.

Peran

IAM role akun yang mengakses sumber daya, seperti mengakses bucket Amazon S3 untuk mengambil data.

Tipe

Jenis sumber daya komputasi untuk melakukan pekerjaan; dalam hal ini, sebuah EC2 instance. Ada jenis sumber daya lain yang tersedia, seperti EmrCluster tipe.

resourceRole

Peran IAM dari akun yang menciptakan sumber daya, seperti membuat dan mengonfigurasi EC2 instance atas nama Anda. Peran dan ResourceRole dapat menjadi peran yang sama, tetapi secara terpisah memberikan perincian yang lebih besar dalam konfigurasi keamanan Anda.

Aktifitas

Bagian terakhir dalam file JSON yang merupakan definisi dari aktivitas yang mewakili pekerjaan yang akan dilakukan. Dalam hal ini kami menggunakan CopyActivity komponen untuk menyalin data dari file di bucket Amazon S3 ke file lain. CopyActivity Komponen didefinisikan oleh bidang-bidang berikut:

{ "id": "CopyActivityId112", "input": { "ref": "MySqlDataNodeId115" }, "schedule": { "ref": "ScheduleId113" }, "name": "My Copy", "runsOn": { "ref": "Ec2ResourceId116" }, "onSuccess": { "ref": "ActionId1" }, "onFail": { "ref": "SnsAlarmId117" }, "output": { "ref": "S3DataNodeId114" }, "type": "CopyActivity" },
Id

ID yang ditetapkan pengguna, yang merupakan label untuk referensi Anda saja

Input

Lokasi data MySQL yang akan disalin

Jadwal

Jadwal untuk menjalankan kegiatan ini

Nama

Nama yang ditetapkan pengguna, yang merupakan label untuk referensi Anda saja

runsOn

Sumber daya komputasi yang melakukan pekerjaan yang ditentukan oleh aktivitas ini. Dalam contoh ini, kami memberikan referensi ke EC2 instance yang didefinisikan sebelumnya. Menggunakan runsOn bidang AWS Data Pipeline menyebabkan membuat EC2 instance untuk Anda. Bidang runsOn menunjukkan bahwa sumber daya yang ada di infrastruktur AWS, sedangkan nilai workerGroup tersebut menunjukkan bahwa Anda ingin menggunakan sumber daya lokal Anda sendiri untuk melakukan pekerjaan.

onSuccess

SnsAlarm untuk mengirim jika aktivitas selesai dengan sukses

onFail

SnsAlarm untuk mengirim jika aktivitas gagal

Output

Lokasi Amazon S3 dari file output CSV

Tipe

Jenis aktivitas yang harus dilakukan.

Unggah dan Aktifkan Definisi Alur

Anda harus mengunggah definisi alur Anda dan mengaktifkan alur Anda. Dalam contoh perintah berikut, ganti pipeline_name dengan label untuk pipeline Anda dan pipeline_file dengan jalur yang sepenuhnya memenuhi syarat untuk file definisi .json pipeline.

AWS CLI

Untuk membuat definisi alur Anda dan mengaktifkan alur Anda, gunakan perintah create-pipeline. Perhatikan ID alur Anda, karena Anda akan menggunakan nilai ini dengan sebagian besar perintah CLI.

aws datapipeline create-pipeline --name pipeline_name --unique-id token { "pipelineId": "df-00627471SOVYZEXAMPLE" }

Untuk mengunggah definisi pipeline Anda, gunakan put-pipeline-definitionperintah berikut.

aws datapipeline put-pipeline-definition --pipeline-id df-00627471SOVYZEXAMPLE --pipeline-definition file://MyEmrPipelineDefinition.json

Jika validasi alur Anda berhasil, bidang validationErrors akan kosong. Anda harus meninjau peringatan apa pun.

Untuk mengaktifkan alur Anda, gunakan perintah activate-pipeline.

aws datapipeline activate-pipeline --pipeline-id df-00627471SOVYZEXAMPLE

Anda dapat memverifikasi bahwa alur Anda muncul dalam daftar alur menggunakan perintah list-pipelines berikut.

aws datapipeline list-pipelines