MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Migrasi MongoDB ke DynamoDB, Bagian 1

AWS Database Migration Service (DMS) dirancang untuk memigrasikan database di AWS dengan andal, tanpa waktu henti. Awalnya, DMS hanya mendukung database relasional, termasuk AWS Redshift. Pada April 2017, DMS menambahkan dua database NoSQL:MongoDB sebagai database sumber dan AWS DynamoDB sebagai database target. Dalam tutorial dua artikel ini, kita akan membahas migrasi database MongoDB ke DynamoDB di DMS. Salah satu persyaratan untuk menggunakan MongoDB sebagai sumber DMS adalah bahwa MongoDB harus dijalankan sebagai kumpulan replika, yang akan kita buat menggunakan gambar Docker di bagian pertama dari dua artikel ini.

Artikel ini memiliki bagian berikut:

  • Mengatur Lingkungan
  • Membuat Pengguna IAM untuk Layanan Migrasi Database
  • Membuat Kunci Enkripsi
  • Membuat Basis Data MongoDB
  • Membuat Tabel DynamoDB
  • Kesimpulan

Mengatur Lingkungan

Satu-satunya prasyarat adalah akun AWS, yang dapat dibuat di https://aws.amazon.com/resources/create-account/. Kami akan menjalankan database sumber dan target di AWS. Untuk sumber MongoDB, kami akan menggunakan Docker, di mana kami akan meluncurkan instans EC2 dengan AMI Container Linux oleh CoreOS (Stabil) yang dipilih dari AWS Marketplace, seperti yang ditunjukkan pada Gambar 1. CoreOS dipilih sebagai platform Linux karena memiliki Docker sudah diinstal sebelumnya.


Gambar 1: Memilih CoreOS AMI untuk meluncurkan Instans EC2

Grup Keamanan yang digunakan oleh instans CoreOS EC2 harus memiliki aturan Masuk/Keluar yang ditetapkan untuk menerima semua lalu lintas. Ini menyiratkan lalu lintas semua protokol di semua port antara semua sumber dan tujuan (0.0.0.0/0,::/0 ).

Membuat Pengguna IAM untuk Layanan Migrasi Database

Di bagian ini, kami akan membuat pengguna IAM untuk mengakses berbagai layanan AWS yang digunakan dalam membuat migrasi, termasuk DMS, EC2, DynamoDB, KMS, IAM, dan CloudWatch. Pertama, kita perlu membuat Kebijakan dengan izin yang diperlukan. Selanjutnya, kami akan membuat pengguna dan menetapkan kebijakan kepada pengguna. Untuk membuat kebijakan IAM, pilih Kebijakan di konsol IAM dan klik Buat kebijakan . Di Buat Kebijakan, pilih Buat Kebijakan Anda Sendiri . Dalam Kebijakan Tinjauan, tentukan Nama Kebijakan (DMS sebagai contoh) dan salin dan tempel dokumen kebijakan berikut di bidang Dokumen Kebijakan.

{ "Versi":"2012-10-17", "Pernyataan":[ { "Efek":"Izinkan", "Tindakan":"dms:*", "Sumberdaya":"*" }, { "Effect":"Allow", "Action":"dynamodb:*", "Resource":"*" }, { "Effect":"Allow", "Action":"kms:*", "Resource":"*" }, { "Effect":"Allow", "Action":"iam:*", "Resource":"*" }, { "Effect":"Allow", "Action":"ec2:* ", "Sumberdaya":"*" }, { "Efek":"Izinkan", "Tindakan":"cloudwatch:*", "Sumber daya":"*" }, { "Efek":"Izinkan", "Tindakan ":"aws-marketplace:*", "Resource":"*" }, { "Effect":"Allow", "Action":"logs:*", "Resource":"*" }, { "Effect ":"Allow", "Action":[ "redshift:Describe*", "redshift:ModifyClusterIamRoles" ], "Resource":"*" } ]}

Klik Validasi Kebijakan . Jika outputnya adalah “Kebijakan ini valid”, klik Buat Kebijakan , seperti yang ditunjukkan pada Gambar 2.


Gambar 2: Membuat Kebijakan IAM

Kebijakan IAM baru dibuat, seperti yang ditunjukkan pada Gambar 3.


Gambar 3: Kebijakan IAM “DMS”

Selanjutnya, buat pengguna IAM. Pilih Pengguna dan klik Tambahkan pengguna , seperti yang ditunjukkan pada Gambar 4.


