Oefening: Een on-premises MySQL-database migreren naar Azure Database for MySQL

Voltooid

In deze oefening migreert u een MySQL-database naar Azure. U migreert een bestaande MySQL-database die op een virtuele machine wordt uitgevoerd naar Azure Database for MySQL.

U werkt als databaseontwikkelaar voor de AdventureWorks-organisatie. AdventureWorks verkoopt al meer dan tien jaar fietsen en fietsonderdelen rechtstreeks aan eindgebruikers en distributeurs. Hun systemen slaan gegevens op in een database die momenteel wordt uitgevoerd met MySQL op een Azure-VM. Als onderdeel van een hardware rationaliseringsoefening wil AdventureWorks de database verplaatsen naar een beheerde Azure-database. U bent gevraagd deze migratie uit te voeren.

Belangrijk

Azure Data Migration Service wordt niet ondersteund in de gratis Azure-sandboxomgeving. U kunt deze stappen uitvoeren in uw eigen persoonlijke abonnement of gewoon volgen om te begrijpen hoe u uw database migreert.

De omgeving instellen

Voer deze Azure CLI-opdrachten uit in Cloud Shell om een virtuele machine met MySQL te maken met een kopie van de Adventure Works-database. Met de laatste opdrachten wordt het IP-adres van de nieuwe virtuele machine afgedrukt.

az account list-locations -o table

az group create \
    --name migrate-mysql \
    --location <CHOOSE A LOCATION FROM ABOVE NEAR YOU>

az vm create \
    --resource-group migrate-mysql \
    --name mysqlvm \
    --admin-username azureuser \
    --admin-password Pa55w.rdDemo \
    --image Ubuntu2204 \
    --public-ip-address-allocation static \
    --public-ip-sku Standard \
    --size Standard_B2ms 

az vm open-port \
    --resource-group migrate-mysql \
    --name mysqlvm \
    --priority 200 \
    --port '22'

az vm open-port \
    --resource-group migrate-mysql \
    --name mysqlvm \
    --priority 300 \
    --port '3306'

az vm run-command invoke \
    --resource-group migrate-mysql \
    --name mysqlvm \
    --command-id RunShellScript \
    --scripts "
    # MySQL installation
    sudo apt-get update && sudo apt-get upgrade -y
    sudo DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server

    # Disable Ubuntu Firewall bind mysql
    sudo ufw disable
    sudo bash << EOF
        echo "bind-address=0.0.0.0" >> /etc/mysql/mysql.conf.d/mysqld.cnf
        echo "log-bin" >> /etc/mysql/mysql.conf.d/mysqld.cnf
        echo "server-id=99" >> /etc/mysql/mysql.conf.d/mysqld.cnf
    EOF
    sudo service mysql stop
    sudo service mysql start 

    # Clone exercise code
    sudo git clone https://github.com/MicrosoftLearning/DP-070-Migrate-Open-Source-Workloads-to-Azure.git /home/azureuser/workshop
 
    # Add a password to mysql root user
    sudo mysqladmin -u root password Pa55w.rd
    # Use mysql to create users and an empty adventureworks 
    sudo mysql -u root -pPa55w.rd -e \"CREATE USER azureuser IDENTIFIED BY 'Pa55w.rd';GRANT ALL PRIVILEGES ON *.* TO azureuser;CREATE DATABASE adventureworks;\"
    # Use mysql to import the adventureworks database
    sudo mysql --user=azureuser --password=Pa55w.rd --database=adventureworks < /home/azureuser/workshop/migration_samples/setup/mysql/adventureworks/adventureworks.sql
    sudo service mysql restart"
    
MYSQLIP="$(az vm list-ip-addresses \
    --resource-group migrate-mysql \
    --name mysqlvm \
    --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \
    --output tsv)"

echo $MYSQLIP

Het duurt ongeveer 5 minuten voordat deze opdrachten zijn voltooid. U hoeft niet te wachten. U kunt doorgaan met de onderstaande stappen.

De Azure-database voor MySQL-server en -database maken

Voor de eerste fase van het project moet u een Azure-database voor MySQL maken om de nieuwe database van uw bedrijven te hosten.

  1. Open in een webbrowser een nieuw tabblad en navigeer naar Azure Portal.

  2. Selecteer + Een resource maken.

  3. Typ Azure Database for MySQL in het vak Marketplace doorzoeken en druk op Enter.

  4. Selecteer Maken op de pagina Azure Database for MySQL.

  5. Selecteer op de pagina Azure Database for MySQL-implementatieoptie selecteren onder Flexibele server Maken.

  6. Voer op de pagina MySQL-server maken de volgende gegevens in en selecteer Beoordelen en maken:

    Eigenschappen Waarde
    Resourcegroep migrate-mysql
    Servernaam adventureworksnnn, waarbij nnn een achtervoegsel van uw keuze is om de servernaam uniek te maken
    Gegevensbron Geen
    Location Selecteer de dichtstbijzijnde locatie
    Versie 5.7
    Berekening en opslag Selecteer Server configureren, selecteer de prijscategorie Basic en selecteer vervolgens OK
    Gebruikersnaam van beheerder awadmin
    Password Pa55w.rdDemo
    Wachtwoord bevestigen Pa55w.rdDemo
  7. Selecteer Maken op de pagina Beoordelen en maken. Wacht totdat de service is gemaakt voordat u doorgaat.

  8. Wanneer de service is gemaakt, selecteert u Ga naar de resource.

  9. Selecteer Verbinding maken ionbeveiliging.

  10. Stel op de pagina Verbinding maken ionbeveiliging toegang tot Azure-servicestoestaan in op Ja.

  11. Voeg in de lijst met firewallregels een regel toe met de naam VM en stel het BEGIN-IP-ADRES en HET EIND-IP-ADRES in op het IP-adres van de virtuele machine waarop de MySQL-server wordt uitgevoerd. Dit is het IP-adres dat wordt vermeld als de laatste regel in de Cloud Shell.

  12. Selecteer Huidig IP-adres van client toevoegen om uw clientcomputer toegang te geven tot de database.

  13. Sla op en wacht totdat de firewallregels zijn bijgewerkt.

  14. Voer bij de Cloud Shell-prompt de volgende opdracht uit om een nieuwe database te maken in uw Azure Database for MySQL-service. Vervang [nnn] door het achtervoegsel dat u hebt gebruikt bij het maken van de Azure Database for MySQL-service. Vervang [resourcegroep] door de naam van de resourcegroep die u hebt opgegeven voor de service:

    az MySQL db create \
    --name azureadventureworks \
    --server-name adventureworks[nnn] \
    --resource-group migrate-mysql
    

    Als de database is gemaakt, ziet u een bericht dat er ongeveer als volgt uitziet:

    {
          "charset": "latin1",
          "collation": "latin1_swedish_ci",
          "id": "/subscriptions/nnnnnnnnnnnnnnnnnnnnnnnnnnnnn/resourceGroups/nnnnnn/providers/Microsoft.DBforMySQL/servers/adventureworksnnnn/databases/azureadventureworks",
          "name": "azureadventureworks",
          "resourceGroup": migrate-mysql,
          "type": "Microsoft.DBforMySQL/servers/databases"
    }
    

Het schema exporteren dat moet worden gebruikt voor de doeldatabase

U maakt nu verbinding met uw bestaande MySQL-VM met behulp van de Cloud Shell om uw databaseschema te exporteren.

  1. Voer deze Azure CLI-opdracht uit om het IP-adres voor uw bestaande VM te zien.

    MYSQLIP="$(az vm list-ip-addresses \
        --resource-group migrate-mysql \
        --name mysqlvm \
        --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \
        --output tsv)"
    
    echo $MYSQLIP
    
  2. Verbinding maken naar uw oude databaseserver met behulp van SSH. Voer Pa55w.rdDemo in voor het wachtwoord.

    ssh azureuser@$MYSQLIP
    
  3. Exporteer het schema voor de brondatabase met behulp van het hulpprogramma mysqldump:

    mysqldump -u azureuser -pPa55w.rd adventureworks --no-data > adventureworks_mysql_schema.sql
    

