To, co się tutaj dzieje, to to, że MySQL wykonuje ORDER BY, tworząc tabelę tymczasową z połączenia dwóch tabel. Tabela tymczasowa jest zbyt duża, aby zmieścić się w pamięci, więc MySQL tworzy plik tymczasowy.
Jest kilka rzeczy, które uniemożliwiłyby to poprawne działanie. Surowe miejsce na dysku to jedno. ulimit jest kolejnym. Jeśli to jest hostowane, mogą mieć przydział wykorzystania dysku (oprócz ulimit).
Sugerowałbym dodanie do zapytania klauzuli ograniczającej. Obecnie ładujesz wszystkie rss_posts i rss_feeds do tabeli tymczasowej w celu sortowania. Jeśli chcesz tylko najnowszych 10, to jest o wiele więcej danych, niż naprawdę potrzebujesz.
SELECT posts.id, posts.post_title
FROM rss_posts AS posts INNER JOIN rss_feeds AS feeds ON posts.blog_id=feeds.id
WHERE feeds.blog_language=1
AND posts.post_data_db > (now - interval 30 day);
ORDER BY posts.post_date_db DESC LIMIT 10;