vitessio/vitess · error

mysql cluster type not yet supported

Error message

mysql cluster type not yet supported

What it means

This error is returned by the vtctl Mount command handler when the user requests mounting an external cluster of type "mysql". Mounting a foreign MySQL cluster (non-Vitess) is not implemented yet; only "vitess" cluster type is supported, so the mysql case is an explicit placeholder rejection.

Source

Thrown at go/vt/vtctl/vtctl.go:3897

		case *show:
			vci, err := wr.TopoServer().GetExternalVitessCluster(ctx, clusterName)
			if err != nil {
				return err
			}
			if vci == nil {
				return fmt.Errorf("there is no vitess cluster named %s", clusterName)
			}
			data, err := json.Marshal(vci)
			if err != nil {
				return err
			}
			wr.Logger().Printf("%s\n", string(data))
			return nil
		default:
			return wr.MountExternalVitessCluster(ctx, clusterName, *topoType, *topoServer, *topoRoot)
		}
	case "mysql":
		return errors.New("mysql cluster type not yet supported")
	default:
		return errors.New("cluster type can be only one of vitess or mysql")
	}
}

func commandGenerateShardRanges(ctx context.Context, wr *wrangler.Wrangler, subFlags *pflag.FlagSet, args []string) error {
	numShards := subFlags.Int("num_shards", 2, "Number of shards to generate shard ranges for.")

	if err := subFlags.Parse(args); err != nil {
		return err
	}

	shardRanges, err := key.GenerateShardRanges(*numShards, 0)
	if err != nil {
		return err
	}

	return printJSON(wr.Logger(), shardRanges)

View on GitHub (pinned to 01a25a7d17)

Solutions

  1. Use cluster type "vitess" if the external cluster is actually another Vitess deployment
  2. Migrate from external MySQL using the supported workflow (e.g. MoveTables with an external MySQL via vreplication "external" setups) instead of Mount with mysql type
  3. Upgrade Vitess to a version where mysql cluster mounting may be implemented, or contribute/implement support
  4. Check `vtctl Mount --help` for currently supported --type values

Example fix

// before
vtctl Mount --type mysql --topo_type etcd2 ... ext1
// after
vtctl Mount --type vitess --topo_type etcd2 --topo_server ... --topo_root /vitess/ext1 ext1
Defensive patterns

Strategy: validation

Validate before calling

clusterType := *topoTypeFlag
if clusterType == "mysql" {
    return fmt.Errorf("mysql cluster mounting unsupported in this Vitess version")
}

Type guard

func isSupportedClusterType(t string) bool { return t == "vitess" }

Try / catch

if err := wr.MountExternalVitessCluster(ctx, name, tt, ts, tr); err != nil {
    if strings.Contains(err.Error(), "not yet supported") {
        log.Warn("mysql cluster type unsupported; use vitess type")
    }
    return err
}

Prevention

When it happens

Trigger: Running `vtctl Mount --type mysql ...` (command MountExternal... via commandMountExternalVitessCluster) where the cluster type flag/value resolves to "mysql" in the switch statement at go/vt/vtctl/vtctl.go:3896.

Common situations: Operators trying to register an external plain MySQL cluster (e.g. for VReplication migration from a non-Vitess MySQL) assuming mysql type is supported; documentation/tutorial mismatches across Vitess versions.

Related errors


AI-assisted analysis of vitessio/vitess@01a25a7d17 (2026-09-01). Data as JSON: /api/errors/4a1369a4b4639d76. Report an issue: GitHub.