Existe-t-il un moyen d'ignorer une table spécifique dans les journaux binaires?
J'ai des journaux binaires configurés comme ma stratégie de sauvegarde incrémentielle entre les sauvegardes nocturnes. Mais nous avons une énorme table de référence que nous allons mettre à jour tous les soirs à partir d'un processus par lots (table de 70 Go). Ce tableau est uniquement lu et mis à jour tous les soirs à l'aide mysqlimport
.
Pendant le processus de mise à jour de cette table de référence uniquement, les journaux binaires entraînent un retard assez sérieux (surtout lorsque je fais une mise à jour complète de 70 Go). Il faut faire 70 Go deux fois en gros. beurk.
La table de référence utilise actuellement MyISAM (j'ai calé InnoDB en essayant de le charger, donc en essayant MyISAM).
Réponses:
Il n'y a pas d'option mysql pour ignorer une table dans le journal binaire.
Si vous pouviez déplacer la table vers une base de données distincte, vous pourriez utiliser l' option binlog-ignore-db , mais cela a ses pièges . Vous devez comprendre comment MySQL évalue les règles de réplication .
Si vous pouvez écrire un script wrapper pour charger les données au lieu de mysqlimport (la page de manuel indique que c'est une interface de ligne de commande pour LOAD DATA INFILE), et l'utilisateur avec lequel vous importez les données peut avoir le privilège SUPER que vous pourriez utiliser la variable de session sql_log_bin comme:
Cela désactivera la journalisation binaire pour la session en cours, chargera les données et réactivera la journalisation binaire.
la source
vous pouvez utiliser
--replicate-ignore-table=db_name.tbl_name
Voir http://dev.mysql.com/doc/refman/5.1/en/replication-options-slave.html#option_mysqld_replicate-ignore-table pour plus de détails.
la source