GitlabHQ – de SQLite à mySQL

Comme notre installation de GitlabHQ à SRMvision est faite pour rester, nous avons décidé de migrer de la base SQLite vers un système plus simple à gérer pour nous : mySQL.
Les étapes sont assez simple, premièrement, configurons mySQL :

create database gitlab; 
grant all privileges on gitlab.* to "gitlab" identified by "gitlab"; 
flush privileges;

Ensuite récupérons les données existantes dans GitlabHQ, arrêtez votre serveur, puis, depuis le dossier de GitlabHQ :

bundle exec rake db:data:dump RAILS_ENV=production

ceci va créer un fichier db/data.yml. Tout ce qu’il vous reste à faire maintenant est de reconfigurer GitlabHQ pour lui dire de se connecter à mySQL et d’y intégrer les données existantes.
La configuration de la base de données à utiliser se trouve dans le fichier config/database.yml, sauvegardez le et récupérez le database.yml.example comme base de travail:

mv config/database.yml config/database.yml.old
cp config/database.yml.example config/database.yml

Il ne vous reste qu’à éditer le fichier pour refléter votre configuration, seule la partie production du fichier est utile dans notre cas :

development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: gitlabhq_development
  pool: 5
  username: root
  password: "secure password"
  # socket: /tmp/mysql.sock

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: gitlabhq_test
  pool: 5
  username: root
  password: "secure password"
  # socket: /tmp/mysql.sock

production:
  adapter: mysql2
  encoding: utf8
  reconnect: true # permet de se reconnecter quand le service mysql redémarre
  database: gitlab # à remplacer avec le nom de votre base
  pool: 5
  username: gitlab # à remplacer avec vos identifiants
  password: "gitlab" # à remplacer avec vos identifiants
  socket: /var/run/mysqld/mysqld.sock # mysql socket location on debian

Une fois ceci fait, il vous reste à créer le schéma et à importer vos données sauvegardées :

bundle exec rake db:setup RAILS_ENV=production
bundle exec rake db:data:load RAILS_ENV=production

C’est tout, il ne reste plus qu’à redémarrer le serveur de GitlabHQ. Si toutefois ça ne fonctionnait pas, vous n’avez qu’à restaurer le fichier database.yml.old pour retourner à la configuration par défaut utilisant SQLite.

  • Spongebob

    awesome, thanks exactly what i was looking for — i’ll give it a try.