Gambar 4: Tambahkan pengguna

Di Tambahkan pengguna , tentukan Nama pengguna , seperti yang ditunjukkan pada Gambar 5. Untuk Jenis akses , pilih Akses terprogram dan akses AWS Management Console .


Gambar 5: Menambahkan Pengguna

Untuk Kata sandi konsol , pilih Sandi khusus dan tentukan kata sandi (lihat Gambar 6). Klik Berikutnya.


Gambar 6: Pilih Jenis Akses AWS>Berikutnya

Di Setel izin, klik Lampirkan kebijakan yang ada secara langsung , seperti yang ditunjukkan pada Gambar 7.


Gambar 7: Menyetel Izin

Pilih kebijakan DMS yang dibuat sebelumnya, dan klik Berikutnya, seperti yang ditunjukkan pada Gambar 8.


Gambar 8: Memilih Kebijakan DMS

Dalam Tinjauan, klik Buat pengguna , seperti yang ditunjukkan pada Gambar 9.


Gambar 9: Tinjau>Buat pengguna

Pengguna IAM dibuat. Salin URL yang ditunjukkan pada Gambar 10 untuk masuk ke AWS Management Console seperti yang dibuat pengguna.


Gambar 10: URL Pengguna IAM

Seorang pengguna baru terdaftar di Pengguna (lihat Gambar 11).


Gambar 11 URL Pengguna IAM

Membuat Kunci Enkripsi

Selanjutnya, buat kunci enkripsi yang akan digunakan untuk migrasi DMS. Masuk sebagai pengguna IAM yang dibuat dan gunakan URL yang disalin pada Gambar 10. Pilih IAM layanan di konsol manajemen AWS dan pilih Kunci Enkripsi . Klik Buat kunci untuk memulai wizard untuk membuat kunci enkripsi. Gunakan wizard untuk membuat kunci enkripsi (dms ), seperti yang ditunjukkan pada Gambar 12.


Gambar 12: Kunci Enkripsi Baru

Membuat Basis Data MongoDB

Di bagian ini, kita akan membuat database MongoDB yang selanjutnya akan kita migrasikan ke DynamoDB. Kami akan menggunakan Docker untuk menjalankan instance MongoDB, di mana instance CoreOS diluncurkan. Untuk masuk ke instance CoreOS, dapatkan Alamat IP Publik dari instance CoreOS, seperti yang ditunjukkan pada Gambar 13.


Gambar 13: Alamat IP Publik Instance CoreOS

SSH masuk ke instance CoreOS menggunakan pasangan kunci dan IP Publik.

ssh -i "docker.pem" [email protected]

Prompt baris perintah instans CoreOS akan ditampilkan, seperti yang ditunjukkan pada Gambar 14.


Gambar 14: Instance CoreOS

Selanjutnya, jalankan perintah berikut untuk memulai wadah Docker untuk MongoDB menggunakan gambar MongoDB "mongo". Port container Docker 27017 diekspos pada host juga sebagai 27017 menggunakan -p opsi untuk lari buruh pelabuhan . Nama wadah diatur ke “mongo1” dan perintah mongod --replSet repl0 dijalankan dalam wadah yang dibuat untuk memulai set replika MongoDB yang disebut "repl0". Seperti disebutkan sebelumnya, untuk menggunakan MongoDB sebagai sumber DMS, diperlukan kumpulan replika MongoDB dan MongoDB yang berdiri sendiri tidak dapat digunakan sebagai sumber.

docker run -p 27017:27017 mongo mongod --replSet repl0

Gambar Docker mongo akan ditarik dan seperti yang ditunjukkan oleh pesan “MongoDB starting” pada Gambar 15 MongoDB memulai untuk memulai.


Gambar 15: Mengunduh buruh pelabuhan Gambar Docker

Instance MongoDB dimulai pada port 27017 (lihat Gambar 16). Kumpulan replika belum dibuat dan selanjutnya kita akan menginisialisasi kumpulan replika.


Gambar 16: Instance Mongo Dimulai

Wadah Docker terdaftar dengan docker ps perintah, seperti yang ditunjukkan pada Gambar 17.


Gambar 17: Mencantumkan Wadah Docker untuk Mongo

Gunakan perintah berikut untuk memulai shell perintah untuk antarmuka baris perintah (CLI) Mongo.

docker exec -it mongo1 mongo

