

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

# Migrasi ke Amazon DocumentDB
<a name="docdb-migration"></a>

Amazon DocumentDB adalah layanan database yang dikelola sepenuhnya yang kompatibel dengan MongoDB API. Anda dapat memigrasikan data ke Amazon DocumentDB dari database MongoDB yang berjalan di tempat atau di Amazon Elastic Compute EC2 Cloud (Amazon) menggunakan proses yang dirinci di bagian ini.

**Topics**
+ [Panduan memulai cepat](migration-quick-start.md)
+ [Runbook migrasi](docdb-migration-runbook.md)
+ [Migrasi dari Couchbase Server](migration-from-couchbase.md)

# Migrasi ke Amazon AWS DocumentDB menggunakan Database Migration Service (DMS): Panduan Memulai Cepat
<a name="migration-quick-start"></a>

**Topics**
+ [

## Siapkan sumber DMS
](#migrate-qs-dma-source)
+ [

## Pengaturan DMS
](#migrate-qs-dms-setup)
+ [

## Aktifkan kompresi DocumentDB
](#migrate-qs-comp)
+ [

## Buat tugas replikasi
](#migrate-qs-create)
+ [

## Memantau kemajuan
](#migrate-qs-monitor)
+ [

## Informasi tambahan
](#migrate-qs-info)

## Siapkan sumber DMS
<a name="migrate-qs-dma-source"></a>

Lihat [Mengaktifkan aliran perubahan](change_streams.md#change_streams-enabling) untuk mengaktifkan aliran perubahan DocumentDB atau mengaktifkan Oplog MongoDB untuk mendukung DMS Change Data Capture (CDC).
+ Sumber DMS harus mempertahankan semua perubahan yang sedang berlangsung sampai beban penuh DMS selesai untuk semua koleksi yang disertakan.
+ Aliran perubahan DocumentDB berbasis waktu. Pastikan `change_stream_log_retention_duration` pengaturan Anda cukup besar untuk menutupi waktu untuk menyelesaikan beban penuh.
+ MongoDB Oplog adalah ukuran tetap. Pastikan ukurannya untuk menahan semua operasi selama beban penuh.

## Pengaturan DMS
<a name="migrate-qs-dms-setup"></a>

Buat instance DMS, sumber, dan titik akhir target dan uji setiap titik akhir.

## Aktifkan kompresi DocumentDB
<a name="migrate-qs-comp"></a>

Aktifkan kompresi dengan melampirkan grup parameter kustom ke cluster DocumentDB Anda dan memperbarui parameter default\$1collection\$1compression untuk diaktifkan. Untuk informasi selengkapnya, lihat [Mengelola kompresi dokumen tingkat koleksi](doc-compression.md).

## Buat tugas replikasi
<a name="migrate-qs-create"></a>

1. **Di konsol DMS, di panel navigasi, pilih **Migrasi atau replikasi**, lalu pilih Tugas.**

1. Pilih **Buat tugas**.

1. Pada halaman **Buat tugas**, di bagian **Konfigurasi tugas**:
   + Masukkan **pengidentifikasi Tugas** yang unik dan bermakna (misalnya, "mongodb-docdb-replication“).
   + Pilih titik akhir sumber yang Anda buat sebelumnya di menu drop-down **titik akhir database Sumber**.
   + Pilih titik akhir target yang Anda buat sebelumnya di menu tarik-turun **titik akhir database Target**.
   + Untuk **jenis Tugas**, pilih **Migrasi dan replikasi**.

1. Di bagian **Pengaturan**:
   + Untuk **log Tugas**, centang kotak **Aktifkan CloudWatch** log.
   + Untuk **mode Editing** (di bagian atas bagian), pilih **editor JSON** dan atur atribut berikut:
     + Setel `ParallelApplyThreads` ke 5 (di bawah`TargetMetadata`). Ini memungkinkan \$1 1000 insert/update/delete ops per detik di CDC.
     + Setel `MaxFullLoadSubTasks` ke 16 (di bawah`FullLoadSettings`). Pertimbangkan untuk meningkatkan ini tergantung pada ukuran instans Anda.
     + Untuk koleksi besar (lebih dari 100 GB), aktifkan partisi otomatis (di bawah Pemetaan Tabel dan di bawah `parallel-load` atribut):
       + “type”: “partisi-otomatis”
       + number-of-partitions“: 16

## Memantau kemajuan
<a name="migrate-qs-monitor"></a>

Gunakan AWS DMS konsol atau buat dasbor khusus ([alat dasbor)](https://github.com/awslabs/amazon-documentdb-tools/tree/master/monitoring/docdb-dashboarder) untuk melacak migrasi. Fokus pada metrik berikut:
+ **FullLoadThroughputBandwidthTarget**— Mengukur bandwidth jaringan (dalam KB/detik) yang digunakan oleh DMS saat mentransfer data ke database target selama fase migrasi beban penuh.
+ **CDCLatencyTarget** — Mengukur waktu tunda (dalam detik) saat terjadi perubahan di database sumber dan kapan perubahan itu diterapkan ke database target.
+ **CDCThroughputRowsTarget**— Mengukur jumlah baris per detik yang diterapkan DMS ke database target selama fase replikasi migrasi yang sedang berlangsung.

## Informasi tambahan
<a name="migrate-qs-info"></a>

Untuk informasi selengkapnya tentang Amazon DocumentDB AWS DMS dan, lihat: Lihat untuk informasi selengkapnya.
+ [Runbook migrasi Amazon DocumentDB](docdb-migration-runbook.md)
+ [Migrasi dari MongoDB ke Amazon DocumentDB](https://docs.aws.amazon.com/dms/latest/sbs/chap-mongodb2documentdb.html)

# Runbook migrasi Amazon DocumentDB
<a name="docdb-migration-runbook"></a>

Runbook ini menyediakan panduan komprehensif untuk memigrasi database MongoDB ke Amazon DocumentDB menggunakan (DMS). AWS Database Migration Service Ini dirancang untuk mendukung administrator database, insinyur cloud, dan pengembang selama perjalanan end-to-end migrasi — dari penemuan awal hingga validasi pasca-migrasi.

Mengingat perbedaan dalam implementasi dan fitur yang didukung antara MongoDB dan Amazon DocumentDB, runbook ini menekankan pendekatan terstruktur dan sistematis. Ini menguraikan penilaian pra-migrasi yang penting, menyoroti pertimbangan kompatibilitas, dan merinci tugas-tugas utama yang diperlukan untuk memastikan migrasi yang berhasil dengan gangguan minimal.

Runbook diatur ke dalam topik-topik berikut:
+ **[Kompatibilitas](#mig-runbook-compatibility)**— Memahami fitur MongoDB yang didukung dan tipe data di Amazon DocumentDB, dan mengidentifikasi potensi ketidakcocokan.
+ **[Penemuan beban kerja](#mig-runbook-workload)**— Menganalisis beban kerja MongoDB yang ada, read/write termasuk pola, volume data, dan baseline kinerja.
+ **[Migrasi indeks](#mig-runbook-index)**— Analisis strategi untuk mengekstraksi dan mengubah indeks MongoDB untuk kinerja optimal di Amazon DocumentDB.
+ **[Migrasi pengguna](#mig-runbook-user)**— Detail pendekatan untuk memigrasi pengguna database, peran, dan kontrol akses ke Amazon DocumentDB.
+ **[Migrasi data](#mig-runbook-data)**— Mencakup berbagai metode untuk migrasi data yang digunakan AWS DMS, termasuk full load dan change data capture (CDC).
+ **[Memantau](#mig-runbook-monitoring)**— Detail berbagai pendekatan pemantauan saat bermigrasi menggunakan DMS atau alat asli.
+ **[Validasi](#mig-runbook-validation)**— Menyediakan prosedur untuk pemeriksaan integritas data, validasi fungsional, dan perbandingan kinerja pasca-migrasi.

Dengan mengikuti panduan dalam runbook ini, tim dapat memastikan transisi yang lancar, aman, dan efisien ke Amazon DocumentDB, sambil menjaga fungsionalitas aplikasi dan meminimalkan risiko.

## Kompatibilitas
<a name="mig-runbook-compatibility"></a>

**Topics**
+ [

### Kompatibilitas fitur inti
](#w2aac23b9c13c13)
+ [

### Alat penilaian kompatibilitas Amazon DocumentDB
](#w2aac23b9c13c15)

Saat bermigrasi dari MongoDB ke Amazon DocumentDB, penilaian awal yang menyeluruh dan pemeriksaan kompatibilitas fitur sangat penting untuk migrasi yang berhasil. Proses ini dimulai dengan inventaris lengkap fitur MongoDB Anda, termasuk operator pipeline agregasi, pola kueri, indeks, dan model data.

Karena Amazon DocumentDB kompatibel dengan MongoDB 3.6, 4.0, 5.0, dan 8.0 API, aplikasi yang menggunakan fitur khusus MongoDB yang lebih baru mungkin memerlukan refactoring. Area kritis untuk dievaluasi termasuk mekanisme sharding (Amazon DocumentDB menggunakan pendekatan yang berbeda), implementasi transaksi, fungsionalitas aliran perubahan, dan jenis indeks (terutama indeks jarang dan sebagian).

Karakteristik kinerja juga berbeda, dengan Amazon DocumentDB dioptimalkan untuk beban kerja perusahaan dengan kinerja yang dapat diprediksi. Pengujian harus melibatkan menjalankan beban kerja yang representatif terhadap kedua sistem untuk mengidentifikasi pola kueri yang mungkin memerlukan pengoptimalan.

Memantau rencana eksekusi untuk mendeteksi potensi kesenjangan kinerja penting selama fase penilaian. Ini membantu membuat peta jalan migrasi yang jelas, mengidentifikasi perubahan aplikasi yang diperlukan dan menetapkan jadwal yang realistis untuk transisi yang mulus.

### Kompatibilitas fitur inti
<a name="w2aac23b9c13c13"></a>



#### Dukungan fitur yang komprehensif
<a name="w2aac23b9c13c13b5"></a>
+ **Operasi CRUD** - Nikmati dukungan penuh untuk semua operasi pembuatan, baca, perbarui, dan hapus dasar, termasuk operator massal dan kueri - menyediakan kompatibilitas aplikasi yang mulus.
+ **Kemampuan pengindeksan yang kaya** — Manfaatkan dukungan komprehensif untuk indeks bidang tunggal, gabungan, TTL, parsi, jarang, dan 2dsphere, untuk mengoptimalkan kinerja kueri dan indeks teks Anda (versi 5) untuk pencarian berbasis teks.
+ **Replikasi tingkat perusahaan** — Manfaatkan mekanisme failover otomatis yang kuat dengan replika baca untuk ketersediaan tinggi yang unggul tanpa overhead operasional.
+ **Solusi pencadangan lanjutan** - Beristirahatlah dengan sistem pencadangan otomatis yang menampilkan Point-in-Time Pemulihan (PITR) dan snapshot manual sesuai permintaan untuk perlindungan data.

#### Fitur AWS terintegrasi yang disempurnakan
<a name="w2aac23b9c13c13b7"></a>
+ **Agregasi yang efisien** — Manfaatkan tahapan agregasi yang paling umum digunakan (`$match`,,,, `$group` `$sort``$project`, dll.) Dengan kinerja yang dioptimalkan untuk beban kerja perusahaan.
+ **Dukungan transaksi - Menerapkan** transaksi multi-dokumen dan multi-koleksi, sempurna untuk sebagian besar kebutuhan aplikasi bisnis.
+ **Pelacakan data real-time** - Aktifkan aliran perubahan dengan perintah sederhana dan tingkatkan periode retensi aliran perubahan melalui pengaturan grup parameter sederhana untuk pemantauan perubahan data waktu nyata.
+ **Layanan berbasis lokasi** - Menerapkan aplikasi geospasial dengan dukungan untuk `$geoNear` operator dan indeks 2dsphere.
+ **Kemampuan pencarian teks** - Memanfaatkan fungsionalitas pencarian teks bawaan untuk kebutuhan penemuan konten.

#### Keunggulan arsitektur modern
<a name="w2aac23b9c13c13b9"></a>
+ **Desain cloud-native** — Nikmati arsitektur AWS yang dioptimalkan yang menggantikan fitur lama seperti MapReduce dengan operasi pipeline agregasi yang lebih efisien.
+ **Keamanan yang ditingkatkan** - Manfaat dari AWS Identity and Access Management (IAM), SCRAM-SHA-1, SCRAM-SHA-256, otentikasi sertifikat X.509, dan otentikasi berbasis kata sandi.
+ **Kinerja yang dapat diprediksi** - Rasakan kinerja konsisten yang dioptimalkan secara khusus untuk beban kerja perusahaan.

Untuk gambaran menyeluruh tentang kemampuan Amazon DocumentDB, lihat [APIsMongoDB, operasi, dan tipe data yang didukung di Amazon DocumentDB](mongo-apis.md) dan [Perbedaan fungsional: Amazon DocumentDB dan MongoDB](functional-differences.md) untuk memaksimalkan potensi database Anda.

Amazon DocumentDB tidak mendukung semua indeks yang ditawarkan oleh MongoDB. Kami menyediakan [alat indeks](https://github.com/awslabs/amazon-documentdb-tools/blob/master/index-tool/README.md) gratis untuk memeriksa kompatibilitas. Kami merekomendasikan menjalankan alat indeks untuk menilai ketidakcocokan dan merencanakan solusi yang sesuai.

### Alat penilaian kompatibilitas Amazon DocumentDB
<a name="w2aac23b9c13c15"></a>

Alat [Kompatibilitas MongoDB ke Amazon DocumentDB adalah utilitas sumber terbuka yang tersedia GitHub yang membantu mengevaluasi kompatibilitas beban kerja MongoDB dengan Amazon DocumentDB](https://github.com/awslabs/amazon-documentdb-tools/blob/master/compat-tool/README.md) dengan menganalisis log MongoDB atau kode sumber aplikasi.

**Fitur utama**
+ Mengidentifikasi pola penggunaan API MongoDB di beban kerja Anda
+ Menandai potensi masalah kompatibilitas sebelum migrasi
+ Menghasilkan laporan kompatibilitas terperinci dengan rekomendasi
+ Tersedia sebagai utilitas mandiri yang dapat dijalankan secara lokal

#### Metode penilaian
<a name="w2aac23b9c13c15b9"></a>

**Penilaian berbasis log**


+ Kelebihan:
  + Menangkap perilaku runtime aktual dan pola kueri
  + Mengidentifikasi frekuensi penggunaan dunia nyata dan karakteristik kinerja
  + Mendeteksi kueri dinamis yang mungkin tidak terlihat dalam kode sumber
  + Tidak diperlukan akses ke kode sumber aplikasi
+ Kontra:
  + Memerlukan akses ke log MongoDB dengan profil diaktifkan
  + Hanya menangkap operasi yang terjadi selama periode penebangan
  + Mungkin melewatkan fitur yang jarang digunakan atau beban kerja musiman

**Analisis kode sumber**


+ Kelebihan:
  + Cakupan komprehensif dari semua operasi MongoDB potensial dalam basis kode
  + Dapat mengidentifikasi masalah di jalur kode yang jarang dieksekusi
  + Mendeteksi logika sisi klien yang mungkin terpengaruh oleh perbedaan Amazon DocumentDB
  + Tidak perlu menjalankan aplikasi untuk melakukan penilaian
+ Kontra:
  + Dapat menandai kode yang ada tetapi tidak pernah dieksekusi dalam produksi
  + Membutuhkan akses ke kode sumber aplikasi lengkap
  + Kemampuan terbatas untuk menganalisis kueri yang dibangun secara dinamis

Untuk hasil terbaik, sebaiknya gunakan kedua metode penilaian bila memungkinkan untuk mendapatkan gambaran lengkap tentang tantangan kompatibilitas sebelum migrasi.

## Penemuan beban kerja
<a name="mig-runbook-workload"></a>

Migrasi dari MongoDB ke Amazon DocumentDB memerlukan pemahaman menyeluruh tentang beban kerja database yang ada. Penemuan beban kerja adalah proses menganalisis pola penggunaan database Anda, struktur data, kinerja kueri, dan dependensi operasional untuk memastikan transisi yang mulus dengan gangguan minimal. Bagian ini menguraikan langkah-langkah kunci yang terlibat dalam penemuan beban kerja untuk memfasilitasi migrasi yang efektif dari MongoDB ke Amazon DocumentDB.

**Topics**
+ [

### Menilai penerapan MongoDB yang ada
](#w2aac23b9c15b7)
+ [

### Mengidentifikasi perbedaan model data
](#w2aac23b9c15b9)
+ [

### Analisis kueri dan kinerja
](#w2aac23b9c15c11)
+ [

### Tinjauan keamanan dan kontrol akses
](#w2aac23b9c15c13)
+ [

### Pertimbangan operasional dan pemantauan
](#w2aac23b9c15c15)

### Menilai penerapan MongoDB yang ada
<a name="w2aac23b9c15b7"></a>

Sebelum migrasi, sangat penting untuk mengevaluasi lingkungan MongoDB saat ini, termasuk:
+ **Arsitektur cluster** — Identifikasi jumlah node, set replika, dan konfigurasi sharding. Saat bermigrasi dari MongoDB ke Amazon DocumentDB, memahami konfigurasi sharding MongoDB Anda penting karena Amazon DocumentDB tidak mendukung sharding yang dikendalikan pengguna. Aplikasi yang dirancang untuk lingkungan MongoDB sharded akan membutuhkan perubahan arsitektur, karena Amazon DocumentDB menggunakan pendekatan penskalaan yang berbeda dengan arsitektur berbasis penyimpanan. Anda harus menyesuaikan strategi distribusi data Anda dan mungkin mengkonsolidasikan koleksi sharded saat pindah ke Amazon DocumentDB.
+ **Penyimpanan dan volume data** — Ukur ukuran data total dan ukuran indeks klaster Anda. Lengkapi ini dengan [alat ulasan Oplog](https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/mongodb-oplog-review) untuk memahami pola tulis dan kecepatan pertumbuhan data. Untuk informasi selengkapnya tentang ukuran cluster Anda, lihat[Ukuran instans](best_practices.md#best_practices-instance_sizing). 
+ **Pola beban kerja** - Menganalisis throughput baca dan tulis, frekuensi eksekusi kueri, dan efisiensi pengindeksan.
+ **Ketergantungan operasional** - Dokumentasikan semua aplikasi, layanan, dan integrasi yang mengandalkan MongoDB.

### Mengidentifikasi perbedaan model data
<a name="w2aac23b9c15b9"></a>

Meskipun Amazon DocumentDB kompatibel dengan MongoDB, ada perbedaan dalam fitur yang didukung, seperti:
+ **Transaksi** — Amazon DocumentDB mendukung transaksi ACID tetapi dengan beberapa. [Batasan](transactions.md#transactions-limitations)
+ **Desain skema** - Pastikan struktur dokumen, dokumen yang disematkan, dan referensi selaras dengan praktik terbaik [Amazon DocumentDB](https://d1.awsstatic.com/product-marketing/Data%20modeling%20with%20Amazon%20DocumentDB.pdf).

### Analisis kueri dan kinerja
<a name="w2aac23b9c15c11"></a>

Memahami perilaku kueri membantu mengoptimalkan migrasi dan performa pasca-migrasi. Bidang utama untuk dianalisis meliputi:
+ **Kueri lambat - Identifikasi** kueri dengan waktu eksekusi tinggi menggunakan alat profil MongoDB.
+ **Pola kueri** — Mengkategorikan jenis kueri umum, termasuk operasi dan agregasi CRUD.
+ **Penggunaan indeks** — Menilai apakah indeks digunakan secara efektif atau perlu optimasi di Amazon DocumentDB. Untuk menilai penggunaan indeks dan mengoptimalkan kinerja di Amazon DocumentDB, gunakan tahap pipeline agregasi `$indexStats` yang dikombinasikan dengan `explain()` metode pada kueri penting Anda. Mulailah dengan menjalankan `db.collection.aggregate([{$indexStats{}}])` untuk mengidentifikasi indeks mana yang sedang digunakan. Anda dapat melakukan analisis yang lebih rinci dengan mengeksekusi kueri yang paling sering Anda gunakan. `explainPlan`
+ **Distribusi konkurensi & beban kerja** - Mengevaluasi rasio baca dan tulis, penyatuan koneksi, dan kemacetan kinerja.

### Tinjauan keamanan dan kontrol akses
<a name="w2aac23b9c15c13"></a>

**Otentikasi dan otorisasi**
+ **MongoDB RBAC ke Amazon DocumentDB IAM dan RBAC - Peta pengguna kontrol akses berbasis peran MongoDB dan peran ke kebijakan (IAM) dan pengguna otentikasi Amazon DocumentDB** SCRAM. AWS Identity and Access Management 
+ **Strategi migrasi pengguna** — Rencanakan untuk memigrasikan pengguna database, peran khusus, dan hak istimewa ke mekanisme autentikasi yang didukung Amazon DocumentDB.
+ **Perbedaan hak istimewa** - Identifikasi hak istimewa MongoDB tanpa setara Amazon DocumentDB langsung (misalnya, peran administrasi klaster).
+ **Otentikasi aplikasi** - Perbarui string koneksi dan manajemen kredensi untuk kebijakan kata sandi Amazon DocumentDB. Anda dapat menggunakan manajer rahasia untuk menyimpan kredensil Anda dan memutar kata sandi.
+ **Manajemen akun layanan** - Menetapkan proses untuk mengelola kredensi akun layanan di. AWS Secrets Manager
+ **Implementasi hak istimewa terkecil** - Tinjau dan perbaiki kontrol akses untuk menerapkan prinsip hak istimewa terkecil di lingkungan baru.

**Enkripsi**

Pastikan enkripsi saat istirahat dan dalam perjalanan selaras dengan persyaratan kepatuhan.

**Konfigurasi jaringan**

Rencanakan pengaturan [Virtual Private Cloud (VPC)](https://docs.aws.amazon.com/vpc/latest/userguide/create-vpc.html) dan aturan grup keamanan.

### Pertimbangan operasional dan pemantauan
<a name="w2aac23b9c15c15"></a>

Untuk menjaga keandalan sistem, penemuan beban kerja juga harus mencakup:
+ **Strategi Backup dan Restore** — Evaluasi metode backup yang ada dan kemampuan backup Amazon DocumentDB.
+ **AWS Backup Integrasi** — AWS Backup Memanfaatkan manajemen cadangan terpusat di seluruh AWS layanan termasuk Amazon DocumentDB.
+ **CloudWatch metrik** — Petakan metrik pemantauan MongoDB ke metrik Amazon DocumentDB untuk CPU, CloudWatch memori, koneksi, dan penyimpanan.
+ **Performance Insights** — Menerapkan Amazon DocumentDB Performance Insights untuk memvisualisasikan beban database dan menganalisis masalah kinerja dengan analitik kueri terperinci.
+ **Profiler - Konfigurasikan profiler** Amazon DocumentDB untuk menangkap operasi yang berjalan lambat (mirip dengan profiler MongoDB tetapi dengan pengaturan khusus Amazon DocumentDB).
  + Aktifkan melalui grup parameter dengan ambang batas yang sesuai.
  + Menganalisis data profiler untuk mengidentifikasi peluang optimasi
+ **CloudWatch Acara** - Siapkan pemantauan berbasis peristiwa untuk peristiwa klaster Amazon DocumentDB.
  + Konfigurasikan notifikasi untuk acara pencadangan, jendela pemeliharaan, dan kegagalan.
  + Integrasikan dengan Amazon SNS untuk peringatan dan respons otomatis AWS Lambda .
+ **Audit logging** - Merencanakan konfigurasi pencatatan audit untuk melacak aktivitas pengguna dan peristiwa yang relevan dengan keamanan.
+ **Pemantauan yang disempurnakan** — Aktifkan pemantauan yang disempurnakan untuk metrik tingkat OS granular pada interval 1 detik.

## Migrasi indeks
<a name="mig-runbook-index"></a>

Migrasi dari MongoDB ke Amazon DocumentDB melibatkan transfer tidak hanya data tetapi juga indeks untuk mempertahankan kinerja kueri dan mengoptimalkan operasi database. Bagian ini menguraikan step-by-step proses terperinci untuk memigrasikan indeks dari MongoDB ke Amazon DocumentDB sambil memastikan kompatibilitas dan efisiensi.

### Menggunakan alat indeks Amazon DocumentDB
<a name="w2aac23b9c17b5"></a>

**Kloning alat [indeks](https://github.com/awslabs/amazon-documentdb-tools/blob/master/index-tool/README.md)**

```
git clone https://github.com/aws-samples/amazon-documentdb-tools.git
cd amazon-documentdb-tools/index-tool
```

```
pip install -r requirements.txt
```

**Ekspor indeks dari MongoDB (jika bermigrasi dari MongoDB)**

```
python3 migrationtools/documentdb_index_tool.py --dump-indexes --dir mongodb_index_export --uri
'mongodb://localhost:27017'
```

**Ekspor indeks dari Amazon DocumentDB (jika bermigrasi dari Amazon DocumentDB)**

```
python3 migrationtools/documentdb_index_tool.py --dump-indexes --dir docdb_index_export --uri
'mongodb://user:password@mydocdb.cluster-cdtjj00yfi95.eu-west-
2.docdb.amazonaws.com:27017/?tls=true&tlsCAFile=rds-combined-ca-
bundle.pem&replicaSet=rs0&retryWrites=false'
```

**Indeks impor**

```
python3 migrationtools/documentdb_index_tool.py --restore-indexes --skip-incompatible --dir
mongodb_index_export --uri 'mongodb://user:password@mydocdb.cluster-cdtjj00yfi95.eu-west-
2.docdb.amazonaws.com:27017/?tls=true&tlsCAFile=rds-combined-ca-
bundle.pem&replicaSet=rs0&retryWrites=false'
```

**Verifikasi indeks**

```
python3 migrationtools/documentdb_index_tool.py --show-issues --dir mongodb_index_export
```

## Migrasi pengguna
<a name="mig-runbook-user"></a>

Migrasi pengguna dari MongoDB ke Amazon DocumentDB sangat penting untuk menjaga kontrol akses, otentikasi, dan keamanan database. Bagian ini menguraikan langkah-langkah terperinci untuk berhasil memigrasikan pengguna MongoDB sambil mempertahankan peran dan izin mereka menggunakan alat pengguna ekspor Amazon DocumentDB.

### Menggunakan alat pengguna ekspor Amazon DocumentDB
<a name="w2aac23b9c19b5"></a>

Pengguna [https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/export-users](https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/export-users)ekspor dan peran dari MongoDB atau Amazon JavaScript DocumentDB ke file, yang kemudian dapat digunakan untuk membuat ulang mereka di cluster lain.

**Prasyarat**

```
# Clone the repository
git clone https://github.com/awslabs/amazon-documentdb-tools.git
cd amazon-documentdb-tools/migration/export-users
```

```
# Install required dependencies
pip install pymongo
```

**Langkah 1: Ekspor pengguna dan peran**

```
# Export users and roles to JavaScript files
python3 docdbExportUsers.py \
--users-file mongodb-users.js \
--roles-file mongodb-roles.js \
--uri "mongodb://admin:password@source-host:27017/"
```

**Langkah 2: Edit File Pengguna**

```
// Example of how to update the users.js file
// Find each user creation statement and add the password
db.getSiblingDB("admin").createUser({
user: "appuser",
// Add password here
pwd: "newpassword",
roles: [
{ role: "readWrite", db: "mydb" }
]
})
```

**Langkah 3: Kembalikan Peran Kustom ke Amazon DocumentDB**

```
# Import roles first
mongo --ssl \
--host target-host:27017 \
--sslCAFile rds-combined-ca-bundle.pem \
--username admin \
--password password \
mongodb-roles.js
```

**Langkah 4: Kembalikan Pengguna ke Amazon DocumentDB**

```
# Import users after roles are created
mongo --ssl \
--host target-host:27017 \
--sslCAFile rds-combined-ca-bundle.pem \
--username admin \
--password password \
mongodb-users.js
```

**Catatan penting**
+ Kata sandi tidak diekspor untuk alasan keamanan dan harus ditambahkan secara manual ke file users.js.
+ Peran harus diimpor sebelum pengguna untuk memastikan penetapan peran yang tepat.
+ Alat ini menghasilkan JavaScript file yang dapat langsung dieksekusi dengan shell mongo.
+ Peran khusus dan hak istimewa mereka dipertahankan selama migrasi.
+ Pendekatan ini memungkinkan peninjauan dan modifikasi izin pengguna sebelum mengimpor.

Metode ini menyediakan pendekatan yang aman dan fleksibel untuk memigrasikan pengguna dan peran dari MongoDB ke Amazon DocumentDB sambil memungkinkan pengaturan ulang kata sandi selama proses migrasi.

## Migrasi data
<a name="mig-runbook-data"></a>

**Topics**
+ [

### Migrasi online
](#w2aac23b9c21b5)
+ [

### Migrasi offline
](#w2aac23b9c21b7)
+ [

### Prasyarat
](#w2aac23b9c21c11)
+ [

### Siapkan cluster Amazon DocumentDB
](#w2aac23b9c21c13)
+ [

### Lakukan dump data (mongodump)
](#w2aac23b9c21c15)
+ [

### Transfer file dump ke lingkungan restorasi
](#w2aac23b9c21c17)
+ [

### Mengembalikan data ke Amazon DocumentDB (mongorestore)
](#w2aac23b9c21c19)

### Migrasi online
<a name="w2aac23b9c21b5"></a>

Bagian ini memberikan langkah-langkah rinci untuk melakukan migrasi online dari MongoDB ke Amazon DocumentDB AWS DMS menggunakan untuk mengaktifkan downtime minimal dan replikasi berkelanjutan. Untuk memulai, Anda menyiapkan klaster Amazon DocumentDB sebagai target dan memastikan instans MongoDB Anda dikonfigurasi dengan benar sebagai sumber, biasanya memerlukan mode set replika untuk pengambilan data perubahan. Selanjutnya, Anda membuat instance replikasi DMS dan menentukan titik akhir sumber dan target dengan detail koneksi yang diperlukan. Setelah memvalidasi titik akhir, Anda mengonfigurasi dan memulai tugas migrasi yang dapat menyertakan pemuatan data penuh, replikasi berkelanjutan, atau keduanya.

#### Konfigurasikan target (Amazon DocumentDB)
<a name="w2aac23b9c21b5b5"></a>

**catatan**  
Jika Anda sudah menyediakan klaster Amazon DocumentDB untuk bermigrasi, Anda dapat melewati langkah ini.

**Buat grup parameter kustom**

Lihat Konsol Manajemen AWS atau AWS CLI prosedur di[Membuat grup parameter cluster Amazon DocumentDB](cluster_parameter_groups-create.md).

**Buat cluster Amazon DocumentDB**

**catatan**  
Meskipun ada prosedur lain untuk membuat cluster Amazon DocumentDB dalam panduan ini, langkah-langkah di bagian ini berlaku khusus untuk tugas memigrasi sejumlah besar data ke cluster baru.

1. [Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon DocumentDB di /docdb. https://console.aws.amazon.com](https://console.aws.amazon.com/docdb)

1. Di panel navigasi, pilih **Klaster**.
**Tip**  
Jika Anda tidak melihat panel navigasi di sisi kiri layar, pilih ikon menu (![\[Hamburger menu icon with three horizontal lines.\]](http://docs.aws.amazon.com/id_id/documentdb/latest/developerguide/images/docdb-menu-icon.png)) di pojok kiri atas halaman.

1. Di konsol manajemen Amazon DocumentDB, di bawah **Klaster**, pilih **Buat**.

1. Pada halaman cluster **Create Amazon DocumentDB**, di bagian tipe **Cluster, pilih cluster** **berbasis Instance** (ini adalah opsi default).

1. Di bagian konfigurasi Cluster:
   + Untuk **pengidentifikasi Cluster**, masukkan nama unik, seperti**mydocdbcluster**. Perhatikan bahwa konsol akan mengubah semua nama cluster menjadi huruf kecil terlepas dari bagaimana mereka dimasukkan.
   + Untuk **versi Engine**, pilih 5.0.0.

1. Di bagian **konfigurasi penyimpanan Cluster**, biarkan pengaturan Standar **Amazon DocumentDB** apa adanya (ini adalah opsi default).

1. Di bagian **konfigurasi Instans**:
   + Untuk **kelas instans DB**, pilih **kelas yang dioptimalkan memori (termasuk kelas r)** (ini adalah default).
   + Untuk **kelas Instance**, pilih kelas instance berdasarkan beban kerja. Contoh:
     + db.r6g.large: untuk beban kerja yang lebih kecil
     + db.r6g.4xlarge: untuk beban kerja yang lebih besar

     Sebagai praktik terbaik, sebaiknya pilih instans sebesar yang Anda mampu untuk throughput beban penuh terbaik, dan turunkan skala setelah migrasi selesai.
   + Untuk **Jumlah instance**, pilih 1 instance. Memilih satu instans membantu meminimalkan biaya. Kami menyarankan Anda menskalakan ke tiga instans untuk ketersediaan tinggi setelah migrasi muatan penuh selesai.

1. Di bagian **Autentikasi**, masukkan nama pengguna untuk pengguna utama, lalu pilih **Self managed**. Masukkan kata sandi, lalu konfirmasikan.

1. Di bagian **Pengaturan jaringan**, pilih grup VPC dan subnet, lalu konfigurasikan grup keamanan VPC. Pastikan grup keamanan Amazon DocumentDB Anda mengizinkan koneksi masuk dari grup keamanan instans DMS dengan memperbarui aturan masuk.

1. Di ncryption-at-rest bagian **E**, aktifkan enkripsi (disarankan) dan pilih atau masukkan kunci KMS.

1. Di bagian **Backup**, atur periode retensi cadangan (1-35 hari).

1.  Tinjau konfigurasi Anda dan pilih **Buat klaster**.

   Waktu penyebaran biasanya memakan waktu antara 10 dan 15 menit,

#### Konfigurasikan sumber
<a name="w2aac23b9c21b5b7"></a>

MongoDB dan Amazon DocumentDB keduanya dapat berfungsi sebagai sumber migrasi, tergantung pada skenario Anda:
+ **MongoDB sebagai** sumber - Umum saat bermigrasi dari MongoDB lokal atau yang dikelola sendiri ke Amazon DocumentDB atau layanan database lainnya. AWS Memerlukan berjalan dalam mode set replika dengan oplog berukuran cukup (pastikan ukurannya untuk menahan semua operasi selama Beban Penuh) untuk mendukung pengambilan data perubahan selama migrasi.
+ **Amazon DocumentDB sebagai** sumber - Biasanya digunakan untuk replikasi lintas wilayah, peningkatan versi, atau migrasi ke layanan database lain seperti MongoDB Atlas. [Mengaktifkan aliran perubahan](change_streams.md#change_streams-enabling)Diperlukan dengan menyetel `change_stream_log_retention_duration` parameter dalam grup parameter cluster untuk menangkap perubahan yang sedang berlangsung selama migrasi. Pastikan `change_stream_log_retention_duration` pengaturan Anda cukup besar untuk menutupi waktu yang dibutuhkan untuk menyelesaikan Beban Penuh.

Sebelum memulai migrasi, konfigurasikan sumber Anda untuk mengizinkan AWS DMS akses.

Buat pengguna MongoDB dengan izin yang tepat:

```
db.createUser({
user: "dmsUser",
pwd: "yourSecurePassword",
roles: [{ role: "readAnyDatabase", db: "admin" }]
})
```

Konfigurasikan jaringan dan otentikasi.

Saat mengonfigurasi konektivitas jaringan untuk MongoDB ke migrasi DMS:

**Sumber MongoDB yang dihosting EC2**
+ Ubah grup keamanan EC2 untuk mengizinkan lalu lintas masuk dari grup keamanan instans replikasi DMS.
+ Tambahkan aturan untuk port TCP 27017 (atau port MongoDB kustom Anda).
+ Gunakan ID grup keamanan instans replikasi DMS sebagai sumber untuk kontrol akses yang tepat.
+ Pastikan subnet instans EC2 memiliki rute ke subnet instance replikasi DMS.

**Sumber MongoDB lokal**
+ Konfigurasikan firewall Anda untuk memungkinkan koneksi masuk dari alamat IP publik instans replikasi DMS.
+ Jika menggunakan Direct Connect atau VPN, pastikan perutean yang tepat antara jaringan Anda dan VPC yang berisi instance DMS.
+ Uji konektivitas menggunakan perintah telnet atau nc dari subnet DMS ke server MongoDB Anda.

**Sumber MongoDB Atlas**
+ Tambahkan alamat IP contoh replikasi DMS ke daftar izin MongoDB Atlas IP.
+ Konfigurasikan peering VPC antara VPC dan AWS MongoDB Atlas VPC jika Atlas berjalan. AWS
+ Siapkan AWS PrivateLink untuk konektivitas pribadi (Tingkat perusahaan), jika berjalan di penyedia cloud lain.
+ Buat pengguna khusus dengan read/write izin yang sesuai.
+ Gunakan string koneksi MongoDB Atlas dengan Mode SSL diatur ke “verify-full”.
+ Pastikan ukuran oplog yang cukup untuk durasi migrasi.

**Sumber Amazon DocumentDB**

Konfigurasikan grup keamanan Amazon DocumentDB sumber Anda untuk mengizinkan lalu lintas masuk dari grup keamanan instans replikasi DMS.

#### Buat contoh replikasi DMS
<a name="w2aac23b9c21b5b9"></a>

Sebaiknya gunakan [DMS Buddy](https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/dms_buddy) untuk menyediakan infrastruktur DMS Anda karena menciptakan infrastruktur migrasi yang optimal dengan pengaturan DMS dan ukuran instans yang optimal.

Jika Anda lebih suka mengkonfigurasi secara manual, ikuti langkah-langkah ini:

1. Buka konsol AWS DMS dan pilih **Create replication instance.**

1. Masukkan detail contoh replikasi:
   + **Nama instance**: Pilih nama yang unik.
   + **Kelas instance**: Pilih berdasarkan beban kerja. Contoh: dms.r5.large (beban kerja kecil), dms.r5.4xlarge (beban kerja besar).
   + **Versi mesin**: 3.5.4
   + **Penyimpanan yang dialokasikan**: Default adalah 100GB (meningkat jika diperlukan). Ini ditentukan oleh ukuran dokumen, updates/second dan durasi muat penuh.
   + **Penerapan Multi-AZ**: Aktifkan ketersediaan tinggi, jika diperlukan.
   + Pilih VPC yang sama dengan Amazon DocumentDB.
   + Pastikan **grup Keamanan** mengizinkan lalu lintas masuk dari sumber dan Amazon DocumentDB.

1. Klik **Buat contoh replikasi** dan tunggu statusnya tersedia.

#### Buat titik akhir DMS
<a name="w2aac23b9c21b5c11"></a>

##### Buat titik akhir sumber
<a name="w2aac23b9c21b5c11b3"></a>

**Untuk sumber MongoDB**

1. **Di konsol DMS, di panel navigasi, pilih **Migrasi atau replikasi**, lalu pilih Endpoints.**

1. Pilih **Buat titik akhir**.

1. Pada halaman **Create endpoint**, pilih **Source endpoint**.

1. Di bagian **konfigurasi Endpoint**:
   + Masukkan **pengenal Endpoint** yang unik dan bermakna (misalnya, “mongodb-source”).
   + **Pilih **MongoDB** sebagai mesin Sumber.**
   + Untuk **Mengakses ke basis data titik akhir**, memilih **Memberikan informasi untuk mengakses secara manual**.
   + Untuk **nama Server**, masukkan*MongoDB server DNS name/IP address*.
   + Untuk **Port**, masukkan **27017** (port MongoDB default).
   + Untuk **mode Otentikasi**, pilih mode yang sesuai untuk aplikasi Anda (kata sandi/SSL) (default adalah manajer rahasia).
   + Jika **mode Otentikasi** adalah **Kata Sandi**, berikan:
     + **Nama Pengguna** dan **Kata Sandi**: Masukkan kredenal MongoDB.
     + **Nama database: Nama** basis data sumber Anda.
     + **Mekanisme otentikasi**: SCRAM-SHA-1 (default) atau mekanisme yang sesuai

1. **Untuk **mode Metadata**, tinggalkan pengaturan default dokumen.**

1. Atribut koneksi tambahan:
   + authSource=admin (jika database otentikasi berbeda)
   + Replicaset=< your-replica-set-name > (diperlukan untuk CDC)

**Untuk sumber Amazon DocumentDB**

1. **Di konsol DMS, di panel navigasi, pilih **Migrasi atau replikasi**, lalu pilih Endpoints.**

1. Pilih **Buat titik akhir**.

1. Pada halaman **Create endpoint**, pilih **Source endpoint**.

1. Di bagian **konfigurasi Endpoint**:
   + Masukkan **pengenal Endpoint** yang unik dan bermakna (misalnya, “docdb-source”).
   + **Pilih **Amazon DocumentDB** sebagai mesin Sumber.**
   + Untuk **Mengakses ke basis data titik akhir**, memilih **Memberikan informasi untuk mengakses secara manual**.
   + Untuk **nama Server**, masukkan*source Amazon DocumentDB cluster endpoint*.
   + Untuk **Port**, masukkan **27017** (port Amazon DocumentDB default).
   + Untuk **mode SSL**, pilih **verify-full** (direkomendasikan untuk Amazon DocumentDB).
   + Untuk **Sertifikat CA**, pilih sertifikat CA root Amazon RDS.
   + Untuk **mode Otentikasi**, pilih mode yang sesuai untuk aplikasi Anda (kata sandi/SSL) (default adalah manajer rahasia).
   + Jika **mode Otentikasi** adalah **Kata Sandi**, berikan:
     + **Nama Pengguna** dan **Kata Sandi**: Masukkan kredenal Amazon DocumentDB.
     + **Nama database: Nama** basis data sumber Anda.
     + **Mekanisme otentikasi**: SCRAM-SHA-1 (default) atau mekanisme yang sesuai

1. **Untuk **mode Metadata**, tinggalkan pengaturan default dokumen.**

##### Buat titik akhir target (Amazon DocumentDB)
<a name="w2aac23b9c21b5c11b5"></a>

1. **Di konsol DMS, di panel navigasi, pilih **Migrasi atau replikasi**, lalu pilih Endpoints.**

1. Pilih **Buat titik akhir**.

1. Pada halaman **Create endpoint**, pilih **Target endpoint**.

1. Di bagian **konfigurasi Endpoint**:
   + Masukkan **pengenal Endpoint** yang unik dan bermakna (misalnya, “docdb-target”).
   + **Pilih **Amazon DocumentDB** sebagai mesin Target.**
   + Untuk **Access to endpoint database**, pilih metode yang ingin Anda gunakan untuk mengautentikasi akses ke database:
     + **Jika Anda memilih **AWS Secrets Manager**, pilih rahasia tempat Anda menyimpan kredensi Amazon DocumentDB Anda di bidang Rahasia.**
     + Jika Anda memilih **Menyediakan informasi akses secara manual**: 
       + Untuk **nama Server**, masukkan*target Amazon DocumentDB cluster endpoint*.
       + Untuk **Port**, masukkan **27017** (port Amazon DocumentDB default).
       + Untuk **mode SSL**, pilih **verify-full** (direkomendasikan untuk Amazon DocumentDB).
       + Untuk **Sertifikat CA**, unduh dan tentukan bundel sertifikat CA untuk verifikasi SSL.
       + Untuk **mode Otentikasi**, pilih mode yang sesuai untuk aplikasi Anda (kata sandi/SSL) (default adalah manajer rahasia).
       + Jika **mode Otentikasi** adalah **Kata Sandi**, berikan:
         + **Nama Pengguna** dan **Kata Sandi**: Masukkan kredenal Amazon DocumentDB.
         + **Nama database: Nama** basis data sumber Anda.
         + **Mekanisme otentikasi**: SCRAM-SHA-1 (default) atau mekanisme yang sesuai

1. **Untuk **mode Metadata**, tinggalkan pengaturan default dokumen.**

#### Buat tugas replikasi
<a name="w2aac23b9c21b5c13"></a>

1. **Di konsol DMS, di panel navigasi, pilih **Migrasi atau replikasi**, lalu pilih Tugas.**

1. Pilih **Buat tugas**.

1. Pada halaman **Buat tugas**, di bagian **Konfigurasi tugas**:
   + Masukkan **pengidentifikasi Tugas** yang unik dan bermakna (misalnya, "mongodb-docdb-replication“).
   + Pilih titik akhir sumber yang Anda buat sebelumnya di menu drop-down **titik akhir database Sumber**.
   + Pilih titik akhir target yang Anda buat sebelumnya di menu tarik-turun **titik akhir database Target**.
   + Untuk **jenis Tugas**, pilih **Migrasi dan replikasi**.

1. Di bagian **Pengaturan**:
   + Untuk **mode persiapan tabel Target**, tinggalkan pengaturan default.
   + Untuk **tugas Stop setelah beban penuh selesai**, tinggalkan pengaturan default.
   + Untuk **pengaturan kolom LOB, biarkan pengaturan** **mode LOB Terbatas** apa adanya.
   + Untuk **validasi Data**, biarkan pengaturan default **Matikan**.
   + Untuk **log Tugas**, centang kotak **Aktifkan CloudWatch** log.
   + Untuk penerapan yang **dioptimalkan untuk Batch**, biarkan pengaturan default tidak dicentang (mati).

1. Kembali di bagian atas **Pengaturan tugas**, dalam **mode Pengeditan**, pilih **editor JSON** dan atur atribut berikut:

   ```
   {
     "TargetMetadata": {
       "ParallelApplyThreads": 5
     },
     "FullLoadSettings": {
       "MaxFullLoadSubTasks": 16
     }
   }
   ```

1. Di bagian **Pemetaan tabel**, tambahkan aturan pemilihan baru:
   + Untuk **nama Skema**, tambahkan database sumber untuk bermigrasi. Gunakan% untuk menentukan beberapa database.
   + Untuk nama **tabel Skema**, tambahkan koleksi sumber untuk bermigrasi. Gunakan% untuk menentukan beberapa koleksi.
   + Untuk **Tindakan**, tinggalkan pengaturan default **Sertakan**

1. Untuk koleksi besar (lebih dari 100GB), tambahkan **aturan pengaturan Tabel**:
   + Untuk **nama Skema**, tambahkan database sumber untuk bermigrasi. Gunakan% untuk menentukan beberapa database.
   + Untuk nama **tabel Skema**, tambahkan koleksi sumber untuk bermigrasi. Gunakan% untuk menentukan beberapa koleksi.
   + Untuk **Jumlah partisi**, masukkan 16 (harus kurang dari`MaxFullLoadSubTask`).

1. Di bagian **penilaian Premigrasi**, pastikan dimatikan.

### Migrasi offline
<a name="w2aac23b9c21b7"></a>

Bagian ini menguraikan proses untuk melakukan migrasi offline dari instance MongoDB yang dikelola sendiri ke Amazon DocumentDB menggunakan alat MongoDB asli: dan. `mongodump` `mongorestore`

### Prasyarat
<a name="w2aac23b9c21c11"></a>

**Sumber persyaratan MongoDB**
+ Akses ke instance MongoDB sumber dengan izin yang sesuai.
+ Instal`mongodump`. jika diperlukan (diinstal selama instalasi MongoDB).
+ Pastikan ada cukup ruang disk untuk file dump.

**Targetkan persyaratan Amazon DocumentDB**
+ Pastikan Anda memiliki klaster Amazon DocumentDB yang disediakan.
+ Pastikan ada instans EC2 di VPC yang sama dengan Amazon DocumentDB untuk memfasilitasi migrasi.
+ Konektivitas jaringan harus tersedia antara lingkungan sumber Anda dan Amazon DocumentDB.
+ **mongorestore** harus diinstal pada instance EC2 migrasi.
+ Izin IAM yang sesuai harus dikonfigurasi untuk mengakses Amazon DocumentDB,

**Persyaratan umum**
+ AWS CLI harus dikonfigurasi (jika menggunakan AWS layanan untuk penyimpanan menengah)
+ Bandwidth yang cukup harus tersedia untuk transfer data.
+ Jendela downtime harus disetujui (jika melakukan migrasi langsung, pertimbangkan pendekatan lain)

### Siapkan cluster Amazon DocumentDB
<a name="w2aac23b9c21c13"></a>

Buat cluster Amazon DocumentDB di: AWS
+ Tepat ukuran instans berdasarkan beban kerja Anda.
+ Konfigurasikan VPC, subnet, dan grup keamanan.
+ Aktifkan parameter yang diperlukan melalui grup parameter.

### Lakukan dump data (mongodump)
<a name="w2aac23b9c21c15"></a>

Pilih salah satu opsi berikut untuk membuat file dump:
+ **Opsi 1: Dasar**

  ```
  mongodump --
  uri="mongodb://<source_user>:<source_password>@<source_host>:<source_port>/<database>" --
  out=/path/to/dump
  ```
+ **Opsi 2: Kontrol dan kinerja yang lebih baik**

  ```
  mongodump \
  --uri="mongodb://<source_user>:<source_password>@<sourcehost>:<source_port>" \
  --out=/path/to/dump \
  --gzip \# Compress output
  --numParallelCollections=4 \# Parallel collections dump
  --ssl \# If using SSL
  --authenticationDatabase=admin \ # If auth is required
  --readPreference=secondaryPreferred # If replica set
  ```
+ **Opsi 3: Database besar**

  ```
  mongodump \
  --host=<source_host> \
  --port=<source_port> \
  --username=<source_user> \
  --password=<source_password> \
  --db=<specific_db> \# Only dump specific DB
  --collection=<specific_collection> \ # Only dump specific collection
  --query='{ "date": { "$gt": "2020-01-01" } }' \ # Filter documents
  --archive=/path/to/archive.gz \# Single archive output
  --gzip \
  --ssl
  ```

### Transfer file dump ke lingkungan restorasi
<a name="w2aac23b9c21c17"></a>

Pilih metode yang sesuai berdasarkan ukuran dump Anda:
+ **Kecil** - Langsung salin ke mesin migrasi Anda (instans EC2 yang Anda buat sebelumnya):

  ```
  scp -r /path/to/dump user@migration-machine:/path/to/restore
  ```
+ **Sedang** - Gunakan Amazon S3 sebagai penyimpanan perantara:

  ```
  aws s3 cp --recursive /path/to/dump s3://your-bucket/mongodb-dump/
  ```
+ **Besar** — Untuk database yang sangat besar, pertimbangkan AWS DataSync atau transfer fisik.

### Mengembalikan data ke Amazon DocumentDB (mongorestore)
<a name="w2aac23b9c21c19"></a>

Sebelum memulai proses pemulihan, buat indeks di Amazon DocumentDB. Anda dapat menggunakan alat [Amazon DocumentDB](https://github.com/awslabs/amazon-documentdb-tools/tree/master/index-tool) Index untuk mengekspor dan mengimpor indeks.

Pilih salah satu opsi berikut untuk memulihkan data:
+ **Opsi 1: Pemulihan dasar**

  ```
  mongorestore --uri="mongodb://<docdb_user>:<docdb_password>@<docdb_endpoint>:27017"
  /path/to/dump
  ```
+ **Opsi 2: Kontrol dan kinerja yang lebih baik**

  ```
  mongorestore \
  --uri="mongodb://<docdb_user>:<docdb_password>@<docdb_endpoint>:27017" \
  --ssl \
  --sslCAFile=/path/to/rds-combined-ca-bundle.pem \ # DocumentDB CA cert
  --gzip \# If dumped with gzip
  --numParallelCollections=4 \# Parallel restoration
  --numInsertionWorkersPerCollection=4 \# Parallel documents insertion
  --noIndexRestore \# skip indexes as they are pre-created
  /path/to/dump
  ```
+ **Opsi 3: Database besar atau kontrol khusus**

  ```
  mongorestore \
  --host=<docdb_endpoint> \
  --port=27017 \
  --username=<docdb_user> \
  --password=<docdb_password> \
  --ssl \
  --sslCAFile=/path/to/rds-combined-ca-bundle.pem \
  --archive=/path/to/archive.gz \# If using archive format
  --gzip \
  --nsInclude="db1.*" \# Only restore specific namespaces
  --nsExclude="db1.sensitive_data" \ # Exclude specific collections if needed
  --noIndexRestore \# skip indexes as they are pre-created
  --writeConcern="{w: 'majority'}" # Ensure write durability
  ```

## Memantau
<a name="mig-runbook-monitoring"></a>

Bagian ini menyediakan proses pemantauan terperinci untuk melacak kemajuan, kinerja, dan kesehatan migrasi yang sedang berlangsung dari:

**MongoDB ke Amazon** **DocumentDB**

atau

**Amazon DocumentDB ke Amazon** **DocumentDB**

Langkah-langkah pemantauan berlaku terlepas dari metode migrasi (AWS DMS, mongodump/mongorestore, atau alat lainnya).

### AWS DMS Pemantauan migrasi (jika ada)
<a name="w2aac23b9c23c13"></a>

Pantau CloudWatch metrik utama berikut:

**Metrik fase beban penuh**
+ **FullLoadThroughputBandwidthTarget**- Bandwidth jaringan (KB/detik) selama beban penuh
+ **FullLoadThroughputRowsTarget**— Jumlah rows/documents dimuat per detik
+ **FullLoadThroughputTablesTarget**— Jumlah tables/collections selesai per menit
+ **FullLoadProgressPercent**— Persentase beban penuh selesai
+ **TablesLoaded**— Jumlah tables/collections berhasil dimuat
+ **TablesLoading**— Jumlah pemuatan tables/collections saat ini
+ **TablesQueued**— Jumlah tables/collections menunggu untuk dimuat
+ **TablesErrored**— Jumlah tables/collections yang gagal dimuat

**Metrik fase CDC**
+ **CDCLatencyTarget** - Waktu tunda (detik) antara perubahan sumber dan aplikasi target
+ **CDCLatencySumber** - Waktu tunda (detik) antara perubahan sumber dan DMS membacanya
+ **CDCThroughputRowsTarget**— Baris per detik diterapkan selama replikasi yang sedang berlangsung
+ **CDCThroughputBandwidthTarget**— Bandwidth jaringan (KB/detik) selama CDC
+ **CDCIncomingPerubahan** — Jumlah peristiwa perubahan yang diterima dari sumber
+ **CDCChangesMemoryTarget**— Memori yang digunakan (MB) untuk menyimpan perubahan di sisi target

**Metrik sumber daya**
+ **CPUUtilization**— Penggunaan CPU dari contoh replikasi
+ **FreeableMemory**— Memori yang tersedia pada contoh replikasi
+ **FreeStorageSpace**— Penyimpanan yang tersedia pada contoh replikasi
+ **NetworkTransmitThroughput**— Throughput jaringan untuk contoh replikasi
+ **NetworkReceiveThroughput**— Throughput jaringan untuk contoh replikasi

**Metrik kesalahan**
+ **ErrorsCount**— Jumlah total kesalahan selama migrasi
+ **TableErrorsCount**— Jumlah kesalahan khusus tabel
+ **RecordsErrorsCount**— Jumlah kesalahan khusus catatan

Buat CloudWatch alarm untuk metrik penting seperti `CDCLatencyTarget` dan `CPUUtilization` untuk menerima pemberitahuan jika kinerja migrasi menurun.

#### Log DMS (CloudWatch log)
<a name="w2aac23b9c23c13c23"></a>



1. Buka konsol Amazon CloudWatch Logs.

1. Temukan dan pilih pada grup log Anda. Ini akan terlihat mirip dengan “dms-tasks —”.

1. Cari aliran log yang mungkin berisi informasi kesalahan:
   + Streaming dengan “kesalahan” dalam nama
   + Streaming dengan nama tugas IDs atau titik akhir
   + Aliran log terbaru selama migrasi Anda

1. Dalam aliran ini, cari kata kunci seperti:
   + “kesalahan”
   + “pengecualian”
   + “Gagal”
   + “peringatan”

#### Status tugas DMS (menggunakan AWS CLI)
<a name="w2aac23b9c23c13c25"></a>



```
aws dms describe-replication-tasks --filters Name=replication-task id,Values=<task_id> --query
"ReplicationTasks[0].Status"
```

Aliran status yang diharapkan:

membuat → siap → berjalan → berhenti → berhenti (atau gagal)

#### Monitor menggunakan `docdb-dashboarder`
<a name="w2aac23b9c23c13c27"></a>

`docdb-dashboarder`Alat ini menyediakan pemantauan komprehensif untuk cluster Amazon DocumentDB dengan secara otomatis CloudWatch menghasilkan dasbor dengan metrik kinerja penting. Dasbor ini menampilkan metrik tingkat klaster kritis (lag replika, penghitung operasi), metrik tingkat instans (CPU, memori, koneksi), dan metrik penyimpanan (penggunaan volume, penyimpanan cadangan). Untuk skenario migrasi, alat ini menawarkan dasbor khusus yang melacak kemajuan migrasi dengan metrik seperti lag replikasi CDC dan kecepatan operasi. Dasbor dapat memantau beberapa cluster secara bersamaan dan menyertakan dukungan untuk instance yang NVMe didukung. Dengan memvisualisasikan metrik ini, tim dapat secara proaktif mengidentifikasi kemacetan kinerja, mengoptimalkan alokasi sumber daya, dan memastikan kelancaran pengoperasian penerapan Amazon DocumentDB mereka. Alat ini menghilangkan kebutuhan akan pembuatan dasbor manual sambil memberikan pemantauan yang konsisten di semua lingkungan. Untuk petunjuk penyiapan dan opsi konfigurasi lanjutan, lihat repositori Alat [Dasbor Amazon DocumentDB](https://github.com/awslabs/amazon-documentdb-tools/tree/master/monitoring/docdb-dashboarder). GitHub 

## Validasi
<a name="mig-runbook-validation"></a>

**Topics**
+ [

### Daftar periksa validasi
](#w2aac23b9c25c15)
+ [

### Skema dan validasi indeks
](#w2aac23b9c25c17)
+ [

### Pengambilan sampel data dan validasi tingkat lapangan
](#w2aac23b9c25c19)
+ [

### Validasi menggunakan alat DataDiffer
](#w2aac23b9c25c21)

Bagian ini menyediakan proses validasi terperinci untuk memastikan konsistensi data, integritas, dan kompatibilitas aplikasi setelah bermigrasi dari:

**MongoDB ke Amazon** **DocumentDB**

atau

**Amazon DocumentDB ke Amazon** **DocumentDB**

Langkah-langkah validasi berlaku terlepas dari metode migrasi (AWS DMS, mongodump/mongorestore, atau alat lainnya).

### Daftar periksa validasi
<a name="w2aac23b9c25c15"></a>

Verifikasi bahwa jumlah dokumen di setiap koleksi cocok antara sumber dan target:

**Sumber MongoDB**

```
mongo --host <source_host> --port <port> --username <user> -- password <password> --eval
"db.<collection>.count()"
```

**Target Amazon DocumentDB**

```
mongo --host <target_host> --port <port> --username <user> -- password <password> --eval
"db.<collection>.count()"
```

### Skema dan validasi indeks
<a name="w2aac23b9c25c17"></a>

Pastikan bahwa:
+ semua koleksi ada di target.
+ indeks direplikasi dengan benar.
+ definisi skema (jika ditegakkan) identik.

**Periksa koleksi (sumber vs. target)**

```
mongo --host <source_host> --eval "show collections"
mongo --host <target_host> --ssl --eval "show collections"
```

**periksa indeks (Sumber vs Target)**

```
mongo --host <source_host> --eval" db.<collection>.getIndexes()"
mongo --host <target_host> --ssl –eval" db.<collection>.getIndexes()"
```

Bandingkan daftar koleksi untuk memastikan tidak ada koleksi yang hilang atau tambahan.

Verifikasi indeks dengan memeriksa nama indeks, definisi kunci, kendala unik, dan indeks TTL (jika ada).

**Periksa aturan validasi skema (jika menggunakan validasi skema di MongoDB)**

```
mongo --host <source_host> --eval" db.getCollectionInfos({name: '<collection>'})
[0].options.validator"
   mongo --host <target_host> --ssl –eval" db.getCollectionInfos({name: '<collection>'})[0].options.validator"
```

### Pengambilan sampel data dan validasi tingkat lapangan
<a name="w2aac23b9c25c19"></a>

Anda dapat secara acak sampel dokumen dan membandingkan bidang antara sumber dan target.

**Pengambilan sampel manual**

Ambil lima dokumen acak (sumber):

```
mongo --host <source_host> --eval "db.<collection>.aggregate([{ \$sample: { size: 5 } }])"
```

Ambil dokumen yang sama IDs (target):

```
mongo --host <target_host> --ssl –eval "db.<collection>.find({ _id: { \$in: [<list_of_ids>] } })"
```

**Pengambilan sampel otomatis**

```
import pymongo
# Connect to source and target
source_client = pymongo.MongoClient("<source_uri>")
target_client = pymongo.MongoClient("<target_uri>", ssl=True)
source_db = source_client["<db_name>"]
target_db = target_client["<db_name>"]
# Compare 100 random documents
for doc in source_db.<collection>.aggregate([{ "$sample":
{ "size": 100 } }]):
target_doc = target_db.<collection>.find_one({ "_id":
doc["_id"] })
if target_doc != doc:
print(f"❌ Mismatch in _id: {doc['_id']}")
else:
print(f"✅ Match: {doc['_id']}")
```

### Validasi menggunakan alat DataDiffer
<a name="w2aac23b9c25c21"></a>

[DataDiffer Alat ini](https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/data-differ) menyediakan cara yang andal untuk membandingkan data antara basis data sumber dan target.

#### Prasyarat
<a name="w2aac23b9c25c21b5"></a>

Prasyarat berikut harus dipenuhi sebelum menginstal alat: DataDiffer 
+ Python 3.7\$1
+ PyMongo perpustakaan
+ Konektivitas jaringan ke MongoDB sumber dan target cluster Amazon DocumentDB

#### Penyiapan dan instalasi
<a name="w2aac23b9c25c21b7"></a>

**Kloning repositori dan arahkan ke direktori DataDiffer **

```
git clone https://github.com/awslabs/amazon-documentdb-tools.git
cd amazon-documentdb-tools/migration/data-differ
```

**Instal dependensi yang diperlukan**

```
pip install -r requirements.txt
```

#### Menjalankan validasi data
<a name="w2aac23b9c25c21b9"></a>

**Buat file konfigurasi (misalnya, config.json) dengan detail koneksi**

```
{
"source": {
"uri": "mongodb://username:password@source-mongodb-
host:27017/?replicaSet=rs0",
"db": "your_database",
"collection": "your_collection"
},
"target": {
"uri": "mongodb://username:password@target-docdb-
cluster.region.docdb.amazonaws.com:27017/?tls=true&tlsCAFile=global-
bundle.pem&replicaSet=rs0",
"db": "your_database",
"collection": "your_collection"
},
"options": {
"batch_size": 1000,
"threads": 4,
"sample_size": 0,
"verbose": true
}
}
```

**Jalankan DataDiffer alat**

```
python differ.py --config config.json
```

**Untuk koleksi besar, gunakan sampling untuk memvalidasi subset data**

```
python differ.py --config config.json --sample-size 10000
```

**Untuk memvalidasi beberapa koleksi, buat file konfigurasi terpisah atau gunakan mode batch**

```
python differ.py --batch-config batch_config.json
```

#### Menafsirkan hasil
<a name="w2aac23b9c25c21c11"></a>

Alat akan menampilkan:
+ Total dokumen dalam sumber dan target
+ Jumlah dokumen yang cocok
+ Jumlah dokumen yang hilang
+ Jumlah dokumen dengan perbedaan
+ Laporan rinci perbedaan (jika ada)

#### Praktik terbaik
<a name="w2aac23b9c25c21c13"></a>

Berikut ini adalah praktik terbaik saat menggunakan DataDiffer alat ini:
+ **Jalankan secara bertahap** — Pertama validasi jumlah dokumen, lalu sampel dokumen kunci, dan akhirnya jalankan perbandingan lengkap, jika diperlukan.
+ **Periksa perbedaan skema** - Amazon DocumentDB memiliki beberapa keterbatasan dibandingkan dengan MongoDB. Alat ini akan menyoroti tipe atau struktur data yang tidak kompatibel.
+ **Validasi selama periode tenang** - Jalankan validasi saat operasi tulis minimal untuk memastikan konsistensi.
+ **Memantau penggunaan sumber daya** — Proses perbandingan bisa intensif sumber daya. Sesuaikan ukuran batch dan jumlah utas yang sesuai.
+ **Validasi indeks** - Setelah validasi data, pastikan semua indeks yang diperlukan telah dibuat pada klaster Amazon DocumentDB target.
+ **Hasil validasi dokumen** — Simpan catatan hasil validasi untuk setiap koleksi sebagai bagian dari dokumentasi migrasi Anda.

# Migrasi dari Couchbase Server
<a name="migration-from-couchbase"></a>

**Topics**
+ [

## Pengantar
](#introduction)
+ [

## Perbandingan dengan Amazon DocumentDB
](#comparison-to-amazon-documentdb)
+ [

## Penemuan
](#discovery)
+ [

## Perencanaan
](#planning)
+ [

## Migrasi
](#migration)
+ [

## Validasi
](#validation)

## Pengantar
<a name="introduction"></a>

Panduan ini menyajikan poin-poin penting yang perlu dipertimbangkan saat bermigrasi dari Couchbase Server ke Amazon DocumentDB. Ini menjelaskan pertimbangan untuk fase penemuan, perencanaan, pelaksanaan, dan validasi migrasi Anda. Ini juga menjelaskan cara melakukan migrasi offline dan online.

## Perbandingan dengan Amazon DocumentDB
<a name="comparison-to-amazon-documentdb"></a>


|  | **Server Couchbase** | **Amazon DocumentDB** | 
| --- | --- | --- | 
| Organisasi Data | Dalam versi 7.0 dan yang lebih baru, data diatur ke dalam ember, cakupan, dan koleksi. Dalam versi sebelumnya, data diatur ke dalam ember. | Data diatur ke dalam database dan koleksi. | 
| Kompatibilitas | Ada yang terpisah APIs untuk setiap layanan (misalnya data, indeks, pencarian, dll.). Pencarian sekunder menggunakan SQL\$1\$1 (sebelumnya dikenal sebagai N1QL); bahasa kueri berdasarkan SQL standar ANSI sehingga akrab bagi banyak pengembang. | Amazon DocumentDB kompatibel [dengan MongoDB API.](compatibility.html) | 
| Arsitektur  | Penyimpanan dilampirkan ke setiap instance cluster. Anda tidak dapat menskalakan komputasi secara independen dari penyimpanan. | Amazon DocumentDB dirancang untuk cloud dan untuk menghindari keterbatasan arsitektur database tradisional. Lapisan [komputasi dan penyimpanan dipisahkan di Amazon DocumentDB dan lapisan](db-clusters-understanding.html) komputasi [dapat](how-it-works.html) diskalakan secara independen dari penyimpanan. | 
| Tambahkan kapasitas baca sesuai permintaan | Cluster dapat ditingkatkan dengan menambahkan instance. Karena penyimpanan dilampirkan ke instance di mana layanan berjalan, waktu yang diperlukan untuk skala keluar tergantung pada jumlah data yang perlu dipindahkan ke instance baru, atau diseimbangkan kembali. | Anda dapat mencapai penskalaan baca untuk klaster Amazon DocumentDB Anda [dengan membuat hingga 15 replika Amazon DocumentDB di cluster](db-cluster-manage-performance.html#db-cluster-manage-scaling-reads). Tidak ada dampak pada lapisan penyimpanan. | 
| Pulihkan dengan cepat dari kegagalan node | Cluster memiliki kemampuan failover otomatis tetapi waktu untuk mengembalikan cluster ke kekuatan penuh tergantung pada jumlah data yang perlu dipindahkan ke instance baru. | Amazon DocumentDB [dapat melakukan failover](failover.html) primer biasanya dalam 30 detik dan mengembalikan cluster kembali ke kekuatan penuh dalam 8-10 menit terlepas dari jumlah data dalam cluster. | 
| Skalakan penyimpanan saat data tumbuh | Untuk penyimpanan cluster yang dikelola sendiri dan IOs jangan skala secara otomatis. | [Penyimpanan IOs dan skala Amazon DocumentDB](db-cluster-manage-performance.html#db-cluster-manage-scaling-storage) secara otomatis. | 
| Backup data tanpa mempengaruhi kinerja | Cadangan dilakukan oleh layanan cadangan dan tidak diaktifkan secara default. Karena penyimpanan dan komputasi tidak terpisah, dapat berdampak pada kinerja. | Pencadangan Amazon DocumentDB diaktifkan secara default dan tidak dapat dimatikan. Cadangan ditangani oleh lapisan penyimpanan, sehingga berdampak nol pada lapisan komputasi. Amazon DocumentDB [mendukung pemulihan dari snapshot cluster [dan memulihkan](backup_restore-point_in_time_recovery.html) ke titik waktu](backup_restore-restore_from_snapshot.html). | 
| Daya tahan data | Bisa ada maksimal 3 salinan replika data dalam sebuah cluster dengan total 4 salinan. Setiap contoh di mana layanan data berjalan akan memiliki salinan aktif dan 1, 2, atau 3 replika data. | Amazon DocumentDB menyimpan 6 salinan data tidak peduli berapa banyak instance komputasi yang ada dengan kuorum tulis 4 dan persistst true. Klien menerima pengakuan setelah lapisan penyimpanan bertahan 4 salinan data. | 
| Konsistensi | Konsistensi langsung untuk K/V operasi didukung. Couchbase SDK merutekan K/V permintaan ke instance tertentu yang berisi salinan aktif data sehingga setelah pembaruan diakui, klien dijamin untuk membaca pembaruan tersebut. Replikasi pembaruan ke layanan lain (indeks, pencarian, analisis, eventing) pada akhirnya konsisten. | Replika Amazon DocumentDB pada akhirnya konsisten. Jika pembacaan konsistensi langsung diperlukan, klien dapat membaca dari contoh utama. | 
| Replikasi | Cross-Data Center Replication (XDCR) menyediakan replikasi data yang disaring, aktif-pasif/aktif-aktif dalam banyak topologi. | Cluster [global Amazon DocumentDB](global-clusters.html) menyediakan replikasi aktif-pasif dalam topologi 1:many (hingga 10). | 

## Penemuan
<a name="discovery"></a>

Migrasi ke Amazon DocumentDB memerlukan pemahaman menyeluruh tentang beban kerja database yang ada. Penemuan beban kerja adalah proses menganalisis konfigurasi klaster Couchbase dan karakteristik operasional Anda — kumpulan data, indeks, dan beban kerja — untuk membantu memastikan transisi yang mulus dengan gangguan minimal.

### Konfigurasi klaster
<a name="cluster-configuration"></a>

Couchbase menggunakan arsitektur service-centric di mana setiap kemampuan sesuai dengan layanan. Jalankan perintah berikut terhadap cluster Couchbase Anda untuk menentukan layanan mana yang digunakan (lihat [Mendapatkan Informasi tentang Node](https://docs.couchbase.com/server/current/rest-api/rest-node-get-info.html)):

```
curl -v -u <administrator>:<password> \
  http://<ip-address-or-hostname>:<port>/pools/nodes | \
  jq '[.nodes[].services[]] | unique'
```

Contoh output:

```
[
  "backup",
  "cbas",
  "eventing",
  "fts",
  "index",
  "kv",
  "n1ql"
]
```

Layanan Couchbase meliputi:

#### Layanan data (kv)
<a name="data-service-kv"></a>

Layanan data menyediakan read/write akses ke data dalam memori dan pada disk.

[Amazon DocumentDB K/V mendukung operasi pada data JSON melalui MongoDB API.](java-crud-operations.html)

#### Layanan kueri (n1ql)
<a name="query-service-n1ql"></a>

Layanan query mendukung query data JSON melalui SQL\$1\$1.

Amazon DocumentDB mendukung kueri data JSON melalui MongoDB API.

#### Layanan indeks (indeks)
<a name="index-service-index"></a>

Layanan indeks membuat dan memelihara indeks pada data, memungkinkan kueri lebih cepat.

Amazon DocumentDB mendukung indeks primer default dan pembuatan indeks sekunder pada data JSON melalui MongoDB API.

#### Layanan pencarian (fts)
<a name="search-service-fts"></a>

Layanan pencarian mendukung pembuatan indeks untuk pencarian teks lengkap.

Fitur pencarian teks lengkap asli Amazon DocumentDB memungkinkan Anda [melakukan pencarian teks pada kumpulan data tekstual besar menggunakan indeks teks tujuan khusus melalui](text-search.html) MongoDB API. Untuk kasus penggunaan penelusuran lanjutan, [integrasi Amazon DocumentDB Zero-ETL dengan OpenSearch Amazon](https://aws.amazon.com/blogs/big-data/amazon-documentdb-zero-etl-integration-with-amazon-opensearch-service-is-now-available/) Service menyediakan kemampuan pencarian lanjutan, seperti pencarian fuzzy, pencarian lintas koleksi, dan pencarian multibahasa, pada data Amazon DocumentDB.

#### Layanan Analytics (cbas)
<a name="analytics-service-cbas"></a>

Layanan analitik mendukung analisis data JSON dalam waktu dekat.

Amazon DocumentDB mendukung kueri ad-hoc pada data JSON melalui MongoDB API. Anda juga dapat [menjalankan kueri kompleks pada data JSON Anda di Amazon DocumentDB menggunakan Apache Spark yang berjalan di Amazon](https://aws.amazon.com/blogs/database/run-complex-queries-on-massive-amounts-of-data-stored-on-your-amazon-documentdb-clusters-using-apache-spark-running-on-amazon-emr/) EMR.

#### Layanan eventing (eventing)
<a name="eventing-service-eventing"></a>

Layanan eventing mengeksekusi logika bisnis yang ditentukan pengguna dalam menanggapi perubahan data.

Amazon DocumentDB mengotomatiskan beban kerja yang digerakkan oleh peristiwa [dengan AWS Lambda menjalankan fungsi setiap kali data berubah dengan cluster Amazon DocumentDB Anda](https://docs.aws.amazon.com/lambda/latest/dg/with-documentdb-tutorial.html).

#### Layanan Backup (backup)
<a name="backup-service-backup"></a>

Layanan cadangan menjadwalkan pencadangan data penuh dan tambahan dan penggabungan cadangan data sebelumnya.

Amazon DocumentDB terus mencadangkan data Anda ke Amazon S3 dengan periode retensi 1—35 hari sehingga Anda dapat dengan cepat memulihkan ke titik mana pun dalam periode retensi cadangan. Amazon DocumentDB juga mengambil snapshot otomatis data Anda sebagai bagian dari proses backup terus menerus ini. Anda juga dapat [mengelola pencadangan dan pemulihan Amazon AWS Backup DocumentDB](https://aws.amazon.com/blogs/storage/manage-backup-and-restore-of-amazon-documentdb-with-aws-backup/) dengan. .

### Karakteristik operasional
<a name="operational-characteristics"></a>

Gunakan [Discovery Tool for Couchbase](https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/discovery-tool-for-couchbase) untuk mendapatkan informasi berikut tentang kumpulan data, indeks, dan beban kerja Anda. Informasi ini akan membantu Anda mengukur cluster Amazon DocumentDB Anda.

#### Kumpulan data
<a name="data-set"></a>

Alat ini mengambil bucket, cakupan, dan informasi pengumpulan berikut:

1. nama bucket

1. jenis ember

1. nama lingkup

1. nama koleksi

1. ukuran total (byte)

1. total item

1. ukuran item (byte)

#### Indeks
<a name="indexes"></a>

Alat ini mengambil statistik indeks berikut dan semua definisi indeks untuk semua bucket. Perhatikan bahwa indeks primer dikecualikan karena Amazon DocumentDB secara otomatis membuat indeks utama untuk setiap koleksi.

1. nama bucket

1. nama lingkup

1. nama koleksi

1. nama indeks

1. ukuran indeks (byte)

#### Beban kerja
<a name="workload"></a>

Alat ini mengambil K/V dan metrik kueri N1QL. K/V nilai metrik dikumpulkan pada tingkat bucket dan metrik SQL\$1\$1 dikumpulkan di tingkat cluster.

Opsi baris perintah alat adalah sebagai berikut:

```
python3 discovery.py \
  --username <source cluster username> \
  --password <source cluster password> \
  --data_node <data node IP address or DNS name> \
  --admin_port <administration http REST port> \
  --kv_zoom <get bucket statistics for specified interval> \
  --tools_path <full path to Couchbase tools> \
  --index_metrics <gather index definitions and SQL++ metrics> \
  --indexer_port <indexer service http REST port> \
  --n1ql_start <start time for sampling> \
  --n1ql_step <sample interval over the sample period>
```

Berikut adalah contoh perintah:

```
python3 discovery.py \
  --username username \
  --password ******** \
  --data_node "http://10.0.0.1" \
  --admin_port 8091 \
  --kv_zoom week \
  --tools_path "/opt/couchbase/bin" \
  --index_metrics true \
  --indexer_port 9102 \
  --n1ql_start -60000 \
  --n1ql_step 1000
```

Nilai metrik K/V akan didasarkan pada sampel setiap 10 menit selama seminggu terakhir (lihat [metode HTTP dan URI](https://docs.couchbase.com/server/current/rest-api/rest-bucket-stats.html#http-method-and-uri)). Nilai metrik SQL\$1\$1 akan didasarkan pada sampel setiap 1 detik selama 60 detik terakhir (lihat [Label Umum](https://docs.couchbase.com/server/current/rest-api/rest-statistics-single.html#general-labels)). Output dari perintah akan berada di file-file berikut:

**collection-stats.csv** - bucket, ruang lingkup, dan informasi pengumpulan

```
bucket,bucket_type,scope_name,collection_name,total_size,total_items,document_size
beer-sample,membase,_default,_default,2796956,7303,383
gamesim-sample,membase,_default,_default,114275,586,196
pillowfight,membase,_default,_default,1901907769,1000006,1902
travel-sample,membase,inventory,airport,547914,1968,279
travel-sample,membase,inventory,airline,117261,187,628
travel-sample,membase,inventory,route,13402503,24024,558
travel-sample,membase,inventory,landmark,3072746,4495,684
travel-sample,membase,inventory,hotel,4086989,917,4457
...
```

**index-stats.csv** - nama indeks dan ukuran

```
bucket,scope,collection,index-name,index-size
beer-sample,_default,_default,beer_primary,468144
gamesim-sample,_default,_default,gamesim_primary,87081
travel-sample,inventory,airline,def_inventory_airline_primary,198290
travel-sample,inventory,airport,def_inventory_airport_airportname,513805
travel-sample,inventory,airport,def_inventory_airport_city,487289
travel-sample,inventory,airport,def_inventory_airport_faa,526343
travel-sample,inventory,airport,def_inventory_airport_primary,287475
travel-sample,inventory,hotel,def_inventory_hotel_city,497125
...
```

**kv-stats.csv** - dapatkan, atur, dan hapus metrik untuk semua bucket

```
bucket,gets,sets,deletes
beer-sample,0,0,0
gamesim-sample,0,0,0
pillowfight,369,521,194
travel-sample,0,0,0
```

**n1ql-stats.csv** - SQL\$1\$1 pilih, hapus, dan masukkan metrik untuk cluster

```
selects,deletes,inserts
0,132,87
```

**indeks- .txt** <bucket-name>— definisi indeks dari semua indeks dalam ember. Perhatikan bahwa indeks primer dikecualikan karena Amazon DocumentDB secara otomatis membuat indeks utama untuk setiap koleksi.

```
CREATE INDEX `def_airportname` ON `travel-sample`(`airportname`)
CREATE INDEX `def_city` ON `travel-sample`(`city`)
CREATE INDEX `def_faa` ON `travel-sample`(`faa`)
CREATE INDEX `def_icao` ON `travel-sample`(`icao`)
CREATE INDEX `def_inventory_airport_city` ON `travel-sample`.`inventory`.`airport`(`city`)
CREATE INDEX `def_inventory_airport_faa` ON `travel-sample`.`inventory`.`airport`(`faa`)
CREATE INDEX `def_inventory_hotel_city` ON `travel-sample`.`inventory`.`hotel`(`city`)
CREATE INDEX `def_inventory_landmark_city` ON `travel-sample`.`inventory`.`landmark`(`city`)
CREATE INDEX `def_sourceairport` ON `travel-sample`(`sourceairport`)
...
```

## Perencanaan
<a name="planning"></a>

Pada tahap perencanaan, Anda akan menentukan persyaratan klaster Amazon DocumentDB dan pemetaan bucket, cakupan, dan koleksi Couchbase ke database dan koleksi Amazon DocumentDB.

### Persyaratan klaster Amazon DocumentDB
<a name="amazon-documentdb-cluster-requirements"></a>

Gunakan data yang dikumpulkan dalam fase penemuan untuk mengukur cluster Amazon DocumentDB Anda. Lihat [Ukuran instans](best_practices.html#best_practices-instance_sizing) untuk informasi selengkapnya tentang ukuran cluster Amazon DocumentDB Anda.

### Memetakan ember, cakupan, dan koleksi ke database dan koleksi
<a name="mapping-buckets-scopes-and-collections-to-databases-and-collections"></a>

Tentukan database dan koleksi yang akan ada di cluster Amazon DocumentDB Anda. Pertimbangkan opsi berikut tergantung pada bagaimana data diatur di cluster Couchbase Anda. Ini bukan satu-satunya pilihan, tetapi mereka memberikan titik awal untuk Anda pertimbangkan.

#### Couchbase Server 6.x atau sebelumnya
<a name="couchbase-6x-or-earlier"></a>

##### Bucket Couchbase ke koleksi Amazon DocumentDB
<a name="couchbase-buckets-to-amazon-documentdb-collections"></a>

Migrasikan setiap bucket ke koleksi Amazon DocumentDB yang berbeda. Dalam skenario ini, `id` nilai dokumen Couchbase akan digunakan sebagai nilai Amazon DocumentDB. `_id`

![\[Couchbase Server 6.x atau bucket sebelumnya ke koleksi Amazon DocumentDB\]](http://docs.aws.amazon.com/id_id/documentdb/latest/developerguide/images/buckets-to-collections.png)


#### Couchbase Server 7.0 atau yang lebih baru
<a name="couchbase-70-or-later"></a>

##### Koleksi Couchbase ke koleksi Amazon DocumentDB
<a name="couchbase-collections-to-amazon-documentdb-collections"></a>

Migrasikan setiap koleksi ke koleksi Amazon DocumentDB yang berbeda. Dalam skenario ini, `id` nilai dokumen Couchbase akan digunakan sebagai nilai Amazon DocumentDB. `_id`

![\[Koleksi Couchbase Server 7.0 atau yang lebih baru ke koleksi Amazon DocumentDB\]](http://docs.aws.amazon.com/id_id/documentdb/latest/developerguide/images/collections-to-collections.png)


## Migrasi
<a name="migration"></a>

### Migrasi indeks
<a name="index-migration"></a>

Migrasi ke Amazon DocumentDB melibatkan transfer tidak hanya data tetapi juga indeks untuk mempertahankan kinerja kueri dan mengoptimalkan operasi database. Bagian ini menguraikan step-by-step proses terperinci untuk memigrasikan indeks ke Amazon DocumentDB sambil memastikan kompatibilitas dan efisiensi.

Gunakan [Amazon Q](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/chat-with-q.html) untuk mengonversi `CREATE INDEX` pernyataan SQL\$1\$1 ke perintah Amazon DocumentDB. `createIndex()`

1. Unggah <bucket name>file **indeks- .txt** yang dibuat oleh Discovery Tool untuk Couchbase.

1. Masukkan prompt berikut:

   `Convert the Couchbase CREATE INDEX statements to Amazon DocumentDB createIndex commands`

Amazon Q akan menghasilkan perintah Amazon `createIndex()` DocumentDB yang setara. Perhatikan bahwa Anda mungkin perlu memperbarui nama koleksi berdasarkan cara Anda [memetakan bucket, cakupan, dan koleksi Couchbase ke koleksi Amazon](#mapping-buckets-scopes-and-collections-to-databases-and-collections) DocumentDB.

Contoh:

**indexes-beer-sample.txt**

```
CREATE INDEX `beerType` ON `beer-sample`(`type`)
CREATE INDEX `code` ON `beer-sample`(`code`) WHERE (`type` = "brewery")
```

Contoh keluaran Amazon Q (kutipan):

```
db.beerSample.createIndex(
  { "type": 1 },
  {
    "name": "beerType",
    "background": true
  }
)

db.beerSample.createIndex(
  { "code": 1 },
  {
    "name": "code",
    "background": true,
    "partialFilterExpression": { "type": "brewery" }
  }
)
```

Untuk indeks apa pun yang tidak dapat dikonversi oleh Amazon Q, lihat [Mengelola indeks Amazon DocumentDB](managing-indexes.html) [dan Indeks serta properti indeks untuk informasi lebih lanjut](mongo-apis.html#mongo-apis-index).

### Kode refactor untuk menggunakan MongoDB APIs
<a name="refactor-code-to-use-the-mongodb-apis"></a>

Klien menggunakan Couchbase SDKs untuk terhubung ke Couchbase Server. Klien Amazon DocumentDB menggunakan driver MongoDB untuk terhubung ke Amazon DocumentDB. Semua bahasa yang didukung oleh Couchbase juga SDKs didukung oleh driver MongoDB. Lihat Driver [MongoDB](https://www.mongodb.com/docs/drivers/) untuk informasi lebih lanjut tentang driver untuk bahasa Anda.

Karena perbedaan antara Couchbase Server dan Amazon DocumentDB, Anda perlu memfaktorkan ulang kode Anda untuk menggunakan MongoDB yang sesuai. APIs APIs Anda dapat menggunakan [Amazon Q](https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/chat-with-q.html) untuk mengonversi panggilan K/V API dan kueri SQL\$1\$1 ke MongoDB yang setara: APIs

1. Unggah file kode sumber.

1. Masukkan prompt berikut:

   `Convert the Couchbase API code to Amazon DocumentDB API code`

Menggunakan contoh [kode Hello Couchbase Python](https://docs.couchbase.com/python-sdk/current/hello-world/start-using-sdk.html#hello-couchbase), Amazon Q menghasilkan berikut (kutipan):

```
from datetime import timedelta
from pymongo import MongoClient

# Connection parameters
database_name = "travel-sample"

# Connect to Amazon DocumentDB cluster
client = MongoClient('<Amazon DocumentDB connection string>')

# Get reference to database and collection
db = client['travel-sample']
airline_collection = db['airline']

# upsert document function
def upsert_document(doc):
    print("\nUpsert Result: ")
    try:
        # key will equal: "airline_8091"
        key = doc["type"] + "_" + str(doc["id"])
        doc['_id'] = key # Amazon DocumentDB uses _id as primary key
        result = airline_collection.update_one(
            {'_id': key},
            {'$set': doc},
            upsert=True
        )
        print(f"Modified count: {result.modified_count}")
    except Exception as e:
        print(e)

# get document function
def get_airline_by_key(key):
    print("\nGet Result: ")
    try:
        result = airline_collection.find_one({'_id': key})
        print(result)
    except Exception as e:
        print(e)

# query for document by callsign
def lookup_by_callsign(cs):
    print("\nLookup Result: ")
    try:
        result = airline_collection.find(
            {'callsign': cs},
            {'name': 1, '_id': 0}
        )
        for doc in result:
            print(doc['name'])
    except Exception as e:
        print(e)

# Test document
airline = {
    "type": "airline",
    "id": 8091,
    "callsign": "CBS",
    "iata": None,
    "icao": None,
    "name": "Couchbase Airways",
}

upsert_document(airline)
get_airline_by_key("airline_8091")
lookup_by_callsign("CBS")
```

Lihat [Menghubungkan secara terprogram ke Amazon DocumentDB untuk contoh menghubungkan ke Amazon](connect_programmatically.html) DocumentDB dengan Python, Node.js, PHP, Go, Java, C\$1/.NET, R, dan Ruby.

### Pilih pendekatan migrasi
<a name="select-the-migration-approach"></a>

Saat memigrasikan data ke Amazon DocumentDB, ada dua opsi:

1. [migrasi offline](#offline-migration)

1. [migrasi online](#online-migration)

#### Migrasi offline
<a name="offline-migration"></a>

Pertimbangkan migrasi offline saat:
+ **Waktu henti dapat diterima:** Migrasi offline melibatkan penghentian operasi penulisan ke database sumber, mengekspor data, dan kemudian mengimpornya ke Amazon DocumentDB. Proses ini menimbulkan downtime untuk aplikasi Anda. Jika aplikasi atau beban kerja Anda dapat mentolerir periode tidak tersedianya ini, migrasi offline adalah opsi yang layak.
+ **Migrasi kumpulan data yang lebih kecil atau melakukan bukti konsep:** Untuk kumpulan data yang lebih kecil, waktu yang diperlukan untuk proses ekspor dan impor relatif singkat, membuat migrasi offline menjadi metode yang cepat dan sederhana. Ini juga cocok untuk pengembangan, pengujian, dan proof-of-concept lingkungan di mana downtime kurang kritis.
+ **Kesederhanaan adalah prioritas:** Metode offline, menggunakan cbexport dan mongoimport, umumnya merupakan pendekatan yang paling mudah untuk memigrasikan data. Ini menghindari kompleksitas pengambilan data perubahan (CDC) yang terlibat dalam metode migrasi online.
+ **Tidak ada perubahan berkelanjutan yang perlu direplikasi:** Jika database sumber tidak secara aktif menerima perubahan selama migrasi, atau jika perubahan tersebut tidak penting untuk ditangkap dan diterapkan ke target selama proses migrasi, maka pendekatan offline sesuai.

**Topics**
+ [

##### Couchbase Server 6.x atau sebelumnya
](#couchbase-6x-or-earlier-offline)
+ [

##### Couchbase Server 7.0 atau yang lebih baru
](#couchbase-70-or-later-offline)

##### Couchbase Server 6.x atau sebelumnya
<a name="couchbase-6x-or-earlier-offline"></a>

##### Bucket Couchbase ke koleksi Amazon DocumentDB
<a name="couchbase-bucket-to-amazon-documentdb-collection-offline"></a>

Ekspor data menggunakan [cbexport json](https://docs-archive.couchbase.com/server/6.6/tools/cbexport-json.html) untuk membuat dump JSON dari semua data di bucket. Untuk `--format` opsi yang dapat Anda gunakan `lines` atau`list`.

```
cbexport json \
  --cluster <source cluster endpoint> \
  --bucket <bucket name> \
  --format <lines | list> \
  --username <username> \
  --password <password> \
  --output export.json \
  --include-key _id
```

Impor data ke koleksi Amazon DocumentDB [menggunakan](backup_restore-dump_restore_import_export_data.html#backup_restore-dump_restore_import_export_data-mongoimport) mongoimport dengan opsi yang sesuai untuk mengimpor baris atau daftar:

baris:

```
mongoimport \
  --db <database> \
  --collection <collection> \
  --uri "<Amazon DocumentDB cluster connection string>" \
  --file export.json
```

daftar:

```
mongoimport \
  --db <database> \
  --collection <collection> \
  --uri "<Amazon DocumentDB cluster connection string>" \
  --jsonArray \
  --file export.json
```

##### Couchbase Server 7.0 atau yang lebih baru
<a name="couchbase-70-or-later-offline"></a>

Untuk melakukan migrasi offline, gunakan alat cbexport dan mongoimport:

##### Bucket Couchbase dengan cakupan default dan koleksi default
<a name="couchbase-bucket-with-default-scope-and-default-collection-offline"></a>

Ekspor data menggunakan [cbexport json](https://docs.couchbase.com/server/current/tools/cbexport-json.html) untuk membuat dump JSON dari semua koleksi di bucket. Untuk `--format` opsi yang dapat Anda gunakan `lines` atau`list`.

```
cbexport json \
  --cluster <source cluster endpoint> \
  --bucket <bucket name> \
  --format <lines | list> \
  --username <username> \
  --password <password> \
  --output export.json \
  --include-key _id
```

Impor data ke koleksi Amazon DocumentDB [menggunakan](backup_restore-dump_restore_import_export_data.html#backup_restore-dump_restore_import_export_data-mongoimport) mongoimport dengan opsi yang sesuai untuk mengimpor baris atau daftar:

baris:

```
mongoimport \
  --db <database> \
  --collection <collection> \
  --uri "<Amazon DocumentDB cluster connection string>" \
  --file export.json
```

daftar:

```
mongoimport \
  --db <database> \
  --collection <collection> \
  --uri "<Amazon DocumentDB cluster connection string>" \
  --jsonArray \
  --file export.json
```

##### Koleksi Couchbase ke koleksi Amazon DocumentDB
<a name="couchbase-collections-to-amazon-documentdb-collections-offline"></a>

Ekspor data menggunakan [cbexport json](https://docs.couchbase.com/server/current/tools/cbexport-json.html) untuk membuat dump JSON dari setiap koleksi. Gunakan `--include-data` opsi untuk mengekspor setiap koleksi. Untuk `--format` opsi yang dapat Anda gunakan `lines` atau`list`. Gunakan `--collection-field` opsi `--scope-field` dan untuk menyimpan nama ruang lingkup dan koleksi di bidang yang ditentukan di setiap dokumen JSON.

```
cbexport json \
  --cluster <source cluster endpoint> \
  --bucket <bucket name> \
  --include-data <scope name>.<collection name> \
  --format <lines | list> \
  --username <username> \
  --password <password> \
  --output export.json \
  --include-key _id \
  --scope-field "_scope" \
  --collection-field "_collection"
```

Karena cbexport menambahkan `_collection` bidang `_scope` dan ke setiap dokumen yang diekspor, Anda dapat menghapusnya dari setiap dokumen dalam file ekspor melalui pencarian dan penggantian,`sed`, atau metode apa pun yang Anda inginkan.

Impor data untuk setiap koleksi ke koleksi Amazon DocumentDB [menggunakan](backup_restore-dump_restore_import_export_data.html#backup_restore-dump_restore_import_export_data-mongoimport) mongoimport dengan opsi yang sesuai untuk mengimpor baris atau daftar:

baris:

```
mongoimport \
--db <database> \
--collection <collection> \
--uri "<Amazon DocumentDB cluster connection string>" \
--file export.json
```

daftar:

```
mongoimport \
--db <database> \
--collection <collection> \
--uri "<Amazon DocumentDB cluster connection string>" \
--jsonArray \
--file export.json
```

#### Migrasi online
<a name="online-migration"></a>

Pertimbangkan migrasi online saat Anda perlu meminimalkan waktu henti dan perubahan yang sedang berlangsung perlu direplikasi ke Amazon DocumentDB dalam waktu hampir nyata.

Lihat [Cara melakukan migrasi langsung dari Couchbase ke Amazon DocumentDB untuk mempelajari cara melakukan migrasi langsung ke Amazon](https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/migration-utility-for-couchbase) DocumentDB. Dokumentasi memandu Anda dalam penerapan solusi dan melakukan migrasi langsung ke bucket ke klaster Amazon DocumentDB.

**Topics**
+ [

##### Couchbase Server 6.x atau sebelumnya
](#couchbase-6x-or-earlier-online)
+ [

##### Couchbase Server 7.0 atau yang lebih baru
](#couchbase-70-or-later-online)

##### Couchbase Server 6.x atau sebelumnya
<a name="couchbase-6x-or-earlier-online"></a>

##### Bucket Couchbase ke koleksi Amazon DocumentDB
<a name="couchbase-bucket-to-amazon-documentdb-collection-online"></a>

[Utilitas migrasi untuk Couchbase](https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/migration-utility-for-couchbase) sudah dikonfigurasi sebelumnya untuk melakukan migrasi online bucket Couchbase ke koleksi Amazon DocumentDB. Melihat konfigurasi [konektor sink](https://github.com/awslabs/amazon-documentdb-tools/blob/master/migration/migration-utility-for-couchbase/migration-utility-connectors.yaml), `document.id.strategy` parameter dikonfigurasi untuk menggunakan nilai kunci pesan sebagai nilai `_id` bidang (lihat [Properti Strategi Id Konektor Sink](https://www.mongodb.com/docs/kafka-connector/current/sink-connector/configuration-properties/id-strategy/#std-label-sink-configuration-id-strategy)):

```
ConnectorConfiguration:
  document.id.strategy: 'com.mongodb.kafka.connect.sink.processor.id.strategy.ProvidedInKeyStrategy'
```

##### Couchbase Server 7.0 atau yang lebih baru
<a name="couchbase-70-or-later-online"></a>

##### Bucket Couchbase dengan cakupan default dan koleksi default
<a name="couchbase-bucket-with-default-scope-and-default-collection-online"></a>

[Utilitas migrasi untuk Couchbase](https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/migration-utility-for-couchbase) sudah dikonfigurasi sebelumnya untuk melakukan migrasi online bucket Couchbase ke koleksi Amazon DocumentDB. Melihat konfigurasi [konektor sink](https://github.com/awslabs/amazon-documentdb-tools/blob/master/migration/migration-utility-for-couchbase/migration-utility-connectors.yaml), `document.id.strategy` parameter dikonfigurasi untuk menggunakan nilai kunci pesan sebagai nilai `_id` bidang (lihat [Properti Strategi Id Konektor Sink](https://www.mongodb.com/docs/kafka-connector/current/sink-connector/configuration-properties/id-strategy/#std-label-sink-configuration-id-strategy)):

```
ConnectorConfiguration:
  document.id.strategy: 'com.mongodb.kafka.connect.sink.processor.id.strategy.ProvidedInKeyStrategy'
```

##### Koleksi Couchbase ke koleksi Amazon DocumentDB
<a name="couchbase-collections-to-amazon-documentdb-collections-online"></a>

Konfigurasikan [konektor sumber](https://github.com/awslabs/amazon-documentdb-tools/blob/master/migration/migration-utility-for-couchbase/migration-utility-connectors.yaml) untuk mengalirkan setiap koleksi Couchbase di setiap lingkup ke topik terpisah (lihat [Opsi Konfigurasi Sumber](https://docs.couchbase.com/kafka-connector/current/source-configuration-options.html#couchbase.collections)). Contoh:

```
ConnectorConfiguration:
  # add couchbase.collections configuration
  couchbase.collections: '<scope 1>.<collection 1>, <scope 1>.<collection 2>, ...'
```

Konfigurasikan [konektor sink](https://github.com/awslabs/amazon-documentdb-tools/blob/master/migration/migration-utility-for-couchbase/migration-utility-connectors.yaml) untuk mengalirkan dari setiap topik ke koleksi Amazon DocumentDB terpisah ([lihat Properti Konfigurasi Konektor Sink](https://github.com/mongodb-labs/mongo-kafka/blob/master/docs/sink.md#sink-connector-configuration-properties)). Contoh:

```
ConnectorConfiguration:
  # remove collection configuration  
  #collection: 'test'
  
  # modify topics configuration
  topics: '<bucket>.<scope 1>.<collection 1>, <bucket>.<scope 1>.<collection 2>, ...'

  # add topic.override.%s.%s configurations for each topic 
  topic.override.<bucket>.<scope 1>.<collection 1>.collection: '<collection>'
  topic.override.<bucket>.<scope 1>.<collection 2>.collection: '<collection>'
```

## Validasi
<a name="validation"></a>

Bagian ini menyediakan proses validasi terperinci untuk memverifikasi konsistensi dan integritas data setelah bermigrasi ke Amazon DocumentDB. Langkah-langkah validasi berlaku terlepas dari metode migrasi.

**Topics**
+ [

### Verifikasi bahwa semua koleksi ada di target
](#validation-checklist-step-1)
+ [

### Verifikasi jumlah dokumen antara souce dan cluster target
](#validation-checklist-step-2)
+ [

### Bandingkan dokumen antara sumber dan kelompok target
](#validation-checklist-step-3)

### Verifikasi bahwa semua koleksi ada di target
<a name="validation-checklist-step-1"></a>

#### Sumber Couchbase
<a name="source-verify-collections"></a>

opsi 1: meja kerja kueri

```
SELECT RAW `path`
  FROM system:keyspaces
  WHERE `bucket` = '<bucket>'
```

opsi 2: alat [cbq](https://docs.couchbase.com/server/current/cli/cbq-tool.html)

```
cbq \
  -e <source cluster endpoint> \
  -u <username> \
  -p <password> \
  -q "SELECT RAW `path`
       FROM system:keyspaces
       WHERE `bucket` = '<bucket>'"
```

#### Target Amazon DocumentDB
<a name="target-verify-collections"></a>

mongosh (lihat [Connect ke cluster Amazon DocumentDB Anda](connect-ec2-manual.html#manual-connect-ec2.connect-use)):

```
db.getSiblingDB('<database>')
db.getCollectionNames()
```

### Verifikasi jumlah dokumen antara souce dan cluster target
<a name="validation-checklist-step-2"></a>

#### Sumber Couchbase
<a name="source-verify-document-count"></a>

##### Couchbase Server 6.x atau sebelumnya
<a name="source-verify-document-count-couchbase-6x-or-earlier"></a>

opsi 1: meja kerja kueri

```
SELECT COUNT(*)
FROM `<bucket>`
```

opsi 2: [cbq](https://docs.couchbase.com/server/current/cli/cbq-tool.html)

```
cbq \
  -e <source cluster endpoint> \
  -u <username> \
  -p <password> \
  -q "SELECT COUNT(*)
       FROM `<bucket:>`"
```

##### Couchbase Server 7.0 atau yang lebih baru
<a name="source-verify-document-count-couchbase-70-or-later"></a>

opsi 1: meja kerja kueri

```
SELECT COUNT(*)
FROM `<bucket>`.`<scope>`.`<collection>`
```

opsi 2: [cbq](https://docs.couchbase.com/server/current/cli/cbq-tool.html)

```
cbq \
  -e <source cluster endpoint> \
  -u <username> \
  -p <password> \
  -q "SELECT COUNT(*)
       FROM `<bucket:>`.`<scope>`.`<collection>`"
```

#### Target Amazon DocumentDB
<a name="target-verify-document-count"></a>

mongosh (lihat [Connect ke cluster Amazon DocumentDB Anda](connect-ec2-manual.html#manual-connect-ec2.connect-use)):

```
db = db.getSiblingDB('<database>')
db.getCollection('<collection>').countDocuments()
```

### Bandingkan dokumen antara sumber dan kelompok target
<a name="validation-checklist-step-3"></a>

#### Sumber Couchbase
<a name="source-compare-documents"></a>

##### Couchbase Server 6.x atau sebelumnya
<a name="source-compare-documents-couchbase-6x-or-earlier"></a>

opsi 1: meja kerja kueri

```
SELECT META().id as _id, *
FROM `<bucket>`
LIMIT 5
```

opsi 2: [cbq](https://docs.couchbase.com/server/current/cli/cbq-tool.html)

```
cbq \
  -e <source cluster endpoint> 
  -u <username> \
  -p <password> \
  -q "SELECT META().id as _id, *
       FROM `<bucket>` \
       LIMIT 5"
```

##### Couchbase Server 7.0 atau yang lebih baru
<a name="source-compare-documents-couchbase-70-or-later"></a>

opsi 1: meja kerja kueri

```
SELECT COUNT(*)
FROM `<bucket>`.`<scope>`.`<collection>`
```

opsi 2: [cbq](https://docs.couchbase.com/server/current/cli/cbq-tool.html)

```
cbq \
  -e <source cluster endpoint> \
  -u <username> \
  -p <password> \
  -q "SELECT COUNT(*)
       FROM `<bucket:>`.`<scope>`.`<collection>`"
```

#### Target Amazon DocumentDB
<a name="target-compare-documents"></a>

mongosh (lihat [Connect ke cluster Amazon DocumentDB Anda](connect-ec2-manual.html#manual-connect-ec2.connect-use)):

```
db = db.getSiblingDB('<database>')
db.getCollection('<collection>').find({
  _id: {
    $in: [
      <_id 1>, <_id 2>, <_id 3>, <_id 4>, <_id 5>
    ]
  }
})
```