locked
Appel à contribution! Publiez un tip, une astuce, ou un petit tutorial (comment faire) sur la technologie que vous connaissez le mieux ! (15-03-2010 - 15-04-2010) RRS feed

  • Question

  • Publiez une astuce ou un petit tutorial (comment faire) sur la technologie que vous connaissez le mieux et vous pourrez beneficier de :

    • La publication de votre article dans la catégorie à venir «  Comment faire »
    • La publication de votre article comme topic permanent pour un mois dans le forum respectif.
    • Le respect et l’appréciation de la communauté

    Plus de détails sur les règles de ce concours :

              Visual Basic .NET

              C#

              Visual C++

              ASP.NET

              SQL Server

              .NET Framework aspects généraux

              ou toute autre technologie Microsoft que vous maitrisez bien

    •  
      • Où poster: comme réponse à un des threads permanents publiés dans les forums(*) :

              Visual Basic .NET : http://social.msdn.microsoft.com/Forums/fr-FR/vbasicfr/threads

              C# : http://social.msdn.microsoft.com/Forums/fr-FR/visualcsharpfr/threads

              Visual C++ : http://social.msdn.microsoft.com/Forums/fr-FR/visualcplusfr/threads

              ASP.NET : http://social.msdn.microsoft.com/Forums/fr-FR/aspnetfr/threads

              SQL Server : http://social.msdn.microsoft.com/Forums/fr-FR/sqlserverfr/threads

              .NET Framework aspects généraux : http://social.msdn.microsoft.com/Forums/fr-FR/netdevelopmentfr/threads

    (*)Si aucun des forums ne correspond pas à votre aire d’expertise, faites-nous savoir et on va ouvrir un thread semblant sur le forum de la technologie où vous êtes expert

     

    •  
      • Evaluation: votes utiles
      • Période d’évaluation: 1 mois ( pour que les autres utilisateurs votent l’article)
      • Comment écrire:

              Soyez original, mais vous pouvez aussi mentionner des liens vers vos blogs personnels, sites web 

              Soyez respectueux : Consultez les règles de conduite sur les forums :  http://social.technet.microsoft.com/Forums/fr-FR/1635/thread/6a3df0a2-47e4-4aa2-bf7f-1ba7b5ad5624

              Rédigez-le de façon universelle: Essayez d’imprimer un style didactique, pour qu’un débutant mais aussi un professionnel expérimenté puisse suivre vos indications .

              Si possible, utilisez des images dans votre article:  Mettez les images dans le dossier Public de http://skydrive.live.com/ en utilisant votre compte. Après ouvrir une image, comme par exemple:  http://cid-5c6d0e429287fe1f.skydrive.live.com/self.aspx/.Public/Conf%20internet.jpg , click droit pour copier et ensuite coller dans le corps de la discussions où vous publier votre article. 

              Jouez honnêtement: Acceptez l’évaluation mensuelle et continuez à participer au concours, soyez tolérant.  

    •  
      • L’article mis en avant sera celui qui comptabilisera  le plus grand nombre de votes utiles
      • Quand sera mis en avant un article: une fois par mois
      • Périodicité du concours: chaque mois – l'edition suivante du concours peut commencer, même si l'article mis en avant n'a pas encore ete publié.
      • Condition nécessaire pour valider une édition: avoir au moins 5 réponses/votes par articles/tip  
      • Limitations de la plateforme :

              On peut pas publier plus de 6000 caractères (environ 2-3 pages Word).

              On ne peut pas ajouter des images directement (mais avec  skydrive comme décrit en haut).

     

    lundi 15 mars 2010 08:22

