J'ai une question sur la suppression des journaux binaires dans l'environnement de réplication:
Nous avons un environnement avec 1 maître et 2 esclaves (exécutant mysql 5.5). Parfois, nous rencontrons des problèmes d'espace pendant les temps de traitement lourds, où le répertoire du journal bin se remplit. Les journaux expirent tous les 3 jours. Je me demandais, y a-t-il une raison pour laquelle les journaux devraient être conservés pendant 3 jours sur toutes les boîtes - maître et les deux esclaves? Serait-il sensé, par exemple, de conserver des journaux pendant 3 jours sur un maître, mais pendant 1 jour sur des esclaves? Quelle est la meilleure façon de procéder?
Je vous remercie!
Réponses:
ESCLAVE
Si vos esclaves ne sont pas des maîtres, les esclaves n'ont pas du tout besoin de journalisation binaire. Vous pouvez limiter la quantité d'espace de journal de relais accumulée par un esclave. Pour
relay_log_space_limit
limiter les journaux de relais en 4G, ajoutez à /etc/my/.cnf sur chaque esclaveet redémarrez mysql
Si vous ne pouvez pas définir cela, au moins vous devriez avoir une sorte d'alerte qui le fait
SHOW SLAVE STATUS\G
et vérifier la valeur deRelay_Log_Space
(nombre total d'octets consommés par les journaux de relais).MAÎTRE
Quant au Maître, vous pouvez définir
expire_logs_days
1, mais il y a un avertissement sévère que j'ai pour vous ...Si la réplication échoue, vous avez 1 jour pour le réparer. Sinon, un journal binaire sur le maître peut pivoter et vous ne pouvez pas exécuter de commande CHANGE MASTER TO pour réaligner la réplication. Je partirais
expire_logs_days
à 3 heures du Master.SUGGESTION # 1
Si vous avez un traitement en bloc du jour au lendemain, vous devriez peut-être exécuter les processus en bloc sur le maître
SET SQL_LOG_BIN=0;
au début de la session. Bien sûr, cela ne se reproduira pas sur l'esclave. Vous pouvez effectuer la même charge en bloc en parallèle aux deux esclaves.SUGGESTION # 2
Une autre chose que vous pourriez faire pour gérer l'accumulation de journaux binaires principaux est la suivante.
Exécutez
SHOW SLAVE STATUS\G
sur les deux esclaves. RegardezRelay_Master_Log_File
. Cela représente le journal binaire sur le maître dont la dernière commande a été exécutée sur l'esclave.Dans cet exemple, Relay_Master_Log_File est mysql-bin.009590. Tous les journaux binaires avant celui-ci peuvent être supprimés de Master. Vous pouvez exécuter ceci sur le Master:
Cela effacera les journaux plus anciens et laissera la réplication intacte.
CAVEAT
Les journaux binaires sont des fichiers qui compilent en série (comme une file d'attente FIFO) toutes les transactions SQL terminées sous la forme d'une instruction SQL ou d'un changement de ligne. Un journal de relais est un fichier qui recueille des entrées de journal binaire à partir d'un serveur distant (alias Maître).
Dans la réplication MySQL
Si vous basculez vers un esclave et que vous souhaitez en faire un maître
log-bin=mysql-bin
à /etc/my.cnf sur l'esclaveVous devrez configurer la réplication d'autres esclaves vers le maître nouvellement promu et vous assurer que les données sur l'esclave correspondent au maître nouvellement promu.
MISE À JOUR 2012-08-13 17:47 EDT
Selon l' option MySQL Documentation on
relay-log
, vous devez la définir. Voici pourquoi:la source