WordPress FAQ: How do I Move my blog to a new host?

What is the process for moving my WordPress blog to another host?

As the technology manager at b5media, my team is often asked to migrate a blog to our cluster. Usually, when that happens, I ask a bunch of relevant questions:

  1. Is the blog a WordPress blog? If not, what platform is it?
  2. Are we going to continue to use the same domain or do we want to use a new or existing one?
  3. Are we merging this blog with an existing blog?
  4. Is it important to preserve permalinks?
  5. If this is a WordPress blog, what version of WordPress is being used?
  6. How many authors?

Lots of relevant information is needed to migrate a blog. This question is about moving a WordPress blog so we’ll assume that it’s not a Movable Type, Typepad, Blogger or Expression engine blog. Or any other platform for that matter. WordPress.com counts as a “WordPress” blog though. ;-)

Solution 1: Quick Move

The easiest way to move from one blog to another, particularly if you’re moving the blog to a new domain and both already resolve (talk to your registrar or host to get help with DNS resolution) then you can move your categories, posts and comments using WordPress’ export functionality. This is native in WP 2.1, however, you can achieve nearly the same thing with my WordPress-to-WordPress importer. Having the WXR file, as it is called, in hand you can import into WordPress 2.1 at the new location.

The sacrifice you give up in preservation of options. You’ll have to go in and set your permalink structure, your blog name, description, number of posts to display and any other options. You will have to upload and activate plugins, etc. This is a content migration solution only.

Incidentally, this is the only way to move off of WordPress.com and the only way to merge a blog into another one – say if you were retiring it.

Solution 2: Full Move

If the quick way doesn’t provide satisfactory results, you can do the full way. I always recommend doing whatever you can by SSH, but some hosts won’t allow for that and some folks are simply scared stupid of command line. Is text really that scary? :)

1. First of all, back up your database. You can do this via phpMyAdmin. I would not recommend the formerly-bundled wp-db-backup plugin for a number of reasons that ultimately end in the reason why it is no longer a bundled plugin. If you’re using SSH, you’ll want to use the

1
mysqldump

command:

1
mysqldump -uUSER -p DBNAME > dump.sql

2. Now, grab your files. Most people choose FTP for this, but again, if you can use SSH to create an archive file of your data, do it for reliability reasons. Make sure you grab your .htaccess and database dump as well.

1
tar cvf archive.tar path/to/blog/dir path/to/dump.sql

The compress it:

1
gzip archive.tar

This will create a file called

1
archive.tar.gz

that you can grab via SFTP or FTP and transfer to your new server.

3. On the new server, you have to restore everything back in to place. First, make sure you have a database setup for your blog on your new server. If you just used FTP to grab all your stuff, ignore the next bit. If you tarred your archive and database dump, I’d recommend untarring in a temporary location.

1
tar zxvf archive.tar.gz

Now, whether you used FTP or SSH, you can move your data files into the proper location and run a:

1
mysql -uUSER -p NEWDBNAME < dump.sql

With any luck, once your DNS is pointed at the new server and begins to resolve, your blog will be perfectly moved.

Published by

Aaron Brazell

Aaron Brazell is a Baltimore, MD-based WordPress developer, a co-founder at WP Engine, WordPress core contributor and author. He wrote the book WordPress Bible and has been publishing on the web since 2000. You can follow him on Twitter, on his personal blog and view his photography at The Aperture Filter.

8 thoughts on “WordPress FAQ: How do I Move my blog to a new host?”

  1. I have a big database (11M), I can’t import it via phpmyadmin since the max size allowed is 8M. I’d like to know in this case, is there a database size limit when importing the database with command line?

  2. There is no limit from the command line and, in fact, for people like yourselves that have large databases this is the way I recommend going. In fact, at this size, I’d try to make sure you do everything from the command line.

  3. Michael and Aaron, if your host allows you to access your server, you can simply copy your /var/lib/mysql/ subdirectories local and then copy them to the new host. It eliminates the need to export, import, etc.

  4. Really? I’ve done it a bunch of times and haven’t had a problem. MySQL simply saves the data in optimized data files. Why does this risk corruption? As for savings, you save the import and export effort.

    To me it appears the same as taking a MSSQL server, detaching it, and moving it. No?

  5. Simply taking a copy of the MySQL data files is inherently dangerous *if the database is running.* The reason for this is that database files are not static things; any time the database changes in any way, many places inside the data files are changed (indices, content, auto increment fields, etc). It is similar to pulling the power from your computer rather than shutting it down.

    All that being said, if you can actually shut down MySQL it is then safe to take a copy of the database files. This is sometimes called a cold backup.

    For more information on safe ways to back up your database, see the relevant documentation. MySQL’s can be found here:
    (Three different versions of MySQL)
    http://dev.mysql.com/doc/refman/4.1/en/disaster-prevention.html
    http://dev.mysql.com/doc/refman/5.0/en/disaster-prevention.html
    http://dev.mysql.com/doc/refman/5.1/en/disaster-prevention.html

Comments are closed.