Migracja relacyjnych baz danych do PostgreSQL za pomocą narzędzi EuroDB

Migracja relacyjnych baz danych do PostgreSQL za pomocą narzędzi EuroDB

Wiele aplikacji pozwala na korzystanie z różnych silników bazodanowych. Możliwe jest więc, że decyzja o wyborze silnika została podjęta zbyt pochopnie lub wymogi wobec samej aplikacji uległy zmianie. W tych przypadkach migracja bazy danych staje się najlepszym rozwiązaniem. Dziś przybliżymy temat migracji, jej bezpieczeństwa i prostoty – z wykorzystaniem rozwiązań oferowanych przez narzędzia z EuroDB.

Wiele aplikacji pozwala na korzystanie z różnych silników bazodanowych. Możliwe jest więc, że decyzja o wyborze silnika została podjęta zbyt pochopnie lub wymogi wobec samej aplikacji uległy zmianie. Ważnym zaleceniem do zmiany mogą być też wysokie koszty licencji dotychczasowego rozwiązania bazodanowego. W tych przypadkach migracja bazy danych staje się najlepszym rozwiązaniem. Dziś przybliżymy temat migracji, jej bezpieczeństwa i prostoty – z wykorzystaniem rozwiązań oferowanych przez narzędzia z EuroDB.

Aby rozpocząć rozważania na temat migracji, wyjaśnijmy najpierw w telegraficznym skrócie, czym jest migracja i jakie możliwości oferuje. Migracją bazy danych nazywamy bezstratne przeniesienie schematu bazy wraz z jej wszystkimi danymi na inny silnik bazodanowy. Dzięki migracji jesteśmy w stanie udostępnić bazę dla każdej aplikacji (co umożliwia szybsze propagowanie danych), otwierać się na rozwiązania chmurowe czy też zaoszczędzić, wybierając tańszą alternatywę.

Czy migracja jest bezpieczna?

Migracja danych to jedno z największych przedsięwzięć IT. Należy się więc upewnić, że zostanie ona przeprowadzona prawidłowo, a dane pozostaną nienaruszone. Nasuwa się więc pytanie, czy migrowanie to bezpieczny proces. Odpowiedź jest uzależniona od wielu czynników. Jednym z nich jest rodzaj bazy danych, z której i do której będzie przeprowadzana migracja. Innym jest też stopień skomplikowania danych. Bezpieczeństwo migracji bazy danych, czyli to, czy uda się zmienić silnik bez strat w strukturze lub danych, jest więc bezpośrednio uzależnione od stopnia skomplikowania bazy. Aby zmaksymalizować bezpieczeństwo i prawidłowo przygotować się do migracji, warto wykonać kopię zapasową bazy danych (co opisaliśmy w poprzednim artykule). Dzięki temu w przypadku niepowodzenia oryginalna baza zostanie nienaruszona.

Granice możliwości migrowania

Należy podkreślić, że migrowanie bazy danych ma swoje ograniczenia i jest uzależnione od używanych struktur organizacji danych. Najczęstszym rodzajem baz używanych w informatyce są relacyjne bazy danych (RDB). Programy do ich zarządzania nazywamy Systemami Zarządzania Relacyjną Bazą Danych (ang. Relational Database Management System – RDBMS). Są one swoistymi silnikami, za pomocą których budowana jest baza danych. Najbardziej znanymi RDBMS są:

  • PostgreSQL – darmowy, stabilny i stale rozwijany. Dobry do rozwiązań typu Enterprise, ale pozbawiony wsparcia technicznego.
  • EuroDB – rozbudowana, w pełni wspierana platforma bazodanowa oparta o PostgreSQL, zawierająca wiele dodatkowych modułów rozszerzających standardowe możliwości PostgreSQL
  • SQLite – darmowy i przenośny. Idealny do przetrzymywania bazy na potrzeby aplikacji desktopowych
  • MySQL – darmowy i prosty w nauce. Dobry na start firmy
  • Microsoft Access – odpowiedź Microsoftu na prostotę MySQL z dodatkowym interfejsem graficznym
  • Microsoft SQL Server – odpowiedź Microsoftu na rozwiązanie typu Enterprise
  • Oracle DB – odpowiedź Oracle Corporation na rozwiązanie typu Enterprise.

W idealnym świecie każdy istniejący silnik oparty o relacyjną bazę danych umożliwiałby łatwą migrację do innego. Niestety od dawna wiadomo, że niektóre płatne RDBMS-y są na tyle zamknięte, że tradycyjne narzędzia wykorzystywane do migracji nie dają stuprocentowej pewności, że wszystkie dane zostaną przeniesione poprawnie.

