docs: private EntryPosition findByStartTimeStamp(MysqlConnection mysqlConnection, Long startTimestamp) {
          EntryPosition endPosition = findEndPosition(mysqlConnection);
          EntryPosition startPosition = findStartPosition(mysqlConnection);
          String maxBinlogFileName = endPosition.getJournalName();
          String minBinlogFileName = startPosition.getJournalName();
          logger.info("show master status to set search end condition:{} ", endPosition);
          String startSearchBinlogFile = endPosition.getJournalName();
          boolean shouldBreak = false;
          while (running && !shouldBreak) {
              try {
                  EntryPosition entryPosition = findAsPerTimestampInSpecificLogFile(mysqlConnection,
                      startTimestamp,
                      endPosition,
                      startSearchBinlogFile,
                      false);
                  if (entryPosition == null) {
                      if (StringUtils.equalsIgnoreCase(minBinlogFileName, startSearchBinlogFile)) {
                          // 已经找到最早的一个binlog，没必要往前找了
                          shouldBreak = true;
                          logger.warn("Didn't find the corresponding binlog files from {} to {}",
                              minBinlogFileName,
                              maxBinlogFileName);
                      } else {
                          // 继续往前找
                          int binlogSeqNum = Integer.parseInt(startSearchBinlogFile.substring(startSearchBinlogFile.indexOf(".") + 1));
                          if (binlogSeqNum <= 1) {
                              logger.warn("Didn't find the corresponding binlog files");
                              shouldBreak = true;
                          } else {
                              int nextBinlogSeqNum = binlogSeqNum - 1;
                              String binlogFileNamePrefix = startSearchBinlogFile.substring(0,
                                  startSearchBinlogFile.indexOf(".") + 1);
                              String binlogFileNameSuffix = String.format("%06d", nextBinlogSeqNum);
                              startSearchBinlogFile = binlogFileNamePrefix + binlogFileNameSuffix;
                          }
                      }
                  } else {
                      logger.info("found and return:{} in findByStartTimeStamp operation.", entryPosition);
                      return entryPosition;
                  }
              } catch (Exception e) {
                  logger.warn(String.format("the binlogfile:%s doesn't exist, to continue to search the next binlogfile , caused by",
                      startSearchBinlogFile),
                      e);
                  int binlogSeqNum = Integer.parseInt(startSearchBinlogFile.substring(startSearchBinlogFile.indexOf(".") + 1));
                  if (binlogSeqNum <= 1) {
                      logger.warn("Didn't find the corresponding binlog files");
                      shouldBreak = true;
                  } else {
                      int nextBinlogSeqNum = binlogSeqNum - 1;
                      String binlogFileNamePrefix = startSearchBinlogFile.substring(0,
                          startSearchBinlogFile.indexOf(".") + 1);
                      String binlogFileNameSuffix = String.format("%06d", nextBinlogSeqNum);
                      startSearchBinlogFile = binlogFileNamePrefix + binlogFileNameSuffix;
                  }
              }
          }
          // 找不到
          return null;
      }