title: Convert huge database from Latin1 to UTF8?
body: <p>We've got a system written in PHP which has grown pretty large over the years. The database is MySQL (InnoDB tables) with currently over 12GB of data, there's hundreds of tables, many of which have over 12 million records!</p>
  
  <p>The problem is, a lot of the tables/columns (but not all) are in latin1, and we're (obviously) getting issues storing foreign characters.</p>
  
  <p>What's the best way for us to convert all the tables/text columns into UTF8, with the shortest downtime possible?</p>
  
  <p>The system is used by hundreds of people 24/7, so lengthy downtime is really not an option.</p>
  
  <p>Is there <em>any</em> way of doing this successfully without a ton of downtime, and are there any obvious things we need to be careful of?</p>
  
  <p>I know we'll need to set the following things to make our application use utf-8:</p>
  
  <ul>
  <li><code>&lt;meta http-equiv="content-type" content="text/html; charset=utf-8" /&gt;</code></li>
  <li><code>ini_set('default_charset', 'utf-8');</code></li>
  <li><code>SET NAMES utf8</code></li>
  <li>Files encoded to UTF8 in our IDE before uploading the file</li>
  </ul>
  
  <p>I've read various other posts, but everyone seems to be suggesting different methods, some saying it needs a full database dump/restore... which is going to mean hours and hours of downtime.</p>
  
  <p>So what's the best way to do this?</p>