มีประโยชน์หรือไม่หากมีไดเรกทอรีรูตอินสแตนซ์ของ SQL Server บนไดรฟ์แยกต่างหาก


29

ฉันรู้ว่าเป็นไปได้ที่จะเปลี่ยนเส้นทางเริ่มต้นจำนวนมากเมื่อติดตั้ง SQL Server และโดยทั่วไปเมื่อฉันติดตั้งฉันเปลี่ยนข้อมูลและโฟลเดอร์บันทึกเป็นไดรฟ์แยกต่างหาก (โดยทั่วไปคือ D และ E) แต่ฉันเพิ่งได้รับ เครื่องที่ติดตั้งล่วงหน้าซึ่งใช้ชื่ออินสแตนซ์นอกเหนือจากค่าเริ่มต้นและพวกเขาได้กำหนดค่าไดเรกทอรีรากของอินสแตนซ์ให้อยู่ในไดรฟ์ D พร้อมกับไฟล์ mdf ซึ่งหมายความว่าสิ่งที่ตามปกติจะเป็นไดรฟ์ที่ค่อนข้างสะอาดโดยมีเพียงโฟลเดอร์และไฟล์ฐานข้อมูลในตอนนี้ฉันมีการติดตั้งไบนารีของ SQL Server แบบเต็มเช่นกัน

คือตอนนี้ฉันมีดังต่อไปนี้:

C:\Program Files\Microsoft SQL Server\ --Base Install
D:\Microsoft SQL Server\MSSQL10_50.MyInstance --Instance Binaries
D:\Microsoft SQL Server\MSSQL10_50.MyInstance\MSSQL\DATA --Data Files
E:\Microsoft SQL Server\MSSQL10_50.MyInstance\MSSQL\LOGS --Log Files

โดยปกติแล้วฉันจะวิ่งด้วยบางสิ่งเช่น:

C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\ --Base Install & Default Instance Binaries
D:\MSSQL\DATA --Data Files
E:\MSSQL\LOGS --Log Files

ฉันสามารถเข้าใจได้ว่าทำไมต้องมีโฟลเดอร์ไบนารีอินสแตนซ์แยกต่างหาก แต่ฉันไม่เห็นว่าทำไมจึงมีประโยชน์ที่จะนำไบนารีเหล่านั้นทั้งหมดไปไว้ในไดรฟ์แยกต่างหาก

มีใครบอกฉันได้ไหมว่าทำไมจึงควรทำอย่างสมเหตุสมผล หรือบางทีมันอาจสร้างความแตกต่างไม่ได้เลย? สำหรับฉันมันดูเหมือนไม่เรียบร้อยชะมัด ...

คำตอบ:


23

เมื่อพิจารณาถึงการแยกอินสแตนซ์รูทจะมีการโต้แย้งสองสามอย่างที่ทำเช่นนั้น

  1. บางคนชอบที่จะรักษาไดรฟ์ "C" ไว้เฉพาะกับระบบปฏิบัติการและไบนารีเท่านั้น สิ่งนี้สามารถให้ตัวเลือกต่าง ๆ สำหรับการกู้คืนในกรณีที่เกิดความผิดพลาดในไดรฟ์ C ซึ่งจะช่วยป้องกันไม่ให้ระบบปฏิบัติการก่อให้เกิดหรือรับปัญหาเกี่ยวกับพื้นที่จากการแชร์กับแอพอื่น ๆ
  2. คุณกำลังแยกไบนารีของ SQL Server จากโปรแกรมอื่น ๆ และตรวจสอบความพร้อมใช้งานของโฟลเดอร์ที่สำคัญบางอย่างเช่นโฟลเดอร์บันทึกที่บันทึกข้อผิดพลาดไป - โฟลเดอร์นี้จะต้องสามารถเข้าถึงได้สำหรับเซิร์ฟเวอร์ SQL ที่เริ่มทำงาน คุณกำลังปกป้องตัวเองจากผู้อื่นโดยพื้นฐาน

คุณสามารถวางไฟล์ไบนารี / อินสแตนซ์ของ SQL Server ไว้ในที่เดียวกับที่คุณวางไฟล์โปรแกรมอื่นของคุณ แต่ถ้าคุณทำอย่างน้อยต้องแน่ใจว่าคุณใช้ไฟล์ฐานข้อมูลระบบและอาจเป็นที่ตั้งสำรองข้อมูลเริ่มต้นของคุณและย้ายไปที่อื่น ..

