Search code examples
azureazure-sql-databaseamazon-aurora

Migration from AWS Aurora MySQL to Azure SQL - Environment Sizing based on DTU model


I am trying to understand if there is a calculator/service that can help to understand what would be the appropriate Azure SQL DTU level for a specific AWS Aurora MySQL instance? For example, AWS Aurora MySQL db.r5.12xlarge is in use and a migration to Azure SQL is considered. How to figure out the corresponding Azure SQL sizing based on the DTU model as per https://azure.microsoft.com/en-us/pricing/details/azure-sql-database/single/ ?


Solution

  • There is a solution.

    But is for calculation between SQL Server from On-Prem to Azure SQL Database: https://dtucalc.azurewebsites.net/

    As you can see that calculation is based on a PowerShell script. When you download that you will find this code:

    logman create counter sql_perflog -c "\Processor(_Total)\% Processor Time" "\LogicalDisk(_Total)\Disk Read Bytes/sec" "\LogicalDisk(_Total)\Disk Write Bytes/sec" "\LogicalDisk(_Total)\Disk Reads/sec" "\LogicalDisk(_Total)\Disk Writes/sec" "\Database(svchost)\Log Bytes Write/sec" -si 1 -f csv
    

    which basically saves the output into a CSV under C:\PerfLogs\Admin which looks like this:

    (PDH-CSV 4.0) (W. Europe Standard Time)(-60) \LAPTOP-92LH5NLI\LogicalDisk(_Total)\Disk Read Bytes/sec \LAPTOP-92LH5NLI\LogicalDisk(_Total)\Disk Write Bytes/sec \LAPTOP-92LH5NLI\LogicalDisk(_Total)\Disk Reads/sec \LAPTOP-92LH5NLI\LogicalDisk(_Total)\Disk Writes/sec \LAPTOP-92LH5NLI\Database(svchost)\Log Bytes Write/sec
    49:18.4
    49:19.4 0 389596.7358 0 46.5463188 0
    49:20.4 0 409156.2882 0 35.60495237 0
    49:21.4 0 48832.94022 0 9.935087121 0
    49:22.4 0 82384.7737 0 19.10779663 0
    49:23.4 195282.6363 679420.8387 1.986517703 26.81798899 0
    49:24.4 0 351413.1022 0 32.68351025 0
    49:25.4 0 125563.2005 0 8.899861429 0
    49:26.4 0 148487.4233 0 20.13989574 0

    If you were using SQL Server you could use a query like this and fill up the CSV manually with this query .

    But because you are using MySQL you have to:

    1. Find a query that does the same for MySQL
    2. Output the consumption on a table for each second and export that to a CSV
    3. Upload the CSV here

    And that should be enough.

    Ideally you can also use SSMA and migrate MySQL to SQL Server and test with a real workload to SQL Server