Migrar entre versiones de Redmine

Introducción

Hoy lo que vamos a explicar es como migrar versiones de Redmine. En este caso desde una antígua que tenía la base de datos en sqlite a una versión de hoy en día con motor de base de datos MySQL.

También hay que decir que la migración la hemos realizado desde una versión source a una versión paquetizada. En el caso de que sea de source a source es lo mismo, lo único que cambia quizás sería la ruta de ambas instalaciones.

En este caso también hemos pasado de un servidor antiguo a uno nuevo.

Vamos a dar por supuesto que ya tenemos instalado el redmine en la nueva máquina.

Migrar entre versiones de Redmine

Lo primero que haremos será localizar la base de datos antigua (sqlite) para poder trabajar con ella. Generalmente la localización de los redmine que está instalado desde las source estan en «/usr/share/redmine». Allí buscaremos la configuración de nuestro redmine que nos dirá la ruta de nuestra base de datos sqlite.

Desde el servidor antiguo

Vamos a suponer que nuestra base de datos se encuentra en: /usr/share/redmine/bbdd/redmine.sqlite

Lo que haremos será copiar este fichero a la nueva máquina y allí haremos las conversiones necesarias. Para ello hacemos un simple scp:

scp /usr/share/redmine/bbdd/redmine.sqlite IP_SERVIDOR_DESTINO:/RUTA/DESTINO/VALIDA

Desde el servidor nuevo

Nos situaremos en la ruta donde tenemos la vieja base de datos y procederemos a la conversión en SQL. Para ello ejecutamos el siguiente comando:

sqlite3 redmine.sqlite .dump > redmine.sql