MongoDB shell versi 3.4.4 terhubung ke URL mongodb://127.0.0.1:27017 , seperti yang ditunjukkan pada Gambar 18.


Gambar 18: Menghubungkan MongoDB Shell

Prompt perintah Mongo CLI akan ditampilkan, seperti yang ditunjukkan pada Gambar 19.


Gambar 19: Prompt Perintah Mongo Shell

Atur database MongoDB untuk digunakan sebagai test dengan gunakan tes perintah, seperti yang ditunjukkan pada Gambar 20.


Gambar 20: Mengatur Database sebagai pengujian

Selanjutnya, kita akan menginisialisasi kumpulan replika yang untuknya kita perlu mendefinisikan anggota atau instance kumpulan replika. Dapatkan IP Pribadi dari instance CoreOS EC2 yang menjalankan container Docker untuk MongoDB (lihat Gambar 21).


Gambar 21: IP Pribadi Instance CoreOS

Di Mongo CLI, tentukan konfigurasi berikut untuk konfigurasi kumpulan replika.

config ={ "_id" :"repl0", "members" :[ { "_id" :0, "host" :"172.30.2.20:27017" } ]}

Konfigurasi set replika disetel, seperti yang ditunjukkan pada Gambar 22.


Gambar 22: Menyetel Replika set Konfigurasi

Mulai konfigurasi set replika menggunakan konfigurasi.

rs.initiate(config)

Kumpulan replika diinisialisasi, seperti yang ditunjukkan pada Gambar 23.


Gambar 23: Kumpulan replika Diinisialisasi

Keluarkan konfigurasi set replika.

rs.conf()

repl0:PRIMARY command prompt menunjukkan bahwa set replika telah diinisialisasi dan set replika Anggota utama telah diatur untuk menjalankan perintah Mongo CLI. Primer adalah satu-satunya anggota dalam kumpulan replika untuk operasi tulis. Buat koleksi MongoDB bernama wlslog dengan db.createCollection() perintah.

db.createCollection("wlslog")

Koleksi MongoDB dibuat, seperti yang ditunjukkan pada Gambar 24. Koleksi MongoDB adalah kumpulan dokumen. Dokumen dalam format BSON (biner JSON).


Gambar 24: Membuat Koleksi

Jalankan pernyataan berikut yang mendefinisikan dokumen JSON di Mongo CLI.

doc1 ={"timestamp":"Apr 8, 2014 19:06:16 PDT", "category":"Notice","type":"WebLogicServer", "servername":"AdminServer","code ":"BEA-000365", "msg":"Status server diubah menjadi STANDBY"}doc2 ={"timestamp":"8 April 2014 19:06:17 PDT", "category":"Notice"," ketik":"WebLogicServer", "servername":"AdminServer","code":"BEA-000365", "msg":"Status server diubah menjadi MULAI"}doc3 ={"timestamp":"8 April 2014 7 :06:18 PDT", "category":"Notice","type":"WebLogicServer", "servername":"AdminServer","code":"BEA-000365", "msg":"Status server berubah to ADMIN"}doc4 ={"timestamp":"Apr 8, 2014 19:06:19 PDT", "category":"Notice","type":"WebLogicServer", "servername":"AdminServer"," code":"BEA-000365", "msg":"Status server diubah menjadi RESUMING"}doc5 ={"timestamp":"Apr 8, 2014 19:06:20 PDT", "category":"Notice", "type":"WebLogicServer", "servername":"AdminServer","code":"BEA-000331", "msg":"Memulai Server Admin WebLogic"}doc6 ={"timestamp":"8 April 2014 7 :06:21 PDT", "category":"Notice","type":"WebLogicServer", "servername":"AdminServer","code":"BEA-000365", "msg":"Status server berubah menjadi BERJALAN"}doc7 ={" timestamp":"8 Apr 2014 19:06:22 PDT", "category":"Notice","type":"WebLogicServer", "servername":"AdminServer","code":"BEA-000360" , "msg":"Server dimulai dalam mode MENJALANKAN"}

Variabel dokumen JSON didefinisikan, seperti yang ditunjukkan pada Gambar 25.


Gambar 25: Mendefinisikan Variabel untuk Dokumen JSON

Tambahkan dokumen JSON ke wlslog koleksi.

db.wlslog.insert([doc1,doc2,doc3,doc4,doc5,doc6,doc7])

Seperti yang ditunjukkan oleh output pada Gambar 26, tujuh dokumen ditambahkan ke wlslog koleksi.


