Maison base de données tutoriel mysql Mysql slave 同步错误解决_MySQL

Mysql slave 同步错误解决_MySQL

May 30, 2016 pm 05:10 PM
错误

分析解决

master 数据库提供服务,slave数据库作报表服务器,通过mysqlbin log做主从同步。

 

从报表数据来看,缺少了从10/28到现在(11/18)之前的数据,比对master、slave数据库主要表数据,发现:

 

10/28之后的slave库数据缺失,一致未同步。

 

查看slave mysql同步状态:

 

Mysql slave 同步错误解决_MySQL

关注图中黄色字段:

 

Slave_IO_Running: Yes

Slave_SQL_Running: No --- 表示sql进程未工作,问题就处在这。

 

图中粉色背景,Last_Error: ....

 

'Duplicate entry '1169595' for key 'PRIMARY'' on query. Default database: ''. Query: 'insert into  user。。。

 

这个错误很简单,违反主键唯一约束。

 

2. mysql 错误日志 通过my.conf 确定出错误日志文件,vi 查看,根据日志151028搜索到以下:

Mysql slave 同步错误解决_MySQL

 

 

从日志中,看到10/28 1:28:55 mysql 非正常关闭; 1:29 重启后,开始recovery。 1:29:16s 后I/O errror; 1:30:19s SQL error, slave SQL thread aborted(停止工作)。

 

mysql也给出了解决办法:

 

Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'mysql-bin.000274' position 504869752

 

重启,并告诉sql 执行的binlog 文件设置position, 重启slave. 错误仍存在,如下

 

 View Code

 

 

错误原因仍是

 

Last_SQL_Error: Error 'Duplicate entry '1169595' for key 'PRIMARY'' on query. Default database: ''. Query: 'insert into user (type,lang,ipAddr,activityStatus,extUserId,endpoint,createTime, email, userName, mobile, storageSize, tuner

)values ('normal','zh-xx','xxxx','active','913151000777430','xxx',now(),null,null,null,0,0)'

 

至此看来,虽然找到问题原因必须解决以上这个问题。 进一步了解mysql 同步机制及bin log, 原理:slave 获取master的binlog, 并执行,执行报错说明数据库已有这条记录,可能原因是日志中的position不准确,只能从binlog入手分析,

 

binlog查看参考: MySQL的binlog日志

 

这里通过第二种方式查看:

 

 mysql> show binlog events [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count];

 

             选项解析:

               IN 'log_name'   指定要查询的binlog文件名(不指定就是第一个binlog文件)

               FROM pos        指定从哪个pos起始点开始查起(不指定就是从整个文件首个pos点开始算)

               LIMIT [offset,] 偏移量(不指定就是0)

               row_count       查询总条数(不指定就是所有行)

log_name, pos 错误日志已知道,查询如下:

Mysql slave 同步错误解决_MySQL

 

 

binlog 包括所有数据库操作的sql,每条记录包含1个数据库操作。

 

在bin log 中,很容易找到出错的语句,现在问题是:找到slave SQL线程执行到哪个position. 这里只能采用最笨的办法,根据sql 语句,查看slave库中的数据,如:

 

Query | 1 | 504873619 | replace into content_preference(userId,contentId,playRecordId,status,createTime) 

values (587658,15308,1544691,0,now())

 

此sql语句为向content_preference 插入一条记录,那么在salve库中content_preference 表中确定是否有id=587658,contentId=15308的记录,如果有,表示此语句已执行。

 

一直向下查找,最终找到没有执行的sql 的记录, 找到position。

 

至此,可以判断出slave库中执行binlog 的position, 重新设定slave库的binlog position ,启动slave, 查看执行状态,running, 见下:

 

 

mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)

mysql> CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000274',MASTER_LOG_POS=504873114;
Query OK, 0 rows affected (1.98 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)


mysql> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Queueing master event to the relay log
                  Master_Host: 172.17.128.15
                  Master_User: xxx
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000274
          Read_Master_Log_Pos: 693913486
               Relay_Log_File: app3-relay-bin.000002
                Relay_Log_Pos: 1819098
        Relay_Master_Log_File: mysql-bin.000274
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

Copier après la connexion

 

在备份执行完毕后,报表导出数据正常,问题解决。

 

反思

 mysql在11/28日重启,原因是当天线上服务出现异常,无法解决,重启了机器,当时没考虑到报表数据库也在此机器上,重启后也未检查数据库备份情况,直到用户使用才发现问题。

 

