Hi,
I wouldn't try to use MySQL for a 10TB single instance DB unless most of the data is historical data that isn't accessed frequently. Sharding generally won't work for such an application, because every table will likely need partitioned by different keys (ie you have a very large order table and invoice table and it doesn't make sense to shard the invoice table by order number when the most frequent access is by invoice number). MySQL is not good for batch processing of large amounts of data (ie ,year over year reports) because it lacks intra-query parallelism.
MySQL could be a fit if the last say 90 days of data fit into the buffer pool. In such a case you could use a slave for OLAP reporting. You could partition the tables using the partitioning option and report on them using Shard-Query (
http://shardquery.com) to get intra-query parallelism as it can access partitions of tables in parallel, and it knows how to efficiently join tables partitioned on different keys on a single node.
--Justin