Из того, что первым приходит в голову:
1) master и slave базы, slave постоянно синхронизируется с master, большая часть запросов на чтение к slave (там где возможно и там, где нету транзакций, в которых читаем и тут же пишем), в свою очередь пишем в master. Таким образом каждая база может быть специальным образом настроена в приоритет чтения\записи.
2) Механизм очередей: парсинг, обработка и прочее делаются не при запросе пользователя, а демонами (по крону), механизм такой:
1. Пользователь создает задачу, задача добавляется в очередь;
2. Демон, который работает постоянно или запускается периодически берет задание из очереди и выполняет, данный шаг может быть разбит на несколько, например один демон скачивает и добавляет в другую очередь, из которой уже второй демон извлекает нужные данные и т.п.
3) Посмотреть в сторону PostgreSQL, а не MySQL, она является более серьезной БД и, вероятно с частью задач справится лучше, чем мускуль.
Это все, непосредственно в коде, а так конечно возможны всякие балансеры, базы на разных серверах (основная база, базы статистики, базы необработанных данных)