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

Bagaimana Memulai Dengan Otomatisasi Basis Data

Otomasi basis data membantu membuat tugas yang rumit dan memakan waktu menjadi sederhana dan cepat. Tugas yang paling umum dan mudah diidentifikasi untuk otomatisasi adalah tugas yang memakan waktu namun berulang. Ini sering menghabiskan produktivitas, dan dapat mempengaruhi keuangan perusahaan karena Anda harus membayar orang-orang yang mengerjakan tugas-tugas ini. Namun, proses di mana waktu dan upaya yang terbuang sia-sia dapat diubah menjadi otomatisasi virtual, sehingga menghindari pekerjaan yang sering membosankan dan melelahkan.

Otomasi database telah menjadi praktik umum administrator database dan administrator server, yang sekarang lebih dikenal sebagai DevOps. DevOps juga mengacu pada kombinasi tugas DBA dan admin server. Dengan cara lama, tugas otomatis tradisional dan umum ditulis sebagai serangkaian pernyataan SQL atau file .sql, yang menyebarkan dan menyediakan server melalui skrip, menyiapkan enkripsi/dekripsi, atau memanfaatkan keamanan untuk lingkungan di mana otomatisasi Anda seharusnya untuk berlari. Di sini, otomatisasi bukanlah contoh perusahaan yang mengganti orang dengan skrip. Itu ada sebagai asisten untuk mempercepat, dan menyelesaikan tugas lebih cepat dengan lebih sedikit kesalahan. Otomatisasi tidak dapat menggantikan cara DBA melakukan tugas mereka atau nilai yang dapat mereka berikan ke seluruh perusahaan atau organisasi.

Alat canggih untuk Infrastruktur sebagai Kode (IaC) seperti Puppet, Chef, Ansible, SaltStack, dan Terraform membantu DBA menyelesaikan tugas-tugas yang mudah direplikasi, seperti pencadangan dan pemulihan, kegagalan, penerapan cluster baru, menyesuaikan pengaturan keamanan, Kernel OS dan penyetelan kinerja database, dan banyak lagi. Dengan bantuan otomatisasi, banyak DBA juga telah meningkatkan atau mengubah keterampilan mereka dari berfokus pada tugas spesifik domain data menjadi juga mencakup cara membuat kode untuk memanfaatkan alat IaC ini yang membuat segalanya lebih mudah daripada menggunakan pendekatan tradisional. Ada juga alat saat ini yang mempermudah pengelolaan aset Anda di cloud, seperti mengelola akun pengguna perusahaan, log, menerapkan instance, atau mengelola server Anda. Alat untuk cloud dari tiga besar penyedia cloud termasuk AWS CloudFormation, Azure Resource Manager, dan Google Cloud Deployment Manager dan memungkinkan DBA atau DevOps untuk memanfaatkan kekuatan otomatisasi dan membuat segalanya lebih cepat. Ini tidak hanya mengesankan eksekutif organisasi atau perusahaan Anda, tetapi juga pelanggan yang mengandalkan layanan Anda.

Apa yang Perlu Diotomatisasi?

Seperti disebutkan di atas, otomatisasi basis data bukanlah hal baru bagi DBA, administrator server, atau bahkan DevOps. Tidak ada alasan untuk ragu atau mempertanyakan apakah akan mengotomatisasi. Seperti yang dinyatakan sebelumnya, kasus umum yang mudah diidentifikasi untuk otomatisasi adalah tugas yang sifatnya berulang.

Di bawah ini, kami menghitung hal-hal yang aksiomatik dari perspektif DBA.

  • Penyediaan server Anda (mis., memulai instance VM seperti menggunakan gelandangan, memulai buruh pelabuhan, atau memulai Kubernetes Anda platform) dan atur akses SSH atau atur akses VPN

  • Penerapan cluster database baru

    • Identifikasi jenis penyedia basis data, jenis penyiapan (utama/siaga, replikasi master-master, sinkron replikasi)

  • Impor cluster database yang ada

  • Menyebarkan/mengimpor database yang ada ke cluster database Anda saat ini

  • Auto-failover atau switchover

  • Pemulihan node atau cluster otomatis

  • Promosi replika/Budak atau Demosi master

  • Penerapan load balancer (mis. ProxySQL, HaProxy, pgpool, pgbouncer, MaxScale, Keepalived)

  • Cadangkan dan Pulihkan

  • Siapkan lingkungan pemantauan database Anda (mis., terapkan pemantauan berbasis agen seperti Prometheus)

  • Aktifkan penyesuaian keamanan

  • Melakukan pengoptimalan dan penyetelan otomatis sesuai dengan jenis lingkungan

  • Aktifkan sistem peringatan untuk integrasi pihak ketiga lainnya

  • Buat lansiran atau alarm dan notifikasi

  • Buat laporan seperti grafik

  • Proses log kueri (log lambat) untuk analisis kueri

  • Buat analisis kueri

  • Pengarsipan atau pembersihan basis data

