Metainformationen zur Seite
  •  

Migration von MariaDB zu PostgreSQL in Rails

Die nachfolgenden Schritte beschreiben den Wechsel der Datenbank in einem Rails-Projekt von einer MariaDB-Datenbank zu PostgreSQL.

  • Zuerst muss der Datenbank-Adapter gewechselt werden. Füge das entsprechende Gem deinem Gemfile hinzu:
    gem 'pg'
  • Passe nun die Konfiguration in der database.yml an:
    development: &default_settings
      adapter: postgresql
      host: localhost
      database: database_name
      username: username
      password: password
      encoding: unicode
  • Überlichweise hat das Konto zur Ausführung der Rails-Anwendung nicht ausreichend Rechte, um eine Datenbank anzulegen. Insofern muss dies manuell erfolgen:
    su - postgres
    
    psql
    
    create user database_user with password 'secret1234';
    
    create database database_name encoding 'UTF8' LC_COLLATE='C' LC_CTYPE='C' template=template0 OWNER database_user;
  • Lade nun das Rails-Datenbankschema:
    rails db:schema:load
  • Erstelle ein Dump der MariaDB-Datenbank:
    mysqldump -u username -p database_name > database_name.sql
  • Installiere pgloader:
    apt install pgloader
  • Erstelle eine Migrationsdatei - zum Beispiel: migration.load:
    -- Angabe der Datenbankverbindungen
    LOAD DATABASE
      FROM mysql://database_:user:database_password@localhost/database_name
      INTO postgresql://database_user:database_password@localhost/database_name
    
    -- Nur Daten und kein Schema importieren
    -- Vorhandene Tabellen leeren
    WITH data only, truncate
    
    -- Umbenennen des Schemas
    ALTER SCHEMA 'database_name' RENAME TO 'public';
  • Führe nun pgloader aus:
    pgloader --verbose migration.load
  • Nach erfolgreichen Durchlauf von pgloader ist die Migration abgeschlossen. Du kannst deine Rails-Anwendung nun starten.

Links