Pero nuestra tarea no acaba ahí ya que la conversión para MYSQL tenemos que hacer unos cambios en el fichero que son los siguientes:

  • Eliminar las lineas que contengan «PRAGMA», «BEGIN TRANSACTION», «COMMIT;»
  • Eliminar las lineas que contengan «DELETE FROM», «INSERT INTO» dentro de la tabla sqlite_sequence.
  • Reemplazar AUTOINCREMENT por AUTO_INCREMENT.
  • Reemplazar ‘t’ y ‘f’ por ‘1’ y ‘2’
  • Reemplazar las comillas dobles («) por acentos hacia la derecha (`).

Una vez realizado los cambios en nuestro archivo podemos importar este archivo en nuestra base de datos o una nueva por si queremos probarla.

En nuestro caso la vamos a importar sobre una base de datos nueva llamada «redmine_new» que ya tenemos creada.

mysql -uUSUARIO -p redmine_new < redmine.sql

Tardará un tiempo (dependiendo de los registros) en completar esta tarea. Una vez finalizada la importación de los datos sin problemas tenemos que situarnos en el directorio de nuestro redmine, en nuestro caso:

cd /usr/share/redmine

Vamos a crear un nuevo token para nuestra exportación nueva:

rake generate_secret_token

Exportamos los nuevos datos en nuestra base de datos, ajustaran los datos a las versiones actuales:

rake db:migrate RAILS_ENV=production

Si hemos migrado los plugins (ojo si son muy antiguos no valdrán y darán error)

rake redmine:plugins:migrate RAILS_ENV=production

Limpiamos la cache y las sesiones:

rake tmp:cache:clear
rake tmp:sessions:clear

Por último reiniciamos el apache porque generalmente está configurado el redmine con el mod_passenger.

service apache2 restart

10 comentarios en “Migrar entre versiones de Redmine”

  1. Buenos días.

    Tras intentar seguir su guía para migrar los datos de redmine tengo un problema que consultarle.

    Actualmente tengo 2 versiones de redmine distintas, instaladas con Bitnami Lampstack.
    La primera es la 2.3.3 y la segunda la versión 3.3.0, ambas bajo mysql.

    He seguido su guía para realizar la migración pero en el paso «rake generate_secret_token», recibo este error:
    /opt/redmine/apps/redmine/htdocs/bin # rake generate_secret_token
    (in /opt/redmine/apps/redmine/htdocs)
    rake aborted!
    NameError: uninitialized constant ActionView::Helpers::ActiveModelHelper
    /opt/redmine/apps/redmine/htdocs/vendor/bundle/ruby/2.1.0/gems/actionview-4.2.6/lib/action_view/helpers.rb:40:in `’
    /opt/redmine/apps/redmine/htdocs/vendor/bundle/ruby/2.1.0/gems/actionview-4.2.6/lib/action_view/helpers.rb:4:in `’
    /opt/redmine/apps/redmine/htdocs/vendor/bundle/ruby/2.1.0/gems/actionview-4.2.6/lib/action_view/helpers.rb:3:in `’
    /opt/redmine/apps/redmine/htdocs/vendor/bundle/ruby/2.1.0/gems/actionview-4.2.6/lib/action_view/base.rb:5:in `’
    /opt/redmine/apps/redmine/htdocs/vendor/bundle/ruby/2.1.0/gems/actionview-4.2.6/lib/action_view/view_paths.rb:1:in `’
    /opt/redmine/apps/redmine/htdocs/vendor/bundle/ruby/2.1.0/gems/actionpack-4.2.6/lib/abstract_controller/rendering.rb:4:in `’
    /opt/redmine/apps/redmine/htdocs/vendor/bundle/ruby/2.1.0/gems/actionpack-4.2.6/lib/action_controller/base.rb:204:in `’
    /opt/redmine/apps/redmine/htdocs/vendor/bundle/ruby/2.1.0/gems/actionpack-4.2.6/lib/action_controller/base.rb:164:in `’
    /opt/redmine/apps/redmine/htdocs/vendor/bundle/ruby/2.1.0/gems/actionpack-4.2.6/lib/action_controller/base.rb:5:in `’
    /opt/redmine/apps/redmine/htdocs/vendor/bundle/ruby/2.1.0/gems/actionpack-action_caching-1.1.1/lib/action_controller/action_caching.rb:13:in `’
    /opt/redmine/apps/redmine/htdocs/vendor/bundle/ruby/2.1.0/gems/actionpack-action_caching-1.1.1/lib/actionpack/action_caching.rb:1:in `require’
    /opt/redmine/apps/redmine/htdocs/vendor/bundle/ruby/2.1.0/gems/actionpack-action_caching-1.1.1/lib/actionpack/action_caching.rb:1:in `’
    /opt/redmine/apps/redmine/htdocs/config/application.rb:5:in `’
    /opt/redmine/apps/redmine/htdocs/Rakefile:5:in `’
    LoadError: cannot load such file — actionpack-action_caching
    /opt/redmine/apps/redmine/htdocs/config/application.rb:5:in `’
    /opt/redmine/apps/redmine/htdocs/Rakefile:5:in `’
    (See full trace by running task with –trace)

    La verdad es que estoy bastante perdido con el tema de «Ruby»
    Todo esto lo estoy ejecutando en una máquina Suse 12, por si sirve de algo aunque imagino que los paquetes que utiliza la aplicación provienen todos del Lampstack.

    Ante todo, gracias por compartir su conocimiento y por la ayuda.
    Un saludo.

    1. Buenas,

      Es raro ya que a mi no me dio ningún tipo de problema sino lo hubiera añadido al artículo. Puede que tengas algún tipo de problema con algún módulo de ruby.

      Prueba a ejecutar el comando rake -T a ver si te da algún problema con alguno de los módulos. Como por ejemplo un error tipo:

      LoadError: cannot load such file — nokogiri/nokogiri

      Un saludo

  2. Buenas de nuevo,

    a parte de lo que que indico hay mas lineas como las que puse antes pero coloco las mas esenciales:
    rake aborted!
    LoadError: libiconv.so.2: cannot open shared object file: No such file or directory – /opt/redmine/apps/redmine/htdocs/vendor/bundle/ruby/2.1.0/gems/nokogiri-1.6.8/lib/nokogiri/nokogiri.so

    LoadError: cannot load such file — nokogiri/2.1/nokogiri

    Eso ejecutando el comando con el usuario root desde /opt/redmine/apps/redmine/htdocs/
    He visto por ahí en otras paginas que también indican que se ejecute los comandos desde /opt/redmine con el ejecutable «use_redmine», no se si debería tirar de ahí…

    Gracias por la ayuda!!

      1. Hola de nuevo,

        mi calvario sigue adelante…

        gem install –local /opt/nokogiri-1.6.8.gem
        Building native extensions. This could take a while…
        ERROR: Error installing /opt/nokogiri-1.6.8.gem:
        ERROR: Failed to build gem native extension.

        /usr/bin/ruby.ruby2.1 extconf.rb
        mkmf.rb can’t find header files for ruby at /usr/lib64/ruby/include/ruby.h

        extconf failed, exit code 1

        Gem files will remain installed in /usr/lib64/ruby/gems/2.1.0/gems/nokogiri-1.6.8 for inspection.
        Results logged to /usr/lib64/ruby/gems/2.1.0/extensions/x86_64-linux/2.1.0/nokogiri-1.6.8/gem_make.out

        Previo a ese intento de instalación, he tenido que instalar «mini_portile2-2.1.0.gem» y «pkg-config-1.1.7.gem», pues me lo solicitaba como dependencias necesarias.
        Las gemas como puedes observar me las he descargado para instalarlas en local.

        ¿alguna idea de porque me aparece ese error?

          1. Hola!

            Es SUSE Enterprise Server, el tema de los repositorios «es para echarle de comer aparte», al ir por suscripciones y tal, hay veces que no aparecen los paquetes en los repositorios disponibles por contrato.

            De todos modos no he sabido plantear esto de 0 para despues añadir redmine por separado, es decir como lo he tenido que integrar paquetizado con LampStack, este último ya lo provee de los paquetes necesarios para funcionar, entre ellos Ruby y sus dependencias… y ahí es donde radica (pienso yo) el problema, que lo que proporciona no se corresponde con lo que tiene el sistema.

            Miraré el enlace que me envías gracias!.
            Un saludo.

          2. Buenas,

            Es la costumbre de usar distribuciones ubuntu/centos o similares jeje.

            Suerte y espero que encuentres el problema.

            Un saludo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *