Migrate Rancher database from container to external
Posted on May 30, 2016 (Last modified on October 23, 2024) • 2 min read • 242 wordsI wanted to switch from an in-container database setup to an external database setup. And I didn’t know what happens when you just lose all database contents, and I thought with Docker and some tweaking that should also not be necessary. So I just migrated the databases. Here’s what I did for those interested:
And now the actual command lines:
# create socket directory
$ cd RANCHER_MYSQL_MOUNT
$ mkdir sockets
# start sameersbn/mysql to have a mysql container for dumping everything
$ docker run -d --name temp-mysql -v $(pwd)/sockets:/var/run/mysqld -v $(pwd):/var/lib/mysql sameersbn/mysql
# dump the database
$ mysqldump -S ./sockets/mysqld.sock --add-drop-database --add-drop-table --add-drop-trigger --routines --triggers cattle > cattle.sql
# restore the database in AWS / whatever
$ mysql -u USERNAME -p -h DB_HOST DB_NAME < cattle.sq
(Don’t forget to stop the sammersbn container once you’re done). I have configured puppet to start rancher. The final configuration in puppet looks like this:
::docker::run { 'rancher-master':
image => 'rancher/server',
ports => "${rancher_port}:8080",
volumes => [],
env => [
"CATTLE_DB_CATTLE_MYSQL_HOST=${db_host}",
"CATTLE_DB_CATTLE_MYSQL_NAME=${db_name}",
"CATTLE_DB_CATTLE_MYSQL_PORT=${db_port}",
"CATTLE_DB_CATTLE_MYSQL_USERNAME=${db_user}",
"CATTLE_DB_CATTLE_MYSQL_PASSWORD=${db_pass}",
],
}
Restart, and it seems to be working just fine. To check go to http://RANCHER_URL/admin/ha (yes, we still use HTTP internally, it will change), and you should see this:
Nice.