Cvičení: Migrace místní databáze MySQL do Služby Azure Database for MySQL

Dokončeno

V tomto cvičení provedete migraci databáze MySQL do Azure. Do Služby Azure Database for MySQL budete migrovat existující databázi MySQL spuštěnou na virtuálním počítači.

Pracujete jako vývojář databáze pro organizaci AdventureWorks. AdventureWorks prodává jízdní kola a jízdní díly přímo koncovým spotřebitelům a distributorům po dobu více než desetiletí. Jejich systémy ukládají informace do databáze, která aktuálně běží pomocí MySQL na virtuálním počítači Azure. V rámci cvičení racionalizace hardwaru chce AdventureWorks přesunout databázi do spravované databáze Azure. Byli jste požádáni o provedení této migrace.

Důležité

Služba Azure Data Migration Service se nepodporuje v bezplatném sandboxovém prostředí Azure. Tyto kroky můžete provést ve vlastním osobním předplatném nebo si jen projděte, abyste pochopili, jak migrovat databázi.

Nastavení prostředí

Spuštěním těchto příkazů Azure CLI v Cloud Shellu vytvořte virtuální počítač se systémem MySQL s kopií databáze Adventure Works. Poslední příkazy vytisknou IP adresu nového virtuálního počítače.

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

Dokončení těchto příkazů bude trvat přibližně 5 minut. Nemusíte čekat, můžete pokračovat pomocí následujícího postupu.

Vytvoření serveru a databáze Azure Database for MySQL

První fáze projektu vyžaduje vytvoření databáze Azure database for MySQL pro hostování nových databází vaší společnosti.

  1. Ve webovém prohlížeči otevřete novou kartu a přejděte na web Azure Portal.

  2. Vyberte + Vytvořit prostředek.

  3. Do pole Hledat na Marketplace zadejte Azure Database for MySQL a stiskněte enter.

  4. Na stránce Azure Database for MySQL vyberte Vytvořit.

  5. Na stránce Vybrat možnost nasazení Azure Database for MySQL v části Flexibilní server vyberte Vytvořit.

  6. Na stránce Vytvořit server MySQL zadejte následující podrobnosti a pak vyberte Zkontrolovat a vytvořit:

    Vlastnost Hodnota
    Skupina prostředků migrate-mysql
    Název serveru adventureworksnnn, kde nnn je přípona podle vašeho výběru, aby byl název serveru jedinečný.
    Zdroj dat Nic
    Umístění Vyberte nejbližší umístění.
    Verze 5.7
    Výpočty + úložiště Vyberte Konfigurovat server, vyberte cenovou úroveň Basic a pak vyberte OK.
    Uživatelské jméno správce awadmin
    Heslo Pa55w.rdDemo
    Potvrdit heslo Pa55w.rdDemo
  7. Na stránce Zkontrolovat a vytvořit vyberte Vytvořit. Než budete pokračovat, počkejte na vytvoření služby.

  8. Po vytvoření služby vyberte Přejít k prostředku.

  9. Vyberte Zabezpečení připojení.

  10. Na stránce Zabezpečení připojení nastavte Možnost Povolit přístup ke službám Azure na Ano.

  11. V seznamu pravidel brány firewall přidejte pravidlo s názvem virtuální počítač a nastavte POČÁTEČNÍ IP adresu a KONCOVou IP ADRESU na IP adresu virtuálního počítače se serverem MySQL. Jedná se o IP adresu uvedenou jako poslední řádek v Cloud Shellu.

  12. Vyberte Přidat aktuální IP adresu klienta, aby klientský počítač mohl přistupovat k databázi.

  13. Uložte a počkejte na aktualizaci pravidel brány firewall.

  14. Na příkazovém řádku Cloud Shellu spusťte následující příkaz, který vytvoří novou databázi ve službě Azure Database for MySQL. Nahraďte [nnn] příponou, kterou jste použili při vytváření služby Azure Database for MySQL. Nahraďte [skupinu prostředků] názvem skupiny prostředků, kterou jste zadali pro službu:

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

    Pokud se databáze úspěšně vytvořila, měla by se zobrazit zpráva podobná této:

    {
          "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"
    }
    

Export schématu pro použití v cílové databázi

