sql >> Databáze >  >> RDS >> Mysql

Jak migrovat z MSSQL na MySQL

Přechod z proprietárních enginů na open source enginy je trendem, který v tomto odvětví roste.

Migraci databáze však nelze brát na lehkou váhu.

V tomto blogu se podíváme, co je potřeba k přechodu z Microsoft SQL Server na MySQL Server a jak to udělat.

Začněme tedy tím, že si zopakujeme, co je MS SQL a co je MySQL.

Microsoft SQL Server je velmi populární RDBMS s restriktivními licencemi a nízkými náklady na vlastnictví, pokud má databáze značnou velikost nebo ji používá významný počet klientů. Poskytuje velmi uživatelsky přívětivé a snadno naučitelné rozhraní, což vedlo k velké instalované uživatelské základně. Stejně jako ostatní software RDBMS je MS SQL Server postaven na SQL, standardizovaném programovacím jazyce, který správci databází (DBA) a další IT profesionálové používají ke správě databází a dotazování na data, která obsahují. SQL Server je svázán s Transact-SQL (T-SQL), implementací SQL od společnosti Microsoft, která ke standardnímu jazyku přidává sadu proprietárních programovacích rozšíření.

MySQL je open source systém správy relačních databází podporovaný společností Oracle založený na SQL.

Je to druhá nejoblíbenější databáze na světě podle žebříčku db-engines a pravděpodobně nejmodernější databázový backend na světě, protože provozuje většinu internetových služeb po celém světě.

MySQL běží prakticky na všech platformách, včetně Linuxu, UNIXu a Windows. Je to důležitá součást open source podnikového zásobníku zvaného LAMP. Verze MySQL Enterprise přichází s podporou a dalšími funkcemi pro zabezpečení a vysokou dostupnost.

https://db-engines.com/en/ranking

Díky kombinaci úspor nákladů, kompatibility platformy a sady funkcí je MySQL opravdu přitažlivá a mnoho organizací migruje z MS SQL Server na tuto open-source platformu, aby tyto funkce využily.

Proč migrovat?

Obvykle jsou prvním důvodem k migraci náklady. SQL Server je proprietární databáze od společnosti Microsoft. Existuje bezplatná verze SQL Server s názvem Express, ale má určitá omezení, jako je limit databáze 10 GB, omezené množství CPU, omezené množství paměti RAM a další, takže pravděpodobně budete muset zaplatit licenci, abyste ji mohli používat ve výrobě. Cenu si můžete ověřit zde.

S MySQL můžete komunitní edici používat zdarma a bez jakýchkoli omezení.

Dalším důvodem může být podpora operačního systému. Na rozdíl od MS SQL Server podporuje MySQL širokou škálu operačních systémů včetně Linuxu, Windows, Mac OS, Solaris a mnoha dalších.

Pokud jde o instalaci a konfiguraci, MySQL se instaluje rychleji, má menší nároky na prostor a přitom stále dokáže spravovat poměrně velké databáze a má méně konfiguračních knoflíků, které vyžadují ladění než SQL Server.

V oblasti vysoké dostupnosti má MySQL řadu osvědčených řešení, včetně replikace, SAN a MySQL Cluster, které jsou v závislosti na scénáři stejné nebo nejlepší.

Skvělá komunita MySQL poskytuje mnoho výhod, včetně skvělého vývojáře a DBA sítě všech, kteří spolupracují, aby pomohli zajistit vysoce kvalitní produkt a vzájemný úspěch.

Co byste měli vědět

Přesun datových a indexových struktur do MySQL není obvykle náročný úkol, protože MySQL podporuje všechny důležité datové typy, návrhy tabulek a indexové struktury. V každém případě existují některé objekty, které budou čelit určitým výzvám. Objekty související s kódem, jako jsou uložené procedury, mohou používat nestandardní funkce ANSI, protože Transact-SQL jich má mnoho.