Het schema importeren in de doeldatabase

  1. Voer in Cloud Shell de volgende opdracht uit om verbinding te maken met de azureadworks[nnn]-server. Vervang de twee exemplaren van [nnn] door het achtervoegsel voor uw service. Houd er rekening mee dat de gebruikersnaam het achtervoegsel @adventureworks[nnn] heeft. Voer pa55w.rdDemo in bij de wachtwoordprompt.

    mysql -h adventureworks[nnn].MySQL.database.azure.com -u awadmin@adventureworks[nnn] -pPa55w.rdDemo
    
  2. Voer de volgende opdrachten uit om een gebruiker met de naam azureuser te maken en het wachtwoord voor deze gebruiker in te stellen op Pa55w.rd. De tweede instructie geeft de azureuser-gebruiker de benodigde bevoegdheden voor het maken van objecten in de azureadworks-database.

    GRANT SELECT ON *.* TO 'azureuser'@'localhost' IDENTIFIED BY 'Pa55w.rd';
    GRANT CREATE ON *.* TO 'azureuser'@'localhost';
    
  3. Voer de volgende opdrachten uit om een adventureworks-database te maken.

    CREATE DATABASE adventureworks;
    
  4. Sluit het hulpprogramma mysql met de opdracht afsluiten .

  5. Importeer het adventureworks-schema in uw Azure Database for MySQL-service. U voert de import uit als azureuser, dus voer het wachtwoord Pa55w.rd in wanneer u hierom wordt gevraagd.

    mysql -h adventureworks[nnnn].MySQL.database.azure.com -u awadmin@adventureworks[nnn] -pPa55w.rdDemo adventureworks < adventureworks_mysql_schema.sql
    

Een onlinemigratie uitvoeren met behulp van de Database Migration Service

  1. Ga terug naar de Azure-portal.

  2. Klik op Alle services, klik op Abonnementen en klik vervolgens op uw abonnement.

  3. Klik op uw abonnementspagina onder Instellingen op Resourceproviders.

  4. Typ DataMigration in het vak Filteren op naam en klik vervolgens op Microsoft.DataMigration.

  5. Als Microsoft.DataMigration niet is geregistreerd, klikt u op Registreren en wacht u totdat de status is gewijzigd in Geregistreerd. Mogelijk moet u op Vernieuwen klikken om de statuswijziging te zien.

  6. Selecteer Een resource maken, typ azure Database Migration Service in het vak Marketplace doorzoeken en druk op Enter.

  7. Selecteer Maken op de pagina Azure Database Migration Service.

  8. Voer op de pagina Migratieservice maken de volgende details in en selecteer vervolgens Volgende: Netwerken >>.

    Eigenschappen Waarde
    Een resourcegroep selecteren migrate-mysql
    Naam van migratieservice adventureworks_migration_service
    Location Selecteer de dichtstbijzijnde locatie
    Servicemodus Azure
    Prijscategorie Premium, met 4 vCores
  9. Selecteer op de pagina Netwerken het virtuele netwerk MySQLvnet/mysqlvmSubnet . Dit netwerk is gemaakt als onderdeel van de installatie.

  10. Selecteer Controleren en maken en selecteer vervolgens Maken. Wacht totdat de Database Migration Service is gemaakt. Dit kan enkele minuten duren.

  11. Ga in Azure Portal naar de pagina voor uw Database Migration Service.

  12. Selecteer Nieuw migratieproject.

  13. Voer op de pagina Nieuw migratieproject de volgende details in en selecteer vervolgens Activiteit maken en uitvoeren.

    Eigenschappen Waarde
    Projectnaam adventureworks_migration_project
    Type bronserver MySQL
    Doeldatabase voor MySQL Azure Database for MySQL
    Het type activiteit kiezen Onlinegegevensmigratie
  14. Wanneer de wizard Migratie wordt gestart, voert u op de pagina Bron selecteren de volgende gegevens in.

    Eigenschappen Waarde
    Naam van de bronserver nn.nn.nn.nn (het IP-adres van de virtuele Azure-machine waarop MySQL wordt uitgevoerd)
    Serverpoort 3306
    Gebruikersnaam azureuser
    Password Pa55w.rd
  15. Selecteer Volgende: Doel selecteren>>.

  16. Voer op de pagina Doel selecteren de volgende gegevens in.

    Eigenschappen Waarde
    Naam van de doelserver adventureworks[nnn]. MySQL.database.azure.com
    Gebruikersnaam awadmin@adventureworks[nnn]
    Password Pa55w.rdDemo
  17. Selecteer Volgende: Databases selecteren>>.

  18. Controleer op de pagina Databases selecteren of zowel de brondatabase als de doeldatabase zijn ingesteld op adventureworks en selecteer vervolgens Volgende: Migratie-instellingen configureren.

  19. Selecteer Volgende: Samenvatting>> op de pagina Migratie-instellingen configureren.

  20. Typ AdventureWorks_Migration_Activity in het vak Activiteitsnaam op de overzichtspagina van de migratie en selecteer vervolgens Migratie starten.

  21. Selecteer op de pagina AdventureWorks_Migration_Activity vernieuwen met intervallen van 15 seconden. Tijdens de voortgang ziet u de status van de migratiebewerking.

  22. Wacht totdat de kolom MIGRATIEDETAILS is gewijzigd in Ready to cutover.