Gambar 26: Dokumen JSON Ditambahkan ke Koleksi

Buat daftar dokumen yang ditambahkan ke wlslog koleksi.

db.wlslog.find()

Tujuh dokumen yang ditambahkan akan terdaftar, seperti yang ditunjukkan pada Gambar 27.


Gambar 27: Menemukan atau Mendapatkan Dokumen dari Koleksi Mongo

Membuat Tabel DynamoDB

Setelah membuat kumpulan replika MongoDB untuk sumber DMS, selanjutnya kita akan membuat tabel DynamoDB untuk target DMS. Masuk sebagai pengguna IAM (dvohra) yang dibuat sebelumnya dan menetapkan kebijakan. Pilih layanan DynamoDB di AW Management Console dan pilih Buat tabel , seperti yang ditunjukkan pada Gambar 28.


Gambar 28: DynamoDB>Buat tabel

Dalam tabel Create DynamoDB, tentukan Nama tabel dan tentukan Kunci utama , yang juga merupakan kunci Partisi, sebagai _id , seperti yang ditunjukkan pada Gambar 29. Meskipun nama Tabel arbitrer dan diatur ke wlslog , yang sama dengan koleksi MongoDB yang dibuat di set replika MongoDB, kunci Utama harus disetel ke _id karena setiap dokumen MongoDB diberi bidang kunci utama _id .


Gambar 29: Membuat Tabel DynamoDB

Tabel DynamoDB wlslog akan dibuat, seperti yang ditunjukkan pada Gambar 30.


Gambar 30: wlslog tabel DynamoDB Dibuat

Klik tabel DynamoDB wlslog di Dasbor dan detail tabel, termasuk kunci utama _id , ditampilkan (lihat Gambar 31).


Gambar 31: Detail wlslog tabel DynamoDB

Saat migrasi DMS dibuat, peran IAM dms-vpc-role dengan kebijakan terkelola AmazonDMSVPCManagementRole akan dibuat secara otomatis. Agar layanan DMS dapat mengakses layanan DynamoDB, kita perlu mengubah peran akses layanan dms-vpc-role untuk menambahkan dokumen kebijakan berikut, yang menyediakan akses ke DynamoDB dari DMS.

{ "Versi":"2012-10-17", "Pernyataan":[{ "Efek":"Izinkan", "Tindakan":[ "dynamodb:*" ], "Sumberdaya":["*" ] }]}

Menggunakan prosedur yang sama yang digunakan untuk membuat kebijakan DMS, buat kebijakan DynamoDB dan tentukan dokumen kebijakan sebelumnya di kotak bidang Dokumen Kebijakan, seperti yang ditunjukkan pada Gambar 32. Klik Buat Kebijakan .


Gambar 32: Tinjau Kebijakan>Buat Kebijakan

Kebijakan DynamoDB dibuat, seperti yang ditunjukkan pada Gambar 33.


Gambar 33: Kebijakan IAM DynamoDB Dibuat

dms-vpc-role yang akan ditambahkan kebijakan DynamoDB ditunjukkan pada Gambar 34.


Gambar 34: Peran VPC DMS

Klik dms-vpc-role dan tambahkan kebijakan DynamoDB menggunakan Kebijakan Lampirkan. Kebijakan AmazonDMSVPCManagementRole dan DynamoDB harus dicantumkan sebagai Managed Policies, seperti yang ditunjukkan pada Gambar 35.


Gambar 35: Kebijakan Izin dalam Peran VPC DMS

Kesimpulan

Dalam artikel ini, kami memperkenalkan penggunaan AWS Database Migration Service (DMS) untuk memigrasikan MongoDB ke Amazon DynamoDB. Kami mulai dengan membuat kumpulan replika MongoDB sebagai sumber data untuk dimigrasikan dan juga membuat tabel DynamoDB sebagai tabel tujuan. Dalam artikel berikutnya, kita akan membahas membuat dan menjalankan migrasi DMS untuk memigrasikan data.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. String Koneksi Pengguna Kustom untuk Instans MongoDB dengan Otentikasi

  2. Bagaimana cara memperbarui/memasukkan dokumen di Mongoose?

  3. Batas kedalaman bidang Objek bersarang MongoDB

  4. Performa Pengurangan Peta di MongoDb 2.2, 2.4, dan 2.6

  5. Bagaimana cara membuat Gambar Mongo Docker dengan koleksi dan data default?