主从复制Slave_IO_Running: NO Slave_SQL_Running: NO ,Slave failed to initialize relay log info struct解决办法

这篇具有很好参考价值的文章主要介绍了主从复制Slave_IO_Running: NO Slave_SQL_Running: NO ,Slave failed to initialize relay log info struct解决办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 解决问题的思路:

  • 找到mysql配置的这个文件/etc/my.cnf
  • 在文件中找到mysql错误异常日志文件的路径,我配置的是log-error=/data/mysql.err
  • 编辑/var/log/mysqld.log文件
  • 查看具体异常信息

    slave_io_running: no,MYSQL主从,数据库

2. 异常信息

[ERROR] Slave I/O for channel ‘’: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. Error_code: 1593

slave_io_running: no,MYSQL主从,数据库

3. 问题定位

        由于uuid相同,而导致触发此异常。
        首先我只安装了一台linux 又克隆了两台,一主三从 , 关键点就在于我是克隆的,才导致了报Slave_IO_Running: NO
        原因: mysql 有个uuid , 然而uuid 是唯一标识的,所以我克隆过来的uuid是一样的,只需要修改一下uuid 就ok了,找到auto.cnf 文件修改uuid

4. 解决方案

查询命令找此auto.cnf修改uuid即可:

find -name auto.cnf

其实这个文件就在mysql的data目录中/data/mysql,这是我的文件位置
重启mysql服务器,再查看mysql从节点的状态,恢复正常

重启mysql
service mysql restart

5. 登录MYSQL,重启SLAVE,再次验证

#停止链路
stop slave;
#启动链路
start slave;
#查看链路
show slave status \G

slave_io_running: no,MYSQL主从,数据库

slave_io_running: no,MYSQL主从,数据库

可能原因一:MySQL的uuid是唯一的,查看主从机器的uuid是否唯一。

查看文件:/var/lib/mysql/auto.cnf

查看结果:主从机器的uuid不一样,此可能性被排除。

可能原因二:确认server-id是否唯一。

查看文件:/etc/mysql/my.cnf

查看结果:主从机器的server-id唯一,此可能性被排除。

可能性三:因为从库MySQL重启导致二进制文件位置从库和主库不一致。

1、查看:

主库:show master status\G

从库:show slave status\G

2、主库从库二进制文件是不一致的,开心,可能就是这个原因了。

3、根据网上方法修改:在从库中依次执行如下操作

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

mysql> CHANGE MASTER TO MASTER_LOG_FILE='master-bin.000004', MASTER_LOG_POS=154;
Query OK, 0 rows affected (0.00 sec)

mysql> start slave;
 4、再次查看从库信息:sad。。并没有解决 。

5、失望中,试着依次重启了主机、从机的MySQL。

排查方式

1. 首先我们先通过 performance_schema 查看一下造成报错的原因

select * from performance_schema.replication_applier_status_by_worker;

问题描述:发现主库操作数据从库没有变动问题,可能原因是从库重启导致的无法同步问题。

排查思路

1、查看主从复制状态

发现从库的IO和SQL进程都是no(正常状态应该是yes)

注意:mysql replication中slave机器上有两个关键进程,死一个都不行,一个是slave_sql_running,一个是slave_io_running,一个负责与主机的IO通信,一个负责自己的slave mysql进程。

slave_io_running: no,MYSQL主从,数据库

2、解决办法如下:

>stop slave;   ##停止同步

> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;   ##设置counter为1,启动同步

>show slave status\G;  ##查看同步状态

slave_io_running: no,MYSQL主从,数据库

3、发现SQL进程还是No

提示信息显示如下:

Last_Errno: 1396

Last_Error: Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction 'fab1fc64-d0f2-11ec-a2a6-000c2950bca1:9' at master log mybinlog.000001, end_log_pos 1966. See error log and/or performance_schema.replication_applier_status_by_worker table for more details about this failure or others, if any.

slave_io_running: no,MYSQL主从,数据库

4、根据上面的提示,查询到的异常数据出现在opp_starck表中

#select * from performance_schema.replication_applier_status_by_worker\G; 确定事务发生在表opp_strack上,定位在表上,再去排查是哪张表

slave_io_running: no,MYSQL主从,数据库

可以参考:mysql主从同步报错,提示Last_Error: Coordinator stopped because there were error(s) in the worker(s). The most_mysql 报错 last_谁还不是小白鼠的博客-CSDN博客

5、主从数据恢复一致后需要在slave上跳过报错的事务,在从库中执行

使用GTID跳过错误的方法:找到错误的GTID跳过(通过exec_master_log_pos去binlog里找GTID,或者则通过监控表replication_applier_status_by_worker找到GTID,也可以通过excured_gtid_set算GTID),这里使用监控来找到错误的GTID。找到GTID之后,跳过错误的步骤:

>stop slave;  #停止同步

>set @@session.gtid_next='fab1fc64-d0f2-11ec-a2a6-000c2950bca1:9'; #跳过错误的GTID

>begin;  #提交一个空事务,因为设置gtid_next后,gtid的生命周期就开始了,必须通过显性的提交一个事务来结束,否则报错:ERROR

>commit

>set @@session.gtid_next=automatic; #设置回自动模式

>start slave;  #启动同步

