Ist es sinnvoll, das Stammverzeichnis der SQL Server-Instanz auf einem separaten Laufwerk zu haben?

29

Ich weiß, dass es möglich ist, viele der Standardpfade bei der Installation von SQL Server zu ändern. Wenn ich eine Installation durchführe, ändere ich die Daten- und Protokollordner so, dass sie sich auf separaten Laufwerken befinden (normalerweise D und E) vorinstallierter Rechner, auf dem ein anderer als der Standard-Instanzname ausgeführt wird und der das Stammverzeichnis der Instanz so konfiguriert hat, dass es sich zusammen mit den MDF-Dateien auf dem Laufwerk D befindet. Dies bedeutet, dass auf einem normalerweise relativ sauberen Laufwerk mit nur Ordnern und Datenbankdateien jetzt auch die SQL Server-Binärdateien vollständig installiert sind.

dh ich habe jetzt folgendes:

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

Wo normalerweise würde ich mit so etwas laufen:

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

Ich kann verstehen, warum ein separater Instanz-Binärordner erforderlich ist, aber ich kann nicht verstehen, warum es nützlich wäre, alle diese Binärdateien auf einem separaten Laufwerk abzulegen.

Kann mir jemand sagen, warum es eine vernünftige Sache sein könnte, dies zu tun? Oder macht es einfach überhaupt keinen Unterschied? Mir kommt es einfach furchtbar unordentlich vor ...

adhocgeek
quelle

Antworten:

23

In Bezug auf die Aufteilung der Instanzwurzel gibt es ein paar Argumente dafür.

  1. Einige Leute sind dafür, dass ihr "C" -Laufwerk nur für das Betriebssystem und die Betriebssystem-Binärdateien reserviert bleibt. Dies kann Ihnen einige verschiedene Optionen für die Wiederherstellung im Falle eines Absturzes auf dem C-Laufwerk bieten. Es kann dabei helfen, das Betriebssystem davon abzuhalten, Speicherplatzprobleme zu verursachen oder zu erhalten, die beim Teilen mit anderen Apps auftreten.
  2. Sie isolieren die Binärdateien von SQL Server von anderen Programmen und stellen die Verfügbarkeit einiger kritischer Ordner sicher, z. B. des Protokollordners, in dem Fehlerprotokolle gespeichert sind. Dieser Ordner muss für den Start von SQL Server zugänglich sein. Sie schützen sich im Grunde genommen vor anderen.

Sie können die SQL Server-Binärdateien / -Instanzdateien an derselben Stelle ablegen, an der Sie auch Ihre anderen Programmdateien ablegen. Aber wenn Sie das tun - stellen Sie zumindest sicher, dass Sie Ihre Systemdatenbankdateien und möglicherweise Ihren Standard-Sicherungsspeicherort verwenden und an einen anderen Ort verschieben.

Folgendes mache ich normalerweise, wenn ich eine unbegrenzte Anzahl von Laufwerksbuchstaben zum Spielen habe (mindestens .. Buchstaben sind hier nicht wichtig):

  • Dateien auf C-OS- und Systemebene. Nur
  • D - Programmdateien für alle Apps (einschließlich SQL Server)
  • S - Dateien auf Instanzebene / SQL Server-Systemdatenbanken und -Protokolldateien (mit Ausnahme von TempDB) (Hinweis: Wenn ich mehrere Instanzen habe, mache ich keine vier davon. Ich würde alle SQL-Binärdateien für alle Instanzen aktivieren.) S in den meisten Situationen mit den Ordnern, die die Trennung bereitstellen)

( ED- Ein weiterer Hinweis - Ich habe oft kein "S" -Laufwerk zur Verfügung. Letztendlich befinden sich Ihre Systemdatenbankdateien für Master, Model, MSDB und Resource DB auf demselben Laufwerk wie einige Ihrer Benutzer Datenbankdateien, aber in einem separaten Ordner für die logische Trennung, um die Dinge weniger verwirrend zu halten, ist nicht das Ende der Welt.)

  • F - Datendateien für Benutzerdatenbanken
  • L - Protokolldateilaufwerk für Benutzerdatenbanken
  • T-TempDB
  • X - Sicherungslaufwerk (obwohl ich mich in vielen Fällen dazu entscheide, ein Backup auf ein Netzwerklaufwerk zu streamen, nach dem Backup nicht für eine Kopie zu bezahlen und sofort an einem anderen Speicherort zu sichern.)

