Oefening: Een on-premises MySQL-database migreren naar Azure Database for MySQL
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.
Open in een webbrowser een nieuw tabblad en navigeer naar Azure Portal.
Selecteer + Een resource maken.
Typ Azure Database for MySQL in het vak Marketplace doorzoeken en druk op Enter.
Selecteer Maken op de pagina Azure Database for MySQL.
Selecteer op de pagina Azure Database for MySQL-implementatieoptie selecteren onder Flexibele server Maken.
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 Selecteer Maken op de pagina Beoordelen en maken. Wacht totdat de service is gemaakt voordat u doorgaat.
Wanneer de service is gemaakt, selecteert u Ga naar de resource.
Selecteer Verbinding maken ionbeveiliging.
Stel op de pagina Verbinding maken ionbeveiliging toegang tot Azure-servicestoestaan in op Ja.
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.
Selecteer Huidig IP-adres van client toevoegen om uw clientcomputer toegang te geven tot de database.
Sla op en wacht totdat de firewallregels zijn bijgewerkt.
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.
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
Verbinding maken naar uw oude databaseserver met behulp van SSH. Voer Pa55w.rdDemo in voor het wachtwoord.
ssh azureuser@$MYSQLIP
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
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
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';
Voer de volgende opdrachten uit om een adventureworks-database te maken.
CREATE DATABASE adventureworks;
Sluit het hulpprogramma mysql met de opdracht afsluiten .
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
Ga terug naar de Azure-portal.
Klik op Alle services, klik op Abonnementen en klik vervolgens op uw abonnement.
Klik op uw abonnementspagina onder Instellingen op Resourceproviders.
Typ DataMigration in het vak Filteren op naam en klik vervolgens op Microsoft.DataMigration.
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.
Selecteer Een resource maken, typ azure Database Migration Service in het vak Marketplace doorzoeken en druk op Enter.
Selecteer Maken op de pagina Azure Database Migration Service.
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 Selecteer op de pagina Netwerken het virtuele netwerk MySQLvnet/mysqlvmSubnet . Dit netwerk is gemaakt als onderdeel van de installatie.
Selecteer Controleren en maken en selecteer vervolgens Maken. Wacht totdat de Database Migration Service is gemaakt. Dit kan enkele minuten duren.
Ga in Azure Portal naar de pagina voor uw Database Migration Service.
Selecteer Nieuw migratieproject.
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 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 Selecteer Volgende: Doel selecteren>>.
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 Selecteer Volgende: Databases selecteren>>.
Controleer op de pagina Databases selecteren of zowel de brondatabase als de doeldatabase zijn ingesteld op adventureworks en selecteer vervolgens Volgende: Migratie-instellingen configureren.
Selecteer Volgende: Samenvatting>> op de pagina Migratie-instellingen configureren.
Typ AdventureWorks_Migration_Activity in het vak Activiteitsnaam op de overzichtspagina van de migratie en selecteer vervolgens Migratie starten.
Selecteer op de pagina AdventureWorks_Migration_Activity vernieuwen met intervallen van 15 seconden. Tijdens de voortgang ziet u de status van de migratiebewerking.
Wacht totdat de kolom MIGRATIEDETAILS is gewijzigd in Ready to cutover.
Gegevens en cutover wijzigen in de nieuwe database
Ga terug naar de pagina AdventureWorks_Migration_Activity in Azure Portal.
Selecteer de adventureworks-database .
Controleer op de pagina Adventureworks of de status voor alle tabellen is gemarkeerd als VOLTOOID.
Selecteer Incrementele gegevenssynchronisatie. Controleer of de status voor elke tabel is gemarkeerd als Synchroniseren.
Ga terug naar Cloud Shell.
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
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);
Sluit het hulpprogramma mysql met de opdracht afsluiten .
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.
Selecteer Cutover starten.
Selecteer Bevestigen op de pagina Complete cutover en vervolgens Toepassen. Wacht totdat de status is gewijzigd in Voltooid.
Keer terug naar Cloud Shell.
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
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.
Sluit het hulpprogramma mysql met de opdracht afsluiten .
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.
- Voer met behulp van Cloud Shell deze opdracht uit om de resourcegroep te verwijderen:
az group delete --name migrate-mysql