Následující položky tedy vyžadují při migraci zvláštní pozornost:

  • Sestavy
  • Typy
  • DDL a spouštěče založené na příkazech (MySQL má spouštěče založené na řádcích)
  • Volání funkcí proprietárního serveru SQL Server
  • Určité případy dynamického T-SQL

Stejně tak Synonyma a role zabezpečení budou potřebovat řešení, protože je nelze přímo migrovat do MySQL.

Datové typy vyžadující konverzi

Následující mapu lze použít k převodu datových typů SQL Serveru, které se nemapují ve vztahu 1:1, na MySQL:

SQL Server MySQL
IDENTITA AUTO_INCREMENT
NTEXT, NÁRODNÍ TEXT SADA ZNAKŮ TEXTU UTF8
SMALLDATETIME DATETIME
PENÍZE DECIMAL(19;4)
MALÉ PENÍZE DECIMAL(10;4)
UNIQUEIDENTIFIER BINARY(16)
SYSNAME CHAR(256)

Jak na to

Existuje mnoho nástrojů k provedení migrace z MS SQL Server na MySQL, jako je Amazon DMS nebo Data Integration (Kettle), ale v tomto případě použijeme nástroj MySQL Workbench Migration.

Tento nástroj je navržen tak, aby šetřil čas správcům databází a vývojářům tím, že poskytuje vizuální, jednoduché a jednoduché použití ve všech fázích konfigurace a správy složitého procesu migrace:

  • Migrace databáze:Umožňuje migraci z Microsoft SQL Server, Microsoft Access, PostgreSQL, Sybase ASE, Sybase SQL Anywhere, SQLite a dalších.
  • Správa projektů migrace:Umožňuje konfigurovat, kopírovat, upravovat, spouštět a plánovat migrace.
  • Výběr zdroje a cíle:Umožňuje uživatelům definovat konkrétní zdroje dat a analyzovat zdrojová data před migrací.
  • Migrace objektů:Umožňuje uživatelům vybrat objekty k migraci, přiřadit zdroj k cílovému mapování tam, kde je to potřeba, upravit migrační skripty a vytvořit cílové schéma.
  • Upgrade verzí:Pomocí migrace mohou uživatelé snadno přesunout databáze ze starších verzí MySQL na nejnovější.

Tak pojďme na to.

Pro tento úkol předpokládáme, že máte:

  • SQL Server nainstalovaný s vaší databází k migraci:Použijeme ukázkovou databázi Northwind přes MS SQL Server Express 2014 Edition.
  • Nainstalovaný MySQL Server:Máme MySQL 5.7.25 Community Edition přes CentOS.
  • Uživatelé na obou databázových serverech s oprávněními k provedení úkolu:Máme uživatele „sa“ na serveru SQL a uživatele „migrace“ se všemi oprávněními na MySQL.
  • Nainstalovaný MySQL Workbench s přístupem k oběma databázovým serverům:Použijeme MySQL Workbench 6.3.

Chcete-li zahájit proces migrace, na hlavní obrazovce MySQL Workbench přejděte na Database-> Migration Wizard.

Měli bychom zkontrolovat předpoklady, abychom potvrdili, zda můžeme v úkolu pokračovat. Pokud vše vypadá v pořádku, můžeme stisknout Spustit migraci.

V tomto kroku potřebujeme poskytnout informace o zdrojové databázi, v tomto případě SQL Server.

Nakonfigurujeme náš zdrojový parametr, jak můžete vidět na předchozím obrázku:

Database System: Microsoft SQL Server
Connection Method: ODBC (Native)
Driver: SQL Server
Server: localhost 
Username: sa

Pokud jde o parametr Server, spouštíme MySQL Workbench na uzlu SQL Server, ale pravděpodobně použijete IP adresu / název hostitele vašeho databázového serveru.

Nyní můžeme zkontrolovat připojení pomocí tlačítka Test Connection.

Poté musíme přidat cílové parametry, v tomto případě MySQL Server:

