MySQL Replication 遇到 Got fatal error 1236 from master 修复
发布:smiling 来源: PHP粉丝网 添加日期:2014-10-02 20:34:16 浏览: 评论:0
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 --phpfensi.com
- 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 ... 那种就可以不用理他).
解决实例代码如下:
- mysql> STOP SLAVE;
- mysql> CHANGE MASTER TO master_log_file = 'mysql-bin.003584', master_log_pos = 0; # 先指到下一个 binlog 档, pos 指 0 或 4, 都是一样意思.
- mysql> START SLAVE;
- mysql> SHOW SLAVE STATUS G # 於此应该就恢复了.
然后在对重要的 Table 用 pt-table-sync 来补一补即可,apt-get install percona-toolkit.
Tags: Replication error1236 from master
- 上一篇:linux下mysql忘记root密码
- 下一篇:MySQL高效分页,子查询分页实例
相关文章
- ·mariadb multi-source replication,mariadb多主复制(2014-09-23)
- ·MySQL Replication提示错误Error You cannot ALTER a log table(2014-09-29)
- ·MySQL Replication 主从配置的示例(2015-04-20)
- ·MySQL Error 1236 错误解决办法(2014-10-17)
- ·mysql提示Got error 28 from storage engine问题解决方法(2014-09-23)
- ·mysql中select into from语句使用例子分析(2014-09-24)
- ·php date()和sql FROM_UNIXTIME() 的效率比较(2014-09-27)
- ·MySQL中from_unixtime()时间格式化函数用法(2014-09-29)
- ·MySQL 出现 Could not initialize master info structure 修复(2014-10-02)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)