Dowiedziałem się, że istnieje fajniejszy sposób na rozwiązanie tego problemu w przypadku tabel podzielonych na partycje. Musiałem usunąć partycje sprzed kilku lat i musiałem je dodać na 2014 r. Prawie wszystkie partycje zgłaszają ten błąd, więc także stare. Bardzo nieprzyjemny wypadek.
Tak więc podczas gdy DROPPING jest stary i używa REORGANIZE partycji MAXVALUE (ostatniej), utworzy nowe pliki, które są w porządku, więc otrzymuję coraz mniej ostrzeżeń. Tymczasem pomaga zwiększyć licznik sekwencji logów, więc nie muszę wstawiać fałszywych danych. To się dzieje na głównym serwerze btw ...
Więc to:
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;
I to:
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)
To skutecznie usunie każdą partycję ze zmiany i odtworzy ją z tymczasową kopią zawartości tego, co tam było. Możesz to zrobić według tabeli, jeśli chcesz, moja aplikacja na to pozwala, więc nie musisz się martwić o zsynchronizowane kopie zapasowe itp.
Teraz do końca tabeli, ponieważ nie dotknąłem wszystkich partycji w tym procesie, niektóre zostaną z ostrzeżeniem o sekwencji dziennika, dla tych, które są uszkodzone, ale objęte tą reorganizacją, prawdopodobnie uruchomię to:
ALTER TABLE Events REBUILD PARTITION p0, p1;
albo to
ALTER TABLE Events OPTIMIZE PARTITION p0, p1;
Pomyślałem, że możesz to zrobić przy użyciu zwykłych tabel waniliowych, tymczasowo dodawać partycje za pomocą skrótu, a później je usuwać (lub zachować je, zdecydowanie zalecam partycje).
Używam jednak mariadb, nie mysql (więc XtraDB)
Być może to pomaga komuś. Nadal go uruchamiam, jak dotąd tak dobrze. Wydaje się, że zmiana SILNIKA również wykonuje tę pracę, więc przenoszę ją między MyIsam a nimi z powrotem do InnoDB.
Jest to dość logiczne, jeśli zmienisz SILNIK, tabela zniknie z innodb, więc nie będzie już problemem.
ALTER TABLE Events ENGINE=MyISAM;
ALTER TABLE Events ENGINE=InnoDB;
wydaje się, że tutaj działa. Mogę potwierdzić kilka rzeczy na partycjonowanych tabelach:
- ALTER TABLE xyz ENGINE = InnoDB jest bardzo wolny, do Arii (mariadb) dwa razy szybszy, ale ogólnie powolny sposób na zwiększenie licznika sekwencji logów
- ALTER TABLE xyz REBUILD PARTITION ALL to najszybszy sposób na „naprawienie” tabel i pomoc w zwiększeniu licznika
- ALTER TABLE xyz ANALYZE PARTITION ALL jest powolny w porównaniu do poprzedniej i nie przepisuje partycji, które sprawdzają się poprawnie. REBUILD zapewnia przepisanie schematu tabeli tymczasowej.
Użyłem ostatnich na kilku stołach. Ostrzeżenia pojawiają się, gdy próbuje otworzyć pliki i jest jeden dla każdej definicji partycji, którą otwiera z problemami z licznikami. Prawie przewrócił się dzisiaj na ladzie dla ostatnich stołów. Myślę, że kiedy wszystko zostanie przetworzone, trzeba opróżnić dzienniki binarne.
aktualizacja : Mogę podsumować kilka rzeczy, teraz udało mi się rozwiązać ten problem.
- Moja awaria została spowodowana reorganizacją partycji na stole w formacie Aria (MariaDB).
- (dla mnie) przebudowa partycji działała najlepiej i najszybciej, aby uzyskać wyrównanie sekwencji. Zmiana silnika jest wolna i musisz zrobić to dwa razy, aby wpłynąć na innodb. zmiana na innoDB jest dość wolna w porównaniu do MyIsam lub Aria.
- Uaktualniłem do MariaDB 5.3, a nie do 5.5 (było: 5.2) i działa dobrze. Myślę, że jest zbyt wiele problemów z arią, partycjami w 5.5 (i potwierdzonymi błędami), aby używać tej kombinacji.
- Naprawdę powinien istnieć lepszy sposób na zresetowanie licznika sekwencji dziennika.