If it is — say — mid-morning, and you want to know if someone has already eaten today, then “Have you had/eaten breakfast?” (possibly “…yet?”) is probably the more natural form (since they might still have the breakfast in question), but either is fine. If you’re asking about a previous day, or asking in the afternoon (so that it’s too late for them to have that breakfast), then it should be “Did you have/eat breakfast?”
To do breakfast (or any other meal) has a slightly different connotation: not just eating the meal, but specifically meeting someone for it, usually to discuss business. Unless you’re specifically talking about this situation, Did you do breakfast? is probably not what you want.