Я з'ясував, що існує, мабуть, крутіший спосіб вирішити цю проблему, працюючи над розділеними таблицями. Мені потрібно було скинути розділи з декількох років тому, і довелося додати їх за 2014 рік. Практично всі розділи повідомляють про цю помилку, як і старі. Дуже неприємна аварія.
Тож, ВІДКРИТИ старий і використовуючи REORGANIZE розділу MAXVALUE (останній), він створить нові файли, які є в порядку, тому я отримую все менше і менше попереджень. Тим часом це допомагає збільшити лічильник послідовностей журналів, тому мені не потрібно вставляти помилкові дані. У мене це відбувається на головному сервері btw ...
Отже це:
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;
І це:
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)
Це ефективно скине кожен розділ у зміну та відтворить його за допомогою тимчасової копії вмісту того, що там було. Ви можете робити це за столом, якщо хочете, моя програма дозволяє це статися, тому не потрібно турбуватися про синхронізовані резервні копії тощо.
Тепер для решти таблиці, оскільки я не торкнувся всіх розділів у процесі, для деяких залишиться попередження про послідовність журналів, для тих, які порушені, але охоплені цією дією реорганізації, я, ймовірно, запускаю це:
ALTER TABLE Events REBUILD PARTITION p0, p1;
або це
ALTER TABLE Events OPTIMIZE PARTITION p0, p1;
Отже, це наштовхнуло мене на думку: Ви можете це зробити за допомогою простих таблиць ванілі, тимчасово додайте розділи хешем і пізніше видаліть їх (або зберегти їх, я настійно рекомендую розділи).
Я використовую mariadb, однак не mysql (так XtraDB)
Можливо, це комусь допомагає. Я все ще працюю, поки що так добре. Зміна ENGINE, здається, також виконує цю роботу, тому я повертаю її назад / назад між MyIsam та ними назад до InnoDB.
Досить логічно, якщо ви зміните ENGINE, таблиця зникає з innodb, тому це вже не буде проблемою.
ALTER TABLE Events ENGINE=MyISAM;
ALTER TABLE Events ENGINE=InnoDB;
це, здається, працює тут. Я можу підтвердити кілька речей на розділених таблицях:
- ALTER TABLE xyz ENGINE = InnoDB дуже повільний, до Aria (mariadb) вдвічі швидший, але в цілому повільний шлях до збільшення лічильника послідовностей журналів
- ALTER TABLE xyz REBUILD PARTITION ALL - це найшвидший спосіб «виправити» таблиці та допомогти збільшити лічильник
- ALTER TABLE xyz ANALYZE PARTITION ALL повільно порівнюється з колишнім і не переписує розділи, які перевіряють, що це нормально. REBUILD забезпечує перезапис схеми таблиці темп.
Я використовував останні на декількох столах. Попередження трапляються, коли він намагається відкрити файли, і є кожне для кожного визначення розділу, яке воно відкриває, з питаннями лічильника. Сьогодні майже перекотив прилавок за останніми столиками. Я думаю, що коли все це буде оброблено, потрібно очистити бінарні журнали.
оновлення : я можу зробити висновок про кілька речей, тепер мені вдалося розібратися з цією проблемою.
- Мій збій стався через реорганізацію розділів на столі у форматі Aria (MariaDB).
- (для мене) перебудова розділів працювала найкраще і швидше, щоб отримати лічильник послідовностей. Змінення двигуна відбувається повільно, і вам потрібно зробити це двічі, щоб вплинути на innodb. зміна на INTERND є досить повільною порівняно з MyIsam або Aria.
- Я перейшов до MariaDB 5.3, а не до 5.5 (було: 5.2), і він працює чудово. Я думаю, що існує занадто багато проблем з арією, розділами в 5.5 (і підтвердженими помилками), щоб використовувати цю комбінацію.
- Справді повинен бути кращий спосіб скинути лічильник послідовностей журналів.