1. 问题现象

版本:MySQL 5.6,采用传统 binlog file & pos 方式配置的主从复制结构。

实例重启后,主从复制报错如上图所示。

2. 错误含义

错误分为2部分。

第一部分

  • Client requested master to start replication from position > file size;
  • the first event 'mysql-bin.000398' at 163800795,the last event read from './mysql-binlog.000398' at 4,the last byte read from './mysql-bin.000398' at 4'

第一部分

这部分来源于主库的DUMP线程函数

mysql_binlog_send ->sender.run()  ->Binlog_sender::init    ->Binlog_sender::check_start_file if ((file= open_binlog_file(&cache, m_linfo.log_file_name, &errmsg)) < 0)  {  set_fatal_error(errmsg);  return 1; } size= my_b_filelength(&cache); end_io_cache(&cache); mysql_file_close(file, MYF(MY_WME)); if (m_start_pos > size) {  set_fatal_error("Client requested master to start replication from "          "position > file size");  return 1; }

第二部分

这部分也来源于DUMP线程

mysql_binlog_send ->sender.run()   ->Binlog_sender::init   ->while (!has_error() && !m_thd->killed)   #如果正常这里开始循环读取binlog event,如果前面出错则直接继续后面逻辑   #如果有读取错误则报错    my_snprintf(error_text, sizeof(error_text),         "%s; the first event '%s' at %lld, "         "the last event read from '%s' at %lld, "         "the last byte read from '%s' at %lld.",         m_errmsg,         m_start_file, m_start_pos, m_last_file, m_last_pos,         log_file, my_b_tell(&log_cache));

3. 可能的原因

分析后觉得最有可能原因应该和sync_binlog 有关。

如果我们没有设置为1,那么可能os cache没有刷盘,如果主库服务器直接crash重启很容易就遇到这种问题。

稍微google查询了一下发现很大部分出现这种错误都是由于服务器crash且sync_binlog 没设置为 1导致的。

这也证明我们的说法。

最后查看问题数据库的主库确实没有设置为双1。

那么通过这个小案例,我们已经更加深刻体会到设置双1的重要性。

总结

更多相关文章

  1. Android(安卓)报错:Caused by: android.os.FileUriExposedExcepti
  2. Ionic 运行报错No resource identifier found for attribute 'ap
  3. Android(安卓)启动Tomcat服务报错,端口占用解决方案
  4. Android(安卓)项目混编flutter报错
  5. Gradle Sync Failed,报错"could not find com.android.support:ap
  6. Android(安卓)报错 FLAG_ACTIVITY_NEW_TASK flag
  7. android 报错Attempt to invoke virtual method
  8. 关于android studio报错transformClassesAndResourcesWithProgua
  9. 报错android-apt plugin is incompatible with the Android(安卓

随机推荐

  1. android 随笔提示
  2. Android Dialog
  3. Android java.lang.IllegalArgumentExcep
  4. 使用Android Studio时报错 Manifest merg
  5. 使Android原生时间选择器样式为滚轮
  6. android_9 Intent 基础
  7. Android 判断网络连接
  8. 2014.04.21 ——— android 魅族SmartBar
  9. Android获取本地图片之ACTION_GET_CONTEN
  10. 主界面监听返回键,退出程序