Migrieren von MySQL-Datenbanken zu AzureMigrate MySQL databases to Azure

In diesem Artikel wird gezeigt, wie das fiktive Unternehmen Contoso die Migration seiner lokalen Open-Source-MySQL-Datenbankplattform zu Azure geplant und durchgeführt hat.This article demonstrates how the fictional company Contoso planned and migrated its on-premises MySQL open-source database platform to Azure.

Business-TreiberBusiness drivers

Das IT Leadership-Team hat eng mit den Geschäftspartnern zusammengearbeitet, um zu verstehen, was das Unternehmen mit dieser Migration erreichen möchte.The IT leadership team has worked closely with business partners to understand what they want to achieve with this migration. Sie wünschen Folgendes:They want to:

  • Erhöhen der Verfügbarkeit.Increase availability. Bei der lokalen MySQL-Umgebung von Contoso sind Probleme mit der Verfügbarkeit aufgetreten.Contoso has had availability issues with its MySQL on-premises environment. Die Anwendungen, die diesen Datenspeicher nutzen, müssen für das Unternehmen zuverlässiger werden.The business requires the applications that use this data store to be more reliable.
  • Effizienzsteigerung.Increase efficiency. Contoso muss unnötige Verfahren beseitigen und Prozesse für Entwickler und Benutzer optimieren.Contoso needs to remove unnecessary procedures and streamline processes for developers and users. Die IT-Abteilung muss schnell sein und darf weder Geld noch Zeit verschwenden, um Kundenanforderungen schneller zu bearbeiten.The business needs IT to be fast and not waste time or money to deliver faster on customer requirements.
  • Steigerung der Flexibilität.Increase agility. Die Contoso-IT-Abteilung muss schneller auf die Unternehmensanforderungen reagieren.Contoso IT needs to be more responsive to the needs of the business. Die IT-Experten müssen schneller reagieren als die Änderungen im Marketplace geschehen, um den Erfolg in einer globalen Wirtschaft zu garantieren.It must react faster than the changes in the marketplace to enable success in a global economy. IT darf nicht zum Geschäftshindernis werden.It mustn't become a business blocker.
  • Skalierung.Scale. Da das Unternehmen erfolgreich wächst, muss die IT-Abteilung von Contoso Systeme bereitstellen, die mit derselben Geschwindigkeit mitwachsen.As the business grows successfully, Contoso IT must provide systems that grow at the same pace.

MigrationszieleMigration goals

Das Cloudteam von Contoso hat sich folgende Ziele für die Migration gesetzt.The Contoso cloud team has pinned down goals for this migration. Anhand dieser Ziele wird die beste Migrationsmethode bestimmt.These goals were used to determine the best migration method.