Gegevens en cutover wijzigen in de nieuwe database

  1. Ga terug naar de pagina AdventureWorks_Migration_Activity in Azure Portal.

  2. Selecteer de adventureworks-database .

  3. Controleer op de pagina Adventureworks of de status voor alle tabellen is gemarkeerd als VOLTOOID.

  4. Selecteer Incrementele gegevenssynchronisatie. Controleer of de status voor elke tabel is gemarkeerd als Synchroniseren.

  5. Ga terug naar Cloud Shell.

  6. Voer de volgende opdracht uit om verbinding te maken met de adventureworks-database die wordt uitgevoerd met Behulp van MySQL op de virtuele machine:

    mysql -pPa55w.rd adventureworks
    
  7. Voer de volgende SQL-instructies uit om weer te geven en verwijder vervolgens orders 43659, 43660 en 43661 uit de database.

    SELECT * FROM salesorderheader WHERE salesorderid IN (43659, 43660, 43661);
    SELECT * FROM salesorderdetail WHERE salesorderid IN (43659, 43660, 43661);
    DELETE FROM salesorderheader WHERE salesorderid IN (43659, 43660, 43661);
    DELETE FROM salesorderdetail WHERE salesorderid IN (43659, 43660, 43661);
    
  8. Sluit het hulpprogramma mysql met de opdracht afsluiten .

  9. Ga terug naar de pagina AdventureWorks in Azure Portal en selecteer Vernieuwen. Schuif naar de pagina voor de tabellen salesorderheader en salesorderdetail . Controleer of de tabel salesorderheader aangeeft dat 3 rijen zijn verwijderd en dat er 29 rijen uit de tabel sales.salesorderdetail zijn verwijderd. Als er geen updates zijn toegepast, controleert u of er wijzigingen in behandeling zijn voor de database.

  10. Selecteer Cutover starten.

  11. Selecteer Bevestigen op de pagina Complete cutover en vervolgens Toepassen. Wacht totdat de status is gewijzigd in Voltooid.

  12. Keer terug naar Cloud Shell.

  13. Voer de volgende opdracht uit om verbinding te maken met de azureadworks-database die wordt uitgevoerd met behulp van uw Azure Database for MySQL-service:

    mysql -h adventureworks[nnn].MySQL.database.azure.com -u awadmin@adventureworks[nnn] -pPa55w.rdDemo adventureworks
    
  14. Voer de volgende SQL-instructies uit om de orders en details voor orders 43659, 43660 en 43661 weer te geven. Het doel van deze query's is om aan te geven dat de gegevens zijn overgedragen:

    SELECT * FROM salesorderheader WHERE salesorderid IN (43659, 43660, 43661);
    SELECT * FROM salesorderdetail WHERE salesorderid IN (43659, 43660, 43661);
    

    De eerste query moet drie rijen retourneren. De tweede query moet 29 rijen retourneren.

  15. Sluit het hulpprogramma mysql met de opdracht afsluiten .

  16. Sluit de ssh-verbinding met de afsluitopdracht .

De resources opschonen die u hebt gemaakt

Belangrijk

Als u deze stappen in uw eigen persoonlijke abonnement hebt uitgevoerd, kunt u de resources afzonderlijk verwijderen of de resourcegroep verwijderen om de hele set resources te verwijderen. Resources die actief blijven, kunnen u geld kosten.

  1. Voer met behulp van Cloud Shell deze opdracht uit om de resourcegroep te verwijderen:
az group delete --name migrate-mysql