นี่คือสิ่งที่ฉันมักจะทำเมื่อได้รับจดหมายไม่ จำกัด จำนวนไดรฟ์เพื่อเล่น (อย่างน้อย .. ตัวอักษรไม่สำคัญที่นี่):

  • C - ระบบปฏิบัติการและไฟล์ระดับระบบ เท่านั้น
  • D - ไฟล์โปรแกรมสำหรับแอพทั้งหมด (รวมถึง SQL Server)
  • S - อินสแตนซ์ไฟล์ระดับ / ฐานข้อมูลระบบ SQL Server และไฟล์บันทึกโดยทั่วไป (ยกเว้น TempDB) (หมายเหตุ .. หากฉันมีหลายอินสแตนซ์ฉันจะไม่ทำ 4 สิ่งเหล่านี้ .. ฉันจะใส่ไบนารี SQL ทั้งหมดสำหรับทุกอินสแตนซ์บน S ในสถานการณ์ส่วนใหญ่โดยมีโฟลเดอร์ที่ให้การแยก)

( ED-หมายเหตุอื่น - ฉันมักจะไม่มีไดรฟ์ "S" ในตอนท้ายของวันมีไฟล์ฐานข้อมูลระบบของคุณสำหรับ Master, Model, MSDB และ Resource db อยู่ในไดรฟ์เดียวกับผู้ใช้ของคุณ ไฟล์ฐานข้อมูล แต่ในโฟลเดอร์แยกต่างหากสำหรับการแยกเชิงตรรกะเพื่อลดความสับสนให้น้อยลงไม่ใช่จุดสิ้นสุดของโลก)

  • F - ไฟล์ข้อมูลสำหรับฐานข้อมูลผู้ใช้
  • L - ล็อกไฟล์ไดรฟ์สำหรับฐานข้อมูลผู้ใช้
  • T - TempDB
  • X - ไดรฟ์สำรอง (แม้ว่าในหลายกรณีฉันเลือกที่จะสตรีมข้อมูลสำรองไปยังไดรฟ์เครือข่ายโดยไม่จ่ายเงินสำหรับการคัดลอกหลังการสำรองข้อมูลและฉันสำรองข้อมูลทันทีเพื่อเก็บไว้ที่อื่น)

ฉันมักจะมีข้อมูลเพิ่มเติมและไดรฟ์บันทึกและบางครั้งไดรฟ์ TempDB อื่น เพิ่มในหลายอินสแตนซ์และคุณสามารถใช้ตัวอักษรไดรฟ์ได้อย่างรวดเร็ว คุณสามารถหนีไปได้อย่างแน่นอนด้วยการวางไฟล์ระดับอินสแตนซ์ของคุณใน C: และฉันทำการตรวจสุขภาพมากมายสำหรับลูกค้าที่ติดตั้งแบบนั้น - และฉันไม่เคยพูดว่า "โอ้ว้าว .. เราต้องแก้ไขมันตอนนี้" - ตอนนี้ถ้าไฟล์ TempDB ของพวกเขาอยู่ที่นั่นเช่นกันโดยทั่วไปฉันจะ ให้พวกเขาเปลี่ยนสิ่งนั้น บางครั้งย้ายต้นแบบและฐานข้อมูล MSDB ของพวกเขาเช่นกัน ..

แต่โลกจะไม่สิ้นสุดหากคุณไม่แยกสิ่งเหล่านี้ออก ฉันคิดว่าประโยชน์คือการแยกไฟล์ของคุณออกจากกัน ในฐานะ DBA คุณควรมีความหวาดระแวงที่ดีต่อบทบาทอื่น ๆ ใน บริษัท ของคุณแอพพลิเคชั่นอื่น ๆ การติดตั้งอื่น ๆ และยิ่งคุณสามารถแยกตัวคุณเองออกจากความขัดแย้งที่อาจเกิดขึ้น และยังมีตัวเลือกเพิ่มเติมสำหรับการติดตั้งและกู้คืน ดังนั้นใช่แยกไบนารีของคุณออกจาก C .. แต่คำแนะนำของฉันจะไม่ไปบ้าในไดรฟ์ที่แยกต่างหากสำหรับแต่ละครั้ง ..


3

