Mengimpor data dari sumber mana pun ke instans DB MySQL atau MariaDB - Layanan Basis Data Relasional Amazon

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

Mengimpor data dari sumber mana pun ke instans DB MySQL atau MariaDB

Sebaiknya buat snapshot DB dari instans Amazon RDS DB target sebelum dan sesudah pemuatan data. Snapshot DB Amazon RDS adalah cadangan lengkap instans DB Anda yang dapat digunakan untuk memulihkan instans DB Anda ke status yang diketahui. Saat Anda memulai sebuah snapshot DB, operasi I/O ke instans DB Anda untuk sementara ditangguhkan selama basis data Anda dicadangkan.

Jika perlu, segera buat sebuah snapshot DB sebelum pemuatan agar Anda dapat memulihkan basis data ke statusnya sebelum pemuatan. Dengan snapshot DB yang diambil segera setelah pemuatan, Anda tidak perlu memuat data lagi jika terjadi hal-hal yang tidak diinginkan dan snapshot ini juga dapat digunakan untuk melakukan seeding instans basis data baru.

Daftar berikut menunjukkan langkah-langkah yang harus diambil. Setiap langkah dibahas secara lebih mendetail di bawah.

  1. Buat file datar yang berisi data yang akan dimuat.

  2. Hentikan aplikasi apa pun yang mengakses instans DB target.

  3. Buat sebuah snapshot DB.

  4. Pertimbangkan menonaktifkan pencadangan otomatis Amazon RDS.

  5. Muat data.

  6. Aktifkan pencadangan otomatis lagi.

Langkah 1: Buat file datar yang berisi data yang akan dimuat

Gunakan format umum, seperti CSV (Comma-Separated Values), untuk menyimpan data yang akan dimuat. Setiap tabel harus memiliki file sendiri; Anda tidak dapat menggabungkan data untuk beberapa tabel dalam file yang sama. Beri setiap file nama yang sama dengan tabelnya. Ekstensi file dapat berupa apa pun yang Anda inginkan. Misalnya, jika nama tabelnya sales, nama file-nya mungkin sales.csv atau sales.txt, tetapi bukan sales_01.csv.

Jika memungkinkan, urutkan data berdasarkan kunci primer tabel yang dimuat. Tindakan ini secara drastis meningkatkan waktu pemuatan dan meminimalkan kebutuhan penyimpanan disk.

Kecepatan dan efisiensi prosedur ini ditentukan oleh kemampuan untuk mempertahankan ukuran file tetap kecil. Jika ukuran file individual yang tidak terkompresi lebih besar dari 1 GiB, bagilah ke dalam beberapa file dan muat setiap file secara terpisah.

Pada sistem seperti Unix (termasuk Linux), gunakan perintah split. Misalnya, perintah berikut membagi file sales.csv menjadi beberapa file berukuran kurang dari 1 GiB, yang hanya membagi pada jeda baris (-C 1024m). File-file baru tersebut diberi nama sales.part_00, sales.part_01, dan seterusnya.

split -C 1024m -d sales.csv sales.part_

Utilitas yang serupa juga tersedia untuk sistem operasi lain.

Langkah 2: Hentikan aplikasi apa pun yang mengakses instans DB target

Sebelum memulai pemuatan besar, hentikan semua aktivitas aplikasi yang mengakses instans DB target yang akan Anda muati. Kami menyarankan hal ini terutama jika sesi lain akan memodifikasi tabel yang sedang dimuat atau tabel yang menjadi rujukan. Tindakan ini dapat mengurangi risiko pelanggaran pembatasan yang terjadi selama pemuatan dan meningkatkan performa pemuatan. Tindakan ini juga memungkinkan untuk memulihkan instans DB ke titik tepat sebelum pemuatan tanpa kehilangan perubahan yang dibuat oleh proses yang tidak terlibat dalam pemuatan.

Tentu saja, terkadang ini tidak memungkinkan atau tidak praktis. Jika Anda tidak dapat menghentikan aplikasi dari mengakses instans DB sebelum pemuatan, lakukan langkah-langkah untuk memastikan ketersediaan dan integritas data Anda. Langkah-langkah tertentu yang dibutuhkan dapat bervariasi tergantung kasus penggunaan dan persyaratan situs tertentu.

