2008-12-10 5 views
6

Dans MySQL, en utilisant la réplication basée sur les instructions, je suppose que chaque instruction SQL est exécutée sur l'esclave exactement de la même manière que sur le maître. Cependant, quand je lance la déclaration:Comment 'LOAD DATA INFILE' fonctionne-t-il dans la réplication basée sur des instructions?

LOAD DATA INFILE 'filename' INTO SomeTable; 

Je ne sais pas si le fichier doit exister sur l'esclave de la même manière à elle le fait sur le maître. Quelqu'un peut-il me diriger vers la documentation de cette fonctionnalité?

Répondre

5

Il semble que le fichier que vous chargez avec LOAD DATA INFILE sur le maître sont transférées automatiquement via le journal de réplication du maître à l'esclave. L'esclave charge ces fichiers lorsqu'il atteint le LOAD DATA INFILE dans la file d'attente de réplication basée sur l'instruction.

Je déduis cela de quelques déclarations dans les documents:

16,1: Backing Up Replication Slaves

Si votre serveur MySQL est un serveur de réplication esclave , alors quel que soit la méthode de sauvegarde choisissez, vous devrait également sauvegarder les fichiers master.info et relay-log.info lorsque vous retournez les données de votre esclave. Ces fichiers sont toujours nécessaires pour reprendre la réplication après la restauration des données de l'esclave. Si votre esclave est susceptible de répliquer les commandes LOAD DATA INFILE , doit également sauvegarder tous les fichiers SQL_LOAD- * pouvant exister dans le répertoire spécifié par l'option --slave-load-tmpdir.

16.1.2.3: Replication Slave Options and Variables

Lorsque le thread SQL répliquer une instruction DATA INFILE CHARGE, il extrait le fichier à charger à partir le journal de relais dans des fichiers temporaires, puis les charge dans la table. Si le fichier chargé sur le maître est énorme, les fichiers temporaires sur l'esclave sont énormes aussi. Par conséquent, il peut être conseillé d'utiliser cette option pour indiquer à l'esclave de placer des fichiers temporaires dans un répertoire situé dans un système de fichiers qui a beaucoup d'espace disponible. Dans ce cas, les journaux de relais sont énormes comme bien, de sorte que vous pouvez également utiliser l'option --relay-log pour placer les journaux de relais dans ce système de fichiers.

Questions connexes