Dopo quanto tempo dopo l'aggiornamento del parametro expire_logs_days e il riavvio di sql verranno eliminati i vecchi binlog?


16

MySQL 5.1.x | InnoDB | finestre

La mia directory di dati mysql sta iniziando a riempirsi di registri bin.

Al momento ho le seguenti impostazioni configurate nel mio server mysql di Windows:

[mysqld]
log-bin
server-id=1
binlog-do-db=foodb1
binlog-do-db=foodb2
expire_logs_days=25

Sto programmando di cambiare l'impostazione expire_logs_days su expire_logs_days=10e far rimbalzare il servizio mysql. Quanto tempo dopo aver apportato questa modifica, posso aspettarmi che i vecchi registri bin vengano cancellati.

Questo viene fatto solo come parte di un'attività programmata ogni notte? O dovrebbe essere immediato?

Risposte:


29

Sarà gestito immediatamente all'avvio di mysql.

Non è necessario attendere il riavvio di mysql.

Innanzitutto, impostare expire_logs_dayssu 10 in /etc/my.cnf

[mysqld]
log-bin
server-id=1
binlog-do-db=foodb1
binlog-do-db=foodb2
expire_logs_days=10

Quindi, accedi a mysql ed esegui questo

PURGE BINARY LOGS BEFORE (date(now()) + interval 0 second - interval 10 day);

Nota la data e l'ora della query

mysql> select date(now()) + interval 0 second - interval 10 day;
+---------------------------------------------------+
| date(now()) + interval 0 second - interval 10 day |
+---------------------------------------------------+
| 2012-12-11 00:00:00                               |
+---------------------------------------------------+
1 row in set (0.00 sec)

mysql>

Pertanto, il comando PURGE BINARY LOGS eliminerà tutti i binlog il cui datetime stamp è precedente 2012-12-11 00:00:00.

Infine, esegui questo comando

SET GLOBAL expire_logs_days = 10;

Questo è tutto. Nessun riavvio necessario per l'installazione di expire_logs_days .

Per quanto riguarda i parametri di replica, è necessario riavviare.


Risposta brillante. Grazie. Apprezzo il dettaglio.
Mike B,

Aggiorna, ho corretto un refuso.
RolandoMySQLDBA il

1
Solo per notare che expire_logs_days è ora deprecato in MySQL 8.0 (per i dettagli nel link fornito da @RolandoMySQLDBA). Usa binlog_expire_logs_seconds invece per andare avanti.
John Rix,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.