Running a public MySQL mirror currently requires about 400GB of storage. The bandwith that will be used is dependent on the number of mirrors in your area, and the number of users in your area who choose to use your mirror.
We have a few primary mirrors that are used to provide data for the other mirrors, using the rsync program. The mirrored site consists only of static HTML, images, and other files, so there are no other special server requirements.
To keep your mirror up to date, you will want to set up a cron task like the following:
10 */6 * * * rsync -a --delete --delete-after \ rsync://example.com/mysql/ /path/to/local/mirror/
You should synchronize your mirror at least daily, and no more often than once every hour. If you customize the minute at which your mirror updates, that will help spread the load on our primary mirrors.
Current Primary Mirrors Which You Can rsync Against