Langkah 3: Buat snapshot DB

Jika Anda berencana memuat data ke dalam instans DB baru yang tidak berisi data, Anda dapat melompati langkah ini. Sebaliknya, dengan membuat snapshot DB dari instans DB Anda, Anda dapat memulihkan instans DB ke titik tepat sebelum pemuatan, jika memang diperlukan. Seperti yang disebutkan sebelumnya, saat Anda memulai snapshot DB, operasi I/O ke instans DB Anda ditangguhkan selama beberapa menit selama basis data dicadangkan.

Contoh berikut menggunakan AWS CLI create-db-snapshot perintah untuk membuat snapshot DB dari AcmeRDS instance dan memberikan snapshot DB pengenal. "preload"

Untuk Linux, macOS, atau Unix:

aws rds create-db-snapshot \ --db-instance-identifier AcmeRDS \ --db-snapshot-identifier preload

Untuk Windows:

aws rds create-db-snapshot ^ --db-instance-identifier AcmeRDS ^ --db-snapshot-identifier preload

Anda juga dapat menggunakan pemulihan dari fungsionalitas snapshot DB untuk membuat instans DB pengujian untuk melakukan dry run atau untuk membatalkan perubahan yang dibuat selama pemuatan.

Harap diingat bahwa pemulihan basis data dari sebuah snapshot DB akan menciptakan sebuah instans DB baru yang, seperti semua instans DB, memiliki pengidentifikasi yang unik dan titik akhir. Untuk memulihkan instans DB tanpa mengubah titik akhir, pertama-tama hapus instans DB sehingga Anda dapat menggunakan ulang titik akhir.

Misalnya, untuk membuat instans DB untuk dry run atau pengujian lainnya, beri instans DB tersebut pengidentifikasinya sendiri. Dalam contoh ini, AcmeRDS-2" adalah pengidentifikasinya. Contoh ini terhubung ke instans DB menggunakan titik akhir yang terkait dengan AcmeRDS-2.

Untuk Linux, macOS, atau Unix:

aws rds restore-db-instance-from-db-snapshot \ --db-instance-identifier AcmeRDS-2 \ --db-snapshot-identifier preload

Untuk Windows:

aws rds restore-db-instance-from-db-snapshot ^ --db-instance-identifier AcmeRDS-2 ^ --db-snapshot-identifier preload

Untuk menggunakan ulang titik akhir yang sudah ada, pertama-tama hapus instans DB kemudian berikan pengidentifikasi yang sama kepada basis data yang dipulihkan.

Untuk Linux, macOS, atau Unix:

aws rds delete-db-instance \ --db-instance-identifier AcmeRDS \ --final-db-snapshot-identifier AcmeRDS-Final aws rds restore-db-instance-from-db-snapshot \ --db-instance-identifier AcmeRDS \ --db-snapshot-identifier preload

Untuk Windows:

aws rds delete-db-instance ^ --db-instance-identifier AcmeRDS ^ --final-db-snapshot-identifier AcmeRDS-Final aws rds restore-db-instance-from-db-snapshot ^ --db-instance-identifier AcmeRDS ^ --db-snapshot-identifier preload

Contoh sebelumnya mengambil snapshot DB akhir sebuah instans DB sebelum menghapusnya. Ini adalah langkah opsional, tetapi direkomendasikan.

Langkah 4: Pertimbangkan untuk menonaktifkan pencadangan otomatis Amazon RDS

Awas

Jangan mematikan cadangan otomatis jika Anda perlu melakukan point-in-time pemulihan.

Mematikan pencadangan otomatis menghapus semua cadangan yang ada, jadi point-in-time pemulihan tidak mungkin dilakukan setelah pencadangan otomatis dimatikan. Penonaktifan pencadangan otomatis adalah sebuah optimisasi performa dan tidak dibutuhkan untuk pemuatan data. Snapshot DB manual tidak terpengaruh dengan menonaktifkan pencadangan otomatis. Semua snapshot DB manual yang sudah ada tetap tersedia untuk pemulihan.

