A FlatBuffer must be a contiguous buffer, so if you already have some data you want to store inside the FlatBuffer, it must be copied.
You can do true zero-copy with FlatBuffers and GRPC: you can first allocate a slice from GPRC, then construct the FlatBuffer inside of it (see custom allocator in grpc.h), then send it without copying. You can use CreateUninitializedVector to create space inside a FlatBuffer that can be filled by other code in zero copy style, if you can compute the length ahead of time.
That said, MyData is entirely a wrapper around your data with no additional fields. If you do not intend to store any other FlatBuffer data, it is questionable why this should be wrapped in a FlatBuffer at all?