J'ai un maître qui a 298 fichiers bin de relais aussi récents qu'aujourd'hui, remontant bien 298 jours.
Il n'y a pas de définitions de journal de relais dans le .cnf
et
mysql> show variables like '%relay%';
+---------------------------------+----------------+
| Variable_name | Value |
+---------------------------------+----------------+
| innodb_overwrite_relay_log_info | OFF |
| max_relay_log_size | 0 |
| relay_log | |
| relay_log_index | |
| relay_log_info_file | relay-log.info |
| relay_log_purge | ON |
| relay_log_space_limit | 0 |
+---------------------------------+----------------+
Réinitialiser l'esclave les efface, mais ensuite ils commencent juste à se régénérer.
Une idée de ce qui cause ça? Comment l'arrêter?
MODIFICATION DES DEMANDES
Les critiques générales du CNF sont les bienvenues, mais gardons le sujet OP à l'esprit.
---- cnf request
[mysqld]
character_set_server = utf8
max_connections=200
max_user_connections=160
max_connect_errors=10000
userstat_running = 1
log_warnings
slow_query_log=1
slow_query_log_file=/var/log/mysql/mysql-slow.log
long_query_time=2
innodb_file_per_table
innodb_open_files=2048
innodb_additional_mem_pool_size=1M
innodb_buffer_pool_size=512M
innodb_log_buffer_size=1M
innodb_log_file_size=128M
innodb_autoextend_increment=16
innodb_flush_method=O_DIRECT
datadir=/var/lib/mysql/
tmpdir=/var/lib/mysql_ramdisk
server-id=2
log-bin = /var/log/mysql/mysql-bin
log-bin-index = /var/log/mysql/mysql.index
key_buffer_size = 800M
preload_buffer_size = 256K
max_allowed_packet = 8M
table_cache = 512
sort_buffer_size = 8M
join_buffer_size = 8M
read_buffer_size = 2M
read_rnd_buffer_size = 2M
thread_cache_size = 32
query_cache_size = 32M
query_cache_limit = 16M
myisam_sort_buffer_size = 2000M
tmp_table_size = 64M
max_heap_table_size = 64M
---- now for the cli requests
mysql> show slave status\G
Empty set (0.00 sec)
mysql> show master status;
+---------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------------+----------+--------------+------------------+
| awesome-bin.xxxxxxx | yyyyyyyy | | |
+---------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
---- version
mysql> select version();
+--------------------+
| version() |
+--------------------+
| 5.1.47-rel11.1-log |
+--------------------+
1 row in set (0.00 sec)
mysql
replication
atxdba
la source
la source
RESET SLAVE
sur le maître avec beaucoup de journaux de relais l'a fait pour moi.Réponses:
Si un maître a des journaux de relais, le maître doit également être un esclave au milieu d'une topologie de réplication (c.-à-d. Maître / maître, réplication en chaîne)
Qu'est-ce qui pourrait faire croître les journaux de relais comme ceci?
RÉPLICATION CASSÉE
La réplication MySQL est interrompue lorsque le thread IO ou le thread SQL meurt sous ces SCÉNARIOS:
skip-slave-start
activéSTOP SLAVE
;SHOW SLAVE STATUS\G
vous montre leLast_Errno
etLast Error
C'est la SITUATION # 3 qui est le problème. Lorsque le thread SQL meurt en raison d'une erreur SQL, il n'y a pas de mécanisme intégré dans la réplication MySQL qui déclenche la déconnexion du thread IO .
RECOMMANDATION
La seule façon décente de contrôler la croissance des journaux de relais est de définir la limite
La définition de relay_log_space_limit place un plafond de 4G.
Lorsqu'un journal de relais est complètement traité
ÉPILOGUE
Si le maître était un esclave et qu'il n'a plus besoin de l'être, désactivez-le simplement.
Si le maître est un esclave, corrigez l'erreur SQL.
Je suggérerais ceci si l'erreur SQL gêne:
puis exécutez
SHOW SLAVE STATUS\G
toutes les minutes pour voir si les journaux de relais sont traités et tournés.la source
Sans voir votre my.cnf, il est impossible de répondre à cette question, mais je suggérerais également de publier votre sortie SHOW SLAVE STATUS \ G - est-il possible que votre esclave soit réellement très loin derrière? Cela garderait les journaux de relais autour. Le thread SQL Slave est-il en cours d'exécution?
la source
Se pourrait-il que le fichier my.cnf soit mal configuré et que les journaux binaires principaux soient nommés journaux de relais?
Ou peut-être que votre maître a des paramètres de réplication codés en dur dans le fichier my.cnf, qui sont récupérés au redémarrage de l'instance MySQL.
EDIT: Avez-vous masqué le nom de fichier binlog réel en
show master status
sortie? Je demande parce que le paramètre dans my.cnf ne correspond pas au nom binlog. Si oui, pourriez-vous fournir le nom de fichier réel et la sortie deshow slave status
comme Aaron l'a mentionné? Jusqu'à présent, à part la différence de nom pour le journal de connexion, rien ne se distingue dans votre fichier my.cnf.la source
Exécutez la commande RESET SLAVE. Il nettoiera les journaux des relais et en régénérera un nouveau. Mais, il n'utilisera pas le nouveau. Vous pouvez vérifier en exécutant plus tard la commande FLUSH LOGS, le serveur ne créera pas de deuxième journal de relais.
la source