Cvičení: Migrace místní databáze MySQL do Služby Azure Database for MySQL
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.
Ve webovém prohlížeči otevřete novou kartu a přejděte na web Azure Portal.
Vyberte + Vytvořit prostředek.
Do pole Hledat na Marketplace zadejte Azure Database for MySQL a stiskněte enter.
Na stránce Azure Database for MySQL vyberte Vytvořit.
Na stránce Vybrat možnost nasazení Azure Database for MySQL v části Flexibilní server vyberte Vytvořit.
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 Na stránce Zkontrolovat a vytvořit vyberte Vytvořit. Než budete pokračovat, počkejte na vytvoření služby.
Po vytvoření služby vyberte Přejít k prostředku.
Vyberte Zabezpečení připojení.
Na stránce Zabezpečení připojení nastavte Možnost Povolit přístup ke službám Azure na Ano.
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.
Vyberte Přidat aktuální IP adresu klienta, aby klientský počítač mohl přistupovat k databázi.
Uložte a počkejte na aktualizaci pravidel brány firewall.
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.
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
Připojte se ke starému databázovému serveru pomocí SSH. Jako heslo zadejte Pa55w.rdDemo .
ssh azureuser@$MYSQLIP
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
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
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';
Spuštěním následujících příkazů vytvořte databázi adventureworks .
CREATE DATABASE adventureworks;
Zavřete nástroj mysql příkazem quit .
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
Vraťte se na Azure Portal.
Klikněte na Všechny služby, klikněte na Předplatná a potom na své předplatné.
Na stránce předplatného v části Nastavení klikněte na Poskytovatelé prostředků.
Do pole Filtrovat podle názvu zadejte DataMigration a klepněte na tlačítko Microsoft.DataMigration.
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.
Vyberte Vytvořit prostředek, do pole Hledat na Marketplace zadejte Azure Database Migration Service a stiskněte Enter.
Na stránce Azure Database Migration Service vyberte Vytvořit.
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 Na stránce Sítě vyberte virtuální síť MySQLvnet/mysqlvmSubnet. Tato síť byla vytvořena jako součást instalace.
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.
Na webu Azure Portal přejděte na stránku služby Database Migration Service.
Vyberte Nový projekt migrace.
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 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 Vyberte Další: Vyberte cíl>>.
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 Vyberte Další: Vyberte databáze>>.
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.
Na stránce Konfigurovat nastavení migrace vyberte Další: Souhrn>>.
Na stránce Souhrn migrace zadejte do pole Název aktivity AdventureWorks_Migration_Activity a pak vyberte Zahájit migraci.
Na stránce AdventureWorks_Migration_Activity vyberte Aktualizovat v 15sekundových intervalech. Při pokroku se zobrazí stav operace migrace.
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
Vraťte se na stránku AdventureWorks_Migration_Activity na webu Azure Portal.
Vyberte databázi adventureworks.
Na stránce adventureworks ověřte, že je stav všech tabulek označený jako DOKONČENO.
Vyberte Přírůstkovou synchronizaci dat. Ověřte, že je stav pro každou tabulku označený jako Synchronizace.
Přepněte zpět do Cloud Shellu.
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
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);
Zavřete nástroj mysql příkazem quit.
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 .
Vyberte Spustit přímou migraci.
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.
Vraťte se do Cloud Shellu.
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
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ů.
Zavřete nástroj mysql příkazem quit.
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.
- Spuštěním tohoto příkazu v Cloud Shellu odstraňte skupinu prostředků:
az group delete --name migrate-mysql