Toutes les réponses

  • Bonjour

     

    Voici un retour d’expérience sur la mise en place du mirroring entre deux serveurs SQL Server Standard 2005 et plusieurs bases de données. Ce cas est spécifique pour notre environnement mais la démarche est sensiblement la même dans le cas général. J'espère qu'il pourrai aider ceux qui désirent se frotter au mirroring sur SQL server. L'exercice est plaisant et relativement simple.


    Le contexte :

    Une zone réseau DMZ « web » comprend une instance «MSSQL\DMZWEB »  qui assure l’exploitation de bases de  données dédiées :
    - au stockage d’informations utilisateurs,
    - à la consolidation de statistiques (connexions, téléchargements de documents, tracking comportemental)
    - à l’entrepôt de données pour servir un moteur de recherche basé sur une utilisation Ajax en frontal
    - les données sont stockées sur un SAN (Stockage Area Network) mais cela ne change pas grand-chose pour l’utilisateur final. Les volumes sont accessibles comme un disque logique normal.

    Une autre instance, nommée « SQLSERVER\MIRRORING » en zone réseau sécurisée, fait office d’instance « mirroir ». Un seul port est ouvert pour autoriser le mirroring entre le serveur principal en DMZ et le serveur secondaire qui héberge les mirroirs.


    Les pré requis :

    Ormis quelques cas particuliers concernant les premières versions 2005, veillez à ce que vos instances soient de même version si possible, les bases de données configurées en mode de récupération complet. L’administrateur réseau doit vous offir, si besoin, un accès MSSQL\DMZWEB vers SQLSERVER\MIRRORING sur un port dédié. Il doit aussi, temporairement, permettre au serveur de mirroring d’accéder à un répertoire sur le serveur DMZ pour échanger des backups et fichiers de log, nécessaires à l'installation des mirroirs.

     

    Mon choix s’est porté sur le mirroring « haute disponibilité » en mode transaction FULL et synchrone. Pour faire simple, les transactions sont commitées (écrites) sur le serveur mirroir avant de l’être sur le serveur principal. Ce choix permet d’avoir une copie exacte du serveur principal avec un légère perte de performance (consulter ce lien pour en savoir plus selon vos besoins et versions de sql server : http://msdn.microsoft.com/en-us/library/cc917680.aspx).


    La planification des travaux !

    Suivant l’importance et le volume de transaction, la charge de votre serveur, pensez planification.....

    Veillez à trouver une fenêtre d'intervention sur un moment calme où peu de transactions sont jouées. L’idéal est de travailler avec une activité nulle. Attention de bien garder en tête les éventuels plans de maintenance qui sont joués (on sait combien le recours à une documentation soignée est utile dans ce cas-là, n’est-ce pas !).

    Dans le cas présent, l’opération s’est déroulée sur la pause de midi sans perturbation de l’activité. Gardez à l’esprit que l’ordre des travaux est important.


    Sauvegardes, réflexe primaire de tout bon administrateur.

    Le mirroring commence par la sauvegarde de votre base de données sur le serveur principal. Avant de vous lancer tête baissée, calculer la taille prise par vos bases et la place disponible sur les disques recevant la sauvegarde des données et le fichier des transactions (logs). Cela peut vous éviter de graves ennuis...

    Personnellement, j’ai une préférence pour utiliser le SQL pour réaliser les opérations qui vont suivrent. Les interfaces de SQL Server 2005 sont plutôt intuitives mais dans mon cas, le SQL me permet souvent de mettre en place des fonctionnalités là où les assistants ne me l’on pas permit. C’est un autre débat, passons au concret.

    On sauvegarde la base de données sur le serveur principal :
     

    BACKUP DATABASE [portails] TO   DISK = N'D:\backup\portails.bak' WITH NOFORMAT , NOINIT ,   NAME = N'portails-Complète Base de données Sauvegarde' , SKIP , NOREWIND , NOUNLOAD ,   STATS = 10

    GO

    On répète la même opération pour le journal des transactions :

    BACKUP LOG [portails] TO   DISK = N'D:\backup\portails.trn' WITH NOFORMAT , NOINIT ,   NAME = N'portails-Journal des transactions  Sauvegarde' , SKIP , NOREWIND , NOUNLOAD ,   STATS = 10

    GO

    On passe sur le serveur dédiée au mirroring, pour remonter la sauvegarde (le point important est de remonter les bases en mode no_recovery).

    RESTORE DATABASE [portails] FROM   DISK = N'D:\backup\portails.bak' WITH   FILE = 1,   NORECOVERY ,   NOUNLOAD ,   REPLACE ,   STATS = 10

    GO

    Puis c’est le tour au journal des transactions

    RESTORE LOG [portails] FROM   DISK = N'D:\backup\portails.trn' WITH   FILE = 1,   NORECOVERY ,   NOUNLOAD ,   STATS = 10

    GO

    Le plus facile est fait, accrochez-vous , nous passons à la configuration des mirroirs ! Dans le cas présent, nous utilisons des certificats pour l’authentification. N’oubliez pas d’indiquer à votre administrateur réseau le port utilisé. A partir de ce moment, l’ordre des étapes est très important.

    -- Sur le serveur principal, on crée un login, un utilisateur, un certificat, un point de terminaison et on sauvegarde le certificat pour réutilisation sur le serveur secondaire.

    use MASTER

    go

    CREATE LOGIN HOST_DMZ_login WITH PASSWORD = 'c4rp3di3m' ;

    go

    CREATE user HOST_DMZ_user FROM LOGIN HOST_DMZ_login;

    go

    CREATE CERTIFICATE HOST_DMZ_cert WITH subject = 'HOST_DMZ certificate' , start_date = '16/03/2010' , expiry_date = '31/12/2099' ;

    go

    CREATE ENDPOINT endpoint_mirroring state = started AS tcp ( listener_port = 7024, listener_ip = all) FOR database_mirroring ( authentication = certificate HOST_DMZ_cert, encryption = enabled , role = ALL);

    go

    BACKUP CERTIFICATE HOST_DMZ_cert to file = 'd:\backup\HOST_DMZ_cert.cer' ;

    go

     

    -- L’opération est répétée sur le serveur secondaire

    CREATE LOGIN HOST_MIRROR_login WITH PASSWORD = 'c4rp3di3m' ;

    GO

    CREATE user HOST_ MIRROR _user FROM LOGIN HOST_ MIRROR _login;

    GO

    CREATE CERTIFICATE HOST_MIRROR_cert WITH subject = 'HOST_MIRROR certificate' , start_date = '16/03/2010' , expiry_date = '31/12/2099' ;

    GO

    CREATE ENDPOINT endpoint_mirroring state = started AS tcp( listener_port = 7024, listener_ip = all)

    FOR database_mirroring ( authentication = certificate HOST_MIRROR_cert, encryption = enabled, role = PARTNER);

    GO

    BACKUP CERTIFICATE HOST_MIRROR_cert to file = 'd:\backup\HOST_MIRROR_cert.cer' ;

    GO

    Nb : suivant vos configurations, les formats de date seront peut-être à rentrer sous la forme yyyy/mm/dd. Le port utilisé relève de votre choix.

     

    -- Nous passons ensuite à la remontée du certificat sur le serveur principal

    CREATE LOGIN HOST_MIRROR_login WITH PASSWORD= 'c4rp3di3m' ;

    GO

    CREATE user HOST_MIRROR_user FROM LOGIN HOST_MIRROR_login;

    GO

    CREATE certificate HOST_MIRROR_cert Authorization HOST_MIRROR_user From file = 'd:\backup\HOST_MIRROR_cert.cer' ;

    GO

    GRANT CONNECT ON Endpoint :: endpoint_mirroring TO [HOST_MIRROR_login];

    GO

     

    Même opération sur le serveur secondaire

    CREATE LOGIN HOST_DMZ_login WITH PASSWORD = 'c4rp3di3m' ;

    GO

    CREATE user HOST_DMZ_user FROM LOGIN HOST_DMZ_login;

    GO

    CREATE certificate HOST_DMZ_cert Authorization HOST_DMZ_user From file = 'd:\HOST_DMZ_cert.cer' ;

    GO

    GRANT CONNECT ON Endpoint :: endpoint_mirroring TO [HOST_DMZ_login];

    GO

     

    Maintenant, abordons la phase la plus intéressante..à condition que tout se passe bien bien entendu :)

     

    On initialise le mirroir sur le serveur secondaire

    ALTER DATABASE portails SET partner = 'TCP://portails.mondomaine.com:7024' ;

    GO

     

    Pour finir avec le démarrage du mirroir et soufflez un bon coup !

    ALTER DATABASE portails SET partner = 'TCP://mirroirs.mondomaine.com:7024' ;

    GO

    Pour se rassurer, vérifions que tout se passe bien avec le « Moniteur de mise en mirroir » accessible depuis management studio (clic droit sur votre bases de données et choisir Tâches puis « lancer le moniteur de mises en mirroir ») ou si vous préférez une requête SQL.

    SELECT D. name , M. mirroring_state_desc, M. mirroring_partner_name, M. mirroring_safety_level_desc

    FROM sys.database_mirroring as M, sys.databases AS D

    WHERE M. database_id = D. database_id

    ORDER BY D. name ASC

     

    Si tout s’est bien passé, vous dévriez avoir les écrans suivants ou l'indication que les bases sont synchronisées :

    http://cid-67c999d464cbae0a.skydrive.live.com/self.aspx/Public/synchro.png

    http://cid-67c999d464cbae0a.skydrive.live.com/self.aspx/Public/synchro2.png


    Nous aborderons pas les points qui suivent mais sachez qu’ils sont intéressants à mettre en œuvre pour une exploitation agréable de vos mirroirs :

    -       Définition des seuils d’alertes et programmation des notifications d’alertes à des opérateurs.

    -       Basculement manuel sur le mirroir en cas de défaillance (en fait une instruction SQL et une chaîne de connexion à prévoir dans vos applications clientes)

    -       Tuning et modifications synchrone/asynchrone des mirroirs en cas de mauvaises performances si le volume des transactions/opérations est trop important.

    -       Répartition des fichiers de données et de log sur différents volumes physiques.

    -       Snapshot sur les mirroirs

    -       Etc..

    N'hésitez pas à me faire part de vos remarques et questions ! bon concours à tous !

    edit : l'éditeur est un peu restrictif pour l'édition du code html en dur

     

    mercredi 17 mars 2010 16:10
  • Bravo Dimitri !

     

    C’est vrai, on aimerait avoir un éditeur plus facile à utiliser. On travaille pour remédier ce problème.

     

    Cordialement,

    Alex


    Alex Petrescu - MSFT
    jeudi 18 mars 2010 08:36