AnforderungenRequirements DetailsDetails
VerfügbarkeitAvailability Derzeit haben interne Mitarbeiter Schwierigkeiten mit der Hostingumgebung für die MySQL-Instanz.Currently internal staff are having a hard time with the hosting environment for the MySQL instance. Contoso wünscht eine Verfügbarkeit der Datenbankschicht von nahezu 99,99 Prozent.Contoso wants to have close to 99.99 percent availability for the database layer.
SkalierbarkeitScalability Die Kapazität des lokalen Datenbankhosts geht schnell zur Neige.The on-premises database host is quickly running out of capacity. Contoso erfordert eine Möglichkeit, seine Instanzen über die derzeitigen Beschränkungen hinaus zu skalieren oder herunterzuskalieren, wenn sich die Geschäftsumgebung ändert, um Kosten zu sparen.Contoso needs a way to scale its instances past current limitations or scale down if the business environment changes to save on costs.
LeistungPerformance Die Personalabteilung von Contoso führt täglich, wöchentlich und monatlich verschiedene Berichte aus.The Contoso human resources (HR) department runs various reports daily, weekly, and monthly. Beim Ausführen dieser Berichte treten erhebliche Leistungsprobleme bei der Anwendung für die Mitarbeiter auf.When it runs these reports, it experiences significant performance issues with the employee-facing application. Die Berichte müssen ausgeführt werden, ohne dass sich dies auf die Anwendungsleistung auswirkt.It needs to run the reports without affecting application performance.
SecuritySecurity Contoso muss sicher sein, dass nur die internen Anwendungen auf die Datenbank zugreifen können und sie nicht über das Internet sichtbar oder zugänglich ist.Contoso needs to know that the database is accessible only to its internal applications and isn't visible or accessible via the internet.
ÜberwachungMonitoring Contoso verwendet derzeit Tools zum Überwachen der Metriken des MySQL-Datenbankservers und zum Bereitstellen von Benachrichtigungen bei Auftreten von CPU-, Arbeitsspeicher- oder Speicherproblemen.Contoso currently uses tools to monitor the metrics of the MySQL database server and provide notifications when CPU, memory, or storage have issues. Das Unternehmen möchte in Azure über dieselben Funktionen verfügen.The company wants to have this same capability in Azure.
GeschäftskontinuitätBusiness continuity Der Personaldatenspeicher ist ein wichtiger Teil der täglichen Abläufe bei Contoso.The HR data store is an important part of Contoso's daily operations. Die Ausfallzeit muss im Fall einer Beschädigung oder Wiederherstellung weitestgehend minimiert werden.If it became corrupted or needed to be restored, the company wants to minimize downtime as much as possible.
AzureAzure Contoso möchte die Anwendung in Azure verschieben, ohne dass sie auf VMs ausgeführt wird.Contoso wants to move the application to Azure without running it on VMs. In der Datenschicht soll auf Azure-PaaS-Dienste (Platform-as-a-Service) zurückgegriffen werden.Contoso wants to use Azure platform as a service (PaaS) services for the data tier.

LösungsentwurfSolution design

Nachdem die Ziele und Anforderungen formuliert wurden, entwirft und prüft Contoso eine Bereitstellungslösung und bestimmt den Migrationsprozess.After pinning down goals and requirements, Contoso designs and reviews a deployment solution and identifies the migration process. Auch die für die Migration verwendeten Tools und Dienste werden identifiziert.The tools and services that it will use for migration are also identified.

Aktuelle AnwendungCurrent application

In der MySQL-Datenbank werden Mitarbeiterdaten gespeichert, die für alle Belange der Personalabteilung des Unternehmens verwendet werden.The MySQL database stores employee data that's used for all aspects of the company's HR department. Eine LAMP-basierte Anwendung wird als Front-End zum Verarbeiten von Personalanfragen der Mitarbeiter verwendet.A LAMP-based application is used as the front end to handle employee HR requests. Contoso hat 100.000 Mitarbeiter weltweit, und daher ist die Uptime wichtig.Contoso has 100,000 employees worldwide, so uptime is important.

Vorgeschlagene LösungProposed solution

Verwenden von Azure Database Migration Service, um die Datenbank zu einer Azure Database for MySQL-Instanz zu migrierenUse Azure Database Migration Service to migrate the database to an Azure Database for MySQL instance. Ändern aller Anwendungen und Prozesse, damit sie die neue Azure Database for MySQL-Instanz verwenden.Modify all applications and processes to use the new Azure Database for MySQL instance.

Überlegungen zu DatenbankenDatabase considerations

