Relay Log

Il relay log è un insieme di file creati da uno slave durante la replica.

Utilizza lo stesso formato del log binario, e contiene la registrazione degli eventi che riguardano i dati o la struttura. Consiste di un insieme di file di log e un file indice che contiene un elenco dei log.

Gli eventi vengono letti dal log binario del master e scritti nel relay log dello slave. Vengono poi eseguiti sullo slave. I vecchi file del relay log vengono rimossi automaticamente quando non sono più necessari.

Siccome i file del relay log usano lo stesso formato del log binario, possono essere letti con il programma mysqlbinlog.

Creare i file del relay log

I nuovi file del relay log vengono creati al verificarsi dei seguenti eventi:

I nomi del relay log

Per default, i file del relay log si chiameranno host_name-relay-bin.nnnnnn, dove host_name è il nome host del server, e #nnnnnn è un numero progressivo.

Questo però crea problemi se si modifica il nome dello slave, e causa gli errori Failed to open the relay log e Could not find target log during relay log initialization. Per evitarlo, si può specificare il nome dei file del relay log tramite le variabili di sistema relay_log e relay_log_index.

Se si riscontra il problema mentre la replica è in corso, è possibile arrestare lo slave, aggiungere il vecchio file indice all'inizio del nuovo indice e riavviare lo slave.

Per esempio:

shell> cat NEW_relay_log_name.index >> OLD_relay_log_name.index
shell> mv NEW_relay_log_name.index OLD_relay_log_name.index

Eliminare i vecchi file del relay log

I vecchi file del relay log vengono eliminati dopo che tutti i loro eventi sono stati implementati nello slave, e i file non sono più necessari. Questo comportamento può essere modificato impostando la variabile relay_log_purge, il cui valore predefinito è 1, a 0, nel qual caso i vecchi file saranno lasciati sul server.

Se i file del relay log occupano troppo spazio sullo slave, è possibile modificare la variabile relay_log_space_limit per modificarne le dimensioni. Il thread IO si fermerà finché il thread SQL non avrà ripulito il backlog. Per default non c'è alcun limite.

Commenti

Sto caricando i commenti......
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.