Quello che sta succedendo qui è che MySQL sta facendo ORDER BY costruendo una tabella temporanea dall'unione delle due tabelle. La tabella temporanea è troppo grande per adattarsi alla memoria, quindi MySQL crea un file temporaneo.
Ci sono alcune cose che impedirebbero il corretto funzionamento. Lo spazio su disco grezzo è uno. ulimit è un altro. Se questo è ospitato, potrebbero avere una quota sull'utilizzo del disco (oltre a ulimit).
Suggerirei di aggiungere una clausola limitante alla tua query. Attualmente carichi l'intero rss_posts e rss_feeds nella tabella temporanea per l'ordinamento. Se vuoi solo i 10 più recenti, sono molti più dati di quelli di cui hai veramente bisogno.
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;