Im Rahmen des Lösungsentwurfs hat Contoso die in Azure verfügbaren Features für das Hosting der MySQL-Daten geprüft.As part of the solution design process, Contoso reviewed the features in Azure for hosting its MySQL data. Die folgenden Überlegungen haben dabei im Unternehmen zu der Entscheidung für Azure geführt:The following considerations helped the company decide to use Azure:

  • Ähnlich wie Azure SQL-Datenbank unterstützt auch Azure Database for MySQL Firewallregeln.Similar to Azure SQL Database, Azure Database for MySQL allows for firewall rules.
  • Azure Database for MySQL kann mit Azure Virtual Network verwendet werden, um zu verhindern, dass die Instanz öffentlich zugänglich ist.Azure Database for MySQL can be used with Azure Virtual Network to prevent the instance from being publicly accessible.
  • Azure Database for MySQL verfügt über die erforderlichen Compliance- und Datenschutzzertifizierungen, die Contoso für seine Prüfer einhalten muss.Azure Database for MySQL has the required compliance and privacy certifications that Contoso must meet for its auditors.
  • Die Verarbeitungsleistung für Berichte und Anwendung wird durch die Verwendung von Lesereplikaten verbessert.Report and application processing performance will be enhanced by using read replicas.
  • Der Dienst kann mithilfe von Azure Private Link nur für den internen Netzwerkdatenverkehr (kein öffentlicher Zugriff) verfügbar gemacht werden.Ability to expose the service to internal network traffic only (no public access) by using Azure Private Link.
  • Contoso hat entschieden, nicht zu Azure Database for MySQL zu wechseln, da in Zukunft möglicherweise das MariaDB ColumnStore- und Graph-Datenbankmodell verwendet werden soll.Contoso chose not to move to Azure Database for MySQL because it's considering using the MariaDB ColumnStore and graph database model in the future.
  • Abgesehen von den MySQL-Features ist Contoso ein Befürworter echter Open-Source-Projekte und entscheidet sich gegen den Einsatz von MySQL.Aside from MySQL features, Contoso is a proponent of true open-source projects and chose not to use MySQL.
  • Die Bandbreite und Wartezeit zwischen der Anwendung und der Datenbank ist je nach ausgewähltem Gateway (Azure ExpressRoute oder Site-to-Site-VPN) ausreichend.The bandwidth and latency from the application to the database will be sufficient enough based on the chosen gateway (either Azure ExpressRoute or Site-to-Site VPN).

Überprüfung der LösungSolution review

Contoso bewertet den vorgeschlagen Entwurf anhand einer Liste mit Vor- und Nachteilen.Contoso evaluates the proposed design by putting together a pros and cons list.

AspektConsideration DetailsDetails
VorteilePros Azure Database for MySQL bietet eine finanziell abgesicherte Vereinbarung zum Service Level (SLA) von 99,99 Prozent für Hochverfügbarkeit.Azure Database for MySQL offers a 99.99 percent financially backed service-level agreement (SLA) for high availability.

Azure bietet die Möglichkeit, während Spitzenladezeiten jedes Quartal zentral hoch- oder herunterzuskalieren.Azure offers the ability to scale up or down during peak load times each quarter. Contoso kann durch den Kauf von reservierter Kapazität noch weitere Einsparungen erzielen.Contoso can save even more by purchasing reserved capacity.

Azure bietet Funktionen zur Point-in-Time-Wiederherstellung und Geowiederherstellung für Azure Database for MySQL.Azure provides point-in-time restore and geo-restore capabilities for Azure Database for MySQL.

NachteileCons Contoso ist auf die MySQL-Releaseversionen beschränkt, die in Azure unterstützt werden. Dies sind aktuell die Versionen 10.2 und 10.3.Contoso is limited to the MySQL release versions that are supported in Azure, which are currently 10.2 and 10.3.

Azure Database for MySQL weist einige Einschränkungen auf, z. B. das Herunterskalieren des Speichers.Azure Database for MySQL has some limitations, such as scaling down storage.

Vorgeschlagene ArchitekturProposed architecture

Diagramm mit der Szenarioarchitektur. Abbildung 1: SzenarioarchitekturDiagram shows the scenario architecture. Figure 1: Scenario architecture.

MigrationsprozessMigration process

VorbereitungPreparation

Bevor Sie die MySQL-Datenbanken migrieren können, müssen Sie sicherstellen, dass diese Instanzen alle Azure-Voraussetzungen für eine erfolgreiche Migration erfüllen.Before you can migrate your MySQL databases, you need to ensure that those instances meet all the Azure prerequisites for a successful migration.

