`
yunnick
  • 浏览: 392289 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mysql双机异常及解决方案

阅读更多

今天Mysql双机遇到两个问题,从网上整理下解决方案,记录下来:

 

通过以下命令行可查看异常信息

 

mysql> show slave status\G;

 具体细节可查看Mysql日志。

 

问题一:

 命令行报错如下

 Slave_IO_Running: No
 Slave_SQL_Running: Yes

Last_IO_Errno: 1236
Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position; the first event 'mysql-bin.000073' at 662720845, the last event read from './mysql-bin.000073' at 4, the last byte read from './mysql-bin.000073' at 4.'

从字面理解就是,从服务器请求了主服务器的一个错误的复制位置。比如主服务器上的BLIN_LOG里没有这个POSITION.

解决办法:

首先查看主服务器的日志文件中是否有此行,使用命令

 

mysqlbinlog  /LogPath/mysql-bin.000073 >> log

 在log文件里查找662720845对应的行或者和这个数字接近的行(先从小的试试,无法恢复再从大的试),  

  log文件内容类似:

# at 662720839

#130614  8:36:01 server id 1  end_log_pos 662720860	Query	thread_id=207498	exec_time=0	error_code=0
SET TIMESTAMP=1371170161/*!*/;
COMMIT
/*!*/;
DELIMITER ;
 

 然后重新设置复制位置,如下 

mysql>stop slave;
mysql> change master to
    -> master_log_file='mysql-bin.000073',
    -> master_log_pos=662720860;
mysql> start slave;

如果找不到,可用如下命令查看mysql-bin.000073的最大位置

ls -la mysql-bin.000073

 如果大小远小于662720845,则可以跳过这个日志,从下个日志开始复制。

mysql>stop slave;
mysql> change master to
    -> master_log_file='mysql-bin.000074',
    -> master_log_pos=4;
mysql> start slave;

 重设复制起始点可能遇到问题二,具体解决方法可参考问题二。

 

问题二:

  错误代码如下

  mysql slave Error_code: 1062  1054

  如果日志中出现了这样代码,可能是错误的select,或update操作,master是跳过这些操作,但是被记录到了二进制日志中,slave会依据二进制中的语句做相同的动作,就会报错,知道原理了要做的操作就很简单了。

  解决方法

stop slave;  
set global  sql_slave_skip_counter=n;    //n为你想跳过错误语句的个数  
start slave;  
如果你不想再遇到这种错误,可以写到slave配置文件中格式如下:
slave_skip_errors = 1062 
slave_skip_errors = all   //跳过所有类型的错误码  

 

 

 问题三:

 错误代码如下

  Slave_IO_Running: Yes
  Slave_SQL_Running: No

  Last_SQL_Errno: 1594
  Last_SQL_Error: Relay log read failure: Could not parse relay log event entry. The possible reasons are: the master's binary log is corrupted (you can check this by running 'mysqlbinlog' on the binary log), the slave's relay log is corrupted (you can check this by running 'mysqlbinlog' on the relay log), a network problem, or a bug in the master's or slave's MySQL code. If you want to check the master's binary log or slave's relay log, you will be able to know their names by issuing 'SHOW SLAVE STATUS' on this slave.

 

以上异常可能由内存溢出或者硬盘空间不足导致。

 解决办法

从最近一次复制结束的位置复制即可

show slave status \G; 
  Master_Log_File: mysql_master-bin.000164
  Read_Master_Log_Pos: 980240603
 Relay_Log_File: slave2-relay-bin.000001
 Relay_Log_Pos: 251111
  Relay_Master_Log_File: mysql_master-bin.000164
   Exec_Master_Log_Pos: 980240603
stop slave;
CHANGE MASTER TO  MASTER_LOG_FILE = 'mysql_master-bin.000164',MASTER_LOG_POS =980240603;
start slave ;
 
 如果问题一和问题三同时出现,先改问题三

 

 

问题四:

错误代码:
1205
Lock wait timeout exceeded; try restarting transaction 

解决办法:

原因:mysql的innodb是独占锁。

解决的办法有两个:

第一:innodb_lock_wait_timeout 锁定等待时间改大

my.ini文件:
#innodb_lock_wait_timeout = 50

修改为

innodb_lock_wait_timeout = 500

第二:把多个查询合并为一个查询执行,可以避免等待解锁时间。前面一个查询执行完毕后后面一个查询获得独占锁并执行。

 

 

备注:

         mysql replication 中slave机器上有两个关键的进程,死一个都不行,一个是slave_sql_running,一个是Slave_IO_Running,一个负责自己的slave mysql进程,一个负责与主机的io通信。
         如果是slave_io_running no了,可能有三种情况,一个是网络有问题,第二个是有可能my.cnf有问题,最后一个是授权的问题,replication slave和file权限是必须的。
         一旦io为no了先看err日志,看看报什么错,很可能是网络,也有可能是包太大收不了,这个时候主备上改max_allowed_packet这个参数。
        如果是slave_sql_running no了,那么也有两种可能,一种是slave机器上这个表中出现了其他的写操作,就是程序写了,这个是会有问题的,还有一种占绝大多数可能的是slave进程重启,事务回滚造成的,这也是mysql的一种自我保护的措施,像关键时候只读一样。 这个时候想恢复的话,只要停掉slave,set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;(参考问题二解决方法),再开一下slave就可以了
 
 
 
分享到:
评论

相关推荐

    Redhat Linux 双机方案及实例

    **Redhat Linux 双机方案及实例** 在企业级服务器环境中,为了确保关键服务的高可用性和稳定性,通常会采用双机热备或集群技术。Redhat Linux作为一款广泛使用的开源操作系统,提供了丰富的高可用性解决方案。本篇...

    图文演示双机热备mysql主主模式配置全过程.pdf

    双机热备是一种高可用性的解决方案,它确保当一台主机出现故障时,另一台主机可以立即接管服务,从而保证服务的连续性和数据的一致性。双机热备模式通常用于数据库系统,如MySQL,以防止数据丢失和系统中断。在双机...

    基于linux系统和mysql数据库的双机热备环境安装实施指南全套.doc

    总的来说,这份实施指南为IT专业人士提供了一套完整的基于Linux和MySQL的双机热备解决方案,覆盖了从理论到实践的各个环节,是构建高可用数据库环境的重要参考资料。通过遵循指南中的步骤,可以显著提高系统的稳定性...

    HA for Windows2003 双机热备方案.doc

    【HA for Windows 2003 双机热备方案】是针对企业关键业务连续性的解决方案,旨在确保在系统故障时能迅速恢复服务,避免业务中断造成的损失。该方案特别适用于那些依赖Windows 2003 Server和SQL Server数据库系统的...

    JIRA&Confluence双机热备技术方案.doc

    因此,本方案将探讨在不采用Data Center的情况下,如何设计和实施一套经济高效的双机热备解决方案。 ### 1. 背景 JIRA和Confluence双机热备的主要目标是确保在主服务器出现故障时,备份服务器能够无缝接管服务,...

    双机热备 共享存储 ServHA Cluster

    为了确保业务系统的连续性和稳定性,采用高可用性的解决方案变得至关重要。 - **提供方**:北京微彩华创科技有限公司,专注于服务器高可用软件的研发、生产和销售,以技术创新和服务为核心,保障企业级客户的业务...

    windows dual computer app

    为此,**蓝科泰达**推出了一款名为“Windows Dual Computer App”的双机热备解决方案,旨在为企业提供高可用性的同时降低成本。 #### 二、需求背景与目标 **企业关键业务一旦中断**,不仅会严重影响日常运作,还...

    高可用数据库架构设计说明.doc

    常见的解决方案是采用双机主从热备(Master-Slave模式)。 **双机主从热备** 双机热备是一种让两个数据库服务器实时同步数据的技术,以达到故障切换和负载均衡的目的。主服务器(Master)负责处理写操作,而从...

    系统运维工程师简历 (2).docx

    - **职责概述**:作为售前技术支持人员,需与客户进行有效沟通,了解客户需求,提供定制化的解决方案。 - **实践内容**: - 沟通客户需求,进行需求调研分析。 - 编写解决方案文档,包括项目实施计划和技术细节。 ...

    2018 PHP 最新面试题

    3. **MySQL双机热备与负载均衡** - **双机热备**:采用主从复制的方式,主服务器负责读写操作,从服务器作为备份服务器,当主服务器出现问题时自动切换到从服务器。 - **负载均衡**:通过中间件如ProxySQL或MySQL ...

    Mycat-权威学习指南

    这部分会列举Mycat使用过程中可能遇到的常见问题,并提供解决方案。例如,如何配置字符集、如何处理数据迁移、如何解决主键插入后应用获取的问题等。 **10. 性能测试指南** 性能测试是保障数据库应用稳定运行的...

    通达微课堂(二)-通达OA运行维护与调优经验分享.pptx

    同时,还提到了使用专业备份软件的可能性,以及考虑灾难恢复的双机热备方案。 7. **OA升级流程**:升级通常需要进行冷备份,确保数据安全,然后在新环境中安装和配置OA,导入备份数据,并进行测试以确保所有功能...

    php网络开发完全手册

    15.5 常见问题与解决方案 259 15.6 小结 261 第16章 数据库中的程序逻辑 262 16.1 数据库程序逻辑与PHP程序逻辑的分体 16.1 设计原则 262 16.2 数据库中的程序逻辑与数据的关系 262 16.3 存储过程的设计 263 16.3.1 ...

    网吧维护技术资料 合集

    9828 网吧维护\资料\WINDOWS出错信息解析及解决方案.TXT 336 网吧维护\资料\WINDOWS的文件夹里的程序.TXT 19067 网吧维护\资料\WINDOWS蓝屏代码含意速查表.TXT 93 网吧维护\资料\WINDOWS隐藏启动文件位置.TXT 9324 ...

Global site tag (gtag.js) - Google Analytics