>show slave status\G;  #再次确认状态

slave_io_running: no,MYSQL主从,数据库

6、如下图主从复制恢复正常

slave_io_running: no,MYSQL主从,数据库

GTID:是对于一个已提交事务的唯一编号,并且是一个全局(主从复制)唯一的编号。

GTID核心参数

重要参数:

gtid-mode=on --启用gtid类型,否则就是普通的复制架构

enforce-gtid-consistency=true --强制GTID的一致性

log-slave-updates=1 --slave更新是否记入日志

注:

Slave_IO_State        # 从库的当前状态
Slave_IO_Running    # 读取主服务器二进制日志的I/O线程是否正在运行
Slave_SQL_Running    # 执行读取主服务器中二进制日志事件的SQL线程是否正在运行
Seconds_Behind_Master    # 是否为0,为0就是已经同步了

如果Slave_IO_Running或Slave_SQL_Running不同时为YES,请尝试执行
mysql> stop slave;
mysql> reset slave;
mysql> start slave;文章来源地址https://www.toymoban.com/news/detail-768360.html

到了这里,关于主从复制Slave_IO_Running: NO Slave_SQL_Running: NO ,Slave failed to initialize relay log info struct解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (译)MySQL中的slave_exec_mode 参数详解(MySQL从节点跳过复制错误的处理,sql_slave_skip_counter VS slave-skip-errors VS slave_exec_mode)

    原文地址:https://www.soughttech.com/front/article/7159/viewArticle     今天我偶然看到了参数slave_exec_mode。从手册中的描述可以看出,该参数与MySQL复制有关。它是一个可以动态修改的变量。默认为STRICT mode(严格模式),可选值为IDEMPOTENT mode(幂等模式)。 设置为IDEMPOTENT模式可以防止从库

    2024年02月05日
    浏览(29)
  • 解决ssh: connect to host slave1 port 22: No route to host

    集群都搭建好了,不知道为啥突然master连接不上slave1了,slave0都连接上了。。。 目录 1 确定slave1虚拟机上的dns设置有没有问题 2 检查网络配置是否正常, 3 检查ssh服务是否开启 4 检查slave1防火墙是否关闭,建议永久关闭防火墙 5 检查连接不上的slave1的ip 在/etc/resolv.conf中添加

    2024年02月16日
    浏览(36)
  • Redis最新版本搭建主从环境,Redis主从复制环境搭建

    一般网站搭建都会使用Redis做缓存,当单台Redis承受不住压力时,会考虑搭建Redis主从。在没有业务的情况下,一般不会一下子上来就去搭建Redis无中心集群 Redis主从复制环境搭建 ,前面跟部署单台Redis一致,只不过后面 是从Redis的配置上去同步主Redis即可 。 这里找三台虚拟机

    2024年01月21日
    浏览(27)
  • redis复制和分区:主从复制、哨兵模式和集群模式

    在 Redis 中,复制和分区是用于数据冗余和性能扩展的关键特性。以下是主从复制、哨兵模式和集群模式的工作原理的简要概述: 主从复制 (Replication) 基本概念 :Redis 的主从复制功能允许多个 Redis 服务器具有相同的数据副本。这在读取操作的负载均衡、数据备份、灾难恢复等

    2024年01月20日
    浏览(33)
  • MySQL主从复制详解

    随着业务流量的增长,一台MySQL数据库服务器已经满足不了需求了,会负载过重,容易出现宕机的情况,导致数据的丢失。这个时候就需要实现数据库的负载均衡和读写分离,来减少单台MySQL数据库服务器的压力。我们可以通过使用MySQL内置的复制功能来搭建MySQL一主一从或一

    2024年02月10日
    浏览(29)
  • Redis 主从复制 哨兵 集群

    主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。 默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能

    2024年02月11日
    浏览(36)
  • 【Redis】Redis主从复制

    主从复制, master 以写为主, slave 以读为主。 当 master 数据变化的时候,自动将新的数据异步同步到其他 slave 数据库。 读写分类 容灾备份 数据备份 水平扩容支持高并发 环境要求 :一个 Master ,两个 Slave ——3台虚拟机,每台都安装 redis 主机 master 配置 将redis压缩包中原装

    2024年02月01日
    浏览(28)
  • Redis主从复制部署小结

    搭建主从架构 单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。 全量同步 主从第一次建立连接时,会执行 全量同步 ,将master节点的所有数据都拷贝给slave节点,流程: 这里有一个问题,master如何得知salve是第一次来连

    2024年02月05日
    浏览(58)
  • MySQL主从复制案例实现

    使用Sharding-JDBC实现读写分离: 1、导入maven坐标 2、 在配置文件中配置读写分离规则 3、在配置文件中配置允许bean定义覆盖配置项 可以看到已经实现了读写分离了。

    2024年02月03日
    浏览(50)
  • 简单搭建MySQL主从复制

    个人认为,90%的公司的数据体量和并发量压根用不上从服务器,结合Redis,一台性能强劲的云MySQL服务器,做好日常备份。足够了。 一个MySQL主(Master)服务器上的数据自动复制到至少一个的MySQL从(Slave)服务器的过程,利用bin log,主服务器上的数据更改会被自动地同步到从

    2024年03月09日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包