Migrering fra proprietære motorer til open source-motorer er en tendens, der vokser i branchen.
Databasemigrering er dog ikke noget, der skal tages let på.
Lad os i denne blog se, hvad der er nødvendigt for at flytte fra Microsoft SQL Server til MySQL Server, og hvordan man gør det.
Så lad os starte med at gennemgå, hvad MS SQL er, og hvad MySQL er.
Microsoft SQL Server er en meget populær RDBMS med restriktive licenser og beskedne omkostninger ved ejerskab, hvis databasen er af betydelig størrelse eller bruges af et betydeligt antal klienter. Det giver en meget brugervenlig og nem at lære grænseflade, hvilket har resulteret i en stor installeret brugerbase. Som anden RDBMS-software er MS SQL Server bygget oven på SQL, et standardiseret programmeringssprog, som databaseadministratorer (DBA'er) og andre it-professionelle bruger til at administrere databaser og forespørge på de data, de indeholder. SQL Server er knyttet til Transact-SQL (T-SQL), en implementering af SQL fra Microsoft, der tilføjer et sæt proprietære programmeringsudvidelser til standardsproget.
MySQL er et Oracle-understøttet open source relationsdatabasestyringssystem baseret på SQL.
Det er den næstmest populære database i verden i henhold til db-engines rangering og sandsynligvis den mest nuværende databasebackend på planeten, da den kører de fleste internettjenester rundt om i verden.
MySQL kører på stort set alle platforme, inklusive Linux, UNIX og Windows. Det er en vigtig komponent i en open source-virksomhedsstabel kaldet LAMP. MySQL Enterprise-versionen leveres med support og yderligere funktioner for sikkerhed og høj tilgængelighed.
https://db-engines.com/da/rankingKombinationen af omkostningsbesparelser, platformskompatibilitet og funktionssæt i MySQL gør det virkelig tiltalende, og mange organisationer migrerer fra MS SQL Server til denne open source-platform for at drage fordel af disse funktioner.
Hvorfor migrere?
Normalt er den første grund til at migrere omkostningerne. SQL Server er en proprietær database fra Microsoft. Der er en gratis SQL Server-version kaldet Express, men den har nogle begrænsninger som 10 GB databasegrænse, en begrænset mængde CPU, en begrænset mængde RAM og mere, så sandsynligvis skal du betale licensen for at bruge den i produktionen. Du kan tjekke priserne her.
Med MySQL kan du bruge fællesskabsudgaven gratis og uden nogen begrænsning.
En anden grund kunne være operativsystemstøtten. I modsætning til MS SQL Server understøtter MySQL en bred vifte af operativsystemer, herunder Linux, Windows, Mac OS, Solaris og mange flere.
Med hensyn til installation og konfiguration, installerer MySQL hurtigere, har et mindre fodaftryk, mens det stadig er i stand til at administrere temmelig store databaser, og har færre konfigurationsknapper, der skal justeres, end SQL Server.
Inden for området høj tilgængelighed har MySQL en række dokumenterede løsninger, herunder replikering, SAN'er og MySQL Cluster, som er lig med eller bedst SQL Server afhængigt af scenariet.
Det fantastiske MySQL-fællesskab giver mange fordele, herunder et fantastisk udvikler- og DBA-netværk, hvor alle arbejder sammen for at sikre et produkt af høj kvalitet og hinandens succes.
Hvad du bør vide
At flytte data og indeksstrukturer over til MySQL er typisk ikke en udfordrende opgave, da MySQL understøtter alle de vigtige datatyper, tabeldesigns og indeksstrukturer. Under alle omstændigheder er der nogle genstande, der vil møde nogle udfordringer. Koderelaterede objekter, såsom lagrede procedurer, kan bruge ikke-standardiserede ANSI-funktioner, da Transact-SQL har mange af dem.
Så følgende punkter skal have særlig opmærksomhed ved migrering:
- Samlinger
- Typer
- DDL og sætningsbaserede triggere (MySQL har rækkebaserede triggere)
- Proprietære SQL Server-funktionskald
- Visse tilfælde af dynamisk T-SQL
På samme måde skal synonymer og sikkerhedsroller have en løsning, da de ikke kan migreres direkte til MySQL.
Datatyper, der kræver konvertering
Følgende kort kan bruges til at konvertere SQL Server-datatyper, der ikke er knyttet i 1-til-1 forhold til MySQL:
SQL-server | MySQL |
---|---|
IDENTITET | AUTO_INCREMENT |
NTEXT, NATIONAL TEKST | TEKST CHARACTER SET UTF8 |
SMALLDATETIME | DATETIME |
PENGE | DECIMAL(19;4) |
SMÅ PENGE | DECIMAL(10;4) |
UNIQUEIDENTIFIER | BINÆR(16) |
SYSNAME | CHAR(256) |
Sådan gør du
Der er mange værktøjer til at udføre migreringen fra MS SQL Server til MySQL som Amazon DMS eller Data Integration (Kettle), men i dette tilfælde vil vi bruge MySQL Workbench Migration-værktøjet.
Dette værktøj er designet til at spare DBA og udviklertid ved at give visuel, peg og klik brugervenlighed omkring alle faser af konfiguration og styring af en kompleks migreringsproces:
- Databasemigrationer:Tillader migreringer fra Microsoft SQL Server, Microsoft Access, PostgreSQL, Sybase ASE, Sybase SQL Anywhere, SQLite og mere.
- Administrer migreringsprojekter:Tillader, at migreringer konfigureres, kopieres, redigeres, udføres og planlægges.
- Kilde- og målvalg:Giver brugerne mulighed for at definere specifikke datakilder og analysere kildedata forud for migreringen.
- Objektmigrering:Giver brugere mulighed for at vælge objekter, der skal migreres, tildele en kilde til måltilknytninger, hvor det er nødvendigt, redigere migreringsscripts og oprette målskemaet.
- Versionsopgraderinger:Ved hjælp af migrering kan brugere nemt flytte databaser fra ældre MySQL-versioner til den nyeste.
Så lad os gøre det.
Til denne opgave antager vi, at du har:
- SQL-server installeret med din database for at migrere:Vi bruger Northwind-eksempeldatabasen over MS SQL Server Express 2014 Edition.
- MySQL Server installeret:Vi har MySQL 5.7.25 Community Edition over CentOS.
- Brugere på begge databaseservere med privilegier til at udføre opgaven:Vi har brugeren "sa" på SQL Server og brugeren "migrering" med alle privilegier på MySQL.
- MySQL Workbench installeret med adgang til begge databaseservere:Vi bruger MySQL Workbench 6.3.
For at starte migreringsprocessen skal du på MySQL Workbench-hovedskærmen gå til Database-> Migration Wizard.
Vi bør tjekke forudsætningerne for at bekræfte, om vi kan fortsætte opgaven. Hvis alt ser fint ud, kan vi trykke på Start migration.
I dette trin skal vi give oplysningerne om kildedatabasen, i dette tilfælde SQL Server.
Vi konfigurerer vores kildeparameter, som du kan se på det forrige billede:
Database System: Microsoft SQL Server
Connection Method: ODBC (Native)
Driver: SQL Server
Server: localhost
Username: sa
Om Server-parameteren kører vi MySQL Workbench på SQL Server-noden, men sandsynligvis vil du bruge IP-adressen/værtsnavnet på din databaseserver.
Nu kan vi kontrollere forbindelsen ved at bruge knappen Test forbindelse.
Derefter skal vi tilføje målparametrene, i dette tilfælde MySQL Server:
Connection Method: Standard (TCP/IP)
Hostname: 192.168.100.192
Port: 3306
Username: migration
Og tryk på Test forbindelse for at bekræfte de tilføjede oplysninger.
I det næste trin vil MySQL Workbench oprette forbindelse til vores SQL Server for at hente en liste over kataloger og skemaer.
Nu vælger vi Northwind-eksempeldatabasen fra listen.
Vi kan vælge, hvordan de omvendt konstruerede skemaer og objekt skal kortlægges. Vi bruger Catalog.Schema.Table -> Catalog.Table mulighed, så i vores MySQL har vi en database kaldet Northwind og de nuværende tabeller, som vi har i vores SQL Server-database.
Hvis alt gik fint, har vi en liste over objekter, der skal migreres.
I dette tilfælde har vi tabelobjekter, visningsobjekter og rutineobjekter. Vi vælger kun tabelobjekterne, fordi vi for resten af objektet skal kontrollere den tilsvarende MySQL-ækvivalente kode manuelt.
I dette trin konverteres objekterne fra kilden til MySQL-kompatible objekter.
Hvis alt gik fint, kan vi fortsætte ved at vælge, hvordan vi vil oprette det migrerede skema i målet. Vi bruger standardindstillingen "Opret skema i mål-RDBMS".
Lad os nu tjekke oprettelsesskemaprocessen.
I det næste trin kan vi kontrollere resultatet af hver scriptudførelse, og vi kan kontrollere den nye database, der er oprettet på vores MySQL-server.
I vores MySQL-server har vi:
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| NORTHWND |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.01 sec)
På dette tidspunkt har vi databasestrukturen, men vi har ikke dataene endnu. Nu vælger vi, hvordan vi vil kopiere dataene i MySQL-serveren. Vi bruger muligheden "Online kopi af tabeldata til at målrette mod RDBMS".
Og vi kan overvåge kopieringsprocessen fra MySQL Workbench-applikationen.
På dette tidspunkt har vi alle oplysningerne migreret til vores 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 sidste trin kan vi kontrollere migreringsrapporten og afslutte opgaven.
Migreringen er udført!
Test
Før migreringsprocessen bør du teste applikationen og MySQL-databasen for at kende adfærden med den nye motor.
Det bør også være nyttigt at udføre en benchmark-test for at validere ydeevnen før migreringen.
Der er nogle tips, du skal tage hensyn til:
- Testen skal simulere antallet af brugerforbindelser, der forventes.
- De tilsluttede sessioner skal udføre opgaver, som de ville forekomme i løbet af en normal dag.
- Du bør indlæse din database med testdata, der er omtrent den størrelse, du forventer, at din database er i den virkelige verden.
Til denne testopgave kan du bruge mysqlslap-værktøjet. Det er et diagnoseprogram designet til at efterligne klientbelastning for en MySQL-server og til at rapportere timingen af hvert trin.
Konklusion
Som vi har gennemgået i denne blog, er der flere grunde, der kan få en virksomhed til at beslutte sig for en databasemigrering, der går fra en proprietær motor til en open source. Vi har her set en populær use case, en migrering fra SQL Server til MySQL, og lavet et trin for trin eksempel ved at bruge et almindeligt kendt MySQL-værktøj, MySQL Workbench. Vi håber, du finder denne artikel nyttig.