Connection Method: Standard (TCP/IP)
Hostname: 192.168.100.192
Port: 3306
Username: migration

A stisknutím tlačítka Test připojení potvrďte přidané informace.

V dalším kroku se MySQL Workbench připojí k našemu SQL Serveru a načte seznam katalogů a schémat.

Nyní ze seznamu vybereme ukázkovou databázi Northwind.

Můžeme si vybrat, jak mají být mapována reverzně vytvořená schémata a objekt. Použijeme možnost Catalog.Schema.Table -> Catalog.Table, takže v našem MySQL budeme mít databázi s názvem Northwind a aktuální tabulky, které máme v databázi SQL Server.

Pokud vše proběhlo v pořádku, budeme mít seznam objektů k migraci.

V tomto případě máme Table Objects, View Objects a Rutine Objects. Vybereme pouze objekty tabulky, protože u zbytku objektu bychom měli odpovídající ekvivalentní kód MySQL zkontrolovat ručně.

V tomto kroku jsou objekty ze zdroje převedeny na objekty kompatibilní s MySQL.

Pokud vše proběhlo v pořádku, můžeme pokračovat výběrem, jak chceme vytvořit migrované schéma v cíli. Použijeme výchozí možnost „Vytvořit schéma v cílovém RDBMS“.

Nyní se podívejme na proces vytváření schématu.

V dalším kroku můžeme zkontrolovat výsledek každého spuštění skriptu a můžeme zkontrolovat novou databázi vytvořenou na našem serveru MySQL.

Na našem serveru MySQL máme:

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| NORTHWND           |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

V tuto chvíli budeme mít strukturu databáze, ale ještě nemáme data. Nyní vybereme, jak chceme kopírovat data na serveru MySQL. Použijeme možnost „Online kopie dat tabulky pro cíl RDBMS“.

A můžeme sledovat proces kopírování z aplikace MySQL Workbench.

V tuto chvíli máme všechny informace migrované na náš server MySQL.

mysql> SELECT * FROM NORTHWND.Region;
+----------+-------------------+
| RegionID | RegionDescription |
+----------+-------------------+
|        1 | Eastern           |
|        2 | Western           |
|        3 | Northern          |
|        4 | Southern          |
+----------+-------------------+
4 rows in set (0.00 sec)

V posledním kroku můžeme zkontrolovat zprávu o migraci a dokončit úlohu.

Migrace je dokončena!

Testování

Před procesem migrace byste měli otestovat aplikaci a databázi MySQL, abyste poznali chování s novým enginem.

Před migrací by také mělo být užitečné provést srovnávací test k ověření výkonu.

Existuje několik tipů, které je třeba vzít v úvahu:

  • Test by měl simulovat počet očekávaných uživatelských připojení.
  • Propojené relace by měly provádět úkoly tak, jak by probíhaly během běžného dne.
  • Do databáze byste měli načíst testovací data, která mají přibližně velikost, kterou očekáváte od databáze ve skutečném světě.

Pro tento testovací úkol můžete použít nástroj mysqlslap. Je to diagnostický program navržený tak, aby emuloval zatížení klienta pro server MySQL a hlásil načasování každé fáze.

Závěr

Jak jsme zkontrolovali v tomto blogu, existuje několik důvodů, které mohou přimět firmu, aby se rozhodla pro migraci databáze z proprietárního enginu na open source. Viděli jsme zde populární případ použití, migraci ze serveru SQL na MySQL, a provedli jsme krok za krokem příklad s použitím jednoho široce známého nástroje MySQL, MySQL Workbench. Doufáme, že vám tento článek bude užitečný.


  1. Jak funguje operátor SOUNDS LIKE v MySQL

  2. ORA-00257:Chyba archivátoru. Připojte pouze interní, dokud se neuvolní.

  3. Django+Postgres:aktuální transakce je přerušena, příkazy ignorovány až do konce bloku transakce

  4. Nastavení cizího klíče s jiným datovým typem