J'ai plusieurs hôtes à partir desquels je veux faire la même requête. Alors imaginez, j'ai sur chaque serveur de la base de données db et un test de table comme:Plusieurs instances de client mysql et stdin
mysql> desc test;
+-------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+-------+
| id | int(10) unsigned | NO | PRI | | |
| data | varchar(255) | YES | | NULL | |
+-------+------------------+------+-----+---------+-------+
De toute évidence, chaque test de table a des données différentes, mais ils ont tous le même type. Disons que j'ai 2 hôtes: h1 et h2 qui hébergent ces tables.
Maintenant, j'ai besoin d'écrire un script qui fait la même requête sur chaque hôte et obtient les résultats sur la sortie standard. première idée était:
shell> (mysql -h h1 -u myusername -p mypwd -d db -e "select * from test";
mysql -h h2 -u myusername -p mypwd -d db -e "select * from test";)
> out.txt
Je veux le faire plus rapidement, donc ce que je l'ai été:
shell> (mysql -h h1 -u myusername -p mypwd -d db -e "select * from test" &
mysql -h h2 -u myusername -p mypwd -d db -e "select * from test" &)
> out.txt
Le problème est que j'ai une collision dans mon fichier de sortie comme
458 Karma police
459 876 Paint it black Everything in its right place
460 street spirit
Vous avez deux lignes sur la ligne 2.
Mon idée était que mysql tampon le résultat, de sorte que le tampon pourrait se terminer au milieu d'une rangée. Dans cet exemple, le tampon s'arrêterait à 459. Mais je n'arrive pas à comprendre comment résoudre le problème.
Des idées?
C'était la première idée et cela me donne des résultats valables mais je veux le faire simultanément donc je suis impatient de connaître votre autre option! –
@GuillaumeThomas: L'autre option à laquelle je pourrais penser est la supercherie avec des pipes nommées. Ecrivez la sortie de chaque commande dans un tube séparé, puis lisez-les toutes les deux dans un troisième fichier combiné lorsque vous avez terminé. La partie «difficile» consiste à surveiller les commandes et à déterminer quand elles sont terminées. Si ce que vous voulez est de surveiller les résultats en temps réel, ce n'est pas encore suffisant. – Sorpigal
Oui, je peux comprendre une méthode qui exécute plusieurs processus où chacun enregistre les données dans un fichier, puis concaténer tout dans un fichier. En fait, je m'interrogeais sur une option sur la taille de la mémoire tampon ou quelque chose comme ça –