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

Kiat untuk Menyimpan Cadangan MongoDB di Cloud

Dalam hal pencadangan dan pengarsipan data, departemen TI berada di bawah tekanan untuk memenuhi perjanjian tingkat layanan yang lebih ketat, memberikan lebih banyak laporan khusus, dan mematuhi persyaratan kepatuhan yang diperluas sambil terus mengelola tugas pengarsipan dan pencadangan harian. Tidak diragukan lagi, server database menyimpan beberapa informasi paling berharga perusahaan Anda. Menjamin pencadangan basis data yang andal untuk mencegah kehilangan data jika terjadi kecelakaan atau kegagalan perangkat keras adalah kotak centang yang penting.

Tetapi bagaimana membuatnya benar-benar DR ketika semua data Anda berada di satu pusat data atau bahkan pusat data yang berada di dekat geolokasi? Selain itu, baik itu server dengan beban tinggi 24x7 atau lingkungan volume transaksi rendah, Anda akan perlu membuat pencadangan sebagai prosedur yang lancar tanpa mengganggu kinerja server di lingkungan produksi.

Di blog ini, kita akan meninjau backup MongoDB ke cloud. Cloud telah mengubah industri pencadangan data. Karena titik harganya yang terjangkau, bisnis kecil memiliki solusi di luar lokasi yang mencadangkan semua data mereka.

Kami akan menunjukkan kepada Anda cara melakukan pencadangan MongoDB yang aman menggunakan layanan mongo serta metode lain yang dapat Anda gunakan untuk memperluas opsi pemulihan bencana basis data Anda.

Jika server atau tujuan pencadangan Anda terletak di infrastruktur yang terbuka seperti cloud publik, penyedia hosting, atau terhubung melalui jaringan WAN yang tidak tepercaya, Anda perlu memikirkan tindakan tambahan dalam kebijakan pencadangan Anda. Ada beberapa cara berbeda untuk melakukan pencadangan basis data untuk MongoDB, dan bergantung pada jenis pencadangan, waktu pemulihan, ukuran, dan opsi infrastruktur akan bervariasi. Karena banyak solusi penyimpanan cloud hanyalah penyimpanan dengan ujung depan API yang berbeda, solusi pencadangan apa pun dapat dilakukan dengan sedikit skrip. Jadi apa saja pilihan yang kita miliki untuk membuat prosesnya lancar dan aman?

Enkripsi Cadangan MongoDB

Keamanan harus menjadi pusat dari setiap tindakan yang dilakukan tim TI. Itu selalu merupakan ide yang baik untuk menegakkan enkripsi untuk meningkatkan keamanan data cadangan. Kasus penggunaan sederhana untuk menerapkan enkripsi adalah saat Anda ingin mendorong cadangan ke penyimpanan cadangan di luar lokasi yang terletak di cloud publik.

Saat membuat cadangan terenkripsi, satu hal yang perlu diingat adalah biasanya diperlukan lebih banyak waktu untuk memulihkannya. Cadangan harus didekripsi sebelum aktivitas pemulihan apa pun. Dengan kumpulan data yang besar, hal ini dapat menyebabkan beberapa penundaan pada RTO.

Di sisi lain, jika Anda menggunakan kunci pribadi untuk enkripsi, pastikan untuk menyimpan kunci di tempat yang aman. Jika kunci pribadi hilang, cadangan tidak akan berguna dan tidak dapat dipulihkan. Jika kunci dicuri, semua cadangan yang dibuat yang menggunakan kunci yang sama akan disusupi karena tidak lagi diamankan. Anda dapat menggunakan GnuPG atau OpenSSL populer untuk menghasilkan kunci privat atau publik.

Untuk melakukan enkripsi MongoDBdump menggunakan GnuPG, buat kunci pribadi dan ikuti wizard yang sesuai:

$ gpg --gen-key

Buat cadangan MongoDBdump biasa seperti biasa:

$ mongodump –db db1 –gzip –archive=/tmp/db1.tar.gz
Enkripsi file dump dan hapus cadangan biasa yang lama:
$ gpg --encrypt -r ‘[email protected]’ db1.tar.gz

$ rm -f db1.tar.gz
GnuPG akan secara otomatis menambahkan ekstensi .gpg pada file terenkripsi. Untuk mendekripsi,

cukup jalankan perintah gpg dengan --decrypt flag:

$ gpg --output db1.tar.gz --decrypt db1.tar.gz.gpg
Untuk membuat MongoDBdump terenkripsi menggunakan OpenSSL, seseorang harus membuat kunci pribadi dan kunci publik:
OpenSSL req -x509 -nodes -newkey rsa:2048 -keyout dump.priv.pem -out dump.pub.pem

Kunci pribadi ini (dump.priv.pem) harus disimpan di tempat yang aman untuk dekripsi di masa mendatang. Untuk Mongodump, cadangan terenkripsi dapat dibuat dengan menyalurkan konten ke openssl, misalnya

