Tôi phát hiện ra rằng có lẽ có một cách hay hơn để giải quyết vấn đề này khi làm việc trên các bảng được phân vùng. Tôi cần phải bỏ phân vùng từ một số năm trước và phải thêm một số cho năm 2014. Hầu như tất cả các phân vùng đều báo cáo lỗi này, vì vậy cũng có những phân vùng cũ. Tai nạn rất khó chịu.
Vì vậy, trong khi DROPPING cũ và sử dụng REORGANIZE của phân vùng MAXVALUE (cái cuối cùng), nó sẽ tạo ra các tệp mới ổn, vì vậy tôi nhận được ngày càng ít cảnh báo. Trong lúc này, nó giúp tăng bộ đếm chuỗi nhật ký, vì vậy tôi không cần phải chèn dữ liệu không có thật. Tôi có điều này xảy ra trên một máy chủ chính btw ...
Vậy đây:
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;
Và điều này:
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)
Điều đó sẽ loại bỏ hiệu quả từng phân vùng trong thay đổi và tạo lại nó với một bản sao tạm thời nội dung của những gì có trong đó. Bạn có thể làm điều này trên mỗi bảng nếu bạn muốn, ứng dụng của tôi cho phép điều đó xảy ra, vì vậy không cần phải lo lắng về sao lưu được đồng bộ hóa, v.v.
Bây giờ đối với phần còn lại của bảng, vì tôi chưa chạm vào tất cả các phân vùng trong quy trình, một số sẽ bị bỏ lại với cảnh báo trình tự nhật ký, đối với những cái bị hỏng nhưng được bao phủ bởi hành động sắp xếp lại này, tôi có thể sẽ chạy nó:
ALTER TABLE Events REBUILD PARTITION p0, p1;
hoặc đó
ALTER TABLE Events OPTIMIZE PARTITION p0, p1;
Vì vậy, điều đó khiến tôi suy nghĩ, Bạn có thể làm điều này với các bảng vanilla đơn giản, thêm tạm thời các phân vùng bằng hàm băm và sau đó xóa nó (hoặc giữ chúng, tôi hoàn toàn có thể đề xuất các phân vùng).
Tuy nhiên, tôi đang sử dụng mariadb, không phải mysql (vì vậy XtraDB)
Có lẽ điều này giúp một ai đó. Tôi vẫn đang chạy nó, cho đến nay rất tốt. Thay đổi ĐỘNG CƠ dường như cũng thực hiện công việc, vì vậy tôi mang nó qua lại giữa MyIsam và họ trở lại InnoDB.
Nó khá logic, nếu bạn thay đổi ĐỘNG CƠ, bảng sẽ biến mất khỏi innodb, vì vậy nó sẽ không còn là vấn đề nữa.
ALTER TABLE Events ENGINE=MyISAM;
ALTER TABLE Events ENGINE=InnoDB;
nó dường như làm việc ở đây Tôi có thể xác nhận một vài điều trên các bảng được phân vùng:
- ALTER TABLE xyz Engine = InnoDB rất chậm, để Aria (mariadb) nhanh gấp đôi, nhưng nói chung là một cách chậm để tăng bộ đếm trình tự nhật ký
- ALTER TABLE xyz PHẦN THAM GIA TÁI TẠO TẤT CẢ là cách nhanh nhất để 'sửa chữa' các bảng và giúp tăng bộ đếm
- ALTER TABLE xyz ANALYZE PHẦN TẤT CẢ bị chậm so với trước đây và không viết lại các phân vùng mà kiểm tra là ok. REBUILD đảm bảo viết lại vào lược đồ bảng tạm thời.
Tôi đã sử dụng những cái cuối cùng trên một số bảng. Các cảnh báo xảy ra khi nó cố mở các tệp và có một định nghĩa cho mọi định nghĩa phân vùng mà nó mở với các vấn đề truy cập. Hầu như lăn qua quầy ngày hôm nay cho các bảng cuối cùng. Tôi nghĩ rằng một khi tất cả đã được xử lý, người ta cần phải xóa các bản ghi nhị phân.
cập nhật : Tôi có thể kết luận một vài điều bây giờ tôi quản lý để giải quyết vấn đề này.
- Sự cố của tôi là do sắp xếp lại các phân vùng trên một bảng theo định dạng Aria (MariaDB).
- (đối với tôi) thực hiện việc xây dựng lại các phân vùng hoạt động tốt nhất và nhanh nhất để có được bộ đếm trình tự. Việc thay đổi động cơ chậm và bạn cần thực hiện hai lần để ảnh hưởng đến innodb. việc thay đổi thành innoDB khá chậm so với MyIsam hoặc Aria.
- Tôi đã nâng cấp lên MariaDB 5.3 và không lên 5.5 (là: 5.2) và nó hoạt động tốt. Tôi nghĩ có quá nhiều vấn đề với aria, các phân vùng trong 5.5 (và các lỗi đã được xác nhận) để sử dụng kết hợp đó.
- Thực sự nên có một cách tốt hơn để thiết lập lại bộ đếm chuỗi nhật ký.