Mastodon Mastodon - Migrate Rancher database from container to external
 logo
  • Home 
  • Tags 
  • Blog posts 
  1. Home
  2. Blog posts
  3. Migrate Rancher database from container to external

Migrate Rancher database from container to external

Posted on May 30, 2016  (Last modified on October 23, 2024) • 2 min read • 242 words
Rancher   Ops   Solved   Infrastructure  
Rancher   Ops   Solved   Infrastructure  
Share via

I 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:

  • stop rancher
  • use a container ( sameersbn/mysql) to mount the rancher database content and do a mysqldump
  • import the dump into the external database (AWS RDS instance)
  • start rancher up with different parameters (use external database, as described in the official docs)

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:

setup screen

Nice.

 TeamCity LDAP authentication with JumpCloud
Ansible inventory file from Consul 
In case you want to follow me

Here are some links. The further to the right, the less active.

           
(c) Axel Bock | Powered by Hinode.
Link copied to clipboard
Code copied to clipboard