Tentu saja ada banyak kasus yang dapat Anda otomatisasi, tetapi ini mencantumkan tugas yang paling umum dan mengotomatiskannya tidak perlu dipertanyakan lagi. Ini adalah jenis tugas yang sifatnya berulang dan sebagian besar rawan kesalahan, terutama jika harus dilakukan dengan cepat karena keterbatasan waktu.

Hal-Hal Apa yang Tidak Harus Diotomatisasi?

Area ini adalah tempat DBA atau SysAdmin Anda melakukan sebagian besar pekerjaan. Otomatisasi tidak dapat menggantikan keahlian dan kecerdasan DBA dalam hal hal-hal yang tidak dapat diotomatisasi.

Dipahami bahwa DBA harus terampil, dengan pemahaman mendalam tentang:  database yang mereka gunakan dan database yang akan diterapkan; data yang sedang diproses dan disimpan; dan apakah cara pemrosesannya aman, atau apakah sesuai dengan standar keamanan perusahaan. DBA juga meninjau dan sebagian besar dianggap sebagai DevOps, serta arsitek otomasi. Mereka mendikte apa yang harus dilakukan, dan apa yang tidak akan dilakukan. Hal-hal umum yang tidak boleh diotomatisasi adalah sebagai berikut:

  • Menyetel pencadangan terjadwal Anda. Pencadangan terjadwal tentu saja otomatis dan harus berjalan sesuai dengan itu, tetapi tanggal atau periode waktu terjadwal yang diperlukan harus didasarkan pada waktu puncak rendah yang akan dilakukan server. Misalnya, Anda tidak dapat mengambil cadangan jika cluster sibuk di siang hari. Ada juga kasus umum ketika server masih sibuk di malam hari tergantung pada jenis aplikasi yang Anda layani, dan lokasi geografisnya.

  • Failover otomatis gagal mempromosikan master baru. Ini adalah salah satu kasus yang paling penting dan harus dipahami dengan baik. Jika Anda memiliki skrip otomatis yang dirancang untuk failover, seharusnya tidak dirancang untuk mengejar failover secara paksa jika terjadi gagal.. Anda mungkin tidak pernah tahu apa masalah utama, dan jika ada kegagalan, mungkin ada transaksi yang memiliki untuk dipulihkan sebelum hal lain harus dilakukan. Misalnya, itu bisa menjadi transaksi keuangan yang disimpan di master yang gagal, dan Anda secara paksa ingin mempromosikan seorang budak, tetapi calon budak itu gagal untuk mereplikasi transaksi terbaru. Dalam hal ini, Anda mungkin berakhir dengan data yang rusak.

  • Pemulihan Data. Tentu saja, ketika Anda mengalami kerusakan data atau sebuah cluster gagal pulih dari pemulihan node/server otomatis Anda, Anda mungkin harus menyelidiki penyebab utamanya. Anda harus mendokumentasikan ini untuk RCA (Analisis Akar Penyebab) Anda untuk menghindarinya di masa mendatang. Namun, ada beberapa contoh ketika kegagalan adalah bug dari perangkat lunak database yang Anda gunakan, atau bisa juga karena kerusakan VM.

  • Pergeseran Data atau Inkonsistensi Data. Ini jelas bukan situasi yang ideal untuk otomatisasi. Anda tidak ingin robot Anda menggeneralisasi atau membuat stereotip data Anda ke praktik yang akan menerapkan konsep ini:"jika data rusak, mari kita perbaiki secara otomatis". Ini jelas bukan praktik yang baik. Ada banyak kasus yang harus dipahami dan diselidiki terlebih dahulu sebelum Anda dapat memutuskan. Di MySQL, misalnya, ada alat Percona yang disebut pt-table-checksum, lalu pt-table-sync yang keduanya korelatif satu sama lain dalam memperbaiki inkonsistensi data. Anda pasti tidak ingin mengotomatisasi ini kecuali Anda mengetahui data Anda dengan baik, atau data Anda tidak ekstensif, atau data dapat dibuat ulang.

  • Penalaan kernel dan penyetelan basis data. Tentu saja, ini bisa dilihat sebagai kontradiksi dengan apa yang telah kami nyatakan di atas. Namun, ada variabel auto-tunable yang dikenal untuk tipe lingkungan tertentu, seperti memori, buffer pool, HugePages, atau parameter memori virtual. Namun, pasti ada banyak parameter yang membutuhkan pemahaman, penyelidikan, pengujian, benchmarking sebelum Anda memutuskan untuk menerapkan perubahan atau tidak.

Jelas, ada banyak hal yang tidak boleh Anda otomatiskan yang tidak kami sebutkan. Di dunia database, ada banyak sekali situasi yang bergantung pada jenis data dan aplikasi yang Anda layani. Ingatlah hal itu, dan peka terhadap hal-hal yang dapat diotomatiskan. Jika tidak, otomatisasi dapat menyebabkan kehancuran.

Alat untuk Otomatisasi

Di sinilah Anda dapat memulai skrip otomatisasi Anda. Komponen terpenting dari otomatisasi adalah kecepatan! Dalam hal kecepatan, tidak diukur dengan seberapa cepat suatu alat dapat menyelesaikan tugas, tetapi seberapa nyaman pengembang atau pengelola skrip atau IaC dengan alat tersebut. Jelas, ada pro dan kontra untuk alat otomasi ini tersedia. Yang lebih penting adalah menentukan spesifikasi alat otomatisasi ini, karena ada lebih banyak hal yang ditawarkan selain hanya otomatisasi. Lebih umum, mereka menyediakan manajemen konfigurasi dan mekanisme penyebaran.

Otomasi adalah tentang kecepatan, yaitu seberapa cepat itu berbeda dengan menggunakan pendekatan tradisional, atau menggunakan skrip bahasa pilihan Anda sendiri. Tentu saja, menggunakan skrip Anda sendiri bisa menjadi sempurna, tetapi jika organisasi atau perusahaan Anda adalah untuk kemajuan teknologi, maka menggunakan alat pihak ketiga seperti Ansible, Puppet, Chef, SaltStack, atau Terraform lebih ideal. Mengapa lebih ideal? Alat pihak ketiga ini dirancang untuk mengalahkan tugas yang panjang dan panjang untuk dilakukan, dan dapat dilakukan dengan beberapa baris kode.

Misalnya, Terraform dikenal karena manfaat portabilitasnya. Bayangkan saja, dengan Terraform, Anda memiliki satu alat dan satu bahasa untuk menjelaskan infrastruktur untuk Google Cloud, AWS, OpenStack, dan APAPUN cloud lainnya. Jika Anda beralih ke penyedia lain, Anda tidak perlu mengubah atau mengulang skrip Anda. Ini juga memungkinkan Anda untuk menerapkan penerapan tumpukan penuh, dan itu termasuk mengelola container Kubernetes Anda. Bayangkan, dari satu alat, Anda dapat melakukan banyak hal.

Saat memulai otomatisasi database, jangan mulai dari awal karena tujuan otomatisasi adalah kecepatan! Sekali lagi, kecepatan tidak diukur di sini dalam seberapa cepat menyelesaikan pekerjaan, tetapi seberapa cepat dibandingkan dengan pendekatan tradisional atau tugas manual. Tentu saja, kecepatan untuk menyelesaikan pekerjaan semuanya bergantung, misalnya, sebagian skrip Anda dapat menyebabkan penundaan yang lama karena sekumpulan data yang diproses dan eksekusi pekerjaan yang lama.

Selalu Pilih Berdasarkan Kebutuhan Anda