มีตัวอักษรไดรฟ์ที่เป็นไปได้เพียง 26 ตัวใน Windows 1
แต่คุณมีโอกาสที่จะใช้จุดยึด 2

ดังนั้นหากคุณต้องการติดตั้งเซิร์ฟเวอร์ 25 ตัว (SQL, Web, ... ) ที่แตกต่างกันในเครื่องเดียวคุณควรมีตัวอักษรชื่อไดรฟ์หนึ่งตัวสำหรับเซิร์ฟเวอร์ตัวใดตัวหนึ่ง
แต่ถ้าคุณมีเซิร์ฟเวอร์เพียงเครื่องเดียวมันจะเหมาะสมกว่าถ้ามีตัวอักษรไดรฟ์ที่แตกต่างกันสำหรับไฟล์บันทึกฐานข้อมูลและโปรแกรมไฟล์
นอกจากนี้คุณยังสามารถแยกบันทึก / ฐานข้อมูล / โปรแกรมไฟล์หากอยู่ในโฟลเดอร์ที่แตกต่างกัน

  1. หยุดเซิร์ฟเวอร์ SQL
  2. เพิ่มพาร์ติชัน
  3. คัดลอกไฟล์ฐานข้อมูลทั้งหมดไปยังพาร์ติชัน
  4. เปลี่ยนจุดเชื่อมต่อไปยังโฟลเดอร์ที่มีไฟล์ฐานข้อมูลอยู่ (เช่น: d: \ database)
  5. เสร็จ

นี่ไม่ได้ตอบคำถามเลย ฉันไม่ได้ถามเกี่ยวกับตัวอักษรของไดรฟ์หรือจุดเชื่อมต่อฉันถามว่าทำไมการใส่อินสแตนซ์ของไดรฟ์แยกต่างหาก เนื่องจากไฟล์เหล่านี้เป็นไฟล์ระบบสำหรับฉันแล้วการทิ้งไว้ในไดรฟ์ระบบ
adhocgeek

1
ฉันขอโทษฉันเข้าใจผิดคุณ จุดที่ดีในการรวมทุกอย่างที่เป็นของ SQL ไว้ด้วยกันบนไดรฟ์หนึ่งอาจเป็นความเรียบง่ายของแบ็คอัพสคริปต์ซึ่งจำเป็นต้องรันบนไดรฟ์นี้เท่านั้น แต่ถ้าคุณใส่ทุกอย่างไว้ในไดรฟ์เดียวฐานข้อมูลไบนารีและบันทึกควรอยู่ในโฟลเดอร์ที่แยกกัน และฉันมาถึงจุดนั้นด้วยจุดเมานท์ที่คุณสามารถจัดระเบียบข้อมูลบนพาร์ติชั่นต่าง ๆ โดยไม่ต้องเปลี่ยนทั้งระบบ

@gnomix คุณสามารถแก้ไขคำตอบ (และคำถาม) ได้ตลอดเวลาโดยคลิกที่ลิงก์ 'แก้ไข' ด้านล่าง
dezso

@gnomix ความเรียบง่ายของสคริปต์สำรองที่อาจเกิดขึ้นเป็นหนึ่งในสาเหตุหลักที่ฉันมักจะใส่ Data และ Logs ลงในไดรฟ์ของตัวเอง แต่ฉันไม่จำเป็นต้องสำรองไฟล์ระบบ ฉันต้องการทราบว่านี่เป็นข้อกำหนดทั่วไปหรือไม่ สัญชาตญาณของฉันแนะนำให้ฉันว่าการวางไฟล์ระบบในไดรฟ์ที่ไม่ใช่ระบบอาจทำให้เกิดปัญหา
adhocgeek

1
นอกจากนี้การแยกไดรฟ์ออกเป็นสองพาร์ติชั่นหรือมากกว่านั้นจะไม่ช่วยให้ดิสก์ I / O จริงๆ แต่ใช่ฉันเห็นด้วยกับคุณโดยสิ้นเชิง มันทำให้ทุกอย่างดูดีกว่ามากเมื่อใส่ไฟล์ฐานข้อมูลลงในรูทของไดรฟ์และทำให้ง่ายต่อการตรวจจับสิ่งต่าง ๆ ฉันมักจะใส่ทุกอย่างลงในไดเรกทอรีเช่น D: \ Data E: \ Logs F: \ Backup, ...
user1207758
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.