Apakah MySQL seharusnya dipasang sendiri


20

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?

Jawaban:


30

Ketika platform aplikasi dan basis data Anda bersaing untuk mendapatkan sumber daya, biasanya itu merupakan indikasi pertama bahwa Anda siap untuk server basis data khusus.

Kedua, ketersediaan tinggi: menyiapkan cluster database (dan biasanya pada gilirannya, cluster server Web / aplikasi beban-seimbang).

Saya juga akan mengatakan keamanan memainkan peran besar dalam pindah ke server terpisah karena Anda dapat memiliki kebijakan yang berbeda untuk akses jaringan untuk setiap server (misalnya, server Web DMZ'ed dengan server database pada LAN).

Akses ke server basis data melalui jaringan. yaitu ketika Anda biasanya menentukan "localhost" untuk host database Anda, Anda akan menentukan host / alamat IP dari server database Anda. Catatan: biasanya Anda perlu memodifikasi konfigurasi server database Anda untuk mengizinkan koneksi / mengaktifkan mendengarkan pada antarmuka selain antarmuka loopback.


Selain itu, mesin khusus memungkinkan penyesuaian konfigurasi disk dengan tepat. Server web cukup senang ketika data hidup di RAID 6; server database lebih suka RAID 1.
Simon Richter

12

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.


2
Lebih jauh lagi ke komentar Janne: sudut pandang sysadmin ... Ketika Anda memiliki masalah kinerja atau perlu men-debug aplikasi itu adalah jauh lebih mudah dilakukan ketika server web dan server database berada di mesin yang terpisah.
HTTP500

5
  • Beberapa situs web / aplikasi menggunakan database sedemikian rupa sehingga mereka membutuhkan satu atau lebih server yang didedikasikan untuk database itu sendiri.
  • Melalui jaringan.

3

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.


2

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 localhostmembuat kueri basis data itu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.