Unterstützte VersionenSupported versions

MySQL verwendet das Schema x.y.z für die Versionsverwaltung. x steht dabei für die Hauptversion, y für die Nebenversion und z für die Patchversion.MySQL uses the x.y.z versioning scheme, where x is the major version, y is the minor version, and z is the patch version.

Azure unterstützt derzeit die MySQL-Versionen 10.2.25 und 10.3.16.Azure currently supports MySQL versions 10.2.25 and 10.3.16.

Upgrades für Patchupdates werden von Azure automatisch verwaltet.Azure automatically manages upgrades for patch updates. Beispiele sind 10.2.21 bis 10.2.23.Examples are 10.2.21 to 10.2.23. Upgrades von Neben- und Hauptversionen werden nicht unterstützt.Minor and major version upgrades aren't supported. Ein Upgrade von MySQL 10.2 auf MySQL 10.3 wird beispielsweise nicht unterstützt.For example, upgrading from MySQL 10.2 to MySQL 10.3 isn't supported. Wenn Sie von 10.2 auf 10.3 upgraden möchten, führen Sie eine Sicherung und dann die Wiederherstellung auf einem Server aus, der mit der neuen Engine-Version erstellt wurde.If you want to upgrade from 10.2 to 10.3, take a dump and restore it to a server created with the new engine version.

NetzwerkNetwork

Contoso muss eine Verbindung über das Gateway des virtuellen Netzwerks zwischen der lokalen Umgebung und dem virtuellen Netzwerk einrichten, in dem sich die MySQL-Datenbank befindet.Contoso needs to set up a virtual network gateway connection from its on-premises environment to the virtual network where its MySQL database is located. Durch diese Verbindung kann die lokale Anwendung über das Gateway auf die Datenbank zugreifen, wenn die Verbindungszeichenfolgen aktualisiert werden.This connection allows the on-premises application to access the database over the gateway when the connection strings are updated.

Diagramm zum Migrationsprozess. Abbildung 2: Der Migrationsvorgang.Diagram shows the migration process. Figure 2: The migration process.

MigrationMigration

Die Administratoren von Contoso migrieren die Datenbank mithilfe von Azure Database Migration Service, indem sie die Schritte im ausführlichen Migrationstutorial befolgen.Contoso admins migrate the database by using Azure Database Migration Service and following the step-by-step migration tutorial. Sie können Online-, Offline- und Hybridmigrationen (Vorschauversion) von MySQL 5.6 oder 5.7 ausführen.They can perform online, offline, and hybrid (preview) migrations by using MySQL 5.6 or 5.7.

Hinweis

MySQL 8.0 wird in Azure Database for MySQL unterstützt.MySQL 8.0 is supported in Azure Database for MySQL. Das Database Migration Service-Tool unterstützt diese Version noch nicht.The Database Migration Service tool doesn't yet support that version.