Ich habe oft mehr Daten- und Protokolllaufwerke und manchmal ein anderes TempDB-Laufwerk. Wenn Sie mehrere Instanzen hinzufügen, gehen Ihnen schnell die Laufwerksbuchstaben aus. Sie können sicher davonkommen, wenn Sie Ihre Dateien auf Instanzebene auf C: ablegen. Und ich mache eine Menge Gesundheitschecks für Kunden, die so eingerichtet wurden - und ich sage nie "oh wow ... das müssen wir jetzt beheben" - Wenn nun auch ihre TempDB-Datei (en) da sind, werde ich das normalerweise tun Lassen Sie sie das ändern. Verschieben Sie manchmal auch ihre Master- und MSDB-Datenbanken.

Aber die Welt wird nicht untergehen, wenn Sie diese Dinge nicht aufteilen. Ich denke, der Vorteil besteht darin, dass Sie Ihre Dateien wirklich getrennt halten. Als DBA sollten Sie eine gesunde Paranoia in Bezug auf andere Rollen in Ihrem Unternehmen, andere Anwendungen, andere Installationen usw. haben. Je mehr Sie sich vom Konfliktpotenzial abgrenzen können, desto besser werden Sie. Außerdem stehen Ihnen weitere Optionen für die Neuinstallation und Wiederherstellung zur Verfügung. Also ja trennen Sie Ihre Binärdateien von C .. Aber mein Rat wäre nicht, für jede Instanz auf einem separaten Laufwerk verrückt zu werden ..

Mike Walsh
quelle
3

Nun, es gibt nur 26 mögliche Laufwerksbuchstaben in Windows. 1
Sie haben jedoch die Möglichkeit, Einhängepunkte zu verwenden. 2

Wenn Sie also 25 verschiedene Server (SQL, Web, ...) auf einem Computer installieren müssen, kann es sinnvoll sein, einen Laufwerksbuchstaben für einen der Server zu haben.
Wenn Sie jedoch nur einen Server haben, ist es sinnvoller, unterschiedliche Laufwerksbuchstaben für die Protokolldateien, die Datenbank und die Programmdateien zu verwenden.
Sie können die Protokoll- / Datenbank- / Programmdateien auch aufteilen, wenn sie sich in verschiedenen Ordnern befinden.

  1. Stoppen Sie den SQL Server
  2. füge eine Partition hinzu
  3. Kopieren Sie alle Datenbankdateien auf die Partition
  4. Ändern Sie den Einhängepunkt in den Ordner, in dem sich die Datenbankdateien befunden haben (zum Beispiel: d: \ database).
  5. fertig
Gnomix
quelle
Dies beantwortet die Frage überhaupt nicht. Ich fragte nicht nach Laufwerksbuchstaben oder Bereitstellungspunkten, sondern warum es sinnvoll sein könnte, den Instanzstamm auf einem separaten Laufwerk abzulegen. Da es sich um Systemdateien handelt, ist es für mich sinnvoll, sie auf dem Systemlaufwerk zu belassen.
Adhocgeek
1
Es tut mir leid, dass ich dich missverstanden habe. Ein guter Punkt, um alles, was zu SQL gehört, auf einem Laufwerk zusammenzuführen, könnte die Einfachheit eines Backup-Skripts sein, das nur auf diesem Laufwerk ausgeführt werden muss. Wenn Sie jedoch alles nur auf einem Laufwerk speichern, sollten sich die Datenbank, die Binärdateien und die Protokolle in getrennten Ordnern befinden. Und ich kam mit den Mountpunkten zu dem Punkt, dass Sie die Daten auf verschiedenen Partitionen neu organisieren können, ohne das gesamte System zu verändern.
@gnomix Sie können Ihre Antworten (und Fragen) jederzeit bearbeiten, indem Sie auf den Link "Bearbeiten" darunter klicken.
Dezso
@gnomix Die Einfachheit potenzieller Sicherungsskripte ist einer der Hauptgründe, warum ich Daten und Protokolle in der Regel auf eigene Laufwerke lege, aber ich musste die Systemdateien noch nie sichern. Ich würde gerne wissen, ob dies eine häufige Anforderung ist. Mein Instinkt legt mir nahe, dass das Ablegen von Systemdateien auf einem Nicht-Systemlaufwerk Probleme verursachen kann.
Adhocgeek
1
Außerdem hilft die Aufteilung eines Laufwerks in zwei oder mehr Partitionen nicht wirklich bei der Festplatten-E / A. Aber ja, ich stimme dir vollkommen zu. Dadurch sieht es viel besser aus, wenn die Datenbankdateien im Stammverzeichnis des Laufwerks abgelegt werden, und es wird einfacher, Dinge zu erkennen. Normalerweise lege ich alles in Verzeichnisse wie D: \ Data E: \ Logs F: \ Backup, ...
user1207758 15.11.12