Saya sering mendengar orang membuat pernyataan seperti "mesin server MySQL kami gagal", yang memberi saya kesan bahwa mereka mendedikasikan satu mesin sebagai server MySQL mereka (saya kira mereka hanya menginstal OS dan hanya MySQL di dalamnya). Sebagai pengembang bukan sysadmin, saya sudah terbiasa dengan MySQL yang diinstal sebagai bagian dari tumpukan LAMP bersama-sama dengan server web dan PHP.
Dapatkah seseorang menjelaskan kepada saya:
- apa gunanya menginstal MySQL di server terpisah? Kedengarannya seperti pemborosan sumber daya ketika saya dapat menambahkan seluruh tumpukan lampu di sana dan server tambahan juga.
- jika database ada di mesin yang terpisah, bagaimana aplikasi yang perlu digunakan terhubung ke sana?
Server basis data terpisah hanyalah bagian dari desain yang bagus dan dapat diskalakan. Ini tidak masalah jika traffic Anda tidak terlalu tinggi dan satu server saja sudah cukup.
Namun dalam layanan yang lebih sibuk, mengisolasi layanan dari satu sama lain adalah Good Thing. Jika seseorang DDoSses server web Anda dan membuatnya mengkonsumsi semua sumber daya, itu tidak menggertak server database sama sekali. Dalam lingkungan bersama, lebih dari satu server web mungkin menggunakan server basis data, jadi jika server basis data berisi data untuk 50 situs web yang berbeda, maka hanya satu situs web yang turun karena DDoS lebih baik daripada mencatat semuanya.
Juga dari sudut pandang sysadmin, akan lebih jelas jika ada server khusus yang dinamai dengan bijaksana, seperti "mysql-01.yourcompany.com" dan "webserver-01.yourcompany.com". Ketika mereka mendapat peringatan, mereka segera melihat apa yang terjadi, setidaknya dalam arti "OK, ada yang salah dengan database". Saya tahu ini adalah argumen yang lemah karena beberapa nama DNS dapat menunjuk ke satu server tetapi tetap saja.
Aplikasi Anda akan terhubung ke server basis data jauh tanpa masalah melalui jaringan. Aeeeeeeee! Bagaimana browser web Anda terhubung ke server jarak jauh? Itu ajaib! Erm .... lebih serius, daripada 'localhost' Anda hanya memberikan alamat server dalam $ programming_language_of_your_choice dan Anda sudah siap.
sumber
sumber
LAMP adalah tumpukan aplikasi, tetapi tidak semua harus diinstal pada host yang sama. Seperti yang telah dicatat oleh orang lain untuk tujuan kinerja, keamanan atau skalabilitas, seringkali ini tidak diinstal pada host yang sama. Anda juga dapat menemukan bahwa perangkat keras yang optimal untuk satu bagian arsitektur mungkin bukan untuk yang lain.
Misalnya, semua database tentang manajemen penyimpanan. Semakin cepat saya bisa mendapatkan informasi dari disk maka semakin cepat saya bisa mendapatkannya ke pemohon. Jika saya berbagi subsistem disk dengan beberapa anggota aplikasi tumpukan lainnya, seperti server web, pertentangan yang saya hadapi pada sumber daya bersama dari baca dan tulis hed dari disk drive benar-benar dapat menghambat kinerja saya. Selain itu, memiliki pemisahan RAM antara server web dan server basis data pada host tertentu mungkin tidak menyediakan kumpulan sumber daya yang cukup besar untuk dijalankan dengan cara yang paling efisien, mampu menyimpan sebanyak mungkin informasi dalam RAM tanpa harus pergi ke disk baik untuk gambar, halaman, atau set hasil kueri.
Secara administratif ada efisiensi yang harus diperoleh juga. Bayangkan jika Anda menjalankan perusahaan Anda pada aplikasi open source yang memanfaatkan MySQL sebagai backend umum. Apakah Anda benar-benar ingin memiliki proliferasi server database dengan setiap aplikasi? Ini bisa menjadi mimpi buruk DBA, "OK, aplikasi mana yang menggunakan DB ini?" Anda akan memiliki banyak versi, konfigurasi banyak perangkat keras / perangkat lunak, beberapa strategi penyimpanan data. Anda mungkin juga memiliki keterampilan administrasi yang sangat tersebar. Alih-alih, satukan contoh ke satu perangkat fisik perangkat keras yang dioptimalkan untuk peran tersebut dan tetapkan sumber daya khusus untuk mengelola server dan datanya.
sumber
Kueri MySQL berpotensi menjadi sumber daya yang sangat intensif, yang dapat memperlambat server LAMP Anda.
Saat Anda menjalankan situs web besar, rumit, dan banyak sumber daya, sebaiknya pertimbangkan untuk memindahkan database ke server khusus lainnya. Dengan begitu Anda memiliki dua server, satu didedikasikan untuk web dan satu didedikasikan untuk pengelompokan basis data. Ini memiliki potensi untuk membebaskan sumber daya dan mempercepat permintaan situs web dan basis data.
Server web hanya perlu terhubung ke alamat server basis data alih-alih
localhost
membuat kueri basis data itu.sumber