mysql意外重启,虽然在下次重启启动后,记录了异常信息,和备份的binlog 日志文件及位置。如果是正在执行binlog SQL,但此时mysql意外关闭,记录的position 较旧,导致下次启动时,

 

会有部分binlog 日志重复执行导致。 此问题,不能说是mysql bug,这种机制,可以保证slave数据不至于丢失,但需要人工找到posion,即可。

 

后续:

 

1. 对于机器重启情况, 可手动执行stop slave.  在正常关闭mysql, 重启后,手动start slave, 应该就可以正常同步。

 

2. 线上系统,重启一定要小心, 重启后监控相关模块是否启动,可以增加mysql slave工作监控。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Impossible de terminer l'opération (Erreur 0x0000771) Erreur d'imprimante Impossible de terminer l'opération (Erreur 0x0000771) Erreur d'imprimante Mar 16, 2024 pm 03:50 PM

Si vous rencontrez un message d'erreur lors de l'utilisation de votre imprimante, tel que l'opération n'a pas pu être terminée (erreur 0x00000771), cela peut être dû au fait que l'imprimante a été déconnectée. Dans ce cas, vous pouvez résoudre le problème grâce aux méthodes suivantes. Dans cet article, nous verrons comment résoudre ce problème sur un PC Windows 11/10. Le message d'erreur complet indique : L'opération n'a pas pu être terminée (erreur 0x0000771). L'imprimante spécifiée a été supprimée. Correction de l'erreur d'imprimante 0x00000771 sur un PC Windows Pour corriger l'erreur d'imprimante, l'opération n'a pas pu être terminée (erreur 0x0000771), l'imprimante spécifiée a été supprimée sur un PC Windows 11/10, suivez cette solution : Redémarrez le spool d'impression

Échec du démarrage de Windows Sandbox - Accès refusé Échec du démarrage de Windows Sandbox - Accès refusé Feb 19, 2024 pm 01:00 PM

Windows Sandbox se termine-t-il avec Windows Sandbox impossible à démarrer, erreur 0x80070005, message Accès refusé ? Certains utilisateurs ont signalé que Windows Sandbox ne pouvait pas être ouvert. Si vous rencontrez également cette erreur, vous pouvez suivre ce guide pour la corriger. Windows Sandbox ne parvient pas à démarrer - Accès refusé Si Windows Sandbox se termine avec Windows Sandbox Impossible de démarrer, erreur 0x80070005, message Accès refusé, assurez-vous que vous êtes connecté en tant qu'administrateur. Ce type d'erreur est généralement dû à des autorisations insuffisantes. Essayez donc de vous connecter en tant qu'administrateur et voyez si cela résout le problème. Si le problème persiste, vous pouvez essayer les solutions suivantes : Exécutez le Wi-Fi en tant qu'administrateur

Révéler les causes du code d'état HTTP 460 Révéler les causes du code d'état HTTP 460 Feb 19, 2024 pm 08:30 PM

Décryptage du code d'état HTTP 460 : pourquoi cette erreur se produit-elle ? Introduction : Lors de l'utilisation quotidienne du réseau, nous rencontrons souvent diverses invites d'erreur, notamment des codes d'état HTTP. Ces codes d'état sont un mécanisme défini par le protocole HTTP pour indiquer le traitement d'une requête. Parmi ces codes d’état, il existe un code d’erreur relativement rare, à savoir le 460. Cet article examinera ce code d'erreur et expliquera pourquoi cette erreur se produit. Définition du code d'état HTTP 460 : Tout d'abord, nous devons comprendre les bases du code d'état HTTP

Comment résoudre le code d'erreur de connexion haut débit de l'ordinateur 651 Comment résoudre le code d'erreur de connexion haut débit de l'ordinateur 651 Dec 24, 2023 am 11:19 AM

Lorsque de nombreux amis allument l'ordinateur pour se connecter au haut débit, l'ordinateur affiche l'erreur 651. Quelle est la situation ? L'apparition de 651 est causée par l'échec de la connexion entre l'ordinateur terminal de l'utilisateur et l'équipement du bureau central de China Netcom. Il peut s'agir d'une déconnexion externe ou d'un problème avec l'équipement, nous pouvons contacter l'opérateur pour le résoudre, ou jeter un œil au tutoriel spécifique. Méthode détaillée du didacticiel pour résoudre le problème de connexion haut débit de l'ordinateur. Erreur 651 1 : échec du pilote de la carte réseau 1. Considérez d'abord le problème du pilote de la carte réseau. Ce problème est relativement courant. Cliquez avec le bouton droit sur l'ordinateur de bureau - Gérer, comme indiqué dans la figure ci-dessous. 2. Sélectionnez "Gestion des périphériques" sur la page des propriétés de l'ordinateur "pour entrer. 3. Recherchez « Adaptateur réseau » sur la page Gestionnaire de périphériques. Il existe généralement deux cartes réseau, une filaire et une sans fil.