mongodump –db db1 –gzip –archive=/tmp/db1.tar.gz | openssl smime -encrypt -binary -text -aes256

-out database.sql.enc -outform DER dump.pub.pem
Untuk mendekripsi, cukup gunakan kunci pribadi (dump.priv.pem) di samping flag -decrypt:

openssl smime -decrypt -in database.sql.enc -binary -inform

DEM -inkey dump.priv.pem -out db1.tar.gz

Kompresi Cadangan MongoDB

Dalam dunia pencadangan cloud database, kompresi adalah salah satu teman terbaik Anda. Ini tidak hanya dapat menghemat ruang penyimpanan, tetapi juga dapat secara signifikan mengurangi waktu yang dibutuhkan untuk mengunduh/mengunggah data.

Selain pengarsipan, kami juga menambahkan dukungan untuk kompresi menggunakan gzip. Ini diperlihatkan oleh pengenalan opsi baris perintah baru "--gzip" di mongodump dan mongorestore. Kompresi berfungsi baik untuk cadangan yang dibuat menggunakan direktori dan mode arsip dan mengurangi penggunaan ruang disk.

Biasanya, dump MongoDB dapat memiliki tingkat kompresi terbaik karena merupakan file teks datar. Bergantung pada alat kompresi dan rasio, MongoDBdump yang dikompresi dapat berukuran hingga 6 kali lebih kecil dari ukuran cadangan aslinya. Untuk mengompresi cadangan, Anda dapat menyalurkan output MongoDBdump ke alat kompresi dan mengarahkannya ke file tujuan

Memiliki cadangan terkompresi dapat menghemat hingga 50% dari ukuran cadangan asli, tergantung pada kumpulan data.

mongodump --db country --gzip --archive=country.archive

Membatasi Throughput Jaringan

Pilihan yang bagus untuk pencadangan cloud adalah membatasi bandwidth streaming jaringan (Mb/dtk) saat melakukan pencadangan. Anda dapat mencapainya dengan alat pv. Utilitas pv dilengkapi dengan opsi pengubah data -L RATE, --rate-limit RATE yang membatasi transfer hingga maksimum RATE byte per detik. Contoh di bawah ini akan membatasinya menjadi 2MB/dtk.

$ pv -q -L 2m

Mentransfer Cadangan MongoDB ke Cloud

Sekarang ketika cadangan Anda dikompresi dan diamankan (dienkripsi), cadangan siap untuk ditransfer.

Google Cloud

Alat baris perintah gsutil digunakan untuk mengelola, memantau, dan menggunakan keranjang penyimpanan Anda di Google Cloud Storage. Jika Anda sudah menginstal util gcloud, Anda sudah menginstal gsutil. Jika tidak, ikuti petunjuk untuk distribusi Linux Anda dari sini.

Untuk menginstal gcloud CLI Anda dapat mengikuti prosedur di bawah ini:

curl https://sdk.cloud.google.com | bash
Mulai ulang shell Anda:
exec -l $SHELL
Jalankan gcloud init untuk menginisialisasi lingkungan gcloud:
gcloud init
Dengan alat baris perintah gsutil terinstal dan diautentikasi, buat ember penyimpanan regional bernama MongoDB-backups-storage di proyek Anda saat ini.
gsutil mb -c regional -l europe-west1 gs://severalnines-storage/

Creating gs://MongoDB-backups-storage/

Amazon S3

Jika Anda tidak menggunakan RDS untuk menghosting basis data Anda, kemungkinan besar Anda melakukan pencadangan sendiri. Platform AWS Amazon, S3 (Amazon Simple Storage Service) adalah layanan penyimpanan data yang dapat digunakan untuk menyimpan cadangan database atau file penting bisnis lainnya. Baik itu instans Amazon EC2 atau lingkungan lokal Anda, Anda dapat menggunakan layanan ini untuk mengamankan data Anda.

Meskipun cadangan dapat diunggah melalui antarmuka web, antarmuka baris perintah s3 khusus dapat digunakan untuk melakukannya dari baris perintah dan melalui skrip otomatisasi pencadangan. Jika cadangan disimpan untuk waktu yang sangat lama, dan waktu pemulihan tidak menjadi masalah, cadangan dapat ditransfer ke layanan Amazon Glacier, menyediakan penyimpanan jangka panjang yang jauh lebih murah. File (objek amazon) disimpan secara logis dalam wadah datar besar bernama ember. S3 menghadirkan antarmuka REST ke internalnya. Anda dapat menggunakan API ini untuk melakukan operasi CRUD pada bucket dan objek, serta untuk mengubah izin dan konfigurasi pada keduanya.

Metode distribusi utama untuk AWS CLI di Linux, Windows, dan macOS adalah pip, pengelola paket untuk Python. Petunjuk dapat ditemukan di sini.

