est-il possible de connecter des instructions Créer / Alter sur un serveur MySQL via phpmyadmin? J'ai entendu dire que cela pouvait être fait avec un déclencheur, mais je ne peux pas sembler trouver du code approprié n'importe où. J'aimerais enregistrer ces déclarations à une table, de préférence avec l'horodatage du moment où ils ont été émis. Quelqu'un peut-il me fournir un exemple de déclencheur qui me permettrait d'accomplir cela? P>
Je voudrais enregistrer ces déclarations afin que je puisse facilement synchroniser les modifications avec un autre serveur MySQL. P>
4 Réponses :
La réponse à votre question tombera dans l'une des informations répertoriées dans MySQL Server Logs P>
Si vous voulez simplement obtenir les déclarations Créer / Alter, j'irais avec Le journal général de la requête . Mais vous devrez analyser le fichier manuellement. Soyez conscient des problèmes de sécurité Cette approche augmente. P>
Dans votre scénario, la réplication semble être une overcilleuse. P>
Les déclencheurs ne sont pas une option valide car elles ne sont supportées que lors de la sélection, de la mise à jour et de l'insertion de niveau et non d'alter / créer. p>
Le journal de requête serait le meilleur choix, mais comme vous l'avez mentionné sur des serveurs occupés, les journaux entraîneraient une pénalité d'efficacité considérable. La seule alternative supplémentaire que je connaisse est Proxy MySQL . P>
Le serveur SQL est assez occupé (plus de 70 requêtes par seconde), donc je ne veux donc pas enregistrer chaque requête. Et il ne semble pas que cela soit possible de filtrer quelles requêtes devraient être enregistrées dans le journal de la requête générale.
Vous pouvez faire que le fichier journal soit une FIFO qui est écouté par un autre démon qui filtre les entrées de journal au fur et à mesure de leur arrivée. Cela réduirait la peine que vous ne voudriez pas que tout ne soit pas le coût de la rédaction du disque.
Je pense que votre meilleur choix serait de rechercher l'utilisation de procédures stockées et de fonctions ici pour apporter des modifications à votre DB. De cette façon, vous pouvez regarder les données de journalisation manuelle. P>
J'utilise phpmyadmin pour modifier la structure de la base de données et appelle directement les déclarations Alter / Create.
Il y a un patch pour phpmyadmin qui Fournit une journalisation configurable avec seulement quelques modifications de code simples. P>
Nous avons fait cela à mon travail, puis je l'ai modifié davantage pour vous connecter à des dossiers de jour, logez des adresses IP et quelques autres choses et cela fonctionne bien. P>
merci@unreason pour le lien, je ne pouvais pas me rappeler où je l'ai trouvé. P>
Était-ce Sourceforge.net/tracker/... ?
@UnReason - Oui c'était celui qui était celui.
Le code a l'air un peu compliqué, mais je vais y jeter un coup d'œil.
Si vous rencontrez des problèmes, étendez la question ou ouvrez un nouveau pour modifier le script.
Voici un script qui ferait ce que vous voulez pour mysql-proxy (vérifier le lien sur les documents officiels comment installer le proxy).
Pour enregistrer réellement les requêtes Vous pouvez utiliser quelque chose aussi simple que P>
mysql -u user -p -h 127.0.0.1 -P 4040
Essayez-vous de synchroniser tous les changements? La réplication peut être la réponse?
Non. Les bases de données contiennent des données différentes, je veux juste garder les structures des tables en synchronisation.
Une courte recherche est allumée Ce . Je ne sais pas s'il est maintenu (ou si c'est le projet, Jarod parle de), mais cela semble assez simple.
Pouvez-vous confirmer que vous êtes intéressé à vous connecter seulement i> requêtes phpmyadmin? Si oui (et ce serait la voie à suivre parce que vous pouvez éviter la journalisation des requêtes normales), jetez un coup d'œil à la réponse de Jarod et de la mine.
Oui, c'est bien si la solution ne fonctionne que dans phpmyadmin.
Ah, eh bien ... j'ai déjà posté une réponse plus générale déjà