Teď se připojíte k existujícímu virtuálnímu počítači MySQL pomocí Cloud Shellu k exportu schématu databáze.

  1. Spuštěním tohoto příkazu Azure CLI zobrazte IP adresu vašeho existujícího virtuálního počítače.

    MYSQLIP="$(az vm list-ip-addresses \
        --resource-group migrate-mysql \
        --name mysqlvm \
        --query "[].virtualMachine.network.publicIpAddresses[*].ipAddress" \
        --output tsv)"
    
    echo $MYSQLIP
    
  2. Připojte se ke starému databázovému serveru pomocí SSH. Jako heslo zadejte Pa55w.rdDemo .

    ssh azureuser@$MYSQLIP
    
  3. Pomocí nástroje mysqldump exportujte schéma zdrojové databáze:

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

Import schématu do cílové databáze

  1. Spuštěním následujícího příkazu v Cloud Shellu se připojte k serveru azureadventureworks[nnn]. Nahraďte dvě instance [nnn] příponou vaší služby. Všimněte si, že uživatelské jméno má příponu @adventureworks[nnn]. Na příkazovém řádku hesla zadejte Pa55w.rdDemo.

    mysql -h adventureworks[nnn].MySQL.database.azure.com -u awadmin@adventureworks[nnn] -pPa55w.rdDemo
    
  2. Spuštěním následujících příkazů vytvořte uživatele azureuser a nastavte heslo tohoto uživatele na Pa55w.rd. Druhý příkaz dává uživateli azureuser potřebná oprávnění k vytvoření objektů v databázi azureadventureworks .

    GRANT SELECT ON *.* TO 'azureuser'@'localhost' IDENTIFIED BY 'Pa55w.rd';
    GRANT CREATE ON *.* TO 'azureuser'@'localhost';
    
  3. Spuštěním následujících příkazů vytvořte databázi adventureworks .

    CREATE DATABASE adventureworks;
    
  4. Zavřete nástroj mysql příkazem quit .

  5. Naimportujte schéma adventureworks do služby Azure Database for MySQL. Import provádíte jako azureuser, takže po zobrazení výzvy zadejte heslo Pa55w.rd .

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

Provedení online migrace pomocí služby Database Migration Service

  1. Vraťte se na Azure Portal.

  2. Klikněte na Všechny služby, klikněte na Předplatná a potom na své předplatné.

  3. Na stránce předplatného v části Nastavení klikněte na Poskytovatelé prostředků.

  4. Do pole Filtrovat podle názvu zadejte DataMigration a klepněte na tlačítko Microsoft.DataMigration.

  5. Pokud microsoft.DataMigration není zaregistrovaný, klikněte na Zaregistrovat a počkejte, až se stav změní na Registrováno. Možná bude nutné kliknout na Aktualizovat , aby se změna stavu zobrazila.

  6. Vyberte Vytvořit prostředek, do pole Hledat na Marketplace zadejte Azure Database Migration Service a stiskněte Enter.

  7. Na stránce Azure Database Migration Service vyberte Vytvořit.

  8. Na stránce Vytvořit službu migrace zadejte následující podrobnosti a pak vyberte Další: Sítě >>.

    Vlastnost Hodnota
    Výběr skupiny prostředků migrate-mysql
    Název služby migrace adventureworks_migration_service
    Umístění Vyberte nejbližší umístění.
    Režim služby Azure
    Cenová úroveň Premium s 4 virtuálními jádry
  9. Na stránce Sítě vyberte virtuální síť MySQLvnet/mysqlvmSubnet. Tato síť byla vytvořena jako součást instalace.

  10. Vyberte Zkontrolovat a vytvořit a potom Vytvořit. Počkejte, než se vytvoří služba Database Migration Service. Bude to několik minut trvat.

  11. Na webu Azure Portal přejděte na stránku služby Database Migration Service.

  12. Vyberte Nový projekt migrace.

  13. Na stránce Nový projekt migrace zadejte následující podrobnosti a pak vyberte Vytvořit a spustit aktivitu.

    Vlastnost Hodnota
    Název projektu adventureworks_migration_project
    Typ zdrojového serveru MySQL
    Cílová databáze pro MySQL Azure Database for MySQL
    Zvolte typ aktivity Online migrace dat
  14. Po spuštění Průvodce migrací na stránce Vybrat zdroj zadejte následující podrobnosti.

    Vlastnost Hodnota
    Název zdrojového serveru nn.nn.nn.nn (IP adresa virtuálního počítače Azure s MySQL)
    Port serveru 3306
    Uživatelské jméno azureuser
    Heslo Pa55w.rd
  15. Vyberte Další: Vyberte cíl>>.

  16. Na stránce Vybrat cíl zadejte následující podrobnosti.

    Vlastnost Hodnota
    Název cílového serveru adventureworks[nnn]. MySQL.database.azure.com
    Uživatelské jméno awadmin@adventureworks[nnn]
    Heslo Pa55w.rdDemo
  17. Vyberte Další: Vyberte databáze>>.

  18. Na stránce Vybrat databáze se ujistěte, že zdrojová i cílová databáze jsou nastavené na adventureworks, a pak vyberte Další: Konfigurovat nastavení migrace.

  19. Na stránce Konfigurovat nastavení migrace vyberte Další: Souhrn>>.

  20. Na stránce Souhrn migrace zadejte do pole Název aktivity AdventureWorks_Migration_Activity a pak vyberte Zahájit migraci.

  21. Na stránce AdventureWorks_Migration_Activity vyberte Aktualizovat v 15sekundových intervalech. Při pokroku se zobrazí stav operace migrace.

  22. Počkejte, až se sloupec PODROBNOSTI MIGRACE změní na Připraveno k přímé migraci.

Úprava dat a přímá migrace do nové databáze

  1. Vraťte se na stránku AdventureWorks_Migration_Activity na webu Azure Portal.

  2. Vyberte databázi adventureworks.

  3. Na stránce adventureworks ověřte, že je stav všech tabulek označený jako DOKONČENO.

  4. Vyberte Přírůstkovou synchronizaci dat. Ověřte, že je stav pro každou tabulku označený jako Synchronizace.

  5. Přepněte zpět do Cloud Shellu.

  6. Spuštěním následujícího příkazu se připojte k databázi adventureworks spuštěné pomocí MySQL na virtuálním počítači:

    mysql -pPa55w.rd adventureworks
    
  7. Spuštěním následujících příkazů SQL zobrazte a potom z databáze odeberte objednávky 43659, 43660 a 43661.

    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. Zavřete nástroj mysql příkazem quit.

  9. Vraťte se na stránku adventureworks na webu Azure Portal a pak vyberte Aktualizovat. Posuňte se na stránku pro tabulky salesorderheader a salesorderdetail . Ověřte, že tabulka salesorderheader označuje, že byly odstraněny 3 řádky a z tabulky sales.salesorderdetail byly odebrány 29 řádků. Pokud nejsou použité žádné aktualizace, zkontrolujte, jestli databáze neobsahuje čekající změny .

  10. Vyberte Spustit přímou migraci.

  11. Na stránce Dokončení přímé migrace vyberte Potvrdit a pak vyberte Použít. Počkejte, až se stav změní na Dokončeno.

  12. Vraťte se do Cloud Shellu.

  13. Spuštěním následujícího příkazu se připojte k databázi azureadventureworks spuštěnou pomocí služby Azure Database for MySQL:

    mysql -h adventureworks[nnn].MySQL.database.azure.com -u awadmin@adventureworks[nnn] -pPa55w.rdDemo adventureworks
    
  14. Spuštěním následujících příkazů SQL zobrazte objednávky a podrobnosti pro objednávky 43659, 43660 a 43661. Účelem těchto dotazů je ukázat, že se data přenesla:

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

    První dotaz by měl vrátit 3 řádky. Druhý dotaz by měl vrátit 29 řádků.

  15. Zavřete nástroj mysql příkazem quit.

  16. Ukončete připojení ssh pomocí příkazu exit .

Vyčištění prostředků, které jste vytvořili

Důležité

Pokud jste tyto kroky provedli ve vlastním osobním předplatném, můžete prostředky odstranit jednotlivě nebo odstranit skupinu prostředků a odstranit tak celou sadu prostředků. Prostředky, které necháte spuštěné, vás stojí peníze.

  1. Spuštěním tohoto příkazu v Cloud Shellu odstraňte skupinu prostředků:
az group delete --name migrate-mysql