aws s3 cp severalnines.sql s3://severalnine-sbucket/MongoDB_backups
Secara default, S3 memberikan daya tahan objek sebelas 9 detik. Artinya, jika Anda menyimpan 1.000.000.000 (1 miliar) objek ke dalamnya, Anda dapat mengharapkan kehilangan rata-rata 1 objek setiap 10 tahun. Cara S3 mencapai jumlah 9 yang mengesankan adalah dengan mereplikasi objek secara otomatis di beberapa Availability Zone, yang akan kita bicarakan di posting lain. Amazon memiliki pusat data regional di seluruh dunia.

Penyimpanan Microsoft Azure

Platform cloud publik Microsoft, Azure, memiliki opsi penyimpanan dengan antarmuka garis kontrolnya. Informasi dapat ditemukan di sini. Azure CLI lintas platform open-source menyediakan serangkaian perintah untuk bekerja dengan platform Azure. Ini memberikan banyak fungsi yang terlihat di portal Azure, termasuk akses data yang kaya.

Penginstalan Azure CLI cukup sederhana, Anda dapat menemukan petunjuknya di sini. Di bawah ini Anda dapat menemukan cara mentransfer cadangan Anda ke penyimpanan Microsoft.

az storage blob upload --container-name severalnines --file severalnines.gz.tar --name severalnines_backup

Penyimpanan Hibrida untuk Cadangan MongoDB

Dengan pertumbuhan industri penyimpanan awan publik dan pribadi, kami memiliki kategori baru yang disebut penyimpanan hibrida. Pendekatan tipikal adalah menyimpan data di drive disk lokal untuk waktu yang lebih singkat sementara penyimpanan cadangan cloud akan disimpan untuk waktu yang lebih lama. Sering kali persyaratan untuk penyimpanan cadangan yang lebih lama berasal dari kewajiban hukum untuk industri yang berbeda (seperti telekomunikasi yang harus menyimpan metadata koneksi). Teknologi ini memungkinkan file disimpan secara lokal, dengan perubahan yang secara otomatis disinkronkan ke jarak jauh di cloud. Pendekatan semacam itu berasal dari kebutuhan memiliki cadangan terbaru yang disimpan secara lokal untuk pemulihan cepat (RTO lebih rendah), serta tujuan kelangsungan bisnis.

Aspek penting dari penggunaan sumber daya yang efisien adalah memiliki penyimpanan cadangan yang terpisah. Data yang disimpan secara lokal, pada disk drive yang berlebihan akan disimpan untuk waktu yang lebih singkat sementara penyimpanan cadangan cloud akan disimpan untuk waktu yang lebih lama. Sering kali persyaratan untuk penyimpanan cadangan yang lebih lama berasal dari kewajiban hukum untuk industri yang berbeda (seperti telekomunikasi yang harus menyimpan metadata koneksi).

Penyedia cloud seperti Layanan Google Cloud, Microsoft Azure, dan Amazon S3 masing-masing menawarkan penyimpanan yang hampir tidak terbatas, sehingga mengurangi kebutuhan ruang lokal. Ini memungkinkan Anda untuk menyimpan file cadangan Anda lebih lama, selama yang Anda inginkan dan tidak mengkhawatirkan ruang disk lokal.

Manajemen Cadangan ClusterControl - Penyimpanan Hibrida

Saat menjadwalkan pencadangan dengan ClusterControl, setiap metode pencadangan dapat dikonfigurasi dengan serangkaian opsi tentang bagaimana Anda ingin pencadangan dijalankan. Yang paling penting untuk penyimpanan cloud hybrid adalah:

  • Pembatasan jaringan
  • Enkripsi dengan manajemen kunci bawaan
  • Kompresi
  • Periode retensi untuk cadangan lokal
  • Periode retensi untuk cadangan cloud

ClusterControl fitur pencadangan lanjutan untuk cloud, kompresi paralel, batas bandwidth jaringan, enkripsi , dll. Perusahaan Anda dapat memanfaatkan skalabilitas cloud dan harga bayar sesuai penggunaan untuk kebutuhan penyimpanan yang terus meningkat. Anda dapat merancang strategi pencadangan untuk menyediakan salinan lokal di pusat data untuk pemulihan segera, dan gerbang tanpa batas ke layanan penyimpanan cloud dari AWS, Google, dan Azure.

TLS dan AES 256 Lanjutan -Fitur enkripsi dan kompresi bit mendukung pencadangan aman yang menghabiskan lebih sedikit ruang di cloud secara signifikan.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. 4 Cara Menghapus Dokumen di MongoDB

  2. MongoDB $ukuran

  3. Cara mengaktifkan kueri MongoDB mentah langsung di Ruby

  4. Mongoid atau MongoMapper?

  5. Properti luwak kadaluarsa tidak berfungsi dengan baik