คนส่วนใหญ่ใช้งานเซิร์ฟเวอร์ MySQL เซิร์ฟเวอร์เดียวบนเครื่องที่กำหนด แต่มีสถานการณ์ที่การใช้งานหลายเซิร์ฟเวอร์มีประโยชน์: คุณสามารถทดสอบเซิร์ฟเวอร์เวอร์ชันใหม่โดยที่เซิร์ฟเวอร์ที่ใช้งานจริงทำงานอยู่ ในกรณีนี้ เซิร์ฟเวอร์อื่นจะทำงาน
ระบบปฏิบัติการมักจะกำหนดขีดจำกัดกระบวนการโดยรวมเกี่ยวกับจำนวนตัวอธิบายสำหรับไฟล์ที่เปิด หากระบบของคุณประสบปัญหาในการเพิ่มขีดจำกัด การใช้เซิร์ฟเวอร์หลายเครื่องเป็นวิธีการแก้ปัญหาชั่วคราว (เช่น การเพิ่มขีดจำกัดอาจจำเป็นต้องคอมไพล์เคอร์เนลใหม่ และหากเครื่องอยู่นอกเขตอำนาจศาลของคุณ คุณอาจยังไม่สามารถทำได้) ในสถานการณ์สมมตินี้ คุณอาจเรียกใช้หลายอินสแตนซ์ของเซิร์ฟเวอร์เดียวกัน
บริการอินเทอร์เน็ตมักจัดเตรียมการติดตั้ง MySQL ให้กับลูกค้า ซึ่งต้องใช้เซิร์ฟเวอร์แยกต่างหาก ในกรณีนี้ คุณอาจใช้งานเซิร์ฟเวอร์เดียวกันหรือเซิร์ฟเวอร์ต่างกันได้หลายอินสแตนซ์ หากลูกค้าที่ต่างกันต้องการ MySQL เวอร์ชันที่แตกต่างกัน
แน่นอนว่าการใช้งานเซิร์ฟเวอร์หลายเครื่องพร้อมกันนั้นซับซ้อนกว่าการใช้งานเพียงเซิร์ฟเวอร์เดียว หากคุณวางแผนที่จะติดตั้งหลายเวอร์ชัน คุณไม่สามารถติดตั้งทั้งหมดในตำแหน่งเดียวกันได้ เมื่อเซิร์ฟเวอร์กำลังทำงาน พารามิเตอร์บางตัวจะต้องไม่ซ้ำกันสำหรับแต่ละเซิร์ฟเวอร์ พารามิเตอร์เหล่านี้บางส่วนรวมถึงตำแหน่งที่ติดตั้งเซิร์ฟเวอร์: ชื่อพาธไปยังไดเร็กทอรีข้อมูล พอร์ต TCP/IP และชื่อพาธซ็อกเก็ตโดเมน UNIX และบัญชี UNIX ที่ใช้ในการเรียกใช้เซิร์ฟเวอร์หลายเครื่อง (หากไม่ได้ทำงานทั้งหมดภายใต้เซิร์ฟเวอร์บัญชีเดียวกัน) หากคุณตัดสินใจที่จะใช้งานเซิร์ฟเวอร์หลายเครื่อง คุณต้องรักษาคำอธิบายที่ดีของพารามิเตอร์ที่คุณใช้อยู่ เพื่อที่คุณจะได้ไม่พลาดการติดตามการรันของคุณ
กำหนดค่าและติดตั้งเซิร์ฟเวอร์หลายเครื่อง
หากคุณวางแผนที่จะใช้งานเซิร์ฟเวอร์เวอร์ชันที่แตกต่างกันแทนที่จะใช้เซิร์ฟเวอร์เดียวกันหลายอินสแตนซ์ คุณควรติดตั้งเซิร์ฟเวอร์เหล่านั้นในตำแหน่งที่ต่างกัน หากคุณติดตั้งแพ็คเกจการแจกจ่ายแบบไบนารี (ไม่ใช่ RPM) แพ็คเกจเหล่านั้นจะถูกติดตั้งในชื่อไดเร็กทอรีที่มีหมายเลขเวอร์ชัน หากติดตั้งจากการกระจายต้นทาง วิธีที่ง่ายที่สุดในการแยกการกระจายที่แตกต่างกันคือการใช้ตัวเลือก --with-prefix เมื่อรันการกำหนดค่าระหว่างการติดตั้ง MySQL แต่ละเวอร์ชัน ซึ่งจะส่งผลให้มีการติดตั้งในไดเร็กทอรีแยกต่างหากที่สามารถเชื่อมโยงกับหมายเลขเวอร์ชันของการแจกจ่าย ตัวอย่างเช่น คุณสามารถกำหนดค่าแพ็คเกจการแจกจ่าย MySQL ได้ดังต่อไปนี้ โดยที่ version คือหมายเลขเวอร์ชันของ MySQL:
% ./configure ..with-prefix=/usr/local/mysql-version
ตัวเลือกที่มีคำนำหน้าจะกำหนดไดเร็กทอรีข้อมูลเฉพาะของเซิร์ฟเวอร์ด้วย คุณสามารถเพิ่มตัวเลือกเพื่อกำหนดค่าเฉพาะเซิร์ฟเวอร์อื่นๆ ได้ เช่น พอร์ต TCP/IP และชื่อพาธของซ็อกเก็ต (--with-tcp-port และ --with-unix-socket)
หากคุณวางแผนที่จะใช้งานเซิร์ฟเวอร์เดียวกันหลายอินสแตนซ์ จะต้องระบุตัวเลือกเฉพาะสำหรับเซิร์ฟเวอร์ในขณะรันไทม์
กระบวนการเริ่มต้นเซิร์ฟเวอร์หลายเครื่อง
การเริ่มต้นหลายเซิร์ฟเวอร์นั้นซับซ้อนกว่าการใช้เซิร์ฟเวอร์เดียว เนื่องจากทั้ง safe_mysqld และ mysql.server ทำงานได้ดีบนเซิร์ฟเวอร์เดียว ผู้เขียนขอแนะนำให้คุณศึกษา safe_mysqld อย่างรอบคอบ และใช้เป็นพื้นฐานของกระบวนการเริ่มต้น เว้นแต่ว่าคุณจะใช้สำเนาที่ละเอียดมากขึ้นซึ่งปรับเปลี่ยนตามความต้องการของคุณ
ปัญหาหนึ่งที่ต้องจัดการคือวิธีระบุตัวเลือกในไฟล์ตัวเลือก ด้วยเซิร์ฟเวอร์หลายเครื่อง คุณจะไม่สามารถใช้ /etc/my.cnf สำหรับการตั้งค่าที่เปลี่ยนแปลงตามจำนวนเซิร์ฟเวอร์ทั้งหมดได้ ให้ใช้ไฟล์นี้สำหรับการตั้งค่าที่เหมือนกันสำหรับเซิร์ฟเวอร์ทั้งหมดเท่านั้น หากแต่ละเซิร์ฟเวอร์มีตำแหน่งไดเร็กทอรีข้อมูลที่แตกต่างกัน คุณสามารถระบุพารามิเตอร์เฉพาะเซิร์ฟเวอร์ในไฟล์ my.cnf สำหรับไดเร็กทอรีข้อมูลของแต่ละเซิร์ฟเวอร์ได้ กล่าวอีกนัยหนึ่ง ให้ใช้ /etc/my.cnf สำหรับการตั้งค่าที่เซิร์ฟเวอร์ทั้งหมดใช้ และใช้ DATA DIR/my.cnf สำหรับการตั้งค่าเฉพาะเซิร์ฟเวอร์ โดยที่ DATADIR จะเปลี่ยนแปลงสำหรับแต่ละเซิร์ฟเวอร์
อีกวิธีหนึ่งในการระบุตัวเลือกเซิร์ฟเวอร์คือการใช้ - - defa ul ts - file =path_name เป็นตัวเลือกแรกบนบรรทัดคำสั่งเพื่อบอกให้เซิร์ฟเวอร์อ่านตัวเลือกจากไฟล์ที่ระบุโดย path_name ด้วยวิธีนี้ ตัวเลือกเซิร์ฟเวอร์ในไฟล์นั้นสามารถวางได้เฉพาะกับเซิร์ฟเวอร์นั้น จากนั้นบอกให้เซิร์ฟเวอร์อ่านไฟล์เมื่อเริ่มต้นระบบ โปรดทราบว่าหากระบุตัวเลือกนี้ จะไม่มีการใช้ไฟล์ตัวเลือกปกติ (เช่น /etc/my.cnf)