Zusammenfassend müssen die folgenden Aufgaben durchgeführt werden:As a summary, they must do the following tasks:

  • Sicherstellen, dass alle Voraussetzungen für die Migration erfüllt sind:Ensure all migration prerequisites are met:

    • Die Version der MySQL-Datenbankserverquelle muss der von Azure Database for MySQL unterstützten Version entsprechen.The MySQL database server source must match the version that Azure Database for MySQL supports. Azure Database for MySQL unterstützt die MySQL Community Edition, die InnoDB-Speicher-Engine sowie die Migration zwischen Quellen und Zielen mit derselben Version.Azure Database for MySQL supports MySQL Community Edition, the InnoDB storage engine, and migration across source and target with the same versions.
    • Aktivieren Sie die binäre Protokollierung in my.ini (Windows) oder my.cnf (Unix).Enable binary logging in my.ini (Windows) or my.cnf (Unix). Wird binäre Protokollierung nicht aktiviert, wird im Migrations-Assistenten der folgende Fehler verursacht: Error in binary logging. Variable binlog_row_image has value 'minimal.' please change it to 'full'. Weitere Informationen finden Sie in der MySQL-Dokumentation.Failure to enable binary logging causes the following error in the Migration Wizard: Error in binary logging. Variable binlog_row_image has value 'minimal.' please change it to 'full'. For more information, see the MySQL documentation.
    • Der Benutzer muss über die ReplicationAdmin-Rolle verfügen.User must have the ReplicationAdmin role.
    • Migrieren Sie die Datenbankschemas ohne Fremdschlüssel und Trigger.Migrate the database schemas without foreign keys and triggers.
  • Erstellen Sie ein virtuelles Netzwerk, das über ExpressRoute oder VPN mit Ihrem lokalen Netzwerk verbunden ist.Create a virtual network that connects via ExpressRoute or a VPN to your on-premises network.

  • Erstellen Sie eine Azure Database Migration Service-Instanz mit einer Premium-SKU, die mit dem virtuellen Netzwerk verbunden ist.Create an Azure Database Migration Service instance with a Premium SKU that's connected to the virtual network.

  • Vergewissern Sie sich, dass die Instanz über das virtuelle Netzwerk auf die MySQL-Datenbank zugreifen kann.Ensure that the instance can access the MySQL database via the virtual network. Stellen Sie sicher, dass alle eingehenden Ports von Azure zu MySQL auf der virtuellen Netzwerkebene, dem Netzwerk-VPN und dem Computer, auf dem MySQL gehostet ist, zugelassen werden.Make sure that all incoming ports are allowed from Azure to MySQL at the virtual network level, the network VPN, and the machine that hosts MySQL.

  • Erstellen Sie ein neues Database Migration Service-Projekt:Create a new Database Migration Service project:

    Der Screenshot zeigt die Erstellung eines neuen Database Migration Service-Projekts Abbildung 3: Azure Database Migration Service-Projekt.Screenshot shows how to create a new Database Migration Service project Figure 3: An Azure Database Migration Service project.

Migration mithilfe nativer ToolsMigration by using native tools

Als Alternative zur Verwendung von Azure Database Migration Service kann Contoso gängige Hilfsprogramme und Tools wie MySQL Workbench, mysqldump, Toad oder Navicat zum Herstellen einer Verbindung und zum Migrieren von Daten zu Azure Database for MySQL verwenden.As an alternative to using Azure Database Migration Service, Contoso can use common utilities and tools such as MySQL Workbench, mysqldump, Toad, or Navicat to connect to and migrate data to Azure Database for MySQL.

  • Sichern und Wiederherstellen mit mysqldump:Dump and restore with mysqldump:
    • Verwenden Sie die Option „exclude-triggers“ in mysqldump. Dadurch wird verhindert, dass Trigger während des Imports ausgeführt werden, und so die Leistung verbessert.Use the exclude-triggers option in mysqldump to prevent triggers from executing during import and improve performance.
    • Verwenden Sie die Option „single-transaction“, um den Übersetzungsisolationsmodus auf REPEATABLE READ festzulegen und eine SQL-Anweisung vom Typ START TRANSACTION vor dem Verwerfen von Daten zu senden.Use the single-transaction option to set the translation isolation mode to REPEATABLE READ, and send a START TRANSACTION SQL statement before you dump data.
    • Verwenden Sie die Option „disable-keys“ in mysqldump, um vor dem Laden Fremdschlüsseleinschränkungen zu deaktivieren.Use the disable-keys option in mysqldump to disable foreign key constraints before load. Das Entfernen von Einschränkungen führt zu Leistungsverbesserungen.Removing constraints provides performance gains.
    • Verwenden Sie Azure Blob Storage zum Speichern der Sicherungsdateien, und führen Sie die Wiederherstellung von dort aus, um den Vorgang zu beschleunigen.Use Azure Blob Storage to store the backup files and perform the restore from there for faster restore.
    • Aktualisieren Sie die Anwendungsverbindungszeichenfolgen.Update application connection strings.
    • Nachdem die Datenbank migriert ist, muss Contoso die Verbindungszeichenfolgen so aktualisieren, dass sie auf die neue Azure Database for MySQL-Datenbank verweisen.After the database is migrated, Contoso must update the connection strings to point to the new Azure Database for MySQL.

