To do this you will need to use the Vitess MySQL Go client. You can find a Golang Database compatible gRPC driver here. For Java go here.


Once you have the appropriate driver you will need to add the -service_map grpc-vtgateservice VTGate flag and set the port -grpc_port.


This runs on a standard gRPC interface, so if you want to directly use it you can follow the example below:

#!/usr/bin/env node
import Debug from "debug";
import * as grpc from "grpc";
import {CallerID} from './proto/vitess/vtrpc_pb';
import {BoundQuery} from './proto/vitess/query_pb';
import {Session,ExecuteRequest,ExecuteResponse} from './proto/vitess/vtgate_pb';
import {VitessClient} from  './proto/vitess/vtgateservice_grpc_pb';
const log = Debug("VtgateClient");
const client = new VitessClient("139.178.90.99:15306",grpc.credentials.createInsecure());
const SingleQuery = async () => {
   return new Promise((resolve,reject) => {
       const caller = new CallerID();
       caller.setPrincipal("nodejs");
       const session = new Session();
       session.setTargetString("main");
       const query = new BoundQuery();
       query.setSql("SELECT * from main.sbtest1 where id=10");
       const request = new ExecuteRequest()
       request.setSession(session);
       request.setQuery(query);
       request.setCallerId(caller);
       client.execute(request, (err: grpc.ServiceError | null, response: ExecuteResponse ) => {
           if( err != null ){
               console.log(`[SingleQuery] Error: ${err.message}`)
               reject(err); return;
           }
           console.log(`[SingleQuery] Response: ${JSON.stringify(response.toObject())}`)
           resolve(response);
       });
   });
}
async function main() {
   client.
   console.log(`[main] Starting`);
   await SingleQuery();
}
main().then((_) => _);