si muy buenas comunidad moodle tengo el siguiente problema en mi organización queremos migrar toda la información del moodle que esta en base de datos mysql a base de datos postgresql no se si me podrian ayudar o si alguien ya ha hecho esto de verdad que es urgente comunidad moodle espero que me pueda ayudar muchas gracias
Re: migrar datos de mysql a postgresql
Casi todo está ya en los foros... sólo hay que buscar y seguir los hilos...
Re: migrar datos de mysql a postgresql
Hola Mauricio. Te pego algo de lo que documenté cuando atravesé por ese proceso. TSTI es referencia a la organización en la que trabajo (Tecnicatura Superior en Sistemas de Información). Espero que te sirva. No es para que lo hagas paso a paso pero tenés una guía de la herramienta utilizada y las órdenes que se ejecutaron para volcar los datos de MySQL y recrearlos en PostgreSQL. Suerte!
Migración BD MySQL a Postgresql
Migración exitosa (variante utilizada en Marzo/2010)
Se utilizó el script mysql2pgsql.perl. Se debe realizar un dump de la BD MySQL con sólo los datos (se asume que se instaló Moodle con una BD Postgres limpia). Con relación a la estructura, tan sólo aquellas tablas que hayan sido extendidas, creadas por la TSTI o por algún otro módulo/bloque agregado a Moodle.
Tablas Extendidas o Creadas por la TSTI
-
mdl_role_assignment_historial (creada)
- mdl_course_correlativas (creada)
- mdl_user (extendida)
- mdl_user_estado_historial (creada)
- mdl_cuotas (creada)
- mdl_cuotas_parametros (creada)
- mdl_user_preinscriptos (creada)
Tablas Generadas por Bloques Agregados
- mdl_sharing_cart
- mdl_unittest_grade_categories
- mdl_unittest_grade_categories_history
- mdl_unittest_grade_grades
- mdl_unittest_grade_items
- mdl_unittest_grade_items_history
- mdl_unittest_grade_outcomes
- mdl_unittest_scale
Guía paso a paso para el dump de los datos, la estructura extendida/creada de la TSTI, copia de un Servidor a otro, conversión de sintaxis y población de la BD Postgres
Referencias: Upgrading to 1.6 and may need to switch to PostgreSQL, Servers, RAID, failover, etc.
- TSTI2009:~/backup/moodle# mysqldump -u root -p --databases moodle --compatible=postgresql --no-create-db --skip-add-drop-table --skip-triggers --skip-comments --skip-compact --skip-extended-insert --skip-add-locks --skip-disable-keys --no-create-info --default-character-set=utf8 > moodle_data_mysqldump.sql (dump de los datos en BD Mysql)
- TSTI2009:~/backup/moodle# mysqldump -h localhost -u root -p"****" --compact --no-data moodle mdl_role_assignment_historial mdl_course_correlativas mdl_user_estado_historial mdl_cuotas mdl_cuotas_parametros mdl_user_preinscriptos mdl_sharing_cart mdl_unittest_grade_categories mdl_unittest_grade_categories_history mdl_unittest_grade_grades mdl_unittest_grade_items mdl_unittest_grade_items_history mdl_unittest_grade_outcomes mdl_unittest_scale > moodle_extended_structure_TSTI.mysqldump.sql > moodle_extended_structure_TSTI.mysqldump.sql (Creación de tablas propias de la TSTI a partir de las existentes)
- Añadir las siguientes líneas al final del archivo moodle_extended_structure_TSTI.mysqldump.sql (tabla moodle extendida por la TSTI)
ALTER TABLE mdl_user ADD COLUMN codpostal bigint;
ALTER TABLE mdl_user ADD COLUMN dni varchar(9) NOT NULL;
ALTER TABLE mdl_role_assignments ADD COLUMN estado int NOT NULL;
ALTER TABLE mdl_role_assignments ADD COLUMN timeestado date;
- TSTI2010:~/backups# ./mysql2pgsql.perl moodle_extended_structure_TSTI.mysqldump.sql moodle_extended_structure_TSTI.pg.sql (convierte sintaxis MySQL a Postgresql)
- TSTI2010:~/backups# ./mysql2pgsql.perl moodle_data_mysqldump.sql moodle_data.pg.sql (convierte sintaxis MySQL a Postgresql)
- tsti:/home/admintsti/migracion# ./mysql2pgsql.perl moodle_data_mysqldump.sql moodle_data.pg.sql
Complex regular subexpression recursion limit (32766) exceeded at ./mysql2pgsql.perl line 860, <IN> line 143.
...
Complex regular subexpression recursion limit (32766) exceeded at ./mysql2pgsql.perl line 860, <IN> line 15881.
tsti:/home/admintsti/migracion# - Vaciar todas las tablas de la BD Moodle en Postgres (inicializar secuencias) (se utilizó phpPgAdmin. Las secuencias fueron inicializadas automáticamente al vaciar las tablas)
- POST-CONVERSION
----------------
(analizar impacto de las acciones a realizar)
Eliminar línea DROP TABLE "if" (no modificar número de líneas del archivo)
Reemplazar algunas líneas que quedaron como INSERT INTO `...` por INSERT INTO "...." (ninguna al 3/3/2010)
Reemplazar algunas líneas que quedaron como ',' por ',E' (son dos al 3/3/2010)
- TSTI2010:~/backups# psql (accede a la consola de Postgres)
- postgres=# \set ON_ERROR_STOP on
postgres=# \o /tmp/postgres-logs.txt
postgres=# \c moodle_new (el nombre de la BD Moodle totalmente vacía)
psql (8.4.1)
Ahora está conectado a la base de datos «moodle_new».
moodle_new=# \i moodle_extended_structure_TSTI.pg.sql (extiende estructura de datos en BD Postgres; ejecutarlo 2 veces porque la primera da errores porque hay tablas que aun no fueron creadas por el script)
Se omite la salida por ser larga e innecesaria; igualmente controlarlamoodle_new=# BEGIN; (inicia transacción)
moodle_new=# \i moodle_data.pg.sql (importa los datos)
moodle_new=# COMMIT;
moodle_new=# \q
- postgres@tsti:/home/admintsti$ PGPASSWORD=**** psql -qAt -U postgres -c "\ds" moodle | cut -d '|' -sf 2 | sed "s/^\(\(.*\)_id_seq\)$/SELECT setval\('\1', \(SELECT MAX\(id\) FROM \2\), true\);/" | PGPASSWORD=**** psql -U postgres moodle (Resetea las Secuencias a sus valores apropiados)