MySQL mudah dipasang dan digunakan, selalu populer di kalangan pengembang dan administrator sistem. Di sisi lain, menerapkan lingkungan MySQL yang siap produksi untuk beban kerja perusahaan yang penting bagi bisnis adalah cerita yang berbeda. Ini bisa menjadi sedikit tantangan, dan membutuhkan pengetahuan mendalam tentang database. Dalam postingan blog ini, kita akan membahas beberapa langkah yang harus diambil sebelum kita dapat mempertimbangkan kesiapan produksi penerapan MySQL.
Ketersediaan Tinggi
Jika Anda termasuk orang-orang yang beruntung yang dapat menerima waktu henti selama berjam-jam, Anda dapat berhenti membaca di sini dan melompat ke paragraf berikutnya. Untuk 99,999% sistem bisnis-kritis, itu tidak akan dapat diterima. Oleh karena itu, penerapan siap produksi harus menyertakan ukuran ketersediaan tinggi. Failover otomatis dari instance database, serta lapisan proxy yang mendeteksi perubahan topologi dan status MySQL dan merutekan lalu lintas yang sesuai, akan menjadi persyaratan utama. Ada banyak alat yang dapat digunakan untuk membangun lingkungan seperti itu, misalnya MHA, MRM, atau ClusterControl.
Lapisan proxy
Deteksi kegagalan master, failover otomatis, dan pemulihan - ini sangat penting saat membangun infrastruktur siap produksi. Tapi mereka sendiri, itu tidak cukup. Masih ada aplikasi yang harus beradaptasi dengan perubahan topologi yang dipicu oleh failover. Tentu saja, dimungkinkan untuk membuat kode aplikasi sehingga menyadari kegagalan instans. Ini adalah cara yang rumit dan tidak fleksibel untuk menangani perubahan topologi. Di sinilah proxy database - lapisan tengah antara aplikasi dan database. Proksi dapat menyembunyikan kerumitan lapisan basis data Anda dari aplikasi - yang dilakukan aplikasi hanyalah menyambung ke proksi dan proksi akan menangani sisanya. Proxy akan merutekan kueri ke instance database, ia akan menangani perubahan topologi dan merutekan ulang seperlunya. Proksi juga dapat digunakan untuk mengimplementasikan pemisahan baca-tulis, yang membebaskan aplikasi dari satu kasus yang lebih kompleks ke penutup. Ini menciptakan tantangan lain - proxy mana yang digunakan? Bagaimana cara mengkonfigurasinya? Bagaimana cara memantaunya? Bagaimana membuatnya sangat tersedia, sehingga tidak menjadi SPOF?
ClusterControl dapat membantu di sini. Ini dapat digunakan untuk menyebarkan proxy yang berbeda untuk membentuk lapisan proxy:ProxySQL, HAProxy dan MaxScale. Ini mengonfigurasi proxy untuk memastikan mereka akan menangani lalu lintas dengan benar. Ini juga memudahkan untuk mengimplementasikan perubahan konfigurasi apa pun jika Anda perlu menyesuaikan pengaturan proxy untuk aplikasi Anda. Pemisahan baca-tulis dapat dikonfigurasi menggunakan salah satu proxy yang didukung ClusterControl. ClusterControl juga memantau proxy, dan akan memulihkannya jika terjadi kegagalan. Lapisan proxy dapat menjadi satu titik kegagalan, karena pemulihan otomatis mungkin tidak cukup - untuk mengatasinya, ClusterControl dapat menerapkan Keepalive dan mengonfigurasi IP Virtual untuk mengotomatiskan failover.
Cadangan
Bahkan jika Anda tidak perlu menerapkan ketersediaan tinggi, Anda mungkin masih harus peduli dengan data Anda. Pencadangan adalah suatu keharusan untuk hampir setiap basis data produksi. Tidak ada yang lain selain cadangan yang dapat menyelamatkan Anda dari DROP TABLE atau DROP SCHEMA (well, mungkin replikasi slave yang tertunda, tetapi hanya untuk beberapa periode waktu). MySQL menawarkan beberapa metode pengambilan cadangan - mysqldump, xtrabackup, berbagai jenis snapshot (beberapa hanya tersedia dengan perangkat keras atau penyedia cloud tertentu). Tidak mudah untuk merancang strategi pencadangan yang benar, memutuskan alat mana yang akan digunakan dan kemudian membuat skrip seluruh proses sehingga akan dijalankan dengan benar. Ini juga bukan ilmu roket, dan membutuhkan perencanaan dan pengujian yang cermat. Setelah cadangan diambil, Anda belum selesai. Apakah Anda yakin cadangan dapat dipulihkan, dan datanya tidak sampah? Memverifikasi cadangan Anda memakan waktu, dan mungkin bukan hal paling menarik yang Anda miliki di daftar tugas Anda. Tapi tetap penting, dan perlu dilakukan secara rutin.
ClusterControl memiliki fungsi pencadangan dan pemulihan yang ekstensif. Ini mendukung mysqldump untuk pencadangan logis dan Percona Xtrabackup untuk pencadangan fisik - alat tersebut dapat digunakan di hampir semua lingkungan, baik cloud maupun lokal. Dimungkinkan untuk membangun strategi pencadangan dengan campuran pencadangan logis dan fisik, inkremental atau penuh, secara online.
Selain pemulihan, ia juga memiliki opsi untuk memverifikasi cadangan - misalnya memulihkannya di host terpisah untuk memverifikasi apakah proses pencadangan berfungsi dengan baik atau tidak.
Jika Anda ingin secara teratur mengawasi pencadangan (dan Anda mungkin ingin melakukan ini), ClusterControl memiliki kemampuan untuk menghasilkan laporan operasional. Laporan pencadangan membantu Anda melacak pencadangan yang dijalankan, dan menginformasikan jika ada masalah saat mengambilnya.
Panduan Multiplenines DevOps untuk Manajemen DatabasePelajari tentang apa yang perlu Anda ketahui untuk mengotomatisasi dan mengelola database open source AndaUnduh GratisPemantauan dan Tren
Tidak ada penerapan yang siap produksi tanpa pemantauan layanan yang tepat. Anda ingin memastikan bahwa Anda akan diberi tahu jika beberapa layanan tidak tersedia sehingga Anda dapat mengambil tindakan, menyelidiki, atau memulai prosedur pemulihan. Tentu saja, Anda juga ingin memiliki solusi yang sedang tren. Tidak dapat ditekankan betapa pentingnya memiliki data pemantauan untuk menilai keadaan infrastruktur atau untuk penyelidikan apa pun, baik pemantauan post-mortem atau real-time dari keadaan layanan. Metrik tidak sama pentingnya - jika Anda tidak terlalu mengenal produk database tertentu, kemungkinan besar Anda tidak akan tahu metrik mana yang paling penting untuk dikumpulkan dan ditonton. Tentu, Anda mungkin dapat mengumpulkan semuanya, tetapi dalam hal meninjau data, hampir tidak mungkin untuk melewati ratusan metrik per host - Anda perlu tahu mana yang harus Anda fokuskan.
Dunia open source penuh dengan alat yang dirancang untuk memantau dan mengumpulkan metrik dari database yang berbeda - kebanyakan dari mereka akan mengharuskan Anda untuk mengintegrasikannya dengan keseluruhan infrastruktur pemantauan, platform chatops, atau alat pendukung panggilan (seperti PagerDuty). Mungkin juga diperlukan untuk menginstal dan mengintegrasikan beberapa komponen - penyimpanan (semacam database deret waktu), lapisan presentasi, dan alat pengumpulan data.
ClusterControl adalah pendekatan yang sedikit berbeda, karena merupakan satu produk tunggal dengan pemantauan, tren, dan dasbor real-time yang menunjukkan detail terpenting. Penasihat basis data, yang dapat berupa apa saja mulai dari saran konfigurasi sederhana, peringatan tentang ambang batas, atau aturan prediksi yang lebih kompleks, umumnya akan menghasilkan rekomendasi yang komprehensif.
Kemampuan untuk Meningkatkan
Basis data cenderung tumbuh dalam ukuran, dan bukan tidak mungkin akan tumbuh dalam hal volume transaksi atau jumlah pengguna. Kemampuan untuk meningkatkan atau meningkatkan dapat menjadi penting untuk produksi. Bahkan jika Anda melakukan pekerjaan yang baik dalam memperkirakan kebutuhan perangkat keras Anda pada awal siklus hidup produk, Anda mungkin harus menangani fase pertumbuhan - selama produk Anda berhasil, yaitu (tapi itulah yang kita semua rencanakan, benar ?). Anda harus memiliki sarana untuk dengan mudah meningkatkan infrastruktur Anda untuk mengatasi beban yang masuk. Untuk layanan tanpa kewarganegaraan seperti server web, ini cukup mudah - Anda hanya perlu menyediakan lebih banyak instance menggunakan gambar atau kode produksi terbaru dari alat kontrol versi Anda. Untuk layanan stateful seperti database, ini lebih rumit. Anda harus menyediakan instans baru menggunakan data produksi Anda saat ini, menyiapkan replikasi, atau beberapa bentuk pengelompokan antara instans saat ini dan baru. Ini bisa menjadi proses yang rumit dan untuk melakukannya dengan benar, Anda perlu memiliki pengetahuan yang lebih mendalam tentang model pengelompokan atau replikasi yang dipilih.
ClusterControl, seperti namanya, menyediakan dukungan ekstensif untuk membangun pengaturan basis data berkerumun atau direplikasi. Metode yang digunakan adalah pertempuran diuji melalui ribuan penyebaran. Muncul dengan Command Line Interface (CLI) sehingga dapat dengan mudah diintegrasikan dengan sistem manajemen konfigurasi. Harap diingat, bahwa Anda mungkin tidak ingin terlalu sering membuat perubahan pada kumpulan database Anda - penyediaan instance baru membutuhkan waktu dan menambahkan beberapa overhead dalam database yang ada. Oleh karena itu, Anda mungkin ingin tetap berada di sisi "penyediaan berlebih" sedikit sehingga Anda akan memiliki waktu untuk membuat instance baru sebelum cluster Anda kelebihan beban.
Secara keseluruhan, ada beberapa langkah yang masih harus Anda ambil setelah penerapan awal, untuk memastikan lingkungan Anda siap untuk produksi. Dengan alat yang tepat, jauh lebih mudah untuk mencapainya.