Saat memilih alat, jangan mengandalkan hype, atau apa yang paling populer yang pernah Anda dengar. Meskipun alat-alat utama yang disebutkan sebelumnya sebagian besar dianut oleh masyarakat, mereka juga memperkenalkan kompleksitas. Misalnya, saat menggunakan Ansible, Anda harus terbiasa dengan YAML, sedangkan dengan Puppet atau Chef, Anda harus terbiasa dengan Ruby dan bahasa spesifik domain yang mendasarinya.

Manfaatkan Alat Perusahaan yang Tersedia

Ada banyak alat otomatisasi database yang menjanjikan untuk memulai. Jika Anda merasa tidak nyaman dan menghabiskan waktu untuk menyewa DBA, SysAdmins, atau DevOps untuk memperluas tim Anda, ada alat yang tersedia yang menawarkan bantuan dalam hal manajemen database, manajemen cadangan, dan observabilitas.

Beberapa ClusterControl untuk Otomatisasi Database

ClusterControl menawarkan banyak tugas otomatis yang menghilangkan  kebutuhan akan pendekatan manual. ClusterControl dirancang untuk memudahkan pengoperasian basis data bagi organisasi, perusahaan, DBA, SysAdmins, DevOps, dan bahkan pengembang. Tujuannya adalah untuk mengotomatisasi tugas-tugas yang berjalan lama dan berulang. Keuntungan besar dari ClusterControl adalah bahwa itu adalah alat manajemen database yang matang dan memiliki fitur ekstensif yang sangat kuat untuk mengelola server database Anda. Ini juga menerapkan praktik terbaik standar industri terbaru untuk mengelola database Anda. Kami mendengarkan permintaan pelanggan, lalu menerapkan kemampuan untuk memenuhinya.

Beberapa fungsi otomatisasi ClusterControl paling kaya fitur yang dapat Anda manfaatkan adalah:

  • Penempatan server database Anda. Pilih provider, tentukan versi yang tepat, tentukan tipe cluster apa, tentukan hostname/IP server seperti username, password, dll.

  • Mengimpor server yang ada ke ClusterControl

  • Penerapan di awan

  • Pemantauan dan pelaporan kesehatan basis data

  • Peringatan dan pemberitahuan

  • Cadangkan dan Pulihkan

  • Verifikasi Cadangan

  • Gagal otomatis, peralihan

  • Penyiapan ketersediaan tinggi

  • Promosikan budak atau turunkan master

  • Tambahkan replika baru/yang sudah ada ke cluster Anda

  • Perluas cluster lain sebagai budak cluster lain (sempurna untuk penyiapan geografis untuk pemulihan bencana Anda)

  • Pemulihan Node dan Cluster

  • Integrasi LDAP

  • Notifikasi peringatan pihak ketiga

  • Penerapan daftar lengkap penyeimbang beban mana pun  (pgbouncer, ProxySQL, MaxScale, HAProxy, Keepalive, garbd )

  • Penerapan pemantauan berbasis agen menggunakan eksportir Prometheus

  • Analisis kueri

  • Penyesuaian keamanan

  • Penyetelan otomatis untuk kernel OS dan parameter database

Selain semua ini, ClusterControl juga memiliki penasehat bawaan yang memungkinkan DBA atau DevOps membuat skrip mereka sendiri dan berintegrasi ke Penasihat Kinerja ClusterControl.

Ringkasan

Otomasi basis data membantu mempercepat tugas yang kompleks namun berulang. Ini membantu DBA untuk bergerak maju dengan cepat pada tugas yang berbeda dan meningkatkan keterampilan mereka tergantung pada ruang lingkup pekerjaan yang terlibat. Otomatisasi basis data membebaskan DBA untuk menjadi lebih inovatif sekaligus mengelola basis data dengan nyaman. Otomatisasi database tidak menggantikan peran DBA. Akan selalu ada kebutuhan akan orang-orang yang terampil dan cerdas untuk mengelola database Anda, terutama saat terjadi bencana. Selalu andalkan alat yang direkomendasikan DBA Anda, sambil memercayai keterampilan DBA mereka untuk mengelola kesehatan dan kehidupan database Anda.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jarak cetak MongoDB antara dua titik

  2. Apa cara tercepat untuk menyalin koleksi dalam database yang sama?

  3. Penolakan janji yang tidak tertangani:Kesalahan:URL salah format, tidak dapat diuraikan

  4. pagination array mongoDB

  5. SocketException:Alamat sudah digunakan MONGODB