Nie usuwaj ich tylko w systemie operacyjnym.
Musisz pozwolić mysqld zrobić to za Ciebie. Oto jak mysqld zarządza tym:
Plik mysql-bin.[index]
przechowuje listę wszystkich dzienników binarnych wygenerowanych i automatycznie obróconych przez mysqld. Mechanizmy czyszczenia binlogów w połączeniu z mysql-bin.[index]
:
PURGE BINARY LOGS TO 'binlogname';
PURGE BINARY LOGS BEFORE 'datetimestamp';
Spowodują to wyczyszczenie wszystkich dzienników binarnych przed określonym właśnie plikiem binlog lub datownikiem.
Na przykład, jeśli uruchomisz
PURGE BINARY LOGS TO 'mysql-bin.000223';
spowoduje to usunięcie wszystkich dzienników binarnych wcześniej mysql-bin.000223
.
Jeśli uciekniesz
PURGE BINARY LOGS BEFORE DATE(NOW() - INTERVAL 3 DAY) + INTERVAL 0 SECOND;
spowoduje to usunięcie wszystkich dzienników binarnych przed północą 3 dni temu.
Jeśli chcesz, aby binlog został automatycznie obrócony i utrzymał 3 dni pracy, po prostu ustaw:
mysql> SET GLOBAL expire_logs_days = 3;
następnie dodaj to do /etc/my.cnf
[mysqld]
expire_logs_days=3
a mysqld usunie dla ciebie dzienniki
POKAŻ STATUS SLAVE \ G
To jest krytyczne. Po uruchomieniu SHOW SLAVE STATUS\G
zobaczysz dwa dzienniki binarne od Master:
Master_Log_File
Relay_Master_Log_File
Gdy replikacja ma niewielkie opóźnienie lub nie ma go wcale, są one zwykle tej samej wartości. Gdy występuje duże opóźnienie replikacji, wartości te są różne. Aby to ułatwić, wybierz cokolwiek Relay_Master_Log_File
jest i wróć do Mistrza i biegnij
PURGE BINARY LOGS TO 'Whatever Relay_Master_Log_File Is';
W ten sposób replikacja nie jest przerywana.
[mysqld] expire_logs_days=3
(i musisz dołączyć[mysqld]
sekcjęSET GLOBAL expire_logs_days = 3;
z klienta mysql ich nie zaakceptuje. Przykład w MySQL Docs: dev.mysql.com/doc/refman/5.5/en/mysqld-option-tables.htmlmysql> SET GLOBAL expire_logs_days = 3;
iexpire-logs-days=3
w/etc/my.cnf
.. są one takie same? Czy to jest zbędne czy nie? Czy ważne jest, aby uruchomić,SET GLOBAL...
a następnie dodaćexpire-logs-days=..
? Dzięki.PURGE BINARY LOGS BEFORE DATE(NOW());
dlaczego nie ma rozsądnych wartości domyślnych? Nigdzie nie mam, nigdy jawność nie zmieniła rozmiaru pliku dziennika do gigantycznej ilości. Miałem 10,0 GB plików dziennika, po uruchomieniu tego polecenia rozmiar mojego folderu mysql.bin zmniejszył się do 1,6 GB.To naprawdę zależy od strategii tworzenia kopii zapasowych. Jednym z głównych powodów utrzymywania dzienników binarnych jest przywrócenie bazy danych do „punktu w czasie”. Jeśli baza danych ulega awarii i wymaga przywrócenia, należy przywrócić najnowszą pełną kopię zapasową, a następnie odtworzyć dzienniki binarne, zaczynając od pozycji pełnej kopii zapasowej.
Jeśli więc codziennie wykonujesz pełną kopię zapasową i masz dzienniki binarne o wartości 7 dni, prawdopodobnie możesz usunąć dzienniki binarne z ostatnich 4-6 dni. Za pomocą tego
expire_logs_days
ustawienia można kontrolować, ile dzienników binarnych ma być przechowywanych .Możesz usunąć dzienniki binarne, których nie potrzebujesz, najpierw sprawdzając, jaki jest najstarszy dziennik, który chcesz zachować:
a następnie w mysql:
źródło
Spróbuj tego:
jak napisano w dokumencie :
Spowoduje to usunięcie wszystkich powiązanych plików dziennika binarnego, co może nie być tym, czego chcesz.
źródło