Bereinigung nach der MigrationClean up after migration

Nach der Migration muss Contoso die lokale Datenbank zwecks Aufbewahrung sichern und den lokalen MySQL-Datenbankserver außer Betrieb nehmen.After migration, Contoso needs to back up the on-premises database for retention purposes and retire the on-premises MySQL database server.

Überprüfen der BereitstellungReview the deployment

Da die migrierten Ressourcen in Azure enthalten sind, muss Contoso seine neue Infrastruktur vollständig operationalisieren und schützen.With the migrated resources in Azure, Contoso needs to fully operationalize and secure its new infrastructure.

SicherheitSecurity

Contoso muss Folgendes durchführen:Contoso needs to:

  • Sicherstellen, dass die neue Azure Database for MySQL-Instanz und die Datenbanken geschützt sind.Ensure that its new Azure Database for MySQL instance and databases are secure. Weitere Informationen finden Sie unter Sicherheit in Azure Database for MySQL.For more information, see Security in Azure Database for MySQL.
  • Die Konfiguration der Firewall und des virtuellen Netzwerks überprüfen.Review the firewall and virtual network configurations.
  • Contoso sollte Private Link einrichten, damit der gesamte Datenverkehr der Datenbanken innerhalb von Azure und des lokalen Netzwerks bleibt.Set up Private Link so that all database traffic is kept inside Azure and the on-premises network.
  • Aktivieren Sie Microsoft Defender for Identity.Enable Microsoft Defender for Identity.

BackupsBackups

Mithilfe der Geowiederherstellung kann sichergestellt werden, dass die Azure Database for MySQL-Instanzen gesichert sind, sodass Sicherungen im Falle eines regionalen Ausfalls in einer gekoppelten Region verwendet werden können.Ensure that the Azure Database for MySQL instances are backed up by using geo-restore, so that backups can be used in a paired region if a regional outage occurs.

Wichtig

Stellen Sie sicher, dass die Azure Database for MySQL-Ressource über eine Ressourcensperre verfügt und nicht gelöscht werden kann.Ensure that the Azure Database for MySQL resource has a resource lock to prevent it from being deleted. Gelöschte Server können nicht wiederhergestellt werden.Deleted servers can't be restored.

Lizenzierung und KostenoptimierungLicensing and cost optimization

  • Azure Database for MySQL kann hoch- und herunterskaliert werden.Azure Database for MySQL can be scaled up or down. Die Überwachung der Leistung von Server und Datenbanken ist wichtig, um sicherzustellen, dass die Anforderungen erfüllt und gleichzeitig die Kosten minimiert werden.Monitoring the performance of the server and databases is important to ensure your requirements are met while minimizing costs.
  • Sowohl für CPU als auch für Speicher können Kosten anfallen.Both CPU and storage have costs associated. Es sind verschiedene Tarife verfügbar.Several pricing tiers are available. Achten Sie darauf, dass ein passender Tarif für jede Datenworkload ausgewählt ist.Be sure the appropriate pricing plan is selected for each data workload.
  • Jedes Lesereplikat wird auf Grundlage der ausgewählten Compute- und Speicheroptionen berechnet.Each read replica is billed based on the compute and storage selected.
  • Verwenden Sie reservierte Kapazitäten, um Kosten zu sparen.Use reserved capacity to save on costs.

ZusammenfassungConclusion

In diesem Artikel wurde beschrieben, wie Contoso seine MySQL-Datenbanken zu einer Azure Database for MySQL-Instanz migriert hat.In this article, Contoso migrated its MySQL databases to an Azure Database for MySQL instance.