Solution à l'erreur d'invite de mise à jour Windows 0x8024401c Solution à l'erreur d'invite de mise à jour Windows 0x8024401c Jun 08, 2024 pm 12:18 PM

Table des matières Solution 1 Solution 21. Supprimez les fichiers temporaires de Windows Update 2. Réparez les fichiers système endommagés 3. Afficher et modifier les entrées de registre 4. Éteignez la carte réseau IPv6 5. Exécutez l'outil WindowsUpdateTroubleshooter pour réparer 6. Éteignez le pare-feu et autres logiciels antivirus associés. 7. Fermez le service WidowsUpdate. Solution 3 Solution 4 Une erreur « 0x8024401c » se produit lors de la mise à jour de Windows sur les ordinateurs Huawei Symptôme Problème Cause Solution Toujours pas résolu ? Récemment, le serveur Web a dû être mis à jour en raison de vulnérabilités du système. Après la connexion au serveur, la mise à jour affiche le code d'erreur 0x8024401c.

Résoudre les erreurs rencontrées lors de l'installation d'autocad sous win11 Résoudre les erreurs rencontrées lors de l'installation d'autocad sous win11 Dec 30, 2023 pm 03:23 PM

AutoCAD est l'un des logiciels de conception de dessins les plus couramment utilisés, mais lorsque nous souhaitons l'utiliser sur Win11, nous pouvons rencontrer une erreur lors de l'installation d'AutoCAD sur Win11. À ce stade, nous pouvons essayer de modifier le registre pour le résoudre. Une erreur s'est produite lors de l'installation d'autocad dans win11 : Première étape, appuyez sur "win logo + r" sur le clavier pour ouvrir l'exécution. Dans la deuxième étape, saisissez « regedit » et appuyez sur Entrée pour ouvrir le registre. 3. Collez « Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System » dans le chemin ci-dessus. 4. Après avoir entré, double-cliquez

Le serveur a rencontré une erreur, 0x80070003, lors de la création d'une nouvelle machine virtuelle. Le serveur a rencontré une erreur, 0x80070003, lors de la création d'une nouvelle machine virtuelle. Feb 19, 2024 pm 02:30 PM

Si vous rencontrez le code d'erreur 0x80070003 lors de l'utilisation d'Hyper-V pour créer ou démarrer une machine virtuelle, cela peut être dû à des problèmes d'autorisation, à une corruption de fichier ou à des erreurs de configuration. Les solutions incluent la vérification des autorisations des fichiers, la réparation des fichiers endommagés, la garantie d'une configuration correcte, etc. Ce problème peut être résolu en excluant les différentes possibilités une à une. L'intégralité du message d'erreur ressemble à ceci : Le serveur a rencontré une erreur lors de la création de [nom de la machine virtuelle]. Impossible de créer une nouvelle machine virtuelle. Impossible d'accéder au magasin de configuration : le système ne trouve pas le chemin spécifié. (0x80070003). Certaines causes possibles de cette erreur incluent : Le fichier de la machine virtuelle est corrompu. Cela peut se produire en raison d’attaques de logiciels malveillants, de virus ou de logiciels publicitaires. Même si la probabilité que cela se produise soit faible, vous ne pouvez pas complètement

Dépannage des erreurs Tomcat 404 : conseils rapides et pratiques Dépannage des erreurs Tomcat 404 : conseils rapides et pratiques Dec 28, 2023 am 08:05 AM

Conseils pratiques pour résoudre rapidement les erreurs Tomcat404 Tomcat est un serveur d'applications JavaWeb couramment utilisé et est souvent utilisé lors du développement et du déploiement d'applications JavaWeb. Cependant, nous pouvons parfois rencontrer une erreur 404 de la part de Tomcat, ce qui signifie que Tomcat ne trouve pas la ressource demandée. Cette erreur peut être causée par plusieurs facteurs, mais dans cet article, nous aborderons quelques solutions et conseils courants pour vous aider à résoudre rapidement les erreurs Tomcat 404. Vérifier le chemin de l'URL

See all articles