J'ai découvert qu'il existe peut-être un moyen plus efficace de résoudre ce problème en travaillant sur des tables partitionnées. J'ai dû supprimer des partitions il y a quelques années et j'ai dû en ajouter pour 2014. Presque toutes les partitions signalent cette erreur, donc aussi les anciennes. Accident très méchant.
Donc, tout en laissant tomber l'ancien et en utilisant REORGANIZE de la partition MAXVALUE (la dernière), cela créera de nouveaux fichiers qui sont ok, donc je reçois de moins en moins d'avertissements. En attendant, cela aide à incrémenter le compteur de séquence de journaux, donc je n'ai pas besoin d'insérer de fausses données. J'ai ce qui se passe sur un serveur maître btw ...
Donc ça:
ALTER TABLE Events DROP PARTITION p1530 , p1535 , p1540 , p1545 ,
p1550, p1555 , p1560 , p1565 , p1570 , p1575 , p1580 , p1585 , p1590 ,
p1595 , p1600 , p1605 , p1610 , p1615 , p1620 , p1625 , p1630 , p1635 ,
p1640 , p1645 , p1650 , p1655 , p1660 , p1665 , p1670 , p1675 , p1680 ,
p1685 , p1690 , p1695 , p1700 , p1705 , p1710 , p1715 , p1720 , p1725 ,
p1730 , p1735 , p1740 , p1745 , p1750 , p1755 , p1760 , p1765 , p1770 ,
p1775 , p1780 , p1785 , p1790 , p1795 , p1800 , p1805 , p1810 , p1815 ,
p1820 , p1825 , p1830 , p1835 , p1840;
Et ça:
ALTER table Events REORGANIZE PARTITION p3000 INTO (
PARTITION p3500 VALUES LESS THAN (TO_DAYS('2013-01-01')),
PARTITION p3510 VALUES LESS THAN (TO_DAYS('2013-01-04')),
PARTITION p3520 VALUES LESS THAN (TO_DAYS('2013-01-07')),
PARTITION p3530 VALUES LESS THAN (TO_DAYS('2013-01-10'))
...
PARTITION p4740 VALUES LESS THAN (TO_DAYS('2014-01-08')),
PARTITION p9000 VALUES LESS THAN MAXVALUE)
Cela supprimera efficacement chaque partition dans la modification et la recréera avec une copie temporaire du contenu de ce qui s'y trouvait. Vous pouvez le faire par table si vous le souhaitez, mon application permet que cela se produise, donc pas besoin de vous soucier des sauvegardes synchronisées, etc.
Maintenant, pour le reste de la table, puisque je n'ai pas touché toutes les partitions dans le processus, certaines se retrouveront avec l'avertissement de séquence de journal, pour celles qui sont cassées mais couvertes par cette action de réorganisation, je vais probablement exécuter ceci:
ALTER TABLE Events REBUILD PARTITION p0, p1;
ou ça
ALTER TABLE Events OPTIMIZE PARTITION p0, p1;
Donc, cela m'a fait penser, vous pouvez le faire avec des tables simples, ajouter temporairement des partitions par hachage et les supprimer plus tard (ou les conserver, je peux fortement recommander des partitions).
J'utilise cependant mariadb, pas mysql (donc XtraDB)
Peut-être que cela aide quelqu'un. Je le dirige toujours, jusqu'ici tout va bien. Changer d'ENGINE semble faire le travail aussi, donc je le ramène entre MyIsam et eux vers InnoDB.
C'est assez logique, si vous changez ENGINE, la table disparaît de innodb, donc ce ne sera plus un problème.
ALTER TABLE Events ENGINE=MyISAM;
ALTER TABLE Events ENGINE=InnoDB;
cela semble fonctionner ici. Je peux confirmer quelques éléments sur les tables partitionnées:
- ALTER TABLE xyz ENGINE = InnoDB est très lent, pour Aria (mariadb) deux fois plus rapide, mais en général une manière lente d'incrémenter le compteur de séquence de journaux
- ALTER TABLE xyz REBUILD PARTITION ALL est le moyen le plus rapide de «réparer» les tables et d'aider à incrémenter le compteur
- ALTER TABLE xyz ANALYZE PARTITION ALL est lent comparé à l'ancien et ne réécrit pas les partitions qui s'avèrent correctes. REBUILD assure une réécriture dans un schéma de table temporaire.
J'ai utilisé les derniers sur plusieurs tables. Les avertissements se produisent lorsqu'il essaie d'ouvrir les fichiers et il y en a une pour chaque définition de partition qu'elle ouvre avec des problèmes de compteur. Presque roulé sur le comptoir aujourd'hui pour les dernières tables. Je pense qu'une fois que tout est traité, il faut vider les journaux binaires.
mise à jour : je peux conclure quelques choses maintenant j'ai réussi à régler ce problème.
- Mon plantage a été causé par la réorganisation des partitions sur une table au format Aria (MariaDB).
- (pour moi) faire une reconstruction des partitions a fonctionné le mieux et le plus rapidement pour obtenir le compteur de séquence. La modification du moteur est lente et vous devez le faire deux fois pour affecter innodb. la modification de innoDB est assez lente par rapport à MyIsam ou Aria.
- J'ai mis à niveau vers MariaDB 5.3 et non vers 5.5 (était: 5.2) et cela fonctionne bien. Je pense qu'il y a beaucoup trop de problèmes avec aria, les partitions en 5.5 (et les bugs confirmés) pour utiliser cette combinaison.
- Il devrait vraiment y avoir un meilleur moyen de réinitialiser le compteur de séquence de journaux.