

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

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

Runbook ini menyediakan panduan komprehensif untuk memigrasikan database MongoDB ke Amazon DocumentDB menggunakan (DMS). AWS Database Migration Service Ini dirancang untuk mendukung administrator database, insinyur cloud, dan pengembang sepanjang perjalanan migrasi ujung ke ujung — 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 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 dan tipe data MongoDB yang didukung di Amazon DocumentDB, dan mengidentifikasi potensi ketidakcocokan.
+ **[Penemuan beban kerja](#mig-runbook-workload)**— Menganalisis beban kerja MongoDB yang ada, termasuk read/write pola, volume data, dan garis dasar 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 memigrasikan pengguna database, peran, dan kontrol akses ke Amazon DocumentDB.
+ **[Migrasi data](#mig-runbook-data)**— Meliputi berbagai metode untuk penggunaan migrasi data AWS DMS, termasuk beban penuh dan penangkapan data perubahan (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 mempertahankan fungsionalitas aplikasi dan meminimalkan risiko.

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

**Topics**
+ [Kompatibilitas fitur inti](#w2aac15b9c13c13)
+ [Alat penilaian kompatibilitas Amazon DocumentDB](#w2aac15b9c13c15)

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

Karena Amazon DocumentDB kompatibel dengan API MongoDB 3.6, 4.0, 5.0, dan 8.0, aplikasi yang menggunakan MongoDB-specific fitur yang lebih baru mungkin memerlukan refactoring. Area kritis untuk dievaluasi meliputi 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 representatif terhadap kedua sistem untuk mengidentifikasi pola kueri yang mungkin memerlukan pengoptimalan.

Memantau rencana pelaksanaan 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 lancar.

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



#### Dukungan fitur komprehensif
<a name="w2aac15b9c13c13b5"></a>
+ **Operasi CRUD ** - Nikmati dukungan penuh untuk semua operasi pembuatan, baca, pembaruan, dan hapus dasar, termasuk operator massal dan kueri - memberikan kompatibilitas aplikasi yang mulus.
+ **Kemampuan pengindeksan yang kaya ** — Manfaatkan dukungan komprehensif untuk indeks bidang tunggal, majemuk, TTL, parsi, sparse, dan 2dsphere, untuk mengoptimalkan kinerja kueri dan indeks teks (versi 5) untuk pencarian berbasis teks.
+ **Enterprise-grade replikasi ** — Manfaatkan mekanisme failover otomatis yang kuat dengan replika baca untuk ketersediaan tinggi yang unggul tanpa biaya operasional.
+ **Solusi pencadangan tingkat ** lanjut — Tenang dengan sistem pencadangan otomatis yang menampilkan Point-in-Time Pemulihan (PITR) dan snapshot manual sesuai permintaan untuk perlindungan data.

#### Ditingkatkan AWS-fitur terintegrasi
<a name="w2aac15b9c13c13b7"></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.
+ **Real-time pelacakan data ** — Aktifkan aliran perubahan dengan perintah sederhana dan tingkatkan periode retensi aliran perubahan melalui pengaturan grup parameter sederhana untuk pemantauan perubahan data real-time.
+ **Location-based layanan ** - Menerapkan aplikasi geospasial dengan dukungan untuk `$geoNear` operator dan indeks 2dsphere.
+ **Kemampuan pencarian teks ** — Memanfaatkan fungsi pencarian teks bawaan untuk kebutuhan penemuan konten.

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

Untuk ikhtisar komprehensif tentang kemampuan Amazon DocumentDB, lihat [API, operasi, dan tipe data MongoDB 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 [https://github.com/awslabs/amazon-documentdb-tools/blob/master/index-tool/README.md](https://github.com/awslabs/amazon-documentdb-tools/blob/master/index-tool/README.md) indeks gratis GitHub untuk memeriksa kompatibilitas. Jalankan alat indeks untuk menilai ketidakcocokan dan merencanakan solusi yang sesuai.

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

Alat Kompatibilitas [ Amazon DocumentDB ](https://github.com/awslabs/amazon-documentdb-tools/blob/master/compat-tool/README.md) pada GitHub menganalisis MongoDB beban kerja Anda dan melaporkan operator, perintah, dan fitur yang tidak didukung atau memerlukan perubahan di Amazon DocumentDB. Ini mendukung versi target dari 3.6 hingga 8.0.1 (default: 8.0.1).

**Direkomendasikan: Mode URI (MongoDB5.0\+) **

Mode URI terhubung langsung ke instance MongoDB Anda, mengambil sampel operasi secara real time, dan tidak memerlukan profil atau akses log.

**Metode alternatif **
+ **Log-based analisis ** — Mengurai log MongoDB profiler. Menangkap perilaku runtime yang sebenarnya tetapi memerlukan pembuatan profil untuk diaktifkan dan hanya mencakup periode logging.
+ **Analisis kode sumber ** — Memindai kode sumber aplikasi untuk penggunaan MongoDB API. Memberikan cakupan yang komprehensif tetapi dapat menandai jalur kode yang tidak digunakan dan tidak dapat mendeteksi kueri yang dibangun secara dinamis.

**Prasyarat**
+ Python3,7\+
+ Kloning alat: `git clone https://github.com/awslabs/amazon-documentdb-tools.git`
+ Instal dependensi: `pip install -r compat-tool/requirements.txt`

Untuk detail penggunaan lengkap dan semua opsi yang tersedia, lihat [ README aktif](https://github.com/awslabs/amazon-documentdb-tools/blob/master/compat-tool/README.md). GitHub

## 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, struktur data, kinerja kueri, dan dependensi operasional untuk memastikan transisi yang mulus dengan gangguan minimal. Bagian ini menguraikan langkah-langkah utama yang terlibat dalam penemuan beban kerja untuk memfasilitasi migrasi yang efektif dari MongoDB ke Amazon DocumentDB.

**Topics**
+ [Menilai penerapan MongoDB yang ada](#w2aac15b9c15b7)
+ [Mengidentifikasi perbedaan model data](#w2aac15b9c15b9)
+ [Analisis kueri dan kinerja](#w2aac15b9c15c11)
+ [Tinjauan keamanan dan kontrol akses](#w2aac15b9c15c13)
+ [Pertimbangan operasional dan pemantauan](#w2aac15b9c15c15)

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

Sebelum migrasi, sangat penting untuk mengevaluasi lingkungan MongoDB saat ini, termasuk:
+ **Arsitektur cluster ** — Mengidentifikasi jumlah node, kumpulan 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 berkeping-keping akan memerlukan perubahan arsitektur, karena Amazon DocumentDB menggunakan pendekatan penskalaan yang berbeda dengan arsitektur berbasis penyimpanannya. 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 cluster Anda. Lengkapi ini dengan alat [ review Oplog ](https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/mongodb-oplog-review) untuk memahami pola penulisan 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.
+ **Dependensi operasional ** — Dokumentasikan semua aplikasi, layanan, dan integrasi yang mengandalkan MongoDB.

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

Meskipun Amazon DocumentDB ada MongoDB-compatible, 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 tertanam, dan referensi selaras dengan praktik [ terbaik ](https://d1.awsstatic.com/product-marketing/Data%20modeling%20with%20Amazon%20DocumentDB.pdf) Amazon DocumentDB.

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

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

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

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

**Enkripsi**

Pastikan enkripsi saat diam dan dalam transit selaras dengan persyaratan kepatuhan.

**Konfigurasi jaringan **

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

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

Untuk menjaga keandalan sistem, penemuan beban kerja juga harus mencakup:
+ **Strategi pencadangan dan pemulihan ** — Evaluasi metode pencadangan yang ada dan kemampuan cadangan Amazon DocumentDB.
+ **AWS Backup integrasi ** — Memanfaatkan AWS Backup manajemen pencadangan terpusat di seluruh AWS layanan termasuk Amazon DocumentDB.
+ **CloudWatch metrik ** — Petakan metrik pemantauan MongoDB ke met CloudWatch rik Amazon DocumentDB untuk CPU, memori, koneksi, dan penyimpanan.
+ **Wawasan Kin ** erja — Terapkan 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 Amazon). DocumentDB-specific 
  + Aktifkan melalui grup parameter dengan ambang batas yang sesuai.
  + Analisis data profiler untuk mengidentifikasi peluang pengoptimalan
+ **CloudWatch Acara ** — Siapkan pemantauan berbasis peristiwa untuk acara cluster Amazon DocumentDB.
  + Konfigurasikan notifikasi untuk acara cadangan, jendela pemeliharaan, dan failover.
  + Integrasikan dengan Amazon SNS untuk peringatan dan tanggapan AWS Lambda otomatis.
+ **Audit logging ** — Rencanakan konfigurasi pencatatan audit untuk melacak aktivitas pengguna dan peristiwa yang relevan dengan keamanan.
+ **Pemantauan yang disem ** purnakan — Aktifkan pemantauan yang disempur OS-level nakan untuk metrik granular pada interval 1 detik.

## Buat cluster target baru
<a name="mig-runbook-configure-target"></a>

Buat cluster Amazon DocumentDB mengikuti langkah-langkah di[Membuat cluster Amazon DocumentDB](db-cluster-create.md). Saat mengonfigurasi cluster untuk migrasi, terapkan rekomendasi ini:
+ **Kelas instans: ** Pilih R8G untuk kinerja terbaik. Jika R8G tidak tersedia di Wilayah target Anda, gunakan R6G. Pilih instance sebesar mungkin untuk throughput beban penuh terbaik. Menurunkan skala setelah migrasi selesai.
+ **Versi mesin: ** terbaru (8.0.1)
+ **Jumlah instans: ** Pilih 1 instans untuk meminimalkan biaya selama migrasi. Skalakan ke 3 instans untuk ketersediaan tinggi setelah migrasi beban penuh selesai.
+ **Pengaturan jaringan: ** Pastikan grup keamanan Amazon DocumentDB Anda mengizinkan koneksi masuk dari grup keamanan instans replikasi DMS (untuk migrasi online) atau dari host migrasi EC2 (untuk migrasi offline menggunakan mongorestore).

## 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 proses langkah demi langkah terperinci untuk memigrasi indeks dari MongoDB ke Amazon DocumentDB sambil memastikan kompatibilitas dan efisiensi.

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

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

```
git clone https://github.com/awslabs/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 index_export \
  --uri 'mongodb://<username>:<password>@<source_endpoint>:27017'
```

**Verifikasi indeks **

```
python3 migrationtools/documentdb_index_tool.py \
  --show-issues \
  --dir index_export
```

**Impor indeks **

```
python3 migrationtools/documentdb_index_tool.py \
  --restore-indexes \
  --skip-incompatible \
  --dir index_export \
  --uri 'mongodb://<username>:<password>@<target_endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&retryWrites=false'
```

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

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

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

Meng [`Export Users tool`](https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/export-users) ekspor pengguna dan peran dari MongoDB atau Amazon DocumentDB ke JavaScript 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://<username>:<password>@<source_endpoint>:27017"
```

**Langkah 2: Edit File Pengguna **

Kata sandi tidak diekspor untuk alasan keamanan. Buka `mongodb-users.js` file dan tambahkan kata sandi untuk setiap pengguna dengan mengganti `pwd` nilai di setiap `createUser` pernyataan:

```
db.getSiblingDB("admin").createUser({
  user: "appuser",
  pwd: "REPLACE_THIS_PASS",
  roles: [
    { role: "readWrite", db: "mydb" }
  ]
})
```

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

```
# Import roles first
mongosh \
  --tls \
  --host <target_endpoint>:27017 \
  --tlsCAFile global-bundle.pem \
  --username {{<username>}} \
  --password {{<password>}} \
  mongodb-roles.js
```

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

```
# Import users after roles are created
mongosh \
  --tls \
  --host <target_endpoint>:27017 \
  --tlsCAFile global-bundle.pem \
  --username {{<username>}} \
  --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 mongosh.
+ Peran khusus dan hak istimewa mereka dipertahankan selama migrasi.
+ Pendekatan ini memungkinkan untuk meninjau 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](#w2aac15b9c23b5)
+ [Migrasi offline](#w2aac15b9c23b7)

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

Bagian ini memberikan langkah-langkah terperinci untuk melakukan migrasi online dari MongoDB ke Amazon DocumentDB menggunakan AWS DMS untuk mengaktifkan downtime minimal dan replikasi berkelanjutan. Untuk memulai, Anda menyiapkan cluster 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 mencakup beban data penuh, replikasi yang sedang berlangsung, atau keduanya.

#### Buat cluster target baru
<a name="w2aac15b9c23b5b5"></a>

Lihat [Buat cluster target baru](#mig-runbook-configure-target).

#### Konfigurasikan sumber
<a name="w2aac15b9c23b5b7"></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 dijalankan dalam mode set replika dengan ukuran oplog yang memadai (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. Membutuhkan [Mengaktifkan aliran perubahan](change_streams.md#change_streams-enabling) dengan menyet `change_stream_log_retention_duration` el 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 Full Load.

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

Buat pengguna MongoDB dengan izin yang tepat:

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

Konfigurasikan jaringan dan otentikasi.

Saat mengonfigurasi konektivitas jaringan untuk migrasi MongoDB ke DMS:

**EC2-hosted Sumber MongoDB **
+ 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 instans replikasi DMS.

**On-premises Sumber MongoDB **
+ Konfigurasikan firewall Anda untuk mengizinkan koneksi masuk dari alamat IP publik instans replikasi DMS.
+ Jika menggunakan Direct Connect atau VPN, pastikan routing 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 instance replikasi DMS ke daftar izin MongoDB Atlas IP.
+ Konfigurasikan peering VPC antara AWS VPC dan 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 instance replikasi DMS
<a name="w2aac15b9c23b5b9"></a>

Gunakan [ DMS Buddy ](https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/dms_buddy) on GitHub untuk membuat infrastruktur migrasi yang optimal dengan pengaturan DMS dan ukuran instans yang optimal. Jika Anda lebih suka mengkonfigurasi secara manual, ikuti langkah-langkah ini:

1. Di AWS DMS konsol, di panel navigasi, pilih ** Migrasi atau replikasi**, lalu pilih Inst ** ** ans yang disediakan.

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

1. Pilih ** Buat instance replikasi ** dan tunggu status tersedia.

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

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

**Untuk sumber MongoDB **

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

1. Pilih **Buat titik akhir**.

1. Pada ** halaman ** Buat titik akhir, pilih titik akhir ** sumber**.

1. Di ** bagian Konfigur ** asi 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 nama Anda{{MongoDB server DNS name/IP address}}.
   + Untuk ** Port**, masukkan ** 27017 ** (port MongoDB default).
   + Untuk mode ** otentikasi**, pilih mode yang sesuai untuk aplikasi Anda (password/SSL) (default adalah pengelola rahasia).
   + Jika mode ** Otentikasi ** adalah ** Kata ** Sandi, berikan:
     + **Nama Pengguna ** dan ** Kata Sandi**: Masukkan kredenSIAL MongoDB.
     + **Nama database**: Nama database 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 Titik Akhir**. **

1. Pilih **Buat titik akhir**.

1. Pada ** halaman ** Buat titik akhir, pilih titik akhir ** sumber**.

1. Di ** bagian Konfigur ** asi 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 nama Anda{{source Amazon DocumentDB cluster endpoint}}.
   + Untuk ** Port**, masukkan ** 27017 ** (port Amazon DocumentDB default).
   + Untuk mode ** SSL**, pilih ** verify-full ** (disarankan untuk Amazon DocumentDB).
   + Untuk Sertifikat ** CA**, pilih sertifikat CA root Amazon RDS.
   + Untuk mode ** otentikasi**, pilih mode yang sesuai untuk aplikasi Anda (password/SSL) (default adalah pengelola rahasia).
   + Jika mode ** Otentikasi ** adalah ** Kata ** Sandi, berikan:
     + **Nama Pengguna ** dan ** Kata Sandi**: Masukkan kredentif Amazon DocumentDB.
     + **Nama database**: Nama database sumber Anda.
     + **Mekanisme otentikasi**: SCRAM-SHA-1 (default) atau mekanisme yang sesuai

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

##### Membuat titik akhir target (Amazon DocumentDB)
<a name="w2aac15b9c23b5c11b5"></a>

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

1. Pilih **Buat titik akhir**.

1. Pada ** halaman ** Buat titik akhir, pilih titik akhir ** target**.

1. Di ** bagian konfigurasi ** Endpoint:
   + Masukkan pengenal ** Endpoint yang unik dan bermakna ** (misalnya, “docdb-target”).
   + Pilih ** Amazon DocumentDB ** sebagai mesin ** ** Target.
   + Untuk ** Akses ke database titik akhir**, pilih metode yang ingin Anda gunakan untuk mengotentikasi akses ke database:
     + Jika Anda memilih Manajer **AWS Rahasia**, pilih rahasia tempat Anda menyimpan kredentif Amazon DocumentDB Anda di ** bidang ** Rahasia.
     + Jika Anda memilih Men ** yediakan informasi akses secara manual**: 
       + Untuk nama ** Server**, masukkan nama Anda{{target Amazon DocumentDB cluster endpoint}}.
       + Untuk ** Port**, masukkan ** 27017 ** (port Amazon DocumentDB default).
       + Untuk mode ** SSL**, pilih ** verify-full ** (disarankan 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 (password/SSL) (default adalah pengelola rahasia).
       + Jika mode ** Otentikasi ** adalah ** Kata ** Sandi, berikan:
         + **Nama Pengguna ** dan ** Kata Sandi**: Masukkan kredentif Amazon DocumentDB.
         + **Nama database**: Nama database 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="w2aac15b9c23b5c13"></a>

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

1. Pilih **Buat tugas**.

1. Pada ** halaman ** Buat tugas, di ** bagian Konfigurasi ** tugas:
   + Masukkan pengenal ** 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.
   + Pilih instance replikasi yang Anda buat sebelumnya di menu ** drop-down ** Instance yang disediakan.
   + Untuk Jenis ** tugas**, pilih ** Migrasi dan replikasi**.
   + Untuk ** Berapa lama Anda bermaksud untuk terus mereplikasi dari sumber ke target? **, pilih ** Untuk waktu yang terbatas**.

1. Di ** bagian ** Pengaturan:
   + Untuk mode persiapan tabel ** target**, pilih Jangan ** lakukan apa-apa**. Jika tidak, koleksi dan indeks yang sudah dibuat akan dihapus.
   + Untuk log ** tugas**, centang kotak ** Aktif CloudWatch ** kan log.
   + Tinggalkan nilai default untuk semua pengaturan lainnya.

1. Kembali di bagian atas ** bagian ** Pengaturan, untuk mode ** Edit ** ing, pilih editor ** JSON ** dan atur atribut berikut:

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

   Tetapkan `MaxFullLoadSubTasks` berdasarkan jumlah koleksi dan kapasitas instans Anda. Gunakan nilai yang lebih rendah (2—4) untuk koleksi yang lebih sedikit atau lebih kecil, dan nilai yang lebih tinggi (8—16) untuk banyak koleksi besar. Untuk ukuran otomatis, lihat [ DMS Buddy ](https://github.com/awslabs/amazon-documentdb-tools/tree/master/migration/dms_buddy) on. GitHub

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 ** Tind ** akan, tinggalkan pengaturan default Ser ** takan **

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**, atur berdasarkan beban kerja Anda. Untuk sejumlah kecil koleksi besar, atur partisi ≥ `MaxFullLoadSubTasks` untuk membuat semua pekerja sibuk. Untuk banyak koleksi yang memuat secara paralel, atur partisi ≤ `MaxFullLoadSubTasks` karena jumlah koleksi itu sendiri memberikan paralelisme yang cukup.

1. Di ** bagian penilaian ** Premigration, pastikan itu dimatikan. Penilaian premigrasi tidak didukung untuk Amazon DocumentDB sebagai target dan harus dinonaktifkan.

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

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

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

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

**Targetkan persyaratan Amazon DocumentDB **
+ Pastikan Anda telah menyediakan cluster Amazon DocumentDB.
+ 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 perantara)
+ Bandwidth yang cukup harus tersedia untuk transfer data.
+ Jendela downtime harus disetujui (jika melakukan migrasi langsung, pertimbangkan pendekatan lain)

#### Mempersiapkan cluster Amazon DocumentDB
<a name="w2aac15b9c23b7b7"></a>

Lihat [Buat cluster target baru](#mig-runbook-configure-target).

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

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

  ```
  mongodump \
    --uri="mongodb://{{<user>}}:{{<password>}}@{{<source_endpoint>}}:27017/{{<database>}}" \
    --out=/path/to/dump
  ```
+ **Opsi 2: Kontrol dan kinerja yang lebih baik **

  Mengompres output dengan gzip, membuang koleksi secara paralel, mengaktifkan TLS, dan membaca dari replika sekunder jika tersedia:

  ```
  mongodump \
    --uri="mongodb://{{<user>}}:{{<password>}}@{{<source_endpoint>}}:27017" \
    --out=/path/to/dump \
    --gzip \
    --numParallelCollections=4 \
    --tls \
    --authenticationDatabase=admin \
    --readPreference=secondaryPreferred
  ```
+ **Opsi 3: Database besar **

  Membuang database dan koleksi tertentu, menyaring dokumen berdasarkan kueri, dan output ke satu arsip terkompresi:

  ```
  mongodump \
    --host={{<source_endpoint>}} \
    --port=27017 \
    --username={{<user>}} \
    --password={{<password>}} \
    --db={{<specific_db>}} \
    --collection={{<specific_collection>}} \
    --query='{ "date": { "$gt": "2020-01-01" } }' \
    --archive=/path/to/archive.gz \
    --gzip \
    --tls
  ```

#### Mentransfer file dump ke lingkungan restorasi
<a name="w2aac15b9c23b7c11"></a>

Pilih metode yang sesuai berdasarkan ukuran dump Anda:
+ **Kecil ** — Salin langsung ke mesin migrasi Anda (instance EC2 yang Anda buat sebelumnya):

  ```
  scp -r /path/to/dump user@migration-machine:/path/to/restore
  ```
+ **Medium ** — 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.

#### Kembalikan data ke Amazon DocumentDB (mongorestore)
<a name="w2aac15b9c23b7c13"></a>

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

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

  ```
  mongorestore \
    --uri="mongodb://{{<user>}}:{{<password>}}@{{<target_endpoint>}}:27017" \
    --tls \
    --tlsCAFile=global-bundle.pem \
    /path/to/dump
  ```
+ **Opsi 2: Kontrol dan kinerja yang lebih baik **

  Mengembalikan dump terkompresi gzip dengan pengumpulan paralel dan penyisipan dokumen. Melewati pemulihan indeks karena indeks sudah dibuat sebelumnya:

  ```
  mongorestore \
    --uri="mongodb://{{<user>}}:{{<password>}}@{{<target_endpoint>}}:27017" \
    --tls \
    --tlsCAFile=global-bundle.pem \
    --gzip \
    --numParallelCollections=4 \
    --numInsertionWorkersPerCollection=4 \
    --noIndexRestore \
    /path/to/dump
  ```
+ **Opsi 3: Database besar atau kontrol khusus **

  Memulihkan dari arsip terkompresi dengan pemfilteran namespace untuk menyertakan atau mengecualikan database dan koleksi tertentu. Melewati pemulihan indeks karena indeks sudah dibuat sebelumnya:

  ```
  mongorestore \
    --host={{<target_endpoint>}} \
    --port=27017 \
    --username={{<user>}} \
    --password={{<password>}} \
    --tls \
    --tlsCAFile=global-bundle.pem \
    --archive=/path/to/archive.gz \
    --gzip \
    --nsInclude="db1.*" \
    --nsExclude="db1.sensitive_data" \
    --noIndexRestore
  ```

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

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

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

### AWS DMS Pemantauan migrasi (jika berlaku)
<a name="w2aac15b9c25b7"></a>

Pantau CloudWatch metrik utama berikut:

**Metrik fase beban penuh **
+ **FullLoadThroughputBandwidthTarget**— Bandwidth jaringan (KB/second) selama beban penuh
+ **FullLoadThroughputRowsTarget**— Jumlah yang di rows/documents muat per detik
+ **FullLoadThroughputTablesTarget**— Jumlah yang tables/collections diselesaikan 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**— Penundaan waktu (detik) antara perubahan sumber dan aplikasi target
+ **CDCLatencySource**— Penundaan waktu (detik) antara perubahan sumber dan DMS membacanya
+ **CDCThroughputRowsTarget**— Baris per detik diterapkan selama replikasi yang sedang berlangsung
+ **CDCThroughputBandwidthTarget**— Bandwidth jaringan (KB/second) selama CDC
+ **CDCIncomingChanges**— 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 instance replikasi
+ **FreeableMemory**- Memori yang tersedia pada instance replikasi
+ **FreeStorageSpace**— Penyimpanan yang tersedia pada instance replikasi
+ **NetworkTransmitThroughput**— Throughput jaringan untuk instance replikasi
+ **NetworkReceiveThroughput**— Throughput jaringan untuk instance replikasi

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

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

#### Log DMS (CloudWatch log)
<a name="w2aac15b9c25b7c23"></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 ID tugas atau nama titik akhir
   + Streaming log terbaru selama masa migrasi

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

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



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

Alur status yang diharapkan:

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

#### Memantau menggunakan `docdb-dashboarder`
<a name="w2aac15b9c25b7c27"></a>

`docdb-dashboarder`Alat ini menyediakan pemantauan komprehensif untuk cluster Amazon DocumentDB dengan secara otomatis membuat CloudWatch dasbor dengan metrik kinerja penting. Dasbor ini menampilkan metrik tingkat cluster penting (lag replika, penghitung operasi), metrik tingkat instance (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 jeda replikasi CDC dan tingkat operasi. Dasbor dapat memantau beberapa cluster secara bersamaan dan menyertakan dukungan untuk NVMe-backed instance. Dengan memvisualisasikan metrik ini, tim dapat secara proaktif mengidentifikasi hambatan kinerja, mengoptimalkan alokasi sumber daya, dan memastikan kelancaran pengoperasian penerapan Amazon DocumentDB mereka. Alat ini menghilangkan kebutuhan untuk 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](#w2aac15b9c27b9)
+ [Validasi skema dan indeks](#w2aac15b9c27c11)
+ [Pengambilan sampel data dan validasi tingkat lapangan](#w2aac15b9c27c13)
+ [Validasi menggunakan DataDiffer alat](#w2aac15b9c27c15)

Bagian ini menyediakan proses validasi terperinci untuk memastikan konsistensi data, integritas, dan kompatibilitas aplikasi setelah migrasi.

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

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

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

**Sumber MongoDB **

```
mongosh \
  --host {{<source_endpoint>}} \
  --port 27017 \
  --username {{<user>}} \
  --password {{<password>}} \
  --eval "db.{{<collection>}}.countDocuments()"
```

**Target Amazon DocumentDB **

```
mongosh \
  --host {{<target_endpoint>}} \
  --port 27017 \
  --username {{<user>}} \
  --password {{<password>}} \
  --tls \
  --tlsCAFile global-bundle.pem \
  --eval "db.{{<collection>}}.countDocuments()"
```

### Validasi skema dan indeks
<a name="w2aac15b9c27c11"></a>

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

**Periksa koleksi (sumber vs target) **

```
mongosh --host {{<source_endpoint>}} \
  --port 27017 \
  --username {{<username>}} \
  --password {{<password>}} \
  --eval "db = db.getSiblingDB('{{<database>}}'); db.getCollectionNames();"

mongosh --host {{<target_endpoint>}} \
  --port 27017 \
  --username {{<username>}} \
  --password {{<password>}} \
  --tls --tlsCAFile global-bundle.pem \
  --eval "db = db.getSiblingDB('{{<database>}}'); db.getCollectionNames();"
```

**Periksa indeks (sumber vs target) **

```
mongosh --host {{<source_endpoint>}} \
  --port 27017 \
  --username {{<username>}} \
  --password {{<password>}} \
  --eval "db.{{<collection>}}.getIndexes()"

mongosh --host {{<target_endpoint>}} \
  --port 27017 \
  --username {{<username>}} \
  --password {{<password>}} \
  --tls --tlsCAFile global-bundle.pem \
  --eval "db.{{<collection>}}.getIndexes()"
```

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

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

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

```
mongosh --host {{<source_endpoint>}} \
  --port 27017 \
  --username {{<username>}} \
  --password {{<password>}} \
  --eval "db.getCollectionInfos({name: '{{<collection>}}'})[0].options.validator"

mongosh --host {{<target_endpoint>}} \
  --port 27017 \
  --username {{<username>}} \
  --password {{<password>}} \
  --tls --tlsCAFile global-bundle.pem \
  --eval "db.getCollectionInfos({name: '{{<collection>}}'})[0].options.validator"
```

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

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

**Pengambilan sampel manual **

Ambil lima dokumen acak (sumber):

```
mongosh --host {{<source_endpoint>}} \
  --port 27017 \
  --username {{<username>}} \
  --password {{<password>}} \
  --eval "db.{{<collection>}}.aggregate([{ \$sample: { size: 5 } }])"
```

Ambil ID dokumen yang sama (target):

```
mongosh --host {{<target_endpoint>}} \
  --port 27017 \
  --username {{<username>}} \
  --password {{<password>}} \
  --tls --tlsCAFile global-bundle.pem \
  --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>}}",
                                    tls=True,
                                    tlsCAFile='global-bundle.pem')
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 DataDiffer alat
<a name="w2aac15b9c27c15"></a>

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

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

Prasyarat berikut harus dipenuhi sebelum menginstal DataDiffer alat:
+ Python3,7\+
+ PyMongo perpustakaan
+ Konektivitas jaringan ke sumber MongoDB dan cluster target Amazon DocumentDB

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

**Kloning repositori dan arahkan ke DataDiffer direktori **

```
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="w2aac15b9c27c15b9"></a>

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

```
{
  "source": {
    "uri": "mongodb://<username>:<password>@<source_endpoint>:27017/?replicaSet=rs0",
    "db": "your_database",
    "collection": "your_collection"
  },
  "target": {
    "uri": "mongodb://<username>:<password>@<target_endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&retryWrites=false",
    "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="w2aac15b9c27c15c11"></a>

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

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

Berikut ini adalah praktik terbaik saat menggunakan DataDiffer alat ini:
+ **Jalankan secara ** bertahap — Pertama validasi jumlah dokumen, lalu contoh dokumen kunci, dan akhirnya jalankan perbandingan penuh, 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 penulisan minimal untuk memastikan konsistensi.
+ **Memantau penggunaan sumber daya ** — Proses perbandingan dapat memakan banyak sumber daya. Sesuaikan ukuran batch dan jumlah utas yang sesuai.
+ **Validasi indeks ** — Setelah validasi data, pastikan semua indeks yang diperlukan telah dibuat pada cluster Amazon DocumentDB target.
+ **Hasil validasi dokumen ** — Simpan catatan hasil validasi untuk setiap koleksi sebagai bagian dari dokumentasi migrasi Anda.