Chinaunix首页 | 论坛 | 博客
  • 博客访问: 327456
  • 博文数量: 87
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 727
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-27 15:56
个人简介

开心了, 就笑;不开心了,就过会儿再笑。。。。

文章分类

全部博文(87)

文章存档

2017年(16)

2016年(28)

2015年(33)

2014年(10)

我的朋友

分类: Mysql/postgreSQL

2014-12-02 15:39:26

在从库上  start  slave;后出现的错

Slave_IO_Running 出错:1,网络问题;
                                    2,主库mysql是否开启;
                                   3,在grant master 事写的用户名密码是否能在本地连上主数据库
Slave_SQL_Running出错:实行sql出错
几个经典问题:
1032错误
【现象】
Last_Error: Could not execute Update_rows event on table kebao.t1; Can't find record in 't1', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000014, end_log_pos 114166
【原因】
在主库为row或mixed模式下,从库数据不一致导致的SQL线程中断
【解决】
1.到主库上查看event在执行什么更新,把数据查出来
2.到从库上看这条数据是否存在,修复。
【如何避免】
1.可能导致主从不一致的SQL
2.不使用--binlog-ignore-db和--replicate-ignore-db
3.程序段不要 使用trigger

1062错误
现象
Last_Error: Query caused different errors on master and slave. Error on master: 'Deadlock found when trying to get lock; try restarting transaction' (1213), Error on slave: 'Duplicate entry '176484282' for key 1' (1062). Default database: ‘XXXXX'. Query: 'INSERT INTO t1(id,cust_id,in_ucid,confrim_time)
                SELECT csl.id,csl.cust_id,csl.in_ucid,csl.add_time
                FROM tl_cust_stat_log csl, cust cust
                WHERE csl.add_time >  NAME_CONST('stat_start_date',_utf8 0x323031342D30342D31392031373A33303A3030) AND csl.add_time <=  NAME_CONST('stat_end_date',_utf8 0x323031342D30342D32312031373A33303A3030)
                          AND (csl.cur_stat_2 = '0609' AND csl.opt_code = 'CBSA') AND csl.cust_id = cust.id AND cust.posid =  NAME_CONST('posIdVar',34094)'
【原因】
主库执行这条insert myISAM表 select from innodb表 对from的表加S锁,和另一个update语句死锁,导致这个insert..select被回滚。
但是insert 的myiSAM表没有被回滚,因此记入了binlog,在从库上执行导致duplicate key1062
【解决办法】
stop slave;
set global sql_slave_skip_counter=1; (跳过一个EVENT)
start slave;


更加安全的做法是删除多出的行


1064错误
Master_Log_File: mysql-bin.001769
        Read_Master_Log_Pos: 818125140
             Relay_Log_File: relay-log.2881381
              Relay_Log_Pos: 18440516
      Relay_Master_Log_File: mysql-bin.001769
           Slave_IO_Running: Yes
          Slave_SQL_Running: No
            Replicate_Do_DB: 
        Replicate_Ignore_DB: 
         Replicate_Do_Table: 
     Replicate_Ignore_Table: 
    Replicate_Wild_Do_Table: 
Replicate_Wild_Ignore_Table: mysql.%,test.%,mysql.%,test.%
                 Last_Errno: 1064
                 Last_Error: Error 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'inser' at line 1' on query. Default database: 'crm_sale'. Query: 'inser'
               Skip_Counter: 0
【原因】
mysql 5.0 bug导致relay log损坏
【解决办法】
change master 到Exec_Master_Log_Pos的点,重新同步relay即可。

1053错误
【现象】
140524  9:48:36 [ERROR] Slave: Error 'Server shutdown in progress' on query. Default database: 'crm_sale'. Query: 'load data INFILE '/home/mysql/mysql/tmp/SQL_LOAD-3367957599-1103609990-72.data' IGNORE INTO table XXX character set utf8', Error_code: 1053


【原因】
mysql-5535,mysql-5615之前,都有这个bug,显式的kill查询时候会导致1053:server shutdown progress错误,并中断SQL线程。


【解决办法】
直接start slave


slave-skip-errors={}
跳过所有指定的错误号(如duplicate key 1062),从库降级,非dynamic
sql_slave_skip_counter=n
跳过n个点。若主库使用auto_increment或last_insert_id(),则需要跳过2个点

1594错误
【现象

151104 18:44:03 [ERROR] Slave SQL: 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. Error_code: 1594
151104 18:44:03 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log 'mysql-bin.000019' position 130682803

 
【原因
依据错误描述提示,显然slave sql进程读取不到relay log。

【解决办法】

stop slave ;change master to Master_Log_File="mysql-bin.000019", master_Log_Pos=130682803;start slave;


阅读(712) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~