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
- Use cluster type "vitess" if the external cluster is actually another Vitess deployment
- 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
- Upgrade Vitess to a version where mysql cluster mounting may be implemented, or contribute/implement support
- 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
- Always check `vtctl Mount --help` for supported --type values before scripting
- Pin and read the Vitess version's docs for external cluster mounting support
- Gate mysql-type mounts behind a version check in automation
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
- TopoCat: invalid wildcards: %v
- no shards in keyspace %v
- not allowed: deny-all security-policy enforced
- not allowed: read-only security-policy enforced
- invalid choice for enum
AI-assisted analysis of vitessio/vitess@01a25a7d17 (2026-09-01).
Data as JSON: /api/errors/4a1369a4b4639d76.
Report an issue: GitHub.