Penonaktifan pencadangan otomatis mengurangi waktu pemuatan sekitar 25 persen dan mengurangi jumlah ruang penyimpanan yang dibutuhkan selama pemuatan. Jika Anda berencana memuat data ke dalam sebuah instans DB baru yang tidak berisi data, penonaktifan pencadangan adalah cara yang mudah untuk mempercepat pemuatan dan menghindari penggunaan penyimpanan tambahan yang diperlukan untuk pencadangan. Namun, dalam beberapa kasus Anda mungkin berencana untuk melakukan pemuatan ke dalam instans DB yang sudah berisi data. Jika demikian, pertimbangkan manfaat mematikan cadangan terhadap dampak kehilangan kemampuan untuk melakukan. point-in-time-recovery

Instans DB memiliki pencadangan otomatis yang diaktifkan secara default (dengan periode retensi satu hari). Untuk menonaktifkan pencadangan otomatis, atur periode retensi pencadangan ke nol. Setelah pemuatan selesai, Anda dapat mengaktifkan kembali pencadangan dengan mengatur periode retensi pencadangan ke nilai selain nol. Untuk mengaktifkan atau menonaktifkan pencadangan, Amazon RDS mematikan instans DB dan memulainya kembali untuk mengaktifkan atau menonaktifkan pencatatan log MariaDB atau MySQL.

Gunakan AWS CLI modify-db-instance perintah untuk mengatur retensi cadangan ke nol dan segera terapkan perubahan. Untuk mengatur periode retensi menjadi nol diperlukan mulai ulang instans DB, jadi tunggu hingga mulai ulang selesai sebelum melanjutkan.

Untuk Linux, macOS, atau Unix:

aws rds modify-db-instance \ --db-instance-identifier AcmeRDS \ --apply-immediately \ --backup-retention-period 0

Untuk Windows:

aws rds modify-db-instance ^ --db-instance-identifier AcmeRDS ^ --apply-immediately ^ --backup-retention-period 0

Anda dapat memeriksa status instans DB Anda dengan AWS CLI describe-db-instances perintah. Contoh berikut ini menampilkan status instans DB dari instans DB AcmeRDS.

aws rds describe-db-instances --db-instance-identifier AcmeRDS --query "*[].{DBInstanceStatus:DBInstanceStatus}"

Saat status instans DB adalah available, Anda dapat melanjutkan.

Langkah 5: Muat data

Gunakan pernyataan LOAD DATA LOCAL INFILE MySQL untuk membaca baris dari file datar Anda ke dalam tabel database.

Contoh berikut menunjukkan cara memuat data dari file bernama sales.txt ke dalam tabel bernama Sales dalam database.

mysql> LOAD DATA LOCAL INFILE 'sales.txt' INTO TABLE Sales FIELDS TERMINATED BY ' ' ENCLOSED BY '' ESCAPED BY '\\'; Query OK, 1 row affected (0.01 sec) Records: 1 Deleted: 0 Skipped: 0 Warnings: 0

Untuk informasi selengkapnya tentang LOAD DATA pernyataan tersebut, lihat dokumentasi MySQL.

Langkah 6: Aktifkan pencadangan otomatis Amazon RDS

Setelah pemuatan selesai, aktifkan pencadangan otomatis Amazon RDS dengan mengatur periode retensi pencadangan kembali ke nilai sebelum pemuatan. Sebagaimana dijelaskan sebelumnya, Amazon RDS akan memulai ulang instans DB, jadi bersiaplah untuk pemadaman singkat.

Contoh berikut menggunakan AWS CLI modify-db-instance perintah untuk mengaktifkan backup otomatis untuk instans AcmeRDS DB dan mengatur periode retensi menjadi satu hari.

Untuk Linux, macOS, atau Unix:

aws rds modify-db-instance \ --db-instance-identifier AcmeRDS \ --backup-retention-period 1 \ --apply-immediately

Untuk Windows:

aws rds modify-db-instance ^ --db-instance-identifier AcmeRDS ^ --backup-retention-period 1 ^ --apply-immediately