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. Konsol AWS Data Pipeline membuat peran ini untuk Anda secara otomatis. Jika Anda belum menggunakan konsol AWS Data Pipeline setidaknya sekali, maka Anda harus membuat peran ini secara manual. Untuk informasi selengkapnya, lihat IAM Role 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 pipeline input mendefinisikan lokasi untuk data input; dalam hal ini, instans Amazon RDS. MySqlDataNodeKomponen 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 nama pengguna saya 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 basis data akun dengan awalan tanda bintang untuk menunjukkan bahwa AWS Data Pipeline harus mengenkripsi nilai kata sandi. Ganti kata sandi saya 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 basis data Anda.

connectionString

JDBC koneksi string 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

SqlDataNodeJenis, yang merupakan instans Amazon RDS menggunakan MySQL dalam contoh ini.

catatan

Jenis MySqlDataNode tidak lagi digunakan. Meskipun Anda masih dapat menggunakanMySqlDataNode, kami sarankan menggunakanSqlDataNode.

Simpul Data Amazon S3

Selanjutnya, komponen pipa input S3Output mendefinisikan lokasi untuk file output; dalam hal ini, file CSV di lokasi bucket Amazon S3. Output DataNode komponen 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 untuk mencocokkan lokasi tempat data berada, dalam bucket Amazon S3.

Resource

Ini adalah definisi sumber daya komputasi yang melakukan operasi penyalinan. Dalam contoh ini, AWS Data Pipeline harus secara otomatis membuat instans EC2 untuk melakukan tugas menyalin dan mengakhiri sumber daya setelah tugas selesai. Bidang didefinisikan di sini mengontrol pembuatan dan fungsi dari instans EC2 yang melakukan pekerjaan. EC2Resource didefinisikan oleh 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, instans EC2. Ada jenis sumber daya lain yang tersedia, seperti EmrCluster tipe.

resourceRole

IAM role akun yang menciptakan sumber daya, seperti membuat dan mengonfigurasi instans EC2 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 dalam bucket Amazon S3 ke file lain. Komponen CopyActivity didefinisikan oleh 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 menyediakan referensi ke instans EC2 didefinisikan sebelumnya. Menggunakan bidang runsOn menyebabkan AWS Data Pipeline untuk membuat instans EC2 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 alur Anda dan pipeline_file dengan jalur yang sepenuhnya memenuhi syarat untuk file .json definisi alur.

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