Migracja z silników zastrzeżonych do silników open source to trend, który rośnie w branży.
Jednak migracja bazy danych nie jest czymś, co należy lekceważyć.
W tym blogu zobaczmy, co jest potrzebne do przejścia z Microsoft SQL Server na MySQL Server i jak to zrobić.
Zacznijmy więc od przyjrzenia się, czym jest MS SQL i czym jest MySQL.
Microsoft SQL Server to bardzo popularny RDBMS z restrykcyjnymi licencjami i skromnym kosztem posiadania, jeśli baza danych ma znaczny rozmiar lub jest używana przez znaczną liczbę klientów. Zapewnia bardzo przyjazny dla użytkownika i łatwy do nauczenia interfejs, co zaowocowało dużą zainstalowaną bazą użytkowników. Podobnie jak inne oprogramowanie RDBMS, MS SQL Server jest oparty na SQL, standardowym języku programowania, którego administratorzy baz danych (DBA) i inni specjaliści IT używają do zarządzania bazami danych i wyszukiwania zawartych w nich danych. SQL Server jest powiązany z Transact-SQL (T-SQL), implementacją SQL firmy Microsoft, która dodaje zestaw zastrzeżonych rozszerzeń programistycznych do standardowego języka.
MySQL to oparty na Oracle system zarządzania relacyjnymi bazami danych typu open source, oparty na SQL.
Jest to druga najpopularniejsza baza danych na świecie według rankingu db-engines i prawdopodobnie najbardziej obecny backend bazy danych na świecie, ponieważ obsługuje większość usług internetowych na całym świecie.
MySQL działa na praktycznie wszystkich platformach, w tym Linux, UNIX i Windows. Jest to ważny składnik korporacyjnego stosu open source o nazwie LAMP. Wersja MySQL Enterprise zawiera wsparcie i dodatkowe funkcje zapewniające bezpieczeństwo i wysoką dostępność.
https://db-engines.com/en/rankingPołączenie oszczędności kosztów, kompatybilności platformy i zestawu funkcji MySQL sprawia, że jest on naprawdę atrakcyjny, a wiele organizacji migruje z MS SQL Server do tej platformy o otwartym kodzie źródłowym, aby skorzystać z tych funkcji.
Dlaczego migrować?
Zwykle pierwszym powodem migracji jest koszt. SQL Server to zastrzeżona baza danych firmy Microsoft. Dostępna jest bezpłatna wersja SQL Server o nazwie Express, ale ma ona pewne ograniczenia, takie jak limit 10 GB bazy danych, ograniczona ilość procesora, ograniczona ilość pamięci RAM i wiele innych, więc prawdopodobnie musisz zapłacić licencję, aby używać jej w produkcji. Tutaj możesz sprawdzić ceny.
Dzięki MySQL możesz korzystać z edycji społecznościowej za darmo i bez żadnych ograniczeń.
Innym powodem może być obsługa systemu operacyjnego. W przeciwieństwie do MS SQL Server, MySQL obsługuje szeroką gamę systemów operacyjnych, w tym Linux, Windows, Mac OS, Solaris i wiele innych.
Jeśli chodzi o instalację i konfigurację, MySQL instaluje się szybciej, zajmuje mniej miejsca, a jednocześnie jest w stanie zarządzać dość dużymi bazami danych i ma mniej pokręteł konfiguracyjnych, które wymagają dostrojenia niż SQL Server.
W obszarze wysokiej dostępności MySQL oferuje wiele sprawdzonych rozwiązań, w tym replikację, sieci SAN i klaster MySQL, które w zależności od scenariusza są równe lub najlepsze w SQL Server.
Świetna społeczność MySQL zapewnia wiele korzyści, w tym świetnego programistę i sieć DBA, w której wszyscy pracują razem, aby zapewnić wysokiej jakości produkt i wzajemny sukces.
Co powinieneś wiedzieć
Przenoszenie struktur danych i indeksów do MySQL nie jest zazwyczaj trudnym zadaniem, ponieważ MySQL obsługuje wszystkie ważne typy danych, projekty tabel i struktury indeksów. Zresztą jest kilka obiektów, które będą musiały stawić czoła pewnym wyzwaniom. Obiekty związane z kodem, takie jak procedury składowane, mogą korzystać z niestandardowych funkcji ANSI, ponieważ Transact-SQL ma ich wiele.
Dlatego następujące elementy będą wymagały szczególnej uwagi podczas migracji:
- Zespoły
- Typy
- DDL i wyzwalacze oparte na instrukcjach (MySQL ma wyzwalacze oparte na wierszach)
- Zastrzeżone wywołania funkcji SQL Server
- Niektóre przypadki dynamicznego T-SQL
W ten sam sposób synonimy i role zabezpieczeń będą wymagały obejścia, ponieważ nie można ich bezpośrednio przenieść do MySQL.
Typy danych wymagające konwersji
Poniższa mapa może być użyta do konwersji typów danych SQL Server, które nie są mapowane w relacji 1 do 1 na MySQL:
Serwer SQL | MySQL |
---|---|
TOŻSAMOŚĆ | AUTO_INCREMENT |
NTEKST, TEKST KRAJOWY | TEKST ZESTAW ZNAKÓW UTF8 |
SMALLDATETIME | DATETIME |
PIENIĄDZE | DZIESIĘTNY(19,4) |
MAŁYCH PIENIĄDZE | DZIESIĘTNY(10,4) |
UNIKALNY IDENTYFIKATOR | BINARNY(16) |
SYSNAME | CHAR(256) |
Jak to zrobić
Istnieje wiele narzędzi do przeprowadzenia migracji z MS SQL Server do MySQL, takich jak Amazon DMS lub Data Integration (Kettle), ale w tym przypadku użyjemy narzędzia MySQL Workbench Migration.
To narzędzie ma na celu zaoszczędzenie czasu DBA i programistów, zapewniając wizualną, wskaż i kliknij łatwość użytkowania we wszystkich fazach konfiguracji i zarządzania złożonym procesem migracji:
- Migracje baz danych:Umożliwia migracje z Microsoft SQL Server, Microsoft Access, PostgreSQL, Sybase ASE, Sybase SQL Anywhere, SQLite i innych.
- Zarządzaj projektami migracji:umożliwia konfigurowanie, kopiowanie, edytowanie, wykonywanie i planowanie migracji.
- Wybór źródła i celu:umożliwia użytkownikom zdefiniowanie określonych źródeł danych i analizę danych źródłowych przed migracją.
- Migracja obiektów:umożliwia użytkownikom wybieranie obiektów do migracji, przypisywanie źródła do mapowań docelowych w razie potrzeby, edytowanie skryptów migracji i tworzenie schematu docelowego.
- Aktualizacje wersji:Korzystając z migracji, użytkownicy mogą łatwo przenosić bazy danych ze starszych wersji MySQL do najnowszych.
Więc zróbmy to.
Zakładamy, że w tym zadaniu masz:
- SQL Server zainstalowany z bazą danych do migracji:użyjemy przykładowej bazy danych Northwind zamiast MS SQL Server Express 2014 Edition.
- Zainstalowano MySQL Server:Mamy MySQL 5.7.25 Community Edition przez CentOS.
- Użytkownicy na obu serwerach baz danych z uprawnieniami do wykonania zadania:mamy użytkownika „sa” na SQL Server i użytkownika „migration” ze wszystkimi uprawnieniami na MySQL.
- Zainstalowano MySQL Workbench z dostępem do obu serwerów baz danych:użyjemy MySQL Workbench 6.3.
Aby rozpocząć proces migracji, na głównym ekranie MySQL Workbench przejdź do Baza danych-> Kreator migracji.
Powinniśmy sprawdzić wymagania wstępne, aby potwierdzić, czy możemy kontynuować zadanie. Jeśli wszystko wygląda dobrze, możemy nacisnąć Rozpocznij migrację.
W tym kroku musimy podać informacje o źródłowej bazie danych, w tym przypadku SQL Server.
Skonfigurujemy nasz parametr źródłowy, jak widać na poprzednim obrazku:
Database System: Microsoft SQL Server
Connection Method: ODBC (Native)
Driver: SQL Server
Server: localhost
Username: sa
Jeśli chodzi o parametr Server, uruchamiamy MySQL Workbench na węźle SQL Server, ale prawdopodobnie będziesz używać adresu IP / nazwy hosta serwera bazy danych.
Teraz możemy sprawdzić połączenie za pomocą przycisku Testuj połączenie.
Następnie musimy dodać parametry docelowe, w tym przypadku MySQL Server:
Connection Method: Standard (TCP/IP)
Hostname: 192.168.100.192
Port: 3306
Username: migration
I naciśnij Testuj połączenie, aby potwierdzić dodane informacje.
W następnym kroku MySQL Workbench połączy się z naszym serwerem SQL, aby pobrać listę katalogów i schematów.
Teraz wybierzemy z listy przykładową bazę danych Northwind.
Możemy wybrać sposób odwzorowania schematów i obiektów poddanych inżynierii wstecznej. Użyjemy opcji Catalog.Schema.Table -> Catalog.Table, więc w naszym MySQL będziemy mieli bazę danych o nazwie Northwind i aktualne tabele, które mamy w naszej bazie danych SQL Server.
Jeśli wszystko pójdzie dobrze, będziemy mieli listę obiektów do migracji.
W tym przypadku mamy obiekty tabeli, obiekty widoku i obiekty rutynowe. Wybierzemy tylko obiekty tabeli, ponieważ dla reszty obiektu powinniśmy ręcznie sprawdzić odpowiedni odpowiedni kod MySQL.
W tym kroku obiekty ze źródła są konwertowane na obiekty kompatybilne z MySQL.
Jeśli wszystko poszło dobrze, możemy kontynuować, wybierając sposób utworzenia migrowanego schematu w miejscu docelowym. Użyjemy domyślnej opcji „Utwórz schemat w docelowym systemie baz danych RDBMS”.
Sprawdźmy teraz proces tworzenia schematu.
W następnym kroku możemy sprawdzić wynik każdego wykonania skryptu i możemy sprawdzić nową bazę danych utworzoną na naszym serwerze MySQL.
W naszym serwerze MySQL mamy:
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| NORTHWND |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.01 sec)
W tym momencie będziemy mieli strukturę bazy danych, ale nie mamy jeszcze danych. Teraz wybierzemy, w jaki sposób chcemy skopiować dane na MySQL Server. Użyjemy opcji „Kopia online danych tabeli do docelowego RDBMS”.
I możemy monitorować proces kopiowania z aplikacji MySQL Workbench.
W tym momencie wszystkie informacje zostały przeniesione na nasz serwer MySQL.
mysql> SELECT * FROM NORTHWND.Region;
+----------+-------------------+
| RegionID | RegionDescription |
+----------+-------------------+
| 1 | Eastern |
| 2 | Western |
| 3 | Northern |
| 4 | Southern |
+----------+-------------------+
4 rows in set (0.00 sec)
W ostatnim kroku możemy sprawdzić raport z migracji i zakończyć zadanie.
Migracja zakończona!
Testowanie
Przed procesem migracji należy przetestować aplikację i bazę danych MySQL, aby poznać zachowanie nowego silnika.
Przydatne powinno być również wykonanie testu porównawczego w celu sprawdzenia wydajności przed migracją.
Należy wziąć pod uwagę kilka wskazówek:
- Test powinien symulować liczbę oczekiwanych połączeń użytkowników.
- Połączone sesje powinny wykonywać zadania tak, jak miałyby miejsce podczas normalnego dnia.
- Powinieneś załadować swoją bazę danych danymi testowymi, które mają mniej więcej taki rozmiar, jakiego oczekujesz, że Twoja baza danych będzie miała rzeczywisty świat.
Do tego zadania testowego możesz użyć narzędzia mysqlslap. Jest to program diagnostyczny zaprojektowany do emulowania obciążenia klienta dla serwera MySQL i raportowania czasu każdego etapu.
Wniosek
Jak omówiliśmy na tym blogu, istnieje kilka powodów, dla których firma może zdecydować się na migrację bazy danych, przechodząc z silnika zastrzeżonego do silnika o otwartym kodzie źródłowym. Widzieliśmy tutaj popularny przypadek użycia, migrację z SQL Server do MySQL i zrobiliśmy krok po kroku przykład, używając jednego z powszechnie znanych narzędzi MySQL, MySQL Workbench. Mamy nadzieję, że ten artykuł okaże się przydatny.