Att migrera från proprietära motorer till motorer med öppen källkod är en trend som växer i branschen.
Databasmigrering är dock inte något att ta lätt på.
Låt oss i den här bloggen se vad som behövs för att flytta från Microsoft SQL Server till MySQL Server och hur man gör det.
Så låt oss börja med att granska vad MS SQL är och vad MySQL är.
Microsoft SQL Server är ett mycket populärt RDBMS med restriktiva licenser och blygsamma ägandekostnader om databasen är av betydande storlek eller används av ett betydande antal klienter. Det ger ett mycket användarvänligt och lättläst gränssnitt, vilket har resulterat i en stor installerad användarbas. Precis som andra RDBMS-program, är MS SQL Server byggd ovanpå SQL, ett standardiserat programmeringsspråk som databasadministratörer (DBA) och andra IT-proffs använder för att hantera databaser och fråga efter data de innehåller. SQL Server är knuten till Transact-SQL (T-SQL), en implementering av SQL från Microsoft som lägger till en uppsättning proprietära programmeringstillägg till standardspråket.
MySQL är ett Oracle-stödt open source relationsdatabashanteringssystem baserat på SQL.
Det är den näst mest populära databasen i världen enligt db-engines ranking och förmodligen den mest aktuella databasens backend på planeten eftersom den driver de flesta internettjänster runt om i världen.
MySQL körs på praktiskt taget alla plattformar, inklusive Linux, UNIX och Windows. Det är en viktig komponent i en företagsstack med öppen källkod som heter LAMP. MySQL Enterprise-versionen kommer med stöd och ytterligare funktioner för säkerhet och hög tillgänglighet.
https://db-engines.com/en/rankingKombinationen av kostnadsbesparingar, plattformskompatibilitet och funktioner i MySQL gör det verkligen tilltalande, och många organisationer migrerar från MS SQL Server till denna öppen källkodsplattform för att dra fördel av dessa funktioner.
Varför migrera?
Vanligtvis är det första skälet till att migrera kostnaden. SQL Server är en egenutvecklad databas från Microsoft. Det finns en gratis SQL Server-version som heter Express, men den har vissa begränsningar som 10 GB databasgräns, en begränsad mängd CPU, en begränsad mängd RAM och mer, så förmodligen måste du betala licensen för att använda den i produktionen. Du kan kontrollera priset här.
Med MySQL kan du använda community-utgåvan gratis och utan begränsningar.
En annan anledning kan vara operativsystemstödet. Till skillnad från MS SQL Server stöder MySQL ett brett utbud av operativsystem inklusive Linux, Windows, Mac OS, Solaris och många fler.
När det gäller installation och konfiguration, installerar MySQL snabbare, har ett mindre fotavtryck samtidigt som det kan hantera ganska stora databaser och har färre konfigurationsrattar som behöver justeras än SQL Server.
Inom området hög tillgänglighet har MySQL ett antal beprövade lösningar inklusive replikering, SAN och MySQL Cluster, som är lika med eller bäst SQL Server beroende på scenariot.
Den fantastiska MySQL-gemenskapen ger många fördelar, inklusive ett fantastiskt utvecklare- och DBA-nätverk där alla arbetar tillsammans för att säkerställa en högkvalitativ produkt och varandras framgång.
Vad du bör veta
Att flytta över data och indexstrukturer till MySQL är vanligtvis inte en utmanande uppgift eftersom MySQL stöder alla viktiga datatyper, tabelldesigner och indexstrukturer. Hur som helst, det finns några objekt som kommer att möta vissa utmaningar. Kodrelaterade objekt, som lagrade procedurer, kan använda icke-standardiserade ANSI-funktioner, eftersom Transact-SQL har många av dem.
Så följande objekt kommer att behöva särskild uppmärksamhet vid migrering:
- Sammanställningar
- Typer
- DDL- och uttalandebaserade utlösare (MySQL har radbaserade utlösare)
- Proprietära SQL Server-funktionsanrop
- Vissa fall av dynamisk T-SQL
På samma sätt kommer synonymer och säkerhetsroller att behöva en lösning eftersom de inte kan migreras direkt till MySQL.
Datatyper som kräver konvertering
Följande karta kan användas för att konvertera SQL Server-datatyper som inte mappas i 1-till-1-relation till MySQL:
SQL-server | MySQL |
---|---|
IDENTITET | AUTO_INCREMENT |
NTEXT, NATIONELL TEXT | TEXTTECKENSTÄLLNING UTF8 |
SMALLDATETIME | DATETIME |
PENGAR | DECIMAL(19;4) |
SMÅ PENGAR | DECIMAL(10,4) |
UNIQUEIDENTIFIER | BINÄR(16) |
SYSNAME | CHAR(256) |
Hur man gör
Det finns många verktyg för att utföra migreringen från MS SQL Server till MySQL som Amazon DMS eller Data Integration (Kettle), men i det här fallet kommer vi att använda MySQL Workbench Migration-verktyget.
Det här verktyget är utformat för att spara tid för DBA och utvecklare genom att tillhandahålla visuell, peka och klicka enkel användning i alla faser av konfigurering och hantering av en komplex migreringsprocess:
- Databasmigreringar:Tillåter migrering från Microsoft SQL Server, Microsoft Access, PostgreSQL, Sybase ASE, Sybase SQL Anywhere, SQLite och mer.
- Hantera migreringsprojekt:Tillåter migrering att konfigureras, kopieras, redigeras, köras och schemaläggas.
- Val av källa och mål:Gör det möjligt för användare att definiera specifika datakällor och analysera källdata innan migreringen.
- Objektmigrering:Tillåter användare att välja objekt att migrera, tilldela en källa till målmappningar där det behövs, redigera migreringsskript och skapa målschemat.
- Versionsuppgraderingar:Med hjälp av migrering kan användare enkelt flytta databaser från äldre MySQL-versioner till de senaste.
Så låt oss göra det.
För den här uppgiften antar vi att du har:
- SQL-server installerad med din databas för att migrera:Vi använder Northwind-exempeldatabasen över MS SQL Server Express 2014 Edition.
- MySQL Server installerad:Vi har MySQL 5.7.25 Community Edition över CentOS.
- Användare på båda databasservrarna med behörighet att utföra uppgiften:Vi har användaren "sa" på SQL Server och användaren "migrering" med alla privilegier på MySQL.
- MySQL Workbench installerad med åtkomst till båda databasservrarna:Vi använder MySQL Workbench 6.3.
För att starta migreringsprocessen, på MySQL Workbenchs huvudskärm, gå till Databas-> Migration Wizard.
Vi bör kontrollera förutsättningarna för att bekräfta om vi kan fortsätta med uppgiften. Om allt ser bra ut kan vi trycka på Starta migrering.
I det här steget måste vi tillhandahålla informationen om källdatabasen, i det här fallet SQL Server.
Vi kommer att konfigurera vår källparameter som du kan se i föregående bild:
Database System: Microsoft SQL Server
Connection Method: ODBC (Native)
Driver: SQL Server
Server: localhost
Username: sa
Om parametern Server, vi kör MySQL Workbench på SQL Server-noden, men förmodligen kommer du att använda IP-adressen/värdnamnet för din databasserver.
Nu kan vi kontrollera anslutningen genom att använda knappen Testa anslutning.
Sedan måste vi lägga till målparametrarna, i det här fallet MySQL Server:
Connection Method: Standard (TCP/IP)
Hostname: 192.168.100.192
Port: 3306
Username: migration
Och tryck på Testa anslutning för att bekräfta den tillagda informationen.
I nästa steg kommer MySQL Workbench att ansluta till vår SQL Server för att hämta en lista över kataloger och scheman.
Nu väljer vi Northwind-exempeldatabasen från listan.
Vi kan välja hur de omvänd konstruerade schemana och objektet ska mappas. Vi kommer att använda alternativet Catalog.Schema.Table -> Catalog.Table, så i vår MySQL kommer vi att ha en databas som heter Northwind och de aktuella tabellerna som vi har i vår SQL Server-databas.
Om allt gick bra kommer vi att ha en lista över objekt som ska migreras.
I det här fallet har vi tabellobjekt, vyobjekt och rutinobjekt. Vi väljer bara tabellobjekten eftersom vi för resten av objektet bör kontrollera motsvarande MySQL-ekvivalentkod manuellt.
I det här steget konverteras objekten från källan till MySQL-kompatibla objekt.
Om allt gick bra kan vi fortsätta genom att välja hur vi vill skapa det migrerade schemat i målet. Vi använder standardalternativet "Skapa schema i mål-RDBMS".
Nu ska vi kolla processen för att skapa schemat.
I nästa steg kan vi kontrollera resultatet av varje skriptkörning, och vi kan kontrollera den nya databasen som skapats på vår MySQL-server.
I vår MySQL-server har vi:
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| NORTHWND |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.01 sec)
Vid det här laget har vi databasstrukturen, men vi har inte data ännu. Nu väljer vi hur vi vill kopiera data i MySQL-servern. Vi använder alternativet "Onlinekopia av tabelldata för att rikta in sig på RDBMS".
Och vi kan övervaka kopieringsprocessen från MySQL Workbench-applikationen.
Vid det här laget har vi all information migrerad till vår MySQL-server.
mysql> SELECT * FROM NORTHWND.Region;
+----------+-------------------+
| RegionID | RegionDescription |
+----------+-------------------+
| 1 | Eastern |
| 2 | Western |
| 3 | Northern |
| 4 | Southern |
+----------+-------------------+
4 rows in set (0.00 sec)
I det sista steget kan vi kontrollera migreringsrapporten och slutföra uppgiften.
Migreringen är klar!
Test
Före migreringsprocessen bör du testa applikationen och MySQL-databasen för att känna till beteendet med den nya motorn.
Det bör också vara användbart att utföra ett benchmarktest för att validera prestandan före migreringen.
Det finns några tips att ta hänsyn till:
- Testet bör simulera antalet förväntade användaranslutningar.
- De anslutna sessionerna ska utföra uppgifter som de skulle inträffa under en vanlig dag.
- Du bör ladda din databas med testdata som är ungefär den storlek du förväntar dig att din databas ska vara i den verkliga världen.
För denna testuppgift kan du använda mysqlslap-verktyget. Det är ett diagnostikprogram utformat för att emulera klientbelastning för en MySQL-server och för att rapportera tidpunkten för varje steg.
Slutsats
Som vi har granskat i den här bloggen finns det flera anledningar som kan få ett företag att besluta om en databasmigrering, från en proprietär motor till en öppen källkod. Vi har här sett ett populärt användningsfall, en migrering från SQL Server till MySQL, och gjort ett steg för steg exempel genom att använda ett allmänt känt MySQL-verktyg, MySQL Workbench. Vi hoppas att du tycker att den här artikeln är användbar.