sql bonnes pratiques

Best Practices SQL Server

26/02/2014
Données
Infrastructure IT
Sécurité

La simplicité peut n'être qu'une apparence. Microsoft SQL Server est un moteur de bases de données relationnelles qui permet de créer votre première base dès l'installation terminée. Cette apparente simplicité du produit, quelques clics de souris, vous fait croire que votre installation est correcte et sans faille … Il en va tout autrement en réalité...

Les apparences sont trompeuses

Malheureusement, les apparences sont trompeuses. Une installation nécessite la prise en compte de Best Practices en fonction d'éléments tels que :

  • vos besoins prĂ©sents tout en anticipant l'avenir
  • votre configuration physique ou virtuelle
  • votre type de stockage
  • votre configuration rĂ©seau

Cette approche vous garantira une pĂ©rennitĂ© et sera moins coĂ»teuse qu'une rĂ©organisation complète demandant dans la plupart des cas un arrĂŞt de production.

La sécurité

Une installation MS SQL Server commence par ses fondations représentées par le système d'exploitation Windows. Dans la mesure du possible, le serveur fera partie d'un annuaire Active Directory où un compte de service dédié à MS SQL sera créé pour mieux gérer la sécurité. Pourquoi ne pas déléguer la sécurité à l'Administrateur Système en utilisant des Groupe AD au sein de votre instance SQL ?

Le choix de l'édition : une de ses conséquences

Le choix de l'Ă©dition Standard et Entreprise est important, ce n'est pas la peine d'installer une seule instance SQL Standard sur un serveur disposant de 32 coeurs car seuls 4 d'entre eux seront utilisĂ©s Ă  cause de la limite fixĂ©e par l'Ă©dition Standard.

 Choix des ressources disques

Lors de l'installation, les ressources disques sont importantes tant pour la sécurité de vos bases de données que pour les performances.

Pour la sécurité:

  • Sur le disque C: rĂ©servĂ© au système d'exploitation et aux programmes partagĂ©es MS SQL
  • Sur le disque D: moteur SQL + Bases systèmes master, model, tempdb, msdb, distribution
  • Sur le disque E: bases de donnĂ©es utilisateurs, fichiers .mdf et .ndf
  • Sur le disque F: journaux de transactions, fichier .ldf et celui de la base tempdb
  • Sur le disque G: les sauvegardes locales

Ceci est un exemple type. On peut encore améliorer en ajoutant une ressource pour les index et d'autres pour y stocker des partitions. Mais comme précisé plus avant, ceci s'organise.

Pour les performances:

  • Il faut utiliser des groupes de fichiers pour les donnĂ©es, d'autres pour les index, les partitions, constituĂ©s de plusieurs fichiers secondaires n'excĂ©dants pas la taille de 32 Go. En procĂ©dant ainsi, le moteur Ă©crira les informations par bande.
  • Pour des bases de taille consĂ©quente, il sera ainsi possible de sauvegarder une base par groupes de fichiers plutĂ´t que de sauvegarder la base de donnĂ©es complète.
  • Attention aux informations que vous pouvez trouver sur Internet sur la possibilitĂ© de crĂ©er la base avec un seul fichier .mdf de 800 Go voir supĂ©rieur Ă  1 To. Oui, c'est possible, mais il faut plutĂ´t rester raisonnable surtout quand on mĂ©lange les tables, les vues, les index, les objets systèmes, … dans un seul et mĂŞme fichier !

Etanchéité

Lorsque votre instance est créée, il y a des actions post-installation importantes à mener pour la rendre "étanche". Les éditeurs, ne connaissant pas la configuration des serveurs de leurs clients, vont s'appuyer sur la base système model pour créer les leurs. Si cette base model n'est pas configurée en fonction de vos exigences, le résultat ne correspondra pas à celui attendu. De nombreux clients utilisent seulement les 2 fichiers principaux qui constituent une base de données minimale : le fichier .mdf et le fichier .ldf. Il faut savoir que le fichier Master Data File (mdf) contient les informations systèmes de sa propre base comme les objets (tables, vues, index, …), les utilisateurs et leurs droits associés, … Créer vos propres objets dans ce fichier revient au même que si vous créez des tables directement dans la base système master de l'instance … Il est recommandé de créer des groupes de fichiers pour les objets utilisateurs.

Type d'utilisation de la base

En fonction de l'utilisation de l'instance en mode OLTP, (transactions courtes de type insert, update, delete, merge, select, …) ou OLAP, pour le décisionnel, les paramètres ne seront pas les mêmes, il faudra les adapter à partir de votre cahier des charges.

Backup et Recover

Il existe 2 méthodes principales pour récupérer une base de données:

  • Le mode SIMPLE, qui ne garantit la rĂ©cupĂ©ration de donnĂ©es qu'Ă  partir de la dernière sauvegarde. Dans ce cas, vous autorisez la perte de donnĂ©es saisies depuis la dernière sauvegarde en cas de crash.
  • Le mode FULL, qui garantit la rĂ©cupĂ©ration complète de la base de donnĂ©es en cas de crash.

En fonction du mode de rĂ©cupĂ©ration, les procĂ©dures de sauvegarde ne seront pas les mĂŞmes. Beaucoup pensent que le Backup Full effectue une sauvegarde de la base de donnĂ©es ainsi que du journal de transaction, c'est faux, il ne prend en charge que la base de donnĂ©es, c’est-Ă -dire le contenu des fichiers .mdf et .ndf. C'est pour cette raison qu'il est frĂ©quent de trouver un log de 1 Go pour une base de 300 Mo… Pour garantir le maintien des informations en cas de crash, les transactions contenues dans le fichier .ldf ne pourront ĂŞtre purgĂ©es qu'Ă  l'issue d'un BACKUP LOG et non d'un BACKUP DATABASE. Si vous trouvez dans les procĂ©dures de sauvegarde le passage du mode de rĂ©cupĂ©ration FULL Ă  SIMPLE pour le vider puis de SIMPLE Ă  FULL pour sĂ©curiser Ă  nouveau la base de donnĂ©es, c'est que la personne n'a pas compris le principe et risque la perte de donnĂ©es en cas de crash !

PRA

Pour les solutions de PRA, les procĂ©dures de sauvegardes mĂ©ritent une attention plus importante encore. Par exemple, il ne faut pas se limiter Ă  mettre en oeuvre les procĂ©dures de sauvegardes que sur le serveur actif d'un miroir SQL. En effet, en cas de bascule vers le serveur de secours, ces procĂ©dures de sauvegardes ne seront pas prĂ©sentes sur ce serveur . Par contre, si ces procĂ©dures de sauvegarde sont bien prĂ©sentes sur les deux serveurs, pensez Ă  les configurer de telle sorte qu'ils ne gĂ©nèrent pas d'alertes Ă  partir du serveur passif en raison du statut des bases de donnĂ©es sur ce serveur : en mode RECOVERY et donc inaccessibles.

Best Practices

Il n'est jamais trop tard pour se remettre sur les rails des "Best Practices". Souvent, celles-ci ont Ă©vitĂ© le remplacement de la configuration matĂ©rielle qui n'aurait fait que repousser les problèmes de performances dans le temps au lieu de les corriger. ----------------------------------------------------------------------------------------------------------------------------------- Digora possède une large expĂ©rience sur la mise en oeuvre et l'administration de Microsoft SQL Server. Vous souhaitez en savoir plus sur sur ce sujet ? Contactez-nous ici pour de plus amples informations. Index thĂ©matique du Blog Digora

copy-link