Czy istnieje tani, łatwy i bezpieczny sposób migracji do PostgreSQL?

Wiele firm oferuje możliwość migracji bazy danych na inny silnik bazodanowy. Usługa ta najczęściej nie należy do tanich i wydawać by się mogło, że dla osoby, która nie jest zaznajomiona z bazami, a chce zachować wszystkie swoje dane, to jedyna opcja. Okazuje się jednak, że w przypadku prostych baz problem staje się stosunkowo łatwy do rozwiązania. Niektóre popularne RDBMS zawierają bowiem wbudowane moduły migracyjne umożliwiające płynne przejście z jednego silnika na drugi. Jednak w przypadku migracji bardziej rozbudowanych baz wbudowane moduły najczęściej nie wystarczają. Nie wszystkie dane zostają zmigrowane, a w bazie tworzą się błędy. Wówczas należy użyć specjalnych narzędzi. Jednym z takich narzędzi jest moduł do migracji danych z pakietu EuroDB. Moduł ten został zaprojektowany z myślą o bezpieczeństwie i prostocie podczas migracji z najbardziej popularnych baz danych, takich jak SQLite, MySQL czy MS SQL.

Przykład migracji z SQLite za pomocą narzędzi EuroDB

Aby zademonstrować prostotę migracji za pomocą modułu z zestawu narzędzi EuroDB, przedstawimy przykład migracji prostej bazy danych stworzonej na silniku SQLite do EuroDB, którego silnikiem jest Postgres.

Poniższa procedura została stworzona dla bazy danych EuroDB 13 i jej domyślnej konfiguracji. Zadziała w przypadku każdej bazy opartej na PostgreSQL. Komendy dla różnych rozwiązań bazodanowych mogą się nieco od siebie różnić, ponieważ ścieżki dostępu do plików konfiguracyjnych zależą od nazwy konkretnej bazy.

W przykładzie pomijamy instalację narzędzia, ponieważ jest ono dostępne wraz z EuroDB, a jego instalacja jest trywialna.

W pierwszej kolejności logujemy się do konsoli Postgresa.

sudo -u postgres psql

Następnie tworzymy bazę danych, w której mają się znaleźć zmigrowane dane. W naszym przykładzie została ona nazwana `db_from_sqlite`.

CREATE DATABASE db_from_sqlite;

Następnie upewniamy się, że moduł migracyjny ma możliwość połączenia się z bazą danych. W tym celu należy zlokalizować plik `pg_hba.conf`. Najłatwiejszą metodą jest wykonanie poniższej komendy w konsoli Postgresa.

SHOW hba_file;

Gdy ścieżka do pliku `pg_hba.conf` jest już znana, możemy go edytować w celu nawiązania poprawnego połączenia z bazą.

host    all     all     0.0.0.0/32      trust

Teraz pozostaje już tylko wykonać poniższą komendę, która zajmie się całym procesem migrowania.

sudo eurotransfer /path/to/chinook.db pgsql://[email protected]/db_from_sqlite

Po wykonanej operacji skrypt migracyjny zwraca podsumowanie zawierające szczegóły migracji wraz z liczbą ewentualnych błędów, które wystąpiły. Jak widać na poniższym obrazku, migracja bazy danych wykonała się bez żadnych problemów, a sama procedura była bardzo łatwa.

EuroDB migration module

Podsumowanie

Mając przed sobą zadanie migracji bazy danych, należy zachować szczególną ostrożność i odpowiednio przygotować się do tego zadania tworząc kopie zapasowe. Aby ułatwić sobie zadanie, można skorzystać z modułu do migracji, który oferuje nam zestaw narzędzi EuroDB. Moduł jest prosty w obsłudze, a dzięki jego uniwersalności możemy migrować bazy z najbardziej popularnych silników bazodanowych do PostgreSQL. Można więc stwierdzić, że nadaje się on zarówno dla osób, które rozpoczynają swoją przygodę z bazami danych, jak też dla rozwiniętych firm w celu zwiększenia wydajności przeprowadzania migracji.

Autorzy

Artykuły na blogu są pisane przez osoby z zespołu EuroLinux. 80% treści zawdzięczamy naszym developerom, pozostałą część przygotowuje dział sprzedaży lub marketingu. Dokładamy starań, żeby treści były jak najlepsze merytorycznie i językowo, ale nie jesteśmy nieomylni. Jeśli zauważysz coś wartego poprawienia lub wyjaśnienia, będziemy wdzięczni za wiadomość.