Forum Clubic

Backup partielle mysql avec mysqldump --where="CONDITIONS"

Je dois réaliser une backup de mysql mais seulement de certains enregistrements.

Voici les tables simplifiées :

Table “membres” :

id_membre (int, PK) | is_guest (bool)

Table “membre_posts” :

id_membre (int, FK) |  some_data (varchar)

Pour dumper tout les enregistrement de la table membre et membre_posts avec une contrainte commune (ex id_membre), pas de probleme :

mysqldump -u bck_user -p****** --quick --add-locks --lock-tables --complete-insert 
--where="id_membre>2000" MABASE membres membre_posts > c:\test.sql

Maintenant plus dur je souhaite dumper les enregistrements de la table membres et ceux de la table membre_posts dont les id_membre ont dans la table membres is_guest==1

mysqldump -u bck_user -p****** --quick --add-locks --lock-tables 
--complete-insert --where="id_membre IN(SELECT id_membre FROM MABASE.membres 
WHERE MABASE.membre.is_guest=1)" 
MABASE membre membre_posts > c:\test.sql

Et bien sur là ça ne marche pas il me dit :

Tables MABASE.membres has not been locked with READ LOCK

Je comprends l’erreur, mais je n’ai aucune idée comment placer un verrou sur cette table car jamais je pourrai poser un LOCK sur cette table dans le meme thread où s’exécutera mysqldump…

Quelqu’un a t’il une idée ou d’autres outils pour faire des dumps comme ceux la ?

merci :wink:
Edité le 11/11/2007 à 22:34

Je ne sais plus exactement à quoi correspondent

–add-locks --lock-tables

Mais il ne seraient pas incompatibles par hasard ?

–add-locks c’est lors de l’import du dump (LOCK/UNLOCK de chaque table pour speeder les INSERT)

–lock-tables c’est lors de la création du dump

Pour en savoir plus http://dev.mysql.com/doc/refman/5.0/fr/mysqldump.html

Alors personne n’a une idée ?

:icon_biggrin:
Edité le 12/11/2007 à 17:18