您的位置:首页 > 数据库 > SQL

新设置mysql主从机,MySQL主从失败 错误Got fatal error 1236

2013-05-31 16:52 585 查看
MySQL主从失败 错误Got fatal error 1236解决方法

新设置的主从mysql服务器, 报错, 错误如下:

show slave status错误:

mysql> show slave status\G

Master_Log_File: mysql-bin.000001

Read_Master_Log_Pos: 627806304

Relay_Log_File: mysql-relay-bin.000990

Relay_Log_Pos: 627806457

Relay_Master_Log_File: mysql-bin.000001

Slave_IO_Running: No

Slave_SQL_Running: Yes

Exec_Master_Log_Pos: 627806304

Relay_Log_Space: 627806663
......

Last_IO_Error: Got fatal error 1236 from master when reading data from binary log:

'Client requested master to start replication from impossible position'mysql错误日志:

tail var/lib/mysql/mysql-error.log

111010 17:35:49 [ERROR] Error reading packet from server: Client requested master

to start replication from impossible position ( server_errno=1236)

111010 17:35:49 [ERROR] Slave I/O: Got fatal error 1236 from master when reading data

from binary log: 'Client requested master to start replication from impossible

position', Error_code: 1236

111010 17:35:49 [Note] Slave I/O thread exiting, read up to log 'mysql-bin.000001',

position 627806304

按照习惯, 先尝试必改position位置.

mysql> stop slave;

mysql> change master to master_log_file='mysql-bin.000001',master_log_pos=627625751;

mysql> start slave;错误依旧, 接下来登陆到主服务器查看binlog日志.

先按照错误点的标记去主服务器日志中查找:

[root@db1 ~]# mysqlbinlog --start-position=627655136 /var/lib/mysql/mysql-bin.000001

/*!40019 SET @@session.max_insert_delayed_threads=0*/;

/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;

DELIMITER /*!*/;

# at 4

#111010 13:31:19 server id 4 end_log_pos 106 Start: binlog v 4, server v 5.1.45-log

created 111010 13:31:19

# Warning: this binlog is either in use or was not closed properly.

BINLOG '

F1aTTg8EAAAAZgAAAGoAAAABAAQANS4xLjQ1LWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAAAAAAAAEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC

'/*!*/;

DELIMITER ;

# End of log file

ROLLBACK /* added by mysqlbinlog */;

/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;没有看到这个位置.

[root@db1 ~]# mysqlbinlog /var/lib/mysql/mysql-bin.000001 > test.txt

less text.txt

看最后一部分

# at 627625495

#111010 16:35:46 server id 1 end_log_pos 627625631 Query thread_id=45613333

exec_time=32758 error_code=0

SET TIMESTAMP=1318289746/*!*/;

delete from freeshipping_bef_update where part='AR-4006WLM' and code=''

/*!*/;

# at 627625631

#111010 16:35:46 server id 1 end_log_pos 627625751 Query thread_id=45613333

exec_time=32758 error_code=0

SET TIMESTAMP=1318289746/*!*/;

delete from shippingFee_special where part='AR-4006WLM'

/*!*/;

DELIMITER ;

# End of log file

ROLLBACK /* added by mysqlbinlog */;

/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;找到最接近错误标记627655136的一个position是627625631.

再回到slave机器上change master, 将postion指向这个位置.

mysql> stop slave;

Query OK, 0 rows affected (0.00 sec)

mysql> change master to master_log_file='mysql-bin.000001',master_log_pos=627625631;

Query OK, 0 rows affected (0.06 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: 192.168.11.26

Master_User: rep

Master_Port: 3306

Connect_Retry: 10

Master_Log_File: mysql-bin.000001

Read_Master_Log_Pos: 25433767

Relay_Log_File: mysql-relay-bin.000003

Relay_Log_Pos: 630

Relay_Master_Log_File: mysql-bin.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

主从同步正常了!

附:主从的快速设置方法:

1、要主机上修改my.cnf

server-id = 1

log-bin #开启记录地进制日志功能,很重要

2、在主机上增加一个帐号,分配从机的复制权限:

grant replication slave on *.* to 'test'@'192.168.11.27' identified by '123456';

3、用mysqldump导出数据,导入到从机

4、设置slave主机,修改my.cnf:

server-id = 2

其它slave从机以此类推,保证ID的唯一。

5、开启同步:

在从机中执行如下命令:

mysql> change master to mastart_host='192.168.11.26(主机IP)',master_user='test',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=98;

mysql>slave start;

查看是否同步:

mysql>show slave status\G;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.11.26

Master_User: test

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000001

Read_Master_Log_Pos: 107

Relay_Log_File: mysqld-relay-bin.000002

Relay_Log_Pos: 253

Relay_Master_Log_File: mysql-bin.000001

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 107

Relay_Log_Space: 410

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 1

1 row in set (0.00 sec)

如果:slave_io_runnung和slave_sql_running都为yes就表示成功。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: