en
Wybierz język
  • en
  • de
  • fr
  • es
  • br
  • ru
  • jp
  • kr
Tłumaczenie SI
  • ae
  • cn
  • vn
  • id
  • eu
  • il
  • gr
  • no
  • fi
  • dk
  • se
  • tr
  • bg
  • nl
  • it
  • pl
  • hu
  • ro
  • ua
  • cs

Migracja z Postgres do MySQL

Wprowadzenie

W trosce o Was, administratorów serwera Easy Redmine, przetestowaliśmy kilka narzędzi do migracji bazy danych z Postgres do MySQL.

Jeden jest darmowym oprogramowaniem typu open source, ale jest też starszy i ma znaczną wadę. Pozostałe to narzędzia premium, które naszym zdaniem sprawiają, że warto je kupić.

Darmowa opcja - skrypt php pg2mysql

Zrzeczenie się: To narzędzie zostało opracowane przez stronę trzecią => NIE jest produktem Easy Software i dlatego NIE JEST GWARANTOWANE.
Testowane narzędzie dostępne pod adresem:
http://www.lightbox.ca/pg2mysql.php
Zrobiliśmy własne modyfikacje narzędzia, aby działało z php 7.4. Jednak użytkowanie odbywa się na własne ryzyko i NIE UDZIELAMY ŻADNYCH GWARANCJI.

Kroki migracji

1. Pobierz skrypt i rozpakuj archiwum

wget http://www.lightbox.ca/pg2mysql/pg2mysql-1.9.tar.bz2  (zawiera oryginalny scenariusz autora)
wget https://www.easyredmine.com/ER/media/knowledge-base/pg2mysql-1.9.zip (zawiera nasz zmodyfikowany skrypt dla wersji PHP 7.4)

tar -xvf pg2mysql-1.9.tar.bz2(w przypadku oryginalnego scenariusza od autora)
rozpakuj pg2mysql-1.9.zip (w przypadku naszego zmodyfikowanego skryptu dla wersji PHP 7.4)

2. Zainstaluj php

sudo apt zainstaluj php7.4-cli (w przypadku naszego zmodyfikowanego skryptu)

3. Utwórz zrzut bazy danych PostgreSQL w formacie .sql, upewnij się, że używasz "--format p --inserts"

sudo -u postgres pg_dump --format p --inserts DBNAME_HERE> /path/to/file.sql

4. Przejdź do folderu pg2mysql-1.9

cd pg2mysql-1.9 /

5. run

php pg2mysql_cli.php / ścieżka/do/pd/dump/file.sql /path/where/to/save/mysql/file.sql

Zobaczysz kilka linii, takich jak

Zakończony! 30820 linii 5539 fragmentów sql

Uwagi:
 - Nie, to nie jest idealne
 - Tak, odrzuca WSZYSTKIE procedury składowane
 - Tak, odrzuca WSZYSTKIE zapytania z wyjątkiem CREATE TABLE i INSERT INTO 
 - Tak, możesz przesłać nam sugestie e-mailem: info [AT] lightbox.org
    - W wiadomościach e-mail dołączaj kod Postgres i oczekiwany kod MySQL
 - Jeśli masz problemy z utworzeniem zrzutu postgres, upewnij się, że używasz „--format p --inserts”
 - Domyślnym silnikiem wyjściowym, jeśli nie określono, jest MyISAM "

6. Teraz zostanie utworzony plik ze zmodyfikowanym zrzutem sql. Zdecydowanie zalecamy przejrzenie go i wszędzie zastąpienie MyISAM InnoDB

7. Teraz możesz przywrócić ten zrzut do czystej bazy danych mysql.

8. Ponieważ (jak poinformował nas autor) skrypt nie zapisuje indeksów trzeba je dodawać ręcznie do każdej tabeli (będzie działać bez indeksów, ale może powodować poważne problemy z wydajnością). Istnieje lista wszystkich indeksów, które powinny istnieć w tabelach MySQL generowanych przez zwykłą aplikację Easy Redmine. Musisz dodać je ręcznie lub za pomocą własnego niestandardowego skryptu.

W sieci dostępne są inne bezpłatne narzędzia. Jednak nasze wyniki testów nie były zadowalające na tych.

Zaktualizuj zarządzanie projektami

Uzyskaj funkcje Redmine następnego poziomu, które dostosowują się do Twoich potrzeb i zapewniają doskonały przegląd.

Narzędzie Premium - DB Convert for MySQL & PostgreSQL v. 4.3.5

W sumie przetestowaliśmy 3 narzędzia premium. DBConvert wydawał się najbardziej odpowiedni, dlatego szczegółowo opisujemy jego kroki.

Przygotowanie:

1. Upewnij się, że zarówno bazy danych MySQL, jak i PostgreSQL są dostępne z zewnątrz (możesz zezwolić na to tymczasowo).

2. Upewnij się, że możesz zalogować się do obu DBS za pomocą użytkownika i hasła

3. Zainstaluj narzędzie z - https://dbconvert.com/postgresql/mysql/

Rozpocznij konwersję:

1. Uruchom kreatora.

2. Wybierz źródłową bazę danych:
PostgreSQL
Nazwa hosta: adres IP lub nazwa domeny serwera, na którym jest zainstalowana baza postgres.
Port: jeśli inny niż domyślny
Nazwa użytkownika: nazwa użytkownika, za pomocą której baza danych, którą zamierzasz przekonwertować, jest dostępna
Hasło: hasło dla użytkownika powyżej.

Kliknij przycisk Testuj połączenie. Aplikacja sprawdzi, czy można połączyć się ze źródłowym serwerem db z wybranym użytkownikiem i hasłem. Jeśli to możliwe, lista baz danych zostanie załadowana - wybierz właściwą.

3. Kliknij „Dalej”. Aplikacja połączy się z Postgres i otrzyma listę tabel dostępnych w bazie danych. Możesz wybrać wszystkie do konwersji lub tylko jedną / kilka z nich.

4. Poczekaj chwilę, a zostaniesz przekierowany do następnego kroku - ustawień połączenia MySQL.
Nazwa hosta: adres IP lub nazwa domeny serwera, na którym jest zainstalowana baza mysql.
Port: jeśli inny niż domyślny
Nazwa użytkownika: nazwa użytkownika, za pomocą której baza danych, którą zamierzasz przekonwertować, jest dostępna
Hasło: hasło dla użytkownika powyżej.

Kliknij przycisk Testuj połączenie. Aplikacja sprawdzi, czy można połączyć się ze źródłowym serwerem db z wybranym użytkownikiem i hasłem. Jeśli to możliwe, lista baz danych zostanie załadowana - wybierz właściwą.

5. W następnym kroku aplikacja sprawdzi źródłową bazę danych i poda kilka wskazówek, jak rozwiązać ewentualne problemy.

Napotkaliśmy następny problem:

Tabela „zmienia” pole „akcja”. W oryginalnym DB był to typ „CHAR (1)”. Ale domyślną wartością było „”, więc MySQL przypuszczał, że jest nieprawidłowa. Możesz wybrać nowy typ. Wybraliśmy CHAR (2) i kliknij Dalej. Problem został rozwiązany.

Powtórz podobne czynności z innymi problematycznymi polami.

6. Jeszcze raz kliknij Dalej. Aplikacja rozpocznie konwersję pokazując całkowity i aktualny postęp. Poczekaj, aż konwersja zostanie zakończona.

7. Kliknij „Zakończ”. Konwersja jest zakończona.

Autor tego narzędzia zapewnia wsparcie dla płacących klientów.

Cena: 149 $ (jednorazowo)

Inne opcje premium

Przetestowaliśmy również wersje próbne tych narzędzi. Oto ogólne uwagi na ich temat:

  • pgs2scld (https://www.convert-in.com/pgs2sql.htm)
    Żadnych problemów z połączeniem z bazą danych (nie ma potrzeby instalowania dodatkowych sterowników, ich jakoś konfigurowania lub czegokolwiek innego). Ma wersję próbną (w trybie próbnym kopiuje tylko 50 rekordów na tabelę, ale sprawdza wszystkie wiersze i pokazuje taki sam postęp, jak w przypadku skopiowania całej bazy danych). Posiada wewnętrzny debugger i pokazuje możliwe problemy z migracją. Ma wiele różnych opcji, które można zastosować podczas migracji. Zapewnia całodobowe wsparcie dla płatnych klientów. Tylko interfejs użytkownika, Windows tylko.
    Cena 49 USD (jednorazowo).
  • Zestaw narzędzi do migracji bazy danych EFS (https://www.dbsofts.com/articles/postgresql_to_mysql/)
    Żadnych problemów z połączeniem się z bazą danych (nie ma potrzeby instalowania dodatkowych sterowników, ich jakoś konfigurowania czy czegokolwiek innego). Ma wersję próbną (w trybie próbnym kopiuje tylko 50000 rekordów). Posiada wewnętrzny debugger i pokazuje możliwe problemy z migracją. Posiada wiele różnych opcji, które można zastosować podczas migracji. Zapewnia całodobowe wsparcie dla płatnych klientów. Tylko interfejs użytkownika, Windows tylko.
    Cena 322 USD (jednorazowo).

Wypróbuj Easy Redmine w 30-dniowym bezpłatnym okresie próbnym

Pełne funkcje, ochrona SSL, codzienne kopie zapasowe w Twojej geolokalizacji