How to migrate from PostgreSQL to MySQL

User icon Crysfel VillaCalendar icon Feb 24, 2014Calendar icon

How to migrate from PostgreSQL to MySQL

I have migrated Quizzpot.com from Heroku to Digital Ocean, I been looking for a good solution to migrate my data from Heroku PostgresSQL database to a MySQL database. I tried with MySqlWorkbench but failed setting up the ODBC driver on my MacOS system. I also tried the pg2mysql php script to convert my dump file but it also fails.

Since Im using rails, the database schema gets created easily using the migrations, therefore I wrote a ruby program to get the data from Postgresql and generate a mysql dump file with all my data. Here are the steps I did.

Maintenance mode on in the heroku app to stop writing new data.

$ heroku maintenance:on

Generate a new backup with the latest data.

$ heroku pgbackups:capture --expire

Download the backup with the given URL.

$ heroku pgbackups:url

If the Postgresql server is not running already, start it; otherwise continue to the next step.

$ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

Restore the backup from heroku to our local Posgresql.

$ pg_restore -O -d dbname latest.dump

Generate the mysql dump file with all the data, this script will not create the tables, it only contains the data as sql inserts.

$ ruby migrate.rb

In your rails app, generate an empty database by running the migrations. This will prepare the mysql database.

$ rake db:migrate

Load the dump into the mysql server.

$ mysql -u root quizzpot < dumps/data.sql

Start you rails app

$ rails s

Now you should have you data from heroku in your local mysql, you can now generate a dump file and import it to your production database on digital ocean or maybe in Amazon RDS.

You can follow me in these other places too.

Crysfel's Twitter accountCrysfel's Linkedin accountCrysfel's Youtube channel

I'm also on YouTube

I post videos on YouTube every now and then, subscribe to my channel.

©2023 ALL RIGHTS RESERVED CRYSFEL'S BLOG