IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration MySQL Discussion :

Question pour éviter copy_table_tmp


Sujet :

Administration MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 731
    Par défaut Question pour éviter copy_table_tmp
    Bonjour,

    Pour éviter le bloquage d'une table pendant une opération d'ALTER TABLE ...
    J'ai pensé à utiliser l'option : ALGORITHM=INPLACE, LOCK=NONE
    D'après ma lecture, cette option permet de ne pas "locker" la table par contre je me pose la question sur les risques
    comme perte de données ou autres ...
    un autre point, je m attendais à ce que MySQL utilise son "tempdir" mais non ce n'est pas le cas ...

    Merci.

    A+

  2. #2
    Membre chevronné Avatar de licardentaistor
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2021
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juillet 2021
    Messages : 346
    Par défaut
    tu peux développer un peu plus, pourquoi faire un ALTER TABLE ? la structure de table ne peut pas être correct dès le début?

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 731
    Par défaut
    Bonjour licardentaistor,

    Suite à une évolution applicative/éditeur, une mise à jour impose un drop colonnes et add colonnes avec création de nouveaux index.

    Je cherche donc un moyen pour réduire au max la durée de l'indisponibilité de la base actuellement c'est plus d'une demi-journée ...

    Merci.

    A+

  4. #4
    Membre chevronné Avatar de licardentaistor
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2021
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juillet 2021
    Messages : 346
    Par défaut
    a priori vu ta version pas de soucis: https://dev.mysql.com/doc/refman/5.6...perations.html

  5. #5
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 917
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 917
    Par défaut
    Salut à tous.

    Citation Envoyé par dari68
    Pour éviter le blocage d'une table pendant une opération d'ALTER TABLE ...
    Mauvaise idée !!! Et si ta bidouille se passe mal, tu fais quoi ?

    Citation Envoyé par dari68
    Je cherche donc un moyen pour réduire au max la durée de l'indisponibilité de la base actuellement c'est plus d'une demi-journée ...
    En premier lieu, on ne bidouille pas dans une base de données qui est en production.
    Je suis d'accord que rendre une base de données indisponible durant une demi-journée est insupportable.

    Le critère est que ta bidouille doit prendre le moins de temps, disons moins de cinq minutes.
    Au delà de ce temps, c'est pas bon, car comme dit l'adage, le temps c'est de l'argent.
    Comment fait-on ? Deux cas :

    1) tu vas créer un script mysql qui va effectuer ta bidouille, en admettant que cela soit simple à faire.

    Tu arrêtes la base de données en production.
    Tu lances ton script de bidouille, en admettant que tu ne vas pas rencontrer des problèmes non prévus.
    Puis tu redémarres ta base de données.
    C'est une manipulation qui aura été testé (pas en production) avant de le faire car c'est très dangereux.

    2) Par duplication, tu vas créer une nouvelle base de données.
    J'espère que tu as installé le mode de réplication.
    Tu vas devoir créer un point de sauvegarde.
    Disons que ce point se fait, le matin à 10H00.

    Durant ta journée, et tu prends ton temps, tu fais tes bidouilles sur ta base dupliquée.

    Quand tu es prêt pour basculer, tu procèdes :
    --> arrêt de la base de données en production.
    --> tu bascules en production, celle sur laquelle tu viens de bidouiller.
    --> tu recopies par réplication, tout ce qui a été fait depuis 10:00 du matin.
    --> s'il y a encore de la bidouille à faire sur cette partie répliquer, tu dois le faire au travers d'un script mysql.
    --> puis tu redémarres ta base de données.

    3) ce n'est plus une bidouille, c'est une migration de données et de traitements.
    Il faut le faire à des heures où tu impacteras le moins possible tes utilisateurs, soit la nuit, ou soit le weekend.

    C'est ainsi que l'on travaille, en automatisant les bidouilles, et en les testant aupréalable avant de le faire en production.

    Cordialement.
    Artemus24.
    @+

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 731
    Par défaut
    Merci à vous 2 de vos retour,

    Je cherchais un équivalent à l'option "ONLINE" d'Oracle et SQL Server qui permet de créer un index par exemple sans bloquer les accès à la table ...

    A+

Discussions similaires

  1. [XL-2007] Question simple pour éviter les if
    Par Thebeginner dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/10/2011, 10h34
  2. Réponses: 3
    Dernier message: 07/07/2008, 11h46
  3. [QUESTION] Langages à éviter ?
    Par Shadowritter dans le forum Langages de programmation
    Réponses: 28
    Dernier message: 12/01/2005, 10h34
  4. Petite question pour Backup
    Par chicken92000 dans le forum Administration
    Réponses: 2
    Dernier message: 16/09/2004, 16h10
  5. [MIB] Questions pour construire une mib
    Par fadoua dans le forum Développement
    Réponses: 4
    Dernier message: 11/03/2004, 10h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo