今天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
相关推荐
mysql双机安装部署文档,具体简绍mysql数据库的安装部署过程,以及mysql主从数据库的安装及配置。
MySQL双机热备份实施方案.pdf
MySQL双机互备热备自动切换.pdf
MySQL的双机热备份是基于MySQL内部复制功能,建立在两台或者多台以上的服务器之间,通过它们之间的主从关系,是插入主数据库的数据同时也插入到从数据库上,这实现了动态备份当前数据库的功能。下面细说一下主从热...
(Windows)下Mysql双机热备 MySQL主从服务器(Replication)的设置:1.首先在主服务器上为从服务器建立一个账户。2.登录从服务器使用步骤一申请的用户名和密码访问主数据库如果可以访问代表建立用户成功。(双机热备则...
MySQL双机热备
linux下基于keepalived的mysql双机热备实现方案,本文档用于实现mysql数据库双机热备灾备方案,在系统部署过程中还需仔细认真,有时候一个小小的配置错误就可能导致部署失败,本人在此套技术验证过程中也踩了不少坑...
MYSQL双机热备配置手册MYSQL双机热备配置手册MYSQL双机热备配置手册
双机热备从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。这篇文章主要介绍了mysql双机热备实现方案,需要的朋友可以参考下
里面包含两种类型的PPT,一个PPT是在Linux上搭建MySQL双机热备的方案;另一个是在Windows平台搭建MySQL双机热备的方案。
Windows服务器,实现两台服务器中,Mysql数据库的数据同步机制
mysql数据库实现双机热备mysqlmysql
mysql双机热备同步,详细配置 成功案例 我的经验 已经正常运作半年 目前数据量600万
MySQL双机热备份试验.pdfMySQL双机MySQL双机热备份试验.pdf热备份试验.pdfMySQL双机热备份试验.pdf
在linux操作系统下,配置mysql,实现mysql的双机热备功能
MYSQL 双机热备配置手册
MySQL数据库双机热备份实施方案.pdf
LINUX 下的MYSQL双机,自己写的,很详细。
mysql双机配置,主从配置方法详细说明
HeartBeat+PHP+MySQL双机热备自动切换配置HeartBeat+PHP+MySQL双机热备自动切换配置