J'ai une instance de serveur MySQL configurée avec la journalisation binaire activée. Je ne fais pas de réplication, mais les journaux binaires font partie de notre plan de récupération - pour pouvoir rejouer toutes les transactions depuis la dernière sauvegarde complète.
Il n'y a pas si longtemps, on a remarqué sur un système qui fonctionnait depuis quelques semaines que le journal des erreurs MySQL avait atteint la taille incontrôlée de plus de 5 Go. En regardant dans le journal, presque chaque ligne écrite était un avertissement concernant une "déclaration non sécurisée écrite dans le journal binaire".
Comme je ne contrôle pas l'application qui utilise la base de données, je ne suis pas en mesure d'essayer de rendre ces déclarations "sûres". Ainsi, en guise de "solution", j'ai configuré l'application binlog_format a MIXTE plutôt que DÉCLARATION . Ceci indique à MySQL d'utiliser DÉCLARATION dans la mesure du possible, mais se rabattent sur ROW la journalisation avec des déclarations non sécurisées. En procédant ainsi, nous avons réussi à maintenir la taille du journal des erreurs à un niveau gérable.
CEPENDANT, maintenant les journaux binaires augmentent beaucoup plus rapidement qu'avant (j'ai vu 3 GO de fichiers journaux en quelques heures aujourd'hui), sans doute parce que le système écrit maintenant dans le journal pour chaque ligne affectée (pour les instructions "non sûres"), et pour les instructions qui affectent un grand nombre de lignes, eh bien, vous voyez le tableau.
Je me trouve donc entre le marteau et l'enclume. Si j'utilise le DÉCLARATION les journaux binaires sont gérables, mais je reçois un nombre insensé d'avertissements dans le journal des erreurs. Si j'utilise le format MIXTE le journal des erreurs est correct, mais les journaux binaires se développent suffisamment vite pour remplir la partition en une seule journée.
Ce qui m'amène à ma question : quelle est la répercussion exacte de ces déclarations "non sécurisées" ? Comme je l'ai dit, je n'ai pas de réplication en cours, donc je n'ai pas besoin de m'inquiéter qu'un serveur soit exactement le même qu'un autre. Je dois simplement m'assurer que, dans le cas où nous devrions restaurer une sauvegarde, toutes les données sont présentes. L'enregistrement des instructions "non sûres" entraînera-t-il une perte de données, ou y aura-t-il simplement une situation où certaines lignes seront dans un ordre différent (et éventuellement avec des identifiants de clé primaire différents) ? Si ce n'est pas un problème majeur, je peux désactiver les avertissements dans le journal des erreurs (bien que cela semble lourd).
Sinon, je risque d'être obligé de supprimer complètement la journalisation binaire et de me contenter de sauvegardes complètes potentiellement périmées pour le plan de récupération.
Un conseil dans cette situation ?