Take a look at MySQLTuner:
http://blog.mysqltuner.com/
It's a script that "looks" at your MySQL server and suggests some optimizations. Besides learning quite a bit about MySQL performance tuning (because I didn't just blindly make every suggested change but instead looked up what the config option was about and its effects), the script also did make my server run smoother.
As for Drupal, if your site's visitors are mostly anonymous, I strongly recommend the Boost module:
http://drupal.org/project/boost
It basically creates a cache of static html pages that get served instead of hitting the MySQL server to create the page dynamically (or even fetching the page from Drupal's cache). In other words, it reduces the load on MySQL a lot.
Other than that, I suggest you take a look at placing varnish in front of your webserver for serving static files and, if you use Apache, look at using nginx or lighttpd instead.