MySQL Replication 遇到 Got fatal error 1236 from master 修复_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1815 | 回复: 0   主题: MySQL Replication 遇到 Got fatal error 1236 from master 修复        下一篇 
barry
注册用户
等级:中校
经验:1534
发帖:236
精华:2
注册:2012-1-13
状态:离线
发送短消息息给barry 加好友    发送短消息息给barry 发消息
发表于: IP:您无权察看 2014-11-19 10:59:49 | [全部帖] [楼主帖] 楼主

MySQL Replication 遇到 error 1236 就有点麻烦了~ 通常都是 binlog 出问题造成的~ (Master 或 Slave 的 binlog 坏掉都有可能造成此错误)

通常遇到这个状况, 都是 Slave 的 binlog 坏掉, 就 Slave DB 的资料重倒来解决, 但是此次遇到是 Master 的 binlog 坏掉, 就有点苦了~

错误讯息如下:

■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.003583' at 45997491, the last event read from './mysql-bin.003583' at 4, the last byte read from './mysql-bin.003583' at 4.'


MySQL Replication 遇到 Got fatal error 1236 from master 修复

 mysql> SHOW SLAVE STATUSG


错误讯息如下: (已经把不必要得删除)

Master_Log_File: mysql-bin.003583
Read_Master_Log_Pos: 45997491
Relay_Log_File: mysqld-relay-bin.006789
Relay_Log_Pos: 103569723
Relay_Master_Log_File: mysql-bin.003361
Slave_IO_Running: No
Slave_SQL_Running: Yes
Last_Errno: 0
Skip_Counter: 0
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.003583' at 45997491, the last event read from './mysql-bin.003583' at 4, the last byte read from './mysql-bin.003583' at 4.'


?: Debian / Ubuntu Linux 预设 MySQL data path: /var/lib/mysql, 所以下述 binlog 可於此路径寻找.

Slave binlog 坏掉的解法

1.一般常见是 Slave binlog 坏掉, 所以都会先去 Slave 找 mysql-bin.003583 档案.
2.再把 mysql-bin.003583 的资料用 mysqlbinlog dump 出来, 指到下一个 position 即可.
3.Slave: ls /var/lib/mysql/mysql-bin.003583 # not found.
4.Slave 不存在档案, 才发现到坏的是 Master.
Master binlog 坏掉的解法

 ■Master: # mysqlbinlog /var/lib/mysql/mysql-bin.003583 > ~/3583
ERROR: Error in Log_event::read_log_event(): 'read error', data_len: 27, event_type: 16


■最苦的状况是 Master 的 binlog 坏掉了, 所以所有 Slave 都死光光. XD
此时可以考虑几种作法:

1.全部 Slave 重倒 (最保险, no data lost)
2.先让 Replication 可以启动, 再来 重倒 / sync 一定需要同步的资料即可. (Cache ... 那种就可以不用理他)
下面是?裼玫诙?肿鞣?

1.mysql> STOP SLAVE;
2.mysql> CHANGE MASTER TO master_log_file = 'mysql-bin.003584', master_log_pos = 0; # 先指到下一个 binlog 档, pos 指 0 或 4, 都是一样意思.
3.mysql> START SLAVE;
4.mysql> SHOW SLAVE STATUS G # 於此应该就恢复了.
5.然后在对重要的 Table 用 pt-table-sync 来补一补即可. (apt-get install percona-toolkit)

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论