<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Azure Database for MySQL Blog articles</title>
    <link>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/bg-p/ADforMySQL</link>
    <description>Azure Database for MySQL Blog articles</description>
    <pubDate>Sun, 19 Apr 2026 12:48:47 GMT</pubDate>
    <dc:creator>ADforMySQL</dc:creator>
    <dc:date>2026-04-19T12:48:47Z</dc:date>
    <item>
      <title>Tutorial: Building AI Agents That Talk to Your Azure Database for MySQL</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/tutorial-building-ai-agents-that-talk-to-your-azure-database-for/ba-p/4504995</link>
      <description>&lt;P&gt;What if you could ask your database a question in plain English and get the answer instantly, without writing a single line of SQL?&lt;/P&gt;
&lt;P&gt;In this tutorial, you'll build a Python-based AI agent that connects to Azure Database for MySQL server and uses OpenAI's function calling to translate natural language questions into SQL queries, execute them, and return human-readable answers. The agent can explore your schema, answer business questions, and even self-correct when it writes invalid SQL.&lt;/P&gt;
&lt;P&gt;What you'll build:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;An Azure Database for MySQL server with sample data&lt;/LI&gt;
&lt;LI&gt;A Python AI agent with three &lt;STRONG&gt;tools&lt;/STRONG&gt;: &lt;EM&gt;list_tables&lt;/EM&gt;, &lt;EM&gt;describe_table&lt;/EM&gt;, and &lt;EM&gt;run_sql_query&lt;/EM&gt;
&lt;UL&gt;
&lt;LI&gt;In the context of AI agents, &lt;STRONG&gt;tools &lt;/STRONG&gt;are functions the agent can call to interact with external systems like querying a database, fetching a file, or calling an API. Here, our agent has three tools that let it explore and query your MySQL database.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;An interactive chat interface where you ask questions and the agent auto-generates and runs SQL&lt;/LI&gt;
&lt;/OL&gt;
&lt;img /&gt;
&lt;H3&gt;&lt;STRONG&gt;Prerequisites&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Before you begin, make sure you have:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;An Azure account — &lt;A href="https://azure.microsoft.com/free" target="_blank" rel="noopener"&gt;Sign up for free&lt;/A&gt; (includes 12 months of free MySQL hosting)&lt;/LI&gt;
&lt;LI&gt;An OpenAI API key — &lt;A href="https://platform.openai.com/api-keys" target="_blank" rel="noopener"&gt;Get one here&lt;/A&gt; (you'll need a few dollars of credit)&lt;/LI&gt;
&lt;LI&gt;Python 3.10+ — &lt;A href="https://www.python.org/downloads/" target="_blank" rel="noopener"&gt;Download here&lt;/A&gt; (check "Add to PATH" during install)&lt;/LI&gt;
&lt;LI&gt;A code editor — &lt;A href="https://code.visualstudio.com/" target="_blank" rel="noopener"&gt;VS Code&lt;/A&gt; recommended&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Optional:&lt;/STRONG&gt; You can download the complete project from &lt;A class="lia-external-url" href="https://github.com/FarahAbdo/mysql-ai-agent" target="_blank" rel="noopener"&gt;this GitHub repository&lt;/A&gt;, or follow the step‑by‑step instructions below to build it from scratch.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;&lt;STRONG&gt;Step 1 — Create the Azure Database for MySQL server&lt;/STRONG&gt;&lt;/H3&gt;
&lt;OL&gt;
&lt;LI&gt;Go to the &lt;A href="https://portal.azure.com/" target="_blank" rel="noopener"&gt;Azure Portal&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Search for "Azure Database for MySQL server" and click + Create&lt;/LI&gt;
&lt;LI&gt;Configure the following settings:&lt;/LI&gt;
&lt;/OL&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Setting&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Value&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Resource group&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;EM&gt;rg-mysql-ai-agent&lt;/EM&gt; (create new)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Server name&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;EM&gt;mysql-ai-agent&lt;/EM&gt; (or any unique name)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Region&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Your nearest region&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;MySQL version&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;8.4&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Workload type&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Dev/Test (Burstable B1ms — free for 12 months)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Admin username&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;EM&gt;mysqladmin&lt;/EM&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Password&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;A strong password — save it!&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 4. ✅ Check "Add firewall rule for current IP address"&lt;/P&gt;
&lt;P&gt;⚠️ Important: If you skip the firewall settings, you won't be able to connect from Cloud Shell or your local machine.&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; 5. Click Review + create → Create and wait 3–5 minutes&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Once deployment finishes, navigate to your server and note the hostname from the Connection details:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;mysql-ai-agent.mysql.database.azure.com&lt;/STRONG&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H3&gt;&lt;STRONG&gt;Step 2 — Load Sample Data&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Open Azure Cloud Shell by clicking the &lt;STRONG&gt;&amp;gt;_&lt;/STRONG&gt; icon in the portal's top toolbar. Select Bash if prompted.&lt;/P&gt;
&lt;P&gt;Connect to your MySQL server. You can copy the exact connection command from the "Connect from browser or locally" section on your server's overview page in the Azure portal:&lt;/P&gt;
&lt;LI-CODE lang="shell"&gt;mysql -h mysql-ai-agent.mysql.database.azure.com -u mysqladmin -p&lt;/LI-CODE&gt;
&lt;P&gt;&lt;BR /&gt;Enter your password when prompted (the cursor won't move — just type and press Enter).&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Now paste the following SQL to create a sample sales database:&lt;/P&gt;
&lt;LI-CODE lang="sql"&gt;CREATE DATABASE demo_sales;
USE demo_sales;
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="sql"&gt;CREATE TABLE customers (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100),
    city VARCHAR(50),
    signup_date DATE
);

CREATE TABLE orders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    customer_id INT,
    product VARCHAR(100),
    amount DECIMAL(10,2),
    order_date DATE,
    FOREIGN KEY (customer_id) REFERENCES customers(id)
);

INSERT INTO customers (name, email, city, signup_date) VALUES
('Sara Ahmed', 'sara@example.com', 'Cairo', '2024-06-15'),
('John Smith', 'john@example.com', 'London', '2024-08-22'),
('Priya Patel', 'priya@example.com', 'Mumbai', '2025-01-10');

INSERT INTO orders (customer_id, product, amount, order_date) VALUES
(1, 'Azure Certification Voucher', 150.00, '2025-03-01'),
(2, 'MySQL Workbench Pro License', 99.00, '2025-03-10'),
(1, 'Power BI Dashboard Template', 45.00, '2025-04-05'),
(3, 'Data Analysis Course', 200.00, '2025-05-20');&lt;/LI-CODE&gt;
&lt;P&gt;Verify the data:&lt;/P&gt;
&lt;LI-CODE lang="sql"&gt;SELECT * FROM customers;
SELECT * FROM orders;&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Type &lt;EM&gt;&lt;STRONG&gt;exit&lt;/STRONG&gt;&lt;/EM&gt; to leave MySQL.&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Step 3 — Set Up the Python Project&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Open a terminal on your local machine and create the project:&lt;/P&gt;
&lt;LI-CODE lang="shell"&gt;mkdir mysql-ai-agent
cd mysql-ai-agent
python -m venv venv&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Activate the virtual environment:&lt;/P&gt;
&lt;P&gt;Windows (PowerShell):&lt;/P&gt;
&lt;LI-CODE lang="shell"&gt;venv\Scripts\Activate.ps1&lt;/LI-CODE&gt;
&lt;P&gt;macOS/Linux:&lt;/P&gt;
&lt;LI-CODE lang="shell"&gt;source venv/bin/activate&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Install the required packages:&lt;/P&gt;
&lt;LI-CODE lang="shell"&gt;pip install openai mysql-connector-python python-dotenv&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Step 4 — Configure Environment Variables&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Create a file named .env in your project folder:&lt;/P&gt;
&lt;LI-CODE lang="editorconfig"&gt;OPENAI_API_KEY=sk-proj-xxxxxxxxxxxxxxxxxxxxxxxx
MYSQL_HOST=mysql-ai-agent.mysql.database.azure.com
MYSQL_USER=mysqladmin
MYSQL_PASSWORD=YourPasswordHere
MYSQL_DATABASE=demo_sales&lt;/LI-CODE&gt;
&lt;P&gt;🔒 Security: Never commit this file to Git. Add&lt;STRONG&gt;&lt;EM&gt; .env&lt;/EM&gt;&lt;/STRONG&gt; to your &lt;EM&gt;&lt;STRONG&gt;.gitignore&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Step 5 — Build the Agent&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Open VS Code, create a new file called &lt;STRONG&gt;mysql_agent.py &lt;/STRONG&gt;in your mysql-ai-agent folder, and paste the following code. Let's walk through each section.&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;5.1 — Imports and Database Connection&lt;/STRONG&gt;&lt;/H4&gt;
&lt;LI-CODE lang="python"&gt;import os
import json
import mysql.connector
from openai import OpenAI
from dotenv import load_dotenv

load_dotenv()

def get_db_connection():
    return mysql.connector.connect(
        host=os.getenv("MYSQL_HOST"),
        user=os.getenv("MYSQL_USER"),
        password=os.getenv("MYSQL_PASSWORD"),
        database=os.getenv("MYSQL_DATABASE"),
        ssl_disabled=False
    )&lt;/LI-CODE&gt;
&lt;P&gt;This loads your secrets from &lt;EM&gt;&lt;STRONG&gt;.env &lt;/STRONG&gt;&lt;/EM&gt;and creates a reusable MySQL connection function with SSL encryption.&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;5.2 — Define the Three Tools&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;These are the functions the AI agent can call:&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;def list_tables():
    conn = get_db_connection()
    cursor = conn.cursor()
    cursor.execute("SHOW TABLES")
    tables = [row[0] for row in cursor.fetchall()]

    cursor.close()
    conn.close()

    return json.dumps({"tables": tables})


def describe_table(table_name):
    conn = get_db_connection()
    cursor = conn.cursor()
    cursor.execute(f"DESCRIBE `{table_name}`")
    columns = []

    for row in cursor.fetchall():
        columns.append({
            "field": row[0],
            "type": row[1],
            "null": row[2],
            "key": row[3]
        })

    cursor.close()
    conn.close()

    return json.dumps({"table": table_name, "columns": columns})


def run_sql_query(query):
    if not query.strip().upper().startswith("SELECT"):
        return json.dumps({"error": "Only SELECT queries are allowed."})

    conn = get_db_connection()
    cursor = conn.cursor()

    try:
        cursor.execute(query)
        columns = [desc[0] for desc in cursor.description]
        rows = cursor.fetchall()
        results = []

        for row in rows:
            results.append(dict(zip(columns, row)))
        return json.dumps({"columns": columns, "rows": results}, default=str)
    except mysql.connector.Error as e:
        return json.dumps({"error": str(e)})
    finally:
        cursor.close()
        conn.close()&lt;/LI-CODE&gt;
&lt;P&gt;A few things to note:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;run_sql_query&lt;/STRONG&gt; only allows SELECT statements — this is a safety guardrail that prevents the AI from modifying data&lt;/LI&gt;
&lt;LI&gt;The &lt;STRONG&gt;try/except &lt;/STRONG&gt;block is critical — if the AI generates invalid SQL (e.g., a bad &lt;STRONG&gt;GROUP BY&lt;/STRONG&gt;), the error message is returned to OpenAI, and the model automatically corrects its query and retries. Without this, the script would crash.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;&lt;STRONG&gt;5.3 — Register Tools with OpenAI&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;This tells OpenAI what tools the agent has access to:&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;tools = [
    {
        "type": "function",
        "function": {
            "name": "list_tables",
            "description": "List all tables in the connected MySQL database.",
            "parameters": {"type": "object", "properties": {}, "required": []}
        }
    },
    {
        "type": "function",
        "function": {
            "name": "describe_table",
            "description": "Get the schema (columns and types) of a specific table.",
            "parameters": {
                "type": "object",
                "properties": {
                    "table_name": {"type": "string", "description": "Name of the table to describe"}
                },
                "required": ["table_name"]
            }
        }
    },
    {
        "type": "function",
        "function": {
            "name": "run_sql_query",
            "description": "Execute a read-only SQL SELECT query and return results.",
            "parameters": {
                "type": "object",
                "properties": {
                    "query": {"type": "string", "description": "The SQL SELECT query to execute"}
                },
                "required": ["query"]
            }
        }
    }
]


def call_tool(name, args):
    if name == "list_tables":
        return list_tables()
    elif name == "describe_table":
        return describe_table(args["table_name"])
    elif name == "run_sql_query":
        return run_sql_query(args["query"])
    else:
        return json.dumps({"error": f"Unknown tool: {name}"})&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;5.4 — The Agent Loop&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;This is the core logic. It sends the user's message to OpenAI, processes any tool calls, and loops until the model produces a final text response:&lt;/P&gt;
&lt;LI-CODE lang="python"&gt;def chat(user_message, conversation_history):
    client = OpenAI()
    conversation_history.append({"role": "user", "content": user_message})
    print(f"\n{'='*60}")
    print(f"🧑 You: {user_message}")
    print(f"{'='*60}")

    while True:
        response = client.chat.completions.create(
            model="gpt-4o-mini",
            messages=conversation_history,
            tools=tools,
            tool_choice="auto"
        )

        assistant_message = response.choices[0].message
        if assistant_message.tool_calls:
            conversation_history.append(assistant_message)
            for tool_call in assistant_message.tool_calls:
                fn_name = tool_call.function.name
                fn_args = json.loads(tool_call.function.arguments)
                print(f"  🔧 Calling tool: {fn_name}({json.dumps(fn_args)})")
                result = call_tool(fn_name, fn_args)
                print(f"  ✅ Tool returned: {result[:200]}...")

                conversation_history.append({
                    "role": "tool",
                    "tool_call_id": tool_call.id,
                    "content": result
                })
        else:
            final_answer = assistant_message.content
            conversation_history.append({"role": "assistant", "content": final_answer})
            print(f"\n🤖 Agent:\n{final_answer}")
            return conversation_history&lt;/LI-CODE&gt;
&lt;P&gt;The &lt;STRONG&gt;while True&lt;/STRONG&gt; loop is what makes self-correction possible. When a tool returns an error, the model sees it in the conversation and generates a corrected tool call in the next iteration.&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;5.5 — Main Entry Point&lt;/STRONG&gt;&lt;/H4&gt;
&lt;LI-CODE lang="python"&gt;if __name__ == "__main__":
    print("\n" + "=" * 60)
    print("  🤖 MySQL AI Agent")
    print("  Powered by OpenAI + Azure Database for MySQL")
    print("  Type 'quit' to exit")
    print("=" * 60)

    system_message = {
        "role": "system",
        "content": (
            "You are a helpful data analyst agent connected to an Azure Database for MySQL. "
            "You have 3 tools: list_tables, describe_table, and run_sql_query. "
            "ALWAYS start by listing tables and describing their schema before writing queries. "
            "Only generate SELECT statements. Never write INSERT, UPDATE, DELETE, or DROP. "
            "Present query results in clean, readable tables. "
            "If the user asks a question, figure out the right SQL to answer it."
        )
    }
    conversation_history = [system_message]
    while True:
        user_input = input("\n🧑 You: ").strip()
        if user_input.lower() in ("quit", "exit", "q"):
            print("\n👋 Goodbye!")
            break

        if not user_input:
            continue

        conversation_history = chat(user_input, conversation_history)&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Your final project folder should look like this:&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Step 6 — Run and Test the Agent&lt;/STRONG&gt;&lt;/H3&gt;
&lt;LI-CODE lang="shell"&gt;python mysql_agent.py&lt;/LI-CODE&gt;&lt;img /&gt;
&lt;H4&gt;&lt;STRONG&gt;Test:&amp;nbsp;&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;Prompt: Which product generated the most revenue and who bought it?&lt;/STRONG&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;H4&gt;&lt;STRONG&gt;How Self-Correction Works&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;One of the most powerful aspects of this agent is its ability to recover from SQL errors automatically. Azure Database for MySQL has &lt;EM&gt;&lt;STRONG&gt;sql_mode=only_full_group_by &lt;/STRONG&gt;&lt;/EM&gt;enabled by default, which rejects queries where non-aggregated columns aren't in the GROUP BY clause.&lt;/P&gt;
&lt;P&gt;When the AI generates an invalid query, here's what happens:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;The &lt;STRONG&gt;run_sql_query&lt;/STRONG&gt; function catches the MySQL error&lt;/LI&gt;
&lt;LI&gt;It returns the error message as the tool result&lt;/LI&gt;
&lt;LI&gt;OpenAI sees the error in the conversation context&lt;/LI&gt;
&lt;LI&gt;The model generates a corrected query automatically&lt;/LI&gt;
&lt;LI&gt;The agent retries — and succeeds&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Without the &lt;STRONG&gt;try/except&lt;/STRONG&gt; error handling, the entire script would crash. This is a key design pattern for production AI agents.&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Security Best Practices&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;When building AI agents that interact with databases, security is critical:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Read-only enforcement — The &lt;STRONG&gt;run_sql_query&lt;/STRONG&gt; function rejects anything that isn't a &lt;STRONG&gt;SELECT &lt;/STRONG&gt;statement&lt;/LI&gt;
&lt;LI&gt;SSL encryption — All connections use &lt;STRONG&gt;ssl_disabled=False&lt;/STRONG&gt;, ensuring data in transit is encrypted&lt;/LI&gt;
&lt;LI&gt;Environment variables — Credentials are stored in &lt;STRONG&gt;.env&lt;/STRONG&gt;, never hardcoded&lt;/LI&gt;
&lt;LI&gt;Principle of least privilege — For production, create a dedicated MySQL user with &lt;STRONG&gt;SELECT&lt;/STRONG&gt;-only permissions:&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI-CODE lang="sql"&gt;CREATE USER 'ai_agent'@'%' IDENTIFIED BY 'AgentPass123!';
GRANT SELECT ON demo_sales.* TO 'ai_agent'@'%';
FLUSH PRIVILEGES;&lt;/LI-CODE&gt;
&lt;UL&gt;
&lt;LI&gt;Network isolation — For production workloads, consider using Azure Private Link instead of public access.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;&lt;STRONG&gt;Conclusion&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;In this tutorial, you built a Python AI agent that connects to Azure Database for MySQL and answers natural language questions by auto-generating SQL - complete with self-correction and security guardrails. Clone the&amp;nbsp;&lt;A class="lia-external-url" href="https://github.com/FarahAbdo/mysql-ai-agent" target="_blank" rel="noopener"&gt;GitHub repo&lt;/A&gt;, spin up your own server, and start experimenting!&lt;/P&gt;
&lt;P&gt;If you'd like to connect to Azure Database for MySQL using the Model Context Protocol (MCP), see &lt;A href="https://techcommunity.microsoft.com/blog/adformysql/unlocking-ai-driven-data-access-azure-database-for-mysql-support-via-the-azure-m/4454623" target="_blank" rel="noopener"&gt;Unlocking AI-Driven Data Access: Azure Database for MySQL Support via the Azure MCP Server&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;If you have any feedback or questions about the information provided above, please leave a comment below.&amp;nbsp;Thank you!&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 15 Apr 2026 13:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/tutorial-building-ai-agents-that-talk-to-your-azure-database-for/ba-p/4504995</guid>
      <dc:creator>FarahAbdou</dc:creator>
      <dc:date>2026-04-15T13:00:00Z</dc:date>
    </item>
    <item>
      <title>Announcing Fabric Mirroring integration for Azure Database for MySQL - Public Preview at FabCon 2026</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/announcing-fabric-mirroring-integration-for-azure-database-for/ba-p/4501966</link>
      <description>&lt;P&gt;At &lt;A class="lia-external-url" href="https://fabriccon.com/" target="_blank" rel="noopener"&gt;FabCon 2026&lt;/A&gt;, we’re excited to announce the Public Preview of Microsoft Fabric Mirroring integration for Azure Database for MySQL. This integration makes it easier than ever to analyze MySQL operational data using Fabric’s unified analytics platform, without building or maintaining ETL pipelines.&lt;/P&gt;
&lt;P&gt;This milestone brings near real-time data replication from Azure Database for MySQL into Microsoft Fabric OneLake, unlocking powerful analytics, reporting, and AI scenarios while keeping transactional workloads isolated and performant.&lt;/P&gt;
&lt;H3&gt;Why Fabric integration for Azure Database for MySQL?&lt;/H3&gt;
&lt;P&gt;MySQL is widely used to power business‑critical applications, but operational databases aren’t optimized for analytics. Traditionally, teams rely on complex ETL pipelines, custom connectors, or batch exports — adding cost, latency, and operational overhead. With Fabric integration, Azure Database for MySQL now connects directly to Microsoft Fabric, enabling:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;Zero‑ETL analytics on MySQL operational data&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;Near real-time synchronization into OneLake&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;Analytics‑ready open formats for BI, data engineering, and AI&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;A unified experience across Power BI, Lakehouse, Warehousing, and notebooks&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;All without impacting your production workloads.&lt;/P&gt;
&lt;H3&gt;What’s new in the Public Preview?&lt;/H3&gt;
&lt;P&gt;The Public Preview introduces a first‑class integration between Azure Database for MySQL and Microsoft Fabric, designed for simplicity and scale. It introduces a solid set of core operational and enterprise‑readiness capabilities, enabling end-users to confidently get started and scale their analytics scenarios.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Core replication operations
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;Start, monitor, and stop replication directly from the integrated experience&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;Support for both initial data load and continuous change data capture (CDC) to keep data in sync with minimal latency.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Network and security
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;Firewall and gateway support, enabling replication from secured MySQL environments.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;Support for Azure Database for MySQL servers configured with customer‑managed keys (BYOK), aligning with enterprise security and compliance requirements.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI&gt;Broader data coverage and troubleshooting
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;Ability to mirror tables containing previously unsupported data types, expanding schema compatibility and reducing onboarding friction.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;Support for up to 1,000 tables per server, enabling larger and more complex databases to participate in Fabric analytics.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;Basic error messaging and visibility to help identify replication issues and monitor progress during setup and ongoing operations.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;H3&gt;What scenarios does it unlock?&lt;/H3&gt;
&lt;P&gt;With Fabric integration in place, you can now analyze data in Azure Database for MySQL without impacting production, combine it with other data in Fabric for richer reporting, and use Fabric’s built‑in analytics and AI tools to get insights faster. Learn more about exploring replicated data in Fabric in &lt;A href="https://learn.microsoft.com/en-us/fabric/mirroring/explore" target="_blank" rel="noopener" data-tabster="{&amp;quot;restorer&amp;quot;:{&amp;quot;type&amp;quot;:1}}"&gt;Explore data in your mirrored database using Microsoft Fabric&lt;/A&gt;.&lt;/P&gt;
&lt;H3&gt;How does it work (high level)?&lt;/H3&gt;
&lt;P&gt;Fabric integration for Azure Database for MySQL follows a simple but powerful pattern:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Enable and Configure&lt;/STRONG&gt; - Enable replication in the Azure portal, then use the Fabric portal to provide connection details and select MySQL tables to mirror.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Initial snapshot&lt;/STRONG&gt; -&amp;nbsp;Fabric takes a bulk snapshot of the selected tables, converts the data to Parquet, and writes it to a Fabric landing zone.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Continuous change capture&lt;/STRONG&gt; - Ongoing inserts, updates, and deletes are captured from MySQL binlogs and continuously written as incremental Parquet files.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Analytics‑ready in Fabric&lt;/STRONG&gt; - The Fabric Replicator processes snapshot and change files and applies them to Delta tables in OneLake, keeping data in sync and ready for analytics.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This design ensures low overhead on the source, while providing fresh data for analytics and AI workloads.&lt;/P&gt;
&lt;P&gt;Below is a more detailed workflow illustrating how this works:&lt;/P&gt;
&lt;img /&gt;
&lt;H3&gt;Getting started with the Public Preview&lt;/H3&gt;
&lt;P&gt;To try Fabric integration for Azure Database for MySQL during Public Preview, you’ll need:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;An Azure Database for MySQL instance&lt;/LI&gt;
&lt;LI&gt;An active Microsoft Fabric capacity (trial or paid)&lt;/LI&gt;
&lt;LI&gt;Access to a Fabric workspace&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Once enabled, you can select the MySQL databases and tables you want to replicate and begin analyzing data in Fabric. For step-by-step tutorial, please refer to -&amp;nbsp;&lt;SPAN data-teams="true"&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/mysql/integration/fabric-mirroring-mysql" target="_blank" rel="noopener" aria-label="Link https://learn.microsoft.com/en-us/azure/mysql/integration/fabric-mirroring-mysql"&gt;https://learn.microsoft.com/azure/mysql/integration/fabric-mirroring-mysql&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-teams="true"&gt;The demo video below showcases how the mirroring integration works and walks through the end-to-end experience of mirroring MySQL data into Microsoft Fabric.&lt;/SPAN&gt;&lt;/P&gt;
&lt;div data-video-id="https://youtu.be/Hd8stYLboew/1775104962417" data-video-remote-vid="https://youtu.be/Hd8stYLboew/1775104962417" class="lia-video-container lia-media-is-center lia-media-size-large"&gt;&lt;iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FHd8stYLboew%3Ffeature%3Doembed&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DHd8stYLboew&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FHd8stYLboew%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" allowfullscreen="" style="max-width: 100%"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;H3&gt;Stay Connected&lt;/H3&gt;
&lt;P&gt;We’re thrilled to share this milestone at &lt;A class="lia-external-url" href="https://fabriccon.com/" target="_blank" rel="noopener"&gt;FabCon 2026&lt;/A&gt; and can’t wait to see how you use Fabric integration for Azure Database for MySQL to simplify analytics and unlock new insights. We welcome your feedback and invite you to share your experiences or suggestions at&amp;nbsp;&lt;A href="mailto:AskAzureDBforMySQL@service.microsoft.com" target="_blank" rel="noopener"&gt;AskAzureDBforMySQL@service.microsoft.com&lt;/A&gt; &amp;nbsp;&lt;/P&gt;
&lt;P&gt;Try the Public Preview, share your feedback, and help shape what’s next. Thank you for choosing Azure Database for MySQL!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 02 Apr 2026 04:43:02 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/announcing-fabric-mirroring-integration-for-azure-database-for/ba-p/4501966</guid>
      <dc:creator>Vandhana_Mehta</dc:creator>
      <dc:date>2026-04-02T04:43:02Z</dc:date>
    </item>
    <item>
      <title>February 2026 Recap: Azure Database for MySQL</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/february-2026-recap-azure-database-for-mysql/ba-p/4501191</link>
      <description>&lt;P&gt;We're excited to share a summary of the &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-in/azure/mysql/" target="_blank"&gt;Azure Database for MySQL&lt;/A&gt; updates from the last couple of months.&lt;/P&gt;
&lt;H4&gt;Extended Support Timeline Update&lt;/H4&gt;
&lt;P&gt;Based on customer feedback requesting additional time to complete major version upgrades, we have extended the grace period before &lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/adformysql/announcing-extended-support-for-azure-database-for-mysql/4442924" data-lia-auto-title="extended support" data-lia-auto-title-active="0" target="_blank"&gt;extended support&lt;/A&gt; billing begins for Azure Database for MySQL:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;MySQL 5.7&lt;/STRONG&gt;: Extended support billing start date moved from &lt;STRONG&gt;April 1, 2026&lt;/STRONG&gt; to &lt;STRONG&gt;August 1, 2026&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;MySQL 8.0&lt;/STRONG&gt;: Extended support billing start date moved from &lt;STRONG&gt;June 1, 2026&lt;/STRONG&gt; to &lt;STRONG&gt;January 1, 2027&lt;/STRONG&gt;.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;This update provides customers additional time to plan, validate, and complete upgrades while maintaining service continuity and security. We continue to recommend upgrading to a supported MySQL version as early as possible to avoid extended support charges and benefit from the latest improvements. &lt;A href="https://techcommunity.microsoft.com/blog/adformysql/guide-to-upgrade-azure-database-for-mysql-from-8-0-to-8-4/4493669" target="_blank"&gt;Learn more&lt;/A&gt; about performing a major version upgrade in Azure Database for MySQL.&lt;/P&gt;
&lt;P&gt;When upgrading using a read replica, you can optionally use the Rename Server feature to promote the replica and avoid application connection‑string updates after the upgrade completes. Rename Server is currently in Private Preview and is expected to enter Public Preview around the April 2026 timeframe.&lt;/P&gt;
&lt;H4&gt;Private Preview - Fabric Mirroring for Azure Database for MySQL&lt;/H4&gt;
&lt;P&gt;This capability enables real‑time replication of MySQL data into Microsoft Fabric with a zero‑ETL experience, allowing data to land directly in OneLake in analytics‑ready formats. Customers can seamlessly analyse mirrored data using Microsoft Fabric experiences, while isolating analytical workloads from their operational MySQL databases.&amp;nbsp;&lt;/P&gt;
&lt;H5&gt;&lt;STRONG&gt;Stay Connected&lt;/STRONG&gt;&lt;/H5&gt;
&lt;P&gt;We welcome your feedback and invite you to share your experiences or suggestions at&amp;nbsp;&lt;A href="mailto:AskAzureDBforMySQL@service.microsoft.com" target="_blank"&gt;AskAzureDBforMySQL@service.microsoft.com&lt;/A&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Stay up to date by visiting&amp;nbsp;&lt;A href="https://learn.microsoft.com/azure/mysql/flexible-server/whats-new" target="_blank"&gt;What's new in Azure Database for MySQL&lt;/A&gt;, and follow us on&amp;nbsp;&lt;A href="https://aka.ms/mysql-yt-subscribe" target="_blank"&gt;YouTube&lt;/A&gt; | &lt;A href="https://www.linkedin.com/company/azure-database-for-mysql/" target="_blank"&gt;LinkedIn&lt;/A&gt; | &lt;A href="https://twitter.com/AzureDBMySQL" target="_blank"&gt;X&lt;/A&gt;&amp;nbsp;for ongoing updates.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you for choosing Azure Database for MySQL!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Mar 2026 13:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/february-2026-recap-azure-database-for-mysql/ba-p/4501191</guid>
      <dc:creator>SaurabhKirtani</dc:creator>
      <dc:date>2026-03-11T13:00:00Z</dc:date>
    </item>
    <item>
      <title>Guide to Upgrade Azure Database for MySQL from 8.0 to 8.4</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/guide-to-upgrade-azure-database-for-mysql-from-8-0-to-8-4/ba-p/4493669</link>
      <description>&lt;P&gt;This guide merges Azure official documentation and best practices from real-world upgrades. Always refer to the latest Azure documentation and portal/CLI for any updates or discrepancies.&lt;/P&gt;
&lt;H2&gt;1. Background&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Why Upgrade?&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;MySQL 5.7 reached end of community support in October 2023, and will enter extended support in August 2026.&lt;/LI&gt;
&lt;LI&gt;MySQL 8.0 will reach end of community support in April 2026 and will enter extended support in January 2027.&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN data-olk-copy-source="MessageBody"&gt;MySQL 8.4 is the first official LTS (Long Term Support) version, officially supported by Oracle until April 2032.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;Upgrading ensures security, performance, and continued support.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Supported Upgrade Paths:&lt;/STRONG&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;5.7 → 8.0 (must be completed first)&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;8.0 → 8.4&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;Direct 5.7 → 8.4 is NOT supported.&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;Downgrades are NOT supported.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Key Notes:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Irreversible:&lt;/STRONG&gt; Major version upgrades are irreversible and cannot be rolled back directly.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Downtime:&lt;/STRONG&gt; The server is offline during the upgrade. Downtime depends on database size and table count.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;HA Limitation:&lt;/STRONG&gt; High Availability (HA) servers cannot achieve near-zero downtime during major upgrades due to cross-version replication instability.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Performance:&lt;/STRONG&gt; Some workloads may not see performance improvements after upgrade.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;2. Key Changes&lt;/H2&gt;
&lt;H3&gt;Authentication Plugin Changes&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;mysql_native_password is disabled by default in the MySQL 8.4 community version. However, it is enabled by default in Azure MySQL 8.4. Older client versions may not be able to connect using mysql_native_password. If you encounter this issue, upgrade your client version first.&lt;/LI&gt;
&lt;LI&gt;The default_authentication_plugin variable should be removed.&lt;/LI&gt;
&lt;LI&gt;All users should be migrated to the caching_sha2_password plugin.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Foreign Key Constraint Enforcement&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;Before the upgrade, referenced columns must have a unique key; check all foreign key constraints before upgrade.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Removed Features&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;FLUSH HOSTS command → use TRUNCATE TABLE performance_schema.host_cache&lt;/LI&gt;
&lt;LI&gt;PASSWORD() function → use ALTER USER&lt;/LI&gt;
&lt;LI&gt;tx_isolation option → use transaction_isolation&lt;/LI&gt;
&lt;LI&gt;expire_logs_days → use binlog_expire_logs_seconds&lt;/LI&gt;
&lt;LI&gt;AUTO_INCREMENT is no longer allowed on FLOAT/DOUBLE columns&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;New Reserved Keywords&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;MANUAL, PARALLEL, QUALIFY, TABLESAMPLE — do not use these as unquoted identifiers&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Terminology Changes&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;MASTER/SLAVE terminology updated to SOURCE/REPLICA&lt;/LI&gt;
&lt;LI&gt;Update all scripts and applications using old the terms&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;InnoDB 8.0 → 8.4 Default Parameter Changes&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;innodb_adaptive_hash_index: ON → OFF&lt;/LI&gt;
&lt;LI&gt;innodb_change_buffering: All → None&lt;/LI&gt;
&lt;LI&gt;innodb_buffer_pool_in_core_file: ON → OFF&lt;/LI&gt;
&lt;LI&gt;innodb_io_capacity: 200 → 10000&lt;/LI&gt;
&lt;LI&gt;innodb_log_buffer_size: 16MB → 64MB&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;3. Upgrade Prerequisites&lt;/H2&gt;
&lt;H3&gt;Basic Requirements&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Item&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Requirement&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Deployment Type&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Azure Database for MySQL Flexible Server instance only&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Region&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Region must support MySQL 8.4 in Azure Portal&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Current Version&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Must be 8.0.x (check via SELECT VERSION(); or Portal)&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Server Status&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Server must be running, with no ongoing scaling/restart/updates&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H3&gt;Read Replica Version&lt;/H3&gt;
&lt;P&gt;If read replicas exist, upgrade them before upgrading the primary server. Cross-version replication is not guaranteed to be stable. Follow official documentation for handling replicas (stop replication and upgrade separately, or delete and recreate after upgrade).&lt;/P&gt;
&lt;H3&gt;Create On-Demand Backup&lt;/H3&gt;
&lt;P&gt;Before upgrading production, create an on-demand backup for rollback if needed: - Azure Portal &amp;gt; Your MySQL Server &amp;gt; Backup &amp;amp; Restore &amp;gt; Backup Now - Backups created before upgrade restore to the old version; backups after upgrade restore to the new version.&lt;/P&gt;
&lt;H3&gt;XA Transactions&lt;/H3&gt;
&lt;P&gt;Ensure no active or pending XA transactions:&lt;/P&gt;
&lt;LI-CODE lang=""&gt;XA RECOVER;&lt;/LI-CODE&gt;
&lt;P&gt;If any results are returned, roll back these transactions:&lt;/P&gt;
&lt;LI-CODE lang="sql"&gt;XA ROLLBACK 'xid';&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;SQL Mode&lt;/H3&gt;
&lt;P&gt;Remove deprecated sql_mode values before upgrade.&lt;/P&gt;
&lt;P&gt;Deprecated: NO_AUTO_CREATE_USER, NO_FIELD_OPTIONS, NO_KEY_OPTIONS, NO_TABLE_OPTIONS - Check current SQL mode:&lt;/P&gt;
&lt;LI-CODE lang="sql"&gt;SELECT @@sql_mode;&lt;/LI-CODE&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;In Azure Portal: Go to Server Parameters &amp;gt; Search “sql_mode” &amp;gt; Remove deprecated values &amp;gt; Save&lt;/P&gt;
&lt;H2&gt;4. Pre-Upgrade Checks&lt;/H2&gt;
&lt;H3&gt;Use Upgrade Check Tool (&lt;A class="lia-external-url" href="https://dev.mysql.com/doc/mysql-shell/8.4/en/mysql-shell-utilities-upgrade.html" target="_blank" rel="noopener"&gt;MySQL Shell&lt;/A&gt;)&lt;/H3&gt;
&lt;H4&gt;Check Items&lt;/H4&gt;
&lt;P&gt;The tool performs 40+ automated checks, mainly including:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table class="lia-border-style-solid" border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Check Category&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Description&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Deprecated Time Types&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Checks for old-format time columns&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Reserved Keyword Conflicts&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Checks for conflicts with reserved keywords in the new version&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;UTF8MB3 Charset&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Checks for objects needing migration to UTF8MB4&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Removed System Variables&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Checks for configuration items no longer supported&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Authentication Plugin Change&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Checks for users needing updated authentication methods&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Partition Table Restrictions&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Checks for partition compatibility&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Foreign Key Names&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Checks for foreign key name conflicts&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 50.00%" /&gt;&lt;col style="width: 50.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;Oracle provides util.checkForServerUpgrade() to detect compatibility issues.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Install MySQL Shell 8.4 or higher.&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Connect to Azure MySQL server:&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI-CODE lang="shell"&gt;mysqlsh --host=&amp;lt;your-server&amp;gt;.mysql.database.azure.com \
  --user=&amp;lt;admin-user&amp;gt; \
  --password \
  --ssl-mode=REQUIRED&lt;/LI-CODE&gt;
&lt;UL&gt;
&lt;LI&gt;Run upgrade check:&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI-CODE lang="shell"&gt;util.checkForServerUpgrade()
util.checkForServerUpgrade({"targetVersion": "8.4.0"})&lt;/LI-CODE&gt;
&lt;UL&gt;
&lt;LI&gt;Command-line (recommended):&lt;/LI&gt;
&lt;/UL&gt;
&lt;LI-CODE lang="sql"&gt;mysqlsh &amp;lt;admin-user&amp;gt;@&amp;lt;your-server&amp;gt;.mysql.database.azure.com:3306 \
  --ssl-mode=REQUIRED \
  -- util checkForServerUpgrade \
  --target-version=8.4.0 \
  --output-format=JSON&lt;/LI-CODE&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;Required privileges: RELOAD, PROCESS, SELECT.&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;The tool performs 40+ checks (deprecated types, reserved keywords, charset, removed variables, auth plugins, partitioning, FK constraints, etc.).&lt;/P&gt;
&lt;H4&gt;Review Results&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Errors:&lt;/STRONG&gt; Must be fixed before upgrade&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Warnings:&lt;/STRONG&gt; Strongly recommended to fix&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Notices:&lt;/STRONG&gt; Informational&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Additional Compatibility and Validation Checks&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Client Library Compatibility:&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;Some client libraries may be incompatible with MySQL 8.0+ due to outdated drivers. Collect and review all client driver versions and test compatibility in a staging environment before upgrade.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Authentication Changes&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;After upgrade, applications may fail to connect if not compatible with new authentication plugins. MySQL 8.0 defaults to caching_sha2_password, and MySQL 8.4 disables mysql_native_password by default.&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;Solution&lt;STRONG&gt;:&lt;/STRONG&gt; Upgrade client drivers to versions supporting the new authentication method. If legacy drivers must be used, temporarily set user authentication to mysql_native_password and plan to upgrade drivers as soon as possible.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Charset and Collation Changes:&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;MySQL 8.0 defaults to utf8mb4 charset and utf8mb4_0900_ai_ci collation, which may cause changes in string comparison, index length limits, sort order, or JOIN-related errors due to charset mismatches.&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;Recommendations:&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="list-style-type: none;"&gt;
&lt;UL&gt;
&lt;LI&gt;Check if ORM and drivers support utf8mb4.&lt;/LI&gt;
&lt;LI&gt;Adjust index lengths (utf8mb4 uses up to 4 bytes per character).&lt;/LI&gt;
&lt;LI&gt;Specify COLLATE explicitly if you need to preserve original sort behavior.&lt;/LI&gt;
&lt;LI&gt;Standardize charset and collation settings for all tables and columns.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Object Statistics:&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;Review table and object statistics to estimate upgrade and rollback time.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Performance Considerations:&lt;/STRONG&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;Most SQL workloads benefit from upgrades, but some queries may experience degraded performance (e.g., queries with ORDER BY, complex JOINs, subqueries, or many bound parameters). The optimizer evolves between versions (e.g., max_length_for_sort_data was deprecated in 8.0.20, execution plan changes, etc.).&lt;/P&gt;
&lt;P class="lia-indent-padding-left-30px"&gt;Recommendations:&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="list-style-type: none;"&gt;
&lt;UL&gt;
&lt;LI&gt;Use standard SQL tuning methods: review execution plans, optimize queries, and add indexes as needed.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3&gt;Test in Staging&lt;/H3&gt;
&lt;P&gt;💡 &lt;STRONG&gt;Strong Recommendation:&lt;/STRONG&gt; First perform the upgrade in a staging environment (such as a restored backup copy of the original server) and validate the following:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Whether the upgrade process completes successfully&lt;/LI&gt;
&lt;LI&gt;Estimated downtime&lt;/LI&gt;
&lt;LI&gt;Application compatibility&lt;/LI&gt;
&lt;LI&gt;Performance baseline comparison&lt;/LI&gt;
&lt;/OL&gt;
&lt;H2&gt;5. Upgrade Methods &amp;amp; Scenarios&lt;/H2&gt;
&lt;H3&gt;Upgrade Method Comparison&lt;/H3&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Method&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Pros&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Cons&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;&lt;STRONG&gt;Recommended For&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;In-Place Upgrade&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Simple, no connection string change, no extra cost&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Longer downtime, can be hours or even days, rollback only via backup&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Dev/test, small prod, downtime allowed&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
&lt;P&gt;Replica Based Upgrade&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Low risk, fast rollback, minimal downtime&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Extra cost, more steps, connection string change&lt;/P&gt;
&lt;/td&gt;&lt;td&gt;
&lt;P&gt;Production, downtime sensitive&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;col style="width: 25.00%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;H3&gt;Method 1: In-Place Upgrade, Azure Portal (In-Place Upgrade, Recommended)&lt;/H3&gt;
&lt;P&gt;For General Purpose and &lt;SPAN data-olk-copy-source="MessageBody"&gt;Memory Optimized&lt;/SPAN&gt;&amp;nbsp;SKUs:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Sign in to Azure Portal&lt;/LI&gt;
&lt;LI&gt;Navigate to your MySQL Flexible Server&lt;/LI&gt;
&lt;LI&gt;Select&amp;nbsp;&lt;STRONG&gt;Overview&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Find&amp;nbsp;&lt;STRONG&gt;MySQL Version&lt;/STRONG&gt; and click &lt;STRONG&gt;Upgrade&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Select target version 8.4&lt;/LI&gt;
&lt;LI&gt;Review pre-upgrade validation&lt;/LI&gt;
&lt;LI&gt;Confirm and start upgrade&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;For Burstable SKU: May require temporary SKU change to General Purpose before upgrade, then revert after.&lt;/P&gt;
&lt;H3&gt;Method 2: Azure CLI (In-Place Upgrade)&lt;/H3&gt;
&lt;LI-CODE lang="powershell"&gt;az cloud set --name AzureCloud
az login
az mysql flexible-server upgrade \
  --name &amp;lt;your-server-name&amp;gt; \
  --resource-group &amp;lt;your-resource-group&amp;gt; \
  --version 8.4&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;Method 3: Minimal Downtime (Read Replica)&lt;/H3&gt;
&lt;P&gt;For production environments sensitive to downtime:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Create read replica (Portal &amp;gt; Replication &amp;gt; Add Replica)&lt;/LI&gt;
&lt;LI&gt;Wait for replica sync (check SHOW REPLICA STATUS\G, ensure Seconds_Behind_Master = 0)&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Upgrade replica to 8.4 (Portal or CLI)&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Validate replica upgrade (SELECT VERSION();)&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Promote replica to primary (Portal &amp;gt; Replication &amp;gt; Stop Replication)&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Update application connection strings to new primary&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;(Optional) Delete old primary&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;This approach is an architecture migration + failover, not the same as in-place upgrade. Cross-version replication stability is not guaranteed. Fully test in staging and communicate risks to stakeholders.&lt;/P&gt;
&lt;H2&gt;6. Post-Upgrade Validation&lt;/H2&gt;
&lt;OL&gt;
&lt;LI&gt;Check MySQL version:&lt;/LI&gt;
&lt;/OL&gt;
&lt;LI-CODE lang="sql"&gt;SELECT VERSION();&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL start="2"&gt;
&lt;LI&gt;Check database and table status:&lt;/LI&gt;
&lt;/OL&gt;
&lt;LI-CODE lang="sql"&gt;SHOW DATABASES;
USE your_database;
SHOW TABLE STATUS;
CHECK TABLE your_table;&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL start="3"&gt;
&lt;LI&gt;Validate application connectivity and key business functions&lt;/LI&gt;
&lt;LI&gt;Monitor metrics for 24-48 hours: CPU, memory, I/O, query latency, error logs&lt;/LI&gt;
&lt;/OL&gt;
&lt;H2&gt;7. Rollback Strategy&lt;/H2&gt;
&lt;P&gt;Major version upgrades are irreversible. Rollback requires restoring from backup:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Azure Portal &amp;gt; MySQL Server &amp;gt; Backup &amp;amp; Restore &amp;gt; Select pre-upgrade backup &amp;gt; Restore&lt;/LI&gt;
&lt;LI&gt;Specify new server name&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Wait for restore to complete&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Update application connection strings to restored server&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;💡 The restored server is a new, independent server. The original server remains.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Business Rollback Advice:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=""&gt;- Confirm data loss/replay strategy for changes between upgrade and rollback &lt;BR /&gt;- Assess impact on dependent systems (reports, ETL, etc.)&lt;BR /&gt;&lt;SPAN style="color: rgb(30, 30, 30);"&gt;- After rollback, point applications to old server, clean up new objects, and re-validate key functions&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2&gt;8. FAQs&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Q1: Can I upgrade directly from MySQL 5.7 to 8.4?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;No. Upgrade must be sequential: 5.7 → 8.0 → 8.4&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Q2: How long does the upgrade take?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Downtime depends on database size, storage, and table count. Test in staging to estimate.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Q3: Can HA servers achieve zero downtime?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;No. Major upgrades cannot use HA for near-zero downtime due to cross-version replication instability.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Q4: Will performance improve after upgrade?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Not guaranteed. Some workloads may see no change or slight decrease. Benchmark before and after.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Q5: Can I change other server properties during upgrade?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Not recommended. Avoid changing other properties via REST API or SDK during upgrade.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Q6: How to estimate downtime?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The number of objects contained in the database is related to the upgrade time; the larger the number, the longer it takes. The most accurate way to assess this is as follows. 1. Restore a test server from backup 2. Perform upgrade on test server 3. Record actual upgrade time 4. Add buffer for production&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Q7: What happens to backups during/after upgrade?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Backups before upgrade restore to old version; after upgrade, to 8.4. Confirm retention and PITR settings before upgrade.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Q8: Is upgrade downtime included in SLA?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Planned downtime for upgrade is not counted in availability SLA. Schedule during maintenance window and communicate with stakeholders.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Q9: Charset and collation issues after upgrade?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;MySQL 8.0+ defaults to utf8mb4 and utf8mb4_0900_ai_ci. Check ORM/driver support, adjust index length, specify COLLATE if needed, and unify charset settings.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Q10: Performance issues after upgrade?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Some queries may slow down due to optimizer changes. Use EXPLAIN/ANALYZE, add/optimize indexes, use query hints, and review execution plans.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Q11: Authentication issues after upgrade?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;MySQL 8.0+ defaults to caching_sha2_password. Upgrade client drivers. If needed, temporarily revert user auth to mysql_native_password (not recommended for 8.4).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Q12: Client library compatibility?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Test all client libraries in staging. Upgrade outdated connectors/ORMs.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Q13: What is Azure Extended Support?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Azure provides paid extended support for MySQL versions after community EOL. See&amp;nbsp;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/adformysql/announcing-extended-support-for-azure-database-for-mysql/4442924" target="_blank" rel="noopener" data-lia-auto-title="Extended Support for MySQL." data-lia-auto-title-active="0"&gt;Extended Support for MySQL.&lt;/A&gt;&lt;/P&gt;
&lt;H2&gt;&lt;STRONG&gt;Stay Connected&lt;/STRONG&gt;&lt;/H2&gt;
&lt;P&gt;We welcome your feedback and invite you to share your experiences or suggestions at&amp;nbsp;&lt;A href="mailto:AskAzureDBforMySQL@service.microsoft.com" target="_blank" rel="noopener"&gt;AskAzureDBforMySQL@service.microsoft.com&lt;/A&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Stay up to date by visiting&amp;nbsp;&lt;A href="https://learn.microsoft.com/azure/mysql/flexible-server/whats-new" target="_blank" rel="noopener"&gt;What's new in Azure Database for MySQL&lt;/A&gt;, and follow us on&amp;nbsp;&lt;A href="https://aka.ms/mysql-yt-subscribe" target="_blank" rel="noopener"&gt;YouTube&lt;/A&gt; | &lt;A href="https://www.linkedin.com/company/azure-database-for-mysql/" target="_blank" rel="noopener"&gt;LinkedIn&lt;/A&gt; | &lt;A href="https://twitter.com/AzureDBMySQL" target="_blank" rel="noopener"&gt;X&lt;/A&gt;&amp;nbsp;for ongoing updates.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you for choosing Azure Database for MySQL!&amp;nbsp;&lt;/P&gt;
&lt;H5&gt;References:&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/how-to-upgrade" target="_blank" rel="noopener"&gt;Azure Database for MySQL Flexible Server - Major Version Upgrade&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/how-to-upgrade" target="_blank" rel="noopener"&gt;Azure Database for MySQL Flexible Server - Upgrade FAQ&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://dev.mysql.com/doc/mysql-shell/8.4/en/mysql-shell-utilities-upgrade.html" target="_blank" rel="noopener"&gt;MySQL Shell Upgrade Check Tool Documentation&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 05 Mar 2026 14:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/guide-to-upgrade-azure-database-for-mysql-from-8-0-to-8-4/ba-p/4493669</guid>
      <dc:creator>SamZhao</dc:creator>
      <dc:date>2026-03-05T14:00:00Z</dc:date>
    </item>
    <item>
      <title>Now Generally Available: Azure Database for MySQL Triggers for Azure Functions</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/now-generally-available-azure-database-for-mysql-triggers-for/ba-p/4459633</link>
      <description>&lt;P&gt;We’re thrilled to announce the&amp;nbsp;&lt;STRONG&gt;general availability &lt;/STRONG&gt;of&amp;nbsp;&lt;STRONG&gt;Azure Database for MySQL Trigger bindings for Azure Functions&lt;/STRONG&gt;!&lt;/P&gt;
&lt;P&gt;This feature, previously in Public Preview, enables you to track changes and develop event-driven applications at scale on any MySQL table. This release completes the unified suite of Azure Database for MySQL bindings for Azure Functions, which now includes native support for &lt;A href="https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-azure-mysql-input" target="_blank" rel="noopener"&gt;Input&lt;/A&gt;, &lt;A href="https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-azure-mysql-output" target="_blank" rel="noopener"&gt;Output&lt;/A&gt;, and &lt;A href="https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-azure-mysql-trigger" target="_blank" rel="noopener"&gt;Trigger&lt;/A&gt; capabilities.&lt;/P&gt;
&lt;H5&gt;&lt;SPAN class="lia-text-color-15"&gt;Overview&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;Trigger bindings enable you to automatically invoke &lt;A href="https://learn.microsoft.com/en-us/azure/azure-functions/" target="_blank" rel="noopener"&gt;Azure Functions&lt;/A&gt; when a row in a MySQL table is created or updated. This simplifies development by eliminating custom polling logic and the need to write and maintain boilerplate code.&lt;/P&gt;
&lt;H5&gt;&lt;SPAN class="lia-text-color-15"&gt;How to get started?&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;Azure Database for MySQL trigger uses change tracking functionality to monitor a MySQL table for changes. You can set up change tracking by adding one column to the table. For example, enable it on the &lt;EM&gt;Products&lt;/EM&gt; table using the following query:&lt;/P&gt;
&lt;LI-CODE lang="sql"&gt;ALTER TABLE Products;
ADD az_func_updated_at
TIMESTAMP DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP;&lt;/LI-CODE&gt;
&lt;P&gt;&lt;BR /&gt;The trigger bindings use&amp;nbsp;&lt;EM&gt;az_func_updated_at&lt;/EM&gt;&amp;nbsp;and column data to monitor the user table for changes. Changes are then processed in the order that they were made, with the oldest changes being processed first.&lt;/P&gt;
&lt;P&gt;For detailed, step-by-step guidance on using Azure Database for MySQL triggers with Azure Functions across all supported programming languages, visit our official documentation at &lt;A href="https://aka.ms/mysqltriggers" target="_blank" rel="noopener"&gt;https://aka.ms/mysqltriggers&amp;nbsp;&lt;/A&gt;&lt;/P&gt;
&lt;H5&gt;&lt;SPAN class="lia-text-color-15"&gt;Designed for scalable event-driven applications&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;With trigger bindings now Generally Available, you can unlock faster development cycles and smarter automation by reacting to MySQL data changes in real time without the complexity of custom polling or manual change tracking. This capability makes it easier than ever to build responsive, serverless solutions that scale effortlessly with your business needs. We look forward to seeing what you will build with them!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you have any feedback or questions about the information provided above, please leave a comment below or email us at &lt;A href="mailto:AskAzureDBforMySQL@service.microsoft.com" target="_blank" rel="noopener"&gt;AskAzureDBforMySQL@service.microsoft.com&lt;/A&gt;. Thank you!&lt;/P&gt;</description>
      <pubDate>Mon, 29 Dec 2025 15:30:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/now-generally-available-azure-database-for-mysql-triggers-for/ba-p/4459633</guid>
      <dc:creator>SaurabhKirtani</dc:creator>
      <dc:date>2025-12-29T15:30:00Z</dc:date>
    </item>
    <item>
      <title>Announcing Azure Database for MySQL Support for Resource Move with Private Link</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/announcing-azure-database-for-mysql-support-for-resource-move/ba-p/4464351</link>
      <description>&lt;P&gt;&lt;STRONG&gt;Azure Database for MySQL&amp;nbsp;&lt;/STRONG&gt;now supports &lt;STRONG&gt;moving servers with Private Link enabled across subscriptions, resource groups, without disabling Private Link&lt;/STRONG&gt;. In practical terms, this means you can relocate your MySQL server (for example, to a new subscription or resource group) while keeping its Private Endpoint intact and functional. This enhancement removes the previous requirement to delete and recreate Private Link connections during a move – a step that was necessary in the past and caused extra effort for customers. By eliminating that hurdle, the experience of reorganizing or migrating your MySQL resources is&amp;nbsp;&lt;STRONG&gt;much simpler and less disruptive&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;This capability delivers on Microsoft’s broader principle of &lt;STRONG&gt;full Azure resource mobility&lt;/STRONG&gt;: features like Private Link should not impede standard management operations like moving resources. With this update, Azure Database for MySQL aligns with that vision, ensuring that network isolation and security (via Private Link) go hand-in-hand with flexibility in resource management.&lt;/P&gt;
&lt;H2&gt;What This Means for You&lt;/H2&gt;
&lt;P&gt;For Azure MySQL customers, the &lt;STRONG&gt;impact is significant&lt;/STRONG&gt;: you gain the ability to &lt;STRONG&gt;reorganize and migrate your database servers more easily&lt;/STRONG&gt;. Here are a few scenarios enabled by this new feature:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Cross-Subscription and RG Moves&lt;/STRONG&gt;: If your organization reorganizes projects or if you maintain separate subscriptions (for example, one for development/staging and another for production), you can now move a MySQL server between those subscriptions or resource groups without interrupting its private network access. For instance, moving a server from a staging subscription to a production subscription is straightforward, with the Private Endpoint moving alongside the server.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;No Downtime from Network Changes&lt;/STRONG&gt;: Previously, moving a server with Private Link involved deleting the private endpoint, performing the move, and then re-creating the endpoint in the new location. This process could cause downtime or configuration churn. Now, the &lt;STRONG&gt;move is seamless&lt;/STRONG&gt; – your database’s private IP connectivity remains in place throughout. There’s no need to update connection strings or firewall rules due to the move, which means less risk of error and no disruption to applications during resource transitions.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Aligned with Azure’s Mobility Principles&lt;/H2&gt;
&lt;P&gt;This feature is part of Azure’s continuous efforts to improve the manageability and flexibility of cloud services. &lt;STRONG&gt;Allowing resource moves for Private Link-enabled servers&lt;/STRONG&gt; was an &lt;EM&gt;Azure-level commitment&lt;/EM&gt; to our users, recognizing that enterprise workloads often evolve:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;You might need to &lt;STRONG&gt;consolidate resources&lt;/STRONG&gt; over time for easier management or billing.&lt;/LI&gt;
&lt;LI&gt;You may have to &lt;STRONG&gt;transfer resources&lt;/STRONG&gt; out of a subscription (for example, if a subscription is being retired or restructured).&lt;/LI&gt;
&lt;LI&gt;You could be implementing &lt;STRONG&gt;disaster recovery or migration strategies&lt;/STRONG&gt; that involve moving resources to new subscriptions or resource groups.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;By ensuring Private Link does not constrain these scenarios, Azure Database for MySQL becomes more adaptable to your needs. You maintain strong network security &lt;STRONG&gt;without sacrificing agility&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H2&gt;Key Takeaway&lt;/H2&gt;
&lt;P&gt;With Azure Database for MySQL’s new support for Azure Resource Move with Private Link, &lt;STRONG&gt;you get the best of both worlds&lt;/STRONG&gt;: the security of private network connectivity and the freedom to move your databases within Azure’s cloud environment. This update removes a pain point and streamlines operations, letting you focus on your applications rather than the underlying infrastructure logistics.&lt;/P&gt;
&lt;P&gt;Moving forward, we remain committed to features that enhance your experience with Azure services. This improvement is now available in all Azure regions for Azure Database for MySQL. We encourage you to take advantage of the added flexibility as you plan your resource management and cloud architecture, and enjoy easier, uninterrupted moves for your Private Link-enabled databases.&lt;/P&gt;
&lt;P&gt;Thank you for reading, and happy migrating!&lt;/P&gt;</description>
      <pubDate>Mon, 15 Dec 2025 14:19:35 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/announcing-azure-database-for-mysql-support-for-resource-move/ba-p/4464351</guid>
      <dc:creator>Elendil</dc:creator>
      <dc:date>2025-12-15T14:19:35Z</dc:date>
    </item>
    <item>
      <title>Unlocking AI-Driven Data Access: Azure Database for MySQL Support via the Azure MCP Server</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/unlocking-ai-driven-data-access-azure-database-for-mysql-support/ba-p/4454623</link>
      <description>&lt;P&gt;Step into a new era of data-driven intelligence with the fusion of &lt;A class="lia-external-url" href="https://devblogs.microsoft.com/azure-sdk/announcing-azure-mcp-server-stable-release/" target="_blank" rel="noopener"&gt;Azure MCP Server&lt;/A&gt; and &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/overview" target="_blank" rel="noopener"&gt;Azure Database for MySQL&lt;/A&gt;, where your MySQL data is no longer just stored, but instantly conversational, intelligent and action-ready. By harnessing the open-standard Model Context Protocol (MCP), your AI agents can now &lt;EM data-start="362" data-end="391"&gt;query, analyze and automate&lt;/EM&gt; in natural language, accessing tables, surfacing insights and acting on your MySQL-driven business logic as easily as chatting with a colleague. It’s like giving your data a voice and your applications a brain, all within Azure’s trusted cloud platform.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We are excited to announce that we have added support for&amp;nbsp;&lt;STRONG&gt;Azure Database for MySQL in&lt;/STRONG&gt; &lt;STRONG&gt;Azure MCP Server.&lt;/STRONG&gt; The &lt;A class="lia-external-url" href="https://devblogs.microsoft.com/azure-sdk/announcing-azure-mcp-server-stable-release/" target="_blank" rel="noopener"&gt;Azure MCP Server&lt;/A&gt; leverages the Model Context Protocol (MCP) to allow AI agents to seamlessly interact with various Azure services to perform context-aware operations such as querying databases and managing cloud resources.&lt;/P&gt;
&lt;P&gt;Building on this foundation, the Azure MCP Server now offers a set of tools that AI agents and apps can invoke to interact with Azure Database for MySQL - enabling them to list and query databases, retrieve schema details of tables, and access server configurations and parameters. These capabilities are delivered through the same standardized interface used for other Azure services, making it easier to the adopt the MCP standard for leveraging AI to work with your business data and operations across the Azure ecosystem.&lt;/P&gt;
&lt;P&gt;Before we delve into these new tools and explore how to get started with them, let’s take a moment to refresh our understanding of MCP and the Azure MCP Server - what they are, how they work, and why they matter.&lt;/P&gt;
&lt;H3&gt;MCP architecture and key components&lt;/H3&gt;
&lt;P&gt;The Model Context Protocol (MCP) is an emerging open protocol designed to integrate AI models with external data sources and services in a scalable, standardized, and secure manner. MCP dictates a client-server architecture with four key components: MCP Host, MCP Client, MCP Server and external data sources, services and APIs that provide the data context required to enhance AI models. To explain briefly, an MCP Host (AI apps and agents) includes an MCP client component that connects to one or more&amp;nbsp;MCP Servers.&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;These servers are lightweight programs that securely interface with external data sources, services and APIs and exposes them to MCP clients in the form of standardized capabilities called tools, resources and prompts.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Learn more&lt;/STRONG&gt;:&amp;nbsp;&lt;A href="https://modelcontextprotocol.io/introduction" target="_blank" rel="noopener"&gt;MCP Documentation&lt;/A&gt;&lt;/P&gt;
&lt;H3&gt;What is Azure MCP Server?&lt;/H3&gt;
&lt;P&gt;Azure offers a multitude of cloud services that help developers build robust applications and AI solutions to address business needs. The Azure MCP Server aims to expose these powerful services for agentic usage, allowing AI systems to perform operations that are context-aware of your Azure resources and your business data within them, while ensuring adherence to the Model Context Protocol. It supports a wide range of Azure services and tools including Azure AI Search, Azure Cosmos DB, Azure Storage, Azure Monitor, Azure CLI and Developer CLI extensions. This means that you can empower AI agents, apps and tools to:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Explore your Azure resources, such as listing and retrieving details on your Azure subscriptions, resource groups, services, databases, and tables.&lt;/LI&gt;
&lt;LI&gt;Search, query and analyze your data and logs.&lt;/LI&gt;
&lt;LI&gt;Execute CLI and Azure Developer CLI commands directly, and more!&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Learn more&lt;/STRONG&gt;:&amp;nbsp;&lt;A class="lia-external-url" href="https://github.com/microsoft/mcp/blob/main/servers/Azure.Mcp.Server/README.md" target="_blank" rel="noopener"&gt;Azure MCP Server GitHub Repository&lt;/A&gt;&lt;/P&gt;
&lt;H3&gt;Introducing new Azure MCP Server tools to interact with Azure Database for MySQL&lt;/H3&gt;
&lt;P&gt;The&amp;nbsp;&lt;A class="lia-external-url" href="https://github.com/microsoft/mcp/blob/main/servers/Azure.Mcp.Server/README.md" target="_blank" rel="noopener"&gt;Azure MCP Server&lt;/A&gt; now includes the following tools that allow AI agents to interact with Azure Database for MySQL and your valuable business data residing in these servers, in accordance with the MCP standard:&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table border="1" style="width: 100%; height: 371px; border-width: 1px;"&gt;&lt;colgroup&gt;&lt;col style="width: 21.9648%" /&gt;&lt;col style="width: 39.494%" /&gt;&lt;col style="width: 38.5412%" /&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style="height: 35px;"&gt;&lt;td style="height: 35px;"&gt;&lt;STRONG&gt;Tool&lt;/STRONG&gt;&lt;/td&gt;&lt;td style="height: 35px;"&gt;&lt;STRONG&gt;Description&lt;/STRONG&gt;&lt;/td&gt;&lt;td style="height: 35px;"&gt;&lt;STRONG&gt;Example Prompts&lt;/STRONG&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 39px;"&gt;&lt;td style="height: 39px;"&gt;
&lt;P&gt;azmcp_mysql_server_list&lt;/P&gt;
&lt;/td&gt;&lt;td style="height: 39px;"&gt;List all MySQL servers in a subscription &amp;amp; resource group&lt;/td&gt;&lt;td style="height: 39px;"&gt;"List MySQL servers in resource group 'prod-rg'."&lt;BR /&gt;"Show MySQL servers in region 'eastus'."&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 39px;"&gt;&lt;td style="height: 39px;"&gt;
&lt;P&gt;azmcp_mysql_server_config_get&lt;/P&gt;
&lt;/td&gt;&lt;td style="height: 39px;"&gt;Retrieve the configuration of a MySQL server&lt;/td&gt;&lt;td style="height: 39px;"&gt;"What is the backup retention period for server 'my-mysql-server'?"&lt;BR /&gt;"Show storage allocation for server 'my-mysql-server'."&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 35px;"&gt;&lt;td style="height: 35px;"&gt;azmcp_mysql_server_param_get&lt;/td&gt;&lt;td style="height: 35px;"&gt;Retrieve a specific parameter of a MySQL server&lt;/td&gt;&lt;td style="height: 35px;"&gt;
&lt;P&gt;"Is slow_query_log enabled on server my-mysql-server?"&lt;/P&gt;
&lt;P&gt;"Get innodb_buffer_pool_size for server my-mysql-server."&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 35px;"&gt;&lt;td style="height: 35px;"&gt;azmcp_mysql_server_param_set&lt;/td&gt;&lt;td style="height: 35px;"&gt;Set a specific parameter of a MySQL server to a specific value&lt;/td&gt;&lt;td style="height: 35px;"&gt;
&lt;P&gt;&amp;nbsp;"Set max_connections to 500 on server my-mysql-server."&lt;/P&gt;
&lt;P&gt;"Set wait_timeout to 300 on server my-mysql-server."&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 35px;"&gt;&lt;td style="height: 35px;"&gt;azmcp_mysql_table_list&lt;/td&gt;&lt;td style="height: 35px;"&gt;List all tables in a MySQL database&lt;/td&gt;&lt;td style="height: 35px;"&gt;
&lt;P&gt;"List tables starting with 'tmp_' in database 'appdb'."&lt;/P&gt;
&lt;P&gt;"How many tables are in database 'analytics'?"&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 59px;"&gt;&lt;td style="height: 59px;"&gt;azmcp_mysql_table_schema_get&lt;/td&gt;&lt;td style="height: 59px;"&gt;Get the schema of a specific table in a MySQL database&lt;/td&gt;&lt;td style="height: 59px;"&gt;
&lt;P&gt;"Show indexes for table 'transactions' in database 'billing'."&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="background-color: rgba(0, 0, 0, 0); color: rgb(30, 30, 30);"&gt;"What is the primary key for table 'users' in database 'auth'?"&lt;/SPAN&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height: 59px;"&gt;&lt;td style="height: 59px;"&gt;azmcp_mysql_database_query&amp;nbsp;&lt;/td&gt;&lt;td style="height: 59px;"&gt;Executes a SELECT query on a MySQL Database. The query must start with SELECT and cannot contain any destructive SQL operations for security reasons.&lt;/td&gt;&lt;td style="height: 59px;"&gt;
&lt;P&gt;“How many orders were placed in the last 30 days in the salesdb.orders table?”&lt;/P&gt;
&lt;P&gt;“Show the number of new users signed up in the last week in appdb.users grouped by day.”&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;These interactions are secured using Microsoft Entra authentication, which enables seamless, identity-based access to Azure Database for MySQL - eliminating the need for password storage and enhancing overall security.&lt;/P&gt;
&lt;P&gt;How are these new tools in the Azure MCP Server different from the standalone&amp;nbsp;&lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/adformysql/model-context-protocol-mcp-server-for-azure-database-for-mysql/4418075" target="_blank" rel="noopener" data-lia-auto-title="MCP Server for Azure Database for MySQL" data-lia-auto-title-active="0"&gt;MCP Server for Azure Database for MySQL&lt;/A&gt;? We have integrated the key capabilities of the Azure Database for MySQL MCP server into the Azure MCP Server, making it easier to connect your agentic apps not only to Azure Database for MySQL but also to other Azure services through one unified and secure interface!&lt;/P&gt;
&lt;H3&gt;How to get started&lt;/H3&gt;
&lt;P&gt;Installing and running the Azure MCP Server is quick and easy! Use GitHub Copilot in Visual Studio Code to gain meaningful insights from your business data in Azure Database for MySQL.&lt;/P&gt;
&lt;H4&gt;Pre-requisites&lt;/H4&gt;
&lt;UL&gt;
&lt;LI&gt;Install&amp;nbsp;&lt;A href="https://code.visualstudio.com/download" target="_blank" rel="noopener"&gt;Visual Studio Code&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;Install&amp;nbsp;&lt;A href="https://marketplace.visualstudio.com/items?itemName=GitHub.copilot" target="_blank" rel="noopener"&gt;GitHub Copilot&lt;/A&gt;&amp;nbsp;and&amp;nbsp;&lt;A href="https://marketplace.visualstudio.com/items?itemName=GitHub.copilot-chat" target="_blank" rel="noopener"&gt;GitHub Copilot Chat&lt;/A&gt;&amp;nbsp;extensions.&lt;/LI&gt;
&lt;LI&gt;An Azure Database for MySQL with&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/how-to-azure-ad" target="_blank" rel="noopener"&gt;Microsoft Entra authentication enabled&lt;/A&gt;. Ensure that the MCP Server is installed on a system with network connectivity and credentials to connect to Azure Database for MySQL.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;Installation and Testing&lt;/H4&gt;
&lt;P&gt;Please use this guide for installation:&amp;nbsp;&lt;A class="lia-external-url" href="https://github.com/microsoft/mcp/blob/main/servers/Azure.Mcp.Server/README.md" target="_blank" rel="noopener"&gt;Azure MCP Server Installation Guide&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Try the following prompts with your &lt;SPAN data-teams="true"&gt;Azure Database for MySQL&lt;/SPAN&gt;:&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/developer/azure-mcp-server/tools/azure-mysql" target="_blank" rel="noopener"&gt;Azure Database for MySQL tools for Azure MCP Server&lt;/A&gt;&lt;/P&gt;
&lt;H3&gt;Try it out and share your feedback!&lt;/H3&gt;
&lt;P&gt;Start using Azure MCP Server with the MySQL tools today and let our cloud services become your AI agent’s most powerful ally.&lt;BR data-start="380" data-end="383" /&gt;We’re counting on your feedback - every comment, suggestion, or bug-report helps us build better tools together. Stay tuned: more features and capabilities are on the horizon!&lt;/P&gt;
&lt;P&gt;Feel free to comment below or write to us with your feedback and queries at&amp;nbsp;&lt;A href="mailto:AskAzureDBforMySQL@service.microsoft.com" target="_blank" rel="noopener"&gt;AskAzureDBforMySQL@service.microsoft.com.&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 08 Dec 2025 15:44:03 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/unlocking-ai-driven-data-access-azure-database-for-mysql-support/ba-p/4454623</guid>
      <dc:creator>ramkumarchan</dc:creator>
      <dc:date>2025-12-08T15:44:03Z</dc:date>
    </item>
    <item>
      <title>Ignite 2025: Advancing Azure Database for MySQL with Powerful New Capabilities</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/ignite-2025-advancing-azure-database-for-mysql-with-powerful-new/ba-p/4470824</link>
      <description>&lt;P&gt;At Ignite 2025, we’re introducing a wave of powerful new capabilities for Azure Database for MySQL, designed to help organizations modernize, scale, and innovate faster than ever before. From enhanced high availability and seamless serverless integrations to AI-powered insights and greater flexibility for developers, these advancements reflect our commitment to delivering a resilient, intelligent data platform. Join us as we unveil what’s next for MySQL on Azure - and discover how industry leaders are already building the future with confidence.&lt;/P&gt;
&lt;H3&gt;&lt;SPAN class="lia-text-color-10"&gt;Enhanced Failover Performance with Dedicated SLB for High-Availability Servers&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;We’re&amp;nbsp;excited to announce the&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;General Availability of Dedicated Standard Load Balancer (SLB) for HA-enabled servers&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;in Azure Database for MySQL. This enhancement introduces a dedicated SLB to High Availability configurations for servers created with public access or private&amp;nbsp;link. By managing the MySQL data traffic path, SLB&amp;nbsp;eliminates&amp;nbsp;the need for DNS updates during failover, significantly reducing failover time.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Previously, failover relied on DNS changes, which caused delays due to DNS TTL (30 seconds) and client-side DNS caching.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;What’s&amp;nbsp;new with GA:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;The FQDN consistently&amp;nbsp;resolves to&amp;nbsp;the SLB IP address before and after failover.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Load-balancing rules automatically route traffic to the active node.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Removes DNS cache dependency, delivering faster failovers.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Note&lt;/STRONG&gt;:&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;This feature is&amp;nbsp;not supported&amp;nbsp;for&amp;nbsp;servers using&amp;nbsp;private access&amp;nbsp;with&amp;nbsp;VNet&amp;nbsp;integration.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/concepts-high-availability#failover-process" target="_blank" rel="noopener"&gt;Learn more&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;SPAN class="lia-text-color-10"&gt;Build serverless, event-driven apps at scale – now GA with Trigger Bindings for Azure Functions&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;We’re excited to announce the &lt;STRONG&gt;General Availability of &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Azure Database for MySQL Trigger bindings for Azure Functions&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;, completing the full suite of Input, Output, and Trigger capabilities. This feature lets you build real-time, event-driven applications by automatically invoking Azure Functions when MySQL table rows are created or updated - eliminating custom polling and boilerplate code.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;With native support across&amp;nbsp;multiple&amp;nbsp;languages, developers can now deliver responsive, serverless solutions that scale effortlessly and accelerate innovation.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aka.ms/mysqltriggers" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Learn more&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 aria-level="3"&gt;&lt;SPAN class="lia-text-color-10"&gt;Enable AI agents to query Azure Database for MySQL using Azure MCP Server&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;We’re&amp;nbsp;excited to announce that&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Azure MCP Server&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;now supports Azure Database for MySQL&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;, enabling AI agents to query and manage MySQL data using natural language through the open Model Context Protocol (MCP). Instead of writing SQL, you can simply ask questions like&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;“&lt;EM&gt;Show the number of new users signed up in the last week in&amp;nbsp;appdb.users&amp;nbsp;grouped by day.&lt;/EM&gt;”&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;,&amp;nbsp;all secured with Microsoft Entra authentication for enterprise-grade security. This integration delivers a unified, secure interface for building intelligent, context-aware workflows across Azure services&amp;nbsp;-&amp;nbsp;accelerating insights and automation.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/developer/azure-mcp-server/tools/azure-mysql" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Learn more&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 aria-level="3"&gt;&lt;SPAN class="lia-text-color-10"&gt;Greater networking flexibility with Custom Port Support&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Custom port support for Azure Database for MySQL is now generally available&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;, giving organizations the flexibility to configure a custom port (between 25001 and 26000) during new server creation. This enhancement streamlines integration with legacy applications, supports strict network security policies, and helps avoid port conflicts in complex environments.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Supported across all network configurations&amp;nbsp;-&amp;nbsp;including public access,&amp;nbsp;private access, and Private Link&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;-&amp;nbsp;custom port provisioning ensures every new MySQL server can be tailored to your needs. The managed experience&amp;nbsp;remains&amp;nbsp;seamless, with all administrative capabilities and integrations working as before.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/concepts-networking#custom-port-support" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Learn more&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 aria-level="3"&gt;&lt;SPAN class="lia-text-color-10"&gt;Streamline migrations and compatibility with Lower Case Table Names support&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Azure Database for MySQL now supports configuring&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;lower_case_table_names&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;server&amp;nbsp;parameter&amp;nbsp;during&amp;nbsp;initial&amp;nbsp;server creation for MySQL 8.0 and above, ensuring seamless alignment with your organization’s naming conventions. This setting is automatically inherited for restores and&amp;nbsp;replicas, and&amp;nbsp;cannot be&amp;nbsp;modified.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Key Benefits:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Simplifies migrations by aligning naming conventions and reducing complexity.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Enhances&amp;nbsp;compatibility with legacy systems that depend on case-insensitive table names.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="6" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Minimizes support dependency, enabling faster and smoother onboarding.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/concepts-server-parameters#lower_case_table_names" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Learn&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;m&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;ore&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;  &lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 aria-level="3"&gt;&lt;SPAN class="lia-text-color-10"&gt;Unlock New Capabilities with Private Preview Features at Ignite 2025&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;We’re&amp;nbsp;excited to announce that you can now explore two powerful capabilities in&amp;nbsp;early access&amp;nbsp;-&amp;nbsp;Reader Endpoint for seamless read scaling and Server Rename for greater flexibility in server management.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H5 aria-level="4"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 4"&gt;Scale reads effortlessly with Reader Endpoint (Private Preview)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:80,&amp;quot;335559739&amp;quot;:40}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;We’re&amp;nbsp;excited to announce that the&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Reader Endpoint feature for Azure Database for MySQL&lt;/STRONG&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;is now ready for&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;private&amp;nbsp;preview&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Reader Endpoint provides a&amp;nbsp;dedicated read-only endpoint for read replicas, enabling&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;automatic connection-based load balancing&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt; &lt;/STRONG&gt;of read-only traffic across multiple replicas. This simplifies application architecture by offering a&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;single endpoint for&amp;nbsp;read&amp;nbsp;operations&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;, improving&amp;nbsp;scalability and fault tolerance. Azure Database for MySQL supports&amp;nbsp;up to 10 read replicas per primary server.&amp;nbsp;By routing read-only traffic through the reader endpoint, application teams can efficiently manage connections and&amp;nbsp;optimize&amp;nbsp;performance without handling individual replica endpoints. Reader endpoints continuously&amp;nbsp;monitor&amp;nbsp;the health of replicas and automatically exclude any replica that exceeds the configured replication lag threshold or becomes unavailable.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;To enroll in the preview, please&amp;nbsp;submit&amp;nbsp;your details using&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://forms.office.com/r/PQ47G3aANk" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;this form&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Limitations During&amp;nbsp;Private&amp;nbsp;Preview:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Only&amp;nbsp;performance-based routing&amp;nbsp;is supported in this preview. &lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Certain settings&amp;nbsp;such as&amp;nbsp;routing method and the&amp;nbsp;option&amp;nbsp;to attach new replicas to the reader endpoint&amp;nbsp;can&amp;nbsp;only be configured at creation time.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Only&amp;nbsp;one reader endpoint can be created per replica group.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Including the primary server as a fallback for&amp;nbsp;read&amp;nbsp;traffic when no replicas are available is not supported in this preview.&lt;/SPAN&gt;&amp;nbsp;&lt;BR /&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5 aria-level="4"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 4"&gt;Get flexibility in server management with Server Rename&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 4"&gt;&amp;nbsp;(Private Preview)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:80,&amp;quot;335559739&amp;quot;:40}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;We’re&amp;nbsp;excited to announce the Private Preview of&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Server Rename&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;for Azure Database for MySQL. This feature lets you update the name of an existing MySQL&amp;nbsp;server&amp;nbsp;without recreating it, migrating data, or disrupting applications&amp;nbsp;-&amp;nbsp;making it easier to adopt clear, consistent naming.&amp;nbsp;It provides a near zero-downtime path to a new hostname&amp;nbsp;of the&amp;nbsp;server.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;To enroll in the preview, please&amp;nbsp;submit&amp;nbsp;your details using&lt;/STRONG&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://forms.office.com/r/PQ47G3aANk" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;this form&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Limitations&amp;nbsp;During&amp;nbsp;Private&amp;nbsp;Preview:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;Primary server with read replicas: Renaming a primary server that has read replicas keeps replication healthy. However, the SHOW SLAVE STATUS output on the replicas will still display the old primary server's name. This is a&amp;nbsp;display&amp;nbsp;inconsistency only and does not affect replication.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="7" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:1440,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="none"&gt;Renaming is currently unsupported for servers using Customer Managed Key (CMK) encryption or Microsoft Entra Authentication (Entra Id).&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;335559685&amp;quot;:720}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 aria-level="2"&gt;&lt;SPAN class="lia-text-color-10"&gt;Real-World Success:&amp;nbsp;Azure Database for&amp;nbsp;MySQL Powers Resilient Applications at Scale&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;H5&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Factorial&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Factorial, a leading HR software provider, uses Azure Database for MySQL alongside Azure Kubernetes Service to deliver secure, scalable HR solutions for thousands of businesses worldwide. By leveraging &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Azure Database for&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;MySQL’s reliability and seamless integration with cloud-native technologies, Factorial ensures high availability and rapid innovation for its customers.&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://www.microsoft.com/en/customers/story/25568-factorial-azure-kubernetes-service" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Learn more&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H5&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;YES (Youth Employment Service)&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;South Africa’s largest youth employment initiative, YES, operates at national scale by leveraging Azure Database for MySQL to deliver a resilient, centralized platform for real-time job matching, learning management, and career services - connecting thousands of young people and employers, and helping nearly 45 percent of participants secure permanent roles within six months.&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://techcommunity.microsoft.com/blog/adformysql/building-brighter-futures-how-yes-tackles-youth-unemployment-with-azure-database/4469247" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Learn more&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H5&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Nasdaq&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H5&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;At Ignite 2025, Nasdaq will showcase how it uses Azure Database for MySQL - alongside Azure Database for PostgreSQL and other Azure products - to power a secure, resilient architecture that safeguards confidential data while unlocking new agentic AI capabilities.&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://ignite.microsoft.com/en-US/sessions/BRK137" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Learn more&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;These examples&amp;nbsp;demonstrate&amp;nbsp;that Azure Database for MySQL is trusted by industry leaders to build resilient, scalable applications&amp;nbsp;-&amp;nbsp;empowering organizations to innovate and grow with confidence.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H3 aria-level="2"&gt;&lt;SPAN class="lia-text-color-10"&gt;We Value Your Feedback&amp;nbsp;&lt;/SPAN&gt;&lt;/H3&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Azure Database for MySQL is built for scale, resilience, and performance&amp;nbsp;-&amp;nbsp;ready to support your most demanding workloads. With every update,&amp;nbsp;we’re&amp;nbsp;focused on simplifying development, migration, and management so you can build with confidence. Explore the latest features and enhancements to see how Azure Database for MySQL meets your data needs today and in the future.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;We welcome your feedback and invite you to share your experiences or suggestions at&amp;nbsp;&lt;/SPAN&gt;&lt;A href="mailto:AskAzureDBforMySQL@service.microsoft.com" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;AskAzureDBforMySQL@service.microsoft.com&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Stay up to date by visiting&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/azure/mysql/flexible-server/whats-new" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;What's new in Azure Database for MySQL&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;, and follow us on&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://aka.ms/mysql-yt-subscribe" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;YouTube&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt; | &lt;/SPAN&gt;&lt;A href="https://www.linkedin.com/company/azure-database-for-mysql/" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;LinkedIn&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt; | &lt;/SPAN&gt;&lt;A href="https://twitter.com/AzureDBMySQL" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;X&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;for ongoing updates.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Thank you for choosing Azure Database for MySQL!&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 03 Dec 2025 07:17:11 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/ignite-2025-advancing-azure-database-for-mysql-with-powerful-new/ba-p/4470824</guid>
      <dc:creator>DeepthiPrasad</dc:creator>
      <dc:date>2025-12-03T07:17:11Z</dc:date>
    </item>
    <item>
      <title>Building brighter futures: How YES tackles youth unemployment with Azure Database for MySQL</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/building-brighter-futures-how-yes-tackles-youth-unemployment/ba-p/4469247</link>
      <description>&lt;P&gt;&lt;STRONG&gt;&lt;EM&gt;This article was co-authored by Malcolm MacDonald, CIO at YES, and Saurabh Kirtani, Senior Product Manager at Microsoft&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;Youth unemployment is one of South Africa’s most persistent challenges with more than half of young people struggling to secure their first job. At the same time, employers hesitate to hire people without experience, and youth cannot gain experience without employment. Solving this issue requires more than policy - it requires data systems that can match candidates to opportunities, track progress, and deliver pathways at scale.&lt;/P&gt;
&lt;P&gt;&lt;A href="https://www.yes4youth.co.za/" target="_blank" rel="noopener"&gt;YES&lt;/A&gt;, the Youth Employment Service, was created to change that equation. As South Africa’s largest youth employment initiative, YES connects young people with 12-month work placements, learning programs, and job-matching services. Every month, more than 40,000 youth and employer partners interact with the YES digital ecosystem. Built on &lt;A href="https://azure.microsoft.com/en-us/products/mysql/" target="_blank" rel="noopener"&gt;Azure Database for MySQL&lt;/A&gt;, this ecosystem centralizes data, strengthens reliability, and adapts to the demands of a national program.&lt;/P&gt;
&lt;P&gt;YES’s mission is to break the cycle of inexperience and unemployment and create pathways for youth into permanent work or entrepreneurship. The results are tangible: nearly 45 percent of participants find permanent jobs within six months of completing the program, and that percentage increases when entrepreneurs are included. By building a resilient data foundation, YES is positioned to expand these outcomes.&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;&lt;SPAN class="lia-text-color-15"&gt;Turning database sprawl into one source of truth&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;Running a nationwide employment program is as much a technical challenge as it is a social one. YES serves two primary audiences through two portals: an employer portal where partners register programs and upload youth data, and a youth-facing portal with learning management systems (LMS) and rewards where participants complete training, track progress, and build CVs. At this scale, learning management, rewards, and career services demand live updates because thousands of app events - course completions, supervisor check-ins, CV edits - must sync across both portals instantly; otherwise rankings, rewards, and job-match alerts drift out of date.&lt;/P&gt;
&lt;P&gt;Previously, each portal ran on its own database replica. Data diverged quickly, and a number of staff members spent their days reconciling records just to restore a single source of truth. Routine database work - patching windows, backups, and other maintenance - was also largely manual, compounding the operational drag.&lt;/P&gt;
&lt;P&gt;Migrating to&amp;nbsp;&lt;A href="https://azure.microsoft.com/en-us/products/mysql/" target="_blank" rel="noopener"&gt;Azure Database for MySQL&lt;/A&gt; replaced that sprawl with a resilient core. Automated patching, half-hourly snapshots, and multi–availability zone setup for core database snapshots substituted manual interventions with built-in safeguards. With portals now calling into a centralized CRM via schema-aware APIs, the replicas - and the reconciliation loops they caused - are being retired. The unified dataset also feeds Power BI for program oversight without adding integration overhead.&lt;/P&gt;
&lt;P&gt;YES now operates on a continuously updated foundation of learner and employer data - accurate in the moment and durable over time.&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;&lt;SPAN class="lia-text-color-15"&gt;How a seamless CRM keeps YES in synch&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;YES’s portals, LMS, rewards program, and new career gateway, Skillquest, all connect to a central CRM that serves as the system of record for every participant and employer partner. Every interaction - whether a youth completes training, an employer uploads candidate data, or a CV is matched to a role - is logged instantly in the CRM and supported by Azure Database for MySQL.&lt;/P&gt;
&lt;P&gt;By moving to an API-first architecture, these services now draw from the same underlying database instead of relying on redundant replicas. That shift not only simplified operations but also allowed YES to retire multiple databases entirely.&lt;/P&gt;
&lt;P&gt;Rather than building individual portals, YES designed a configurable framework that adapts automatically as data models evolve. When a new field is added in the CRM, the system interprets and applies the change across connected portals instantly. With schema-aware APIs and a dynamic architecture, the IT team can roll out updates quickly and efficiently - without reengineering front-end systems.&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;&lt;SPAN class="lia-text-color-15"&gt;Staying responsive under pressure&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;Supporting a national program means being ready for sudden surges in demand. When employer partners launch new initiatives, thousands of records may be registered at once. In the past, those spikes risked slowdowns that disrupted critical processes like sign-ups and data uploads.&lt;/P&gt;
&lt;P&gt;On Azure Database for MySQL, elasticity is built in. During a slowdown on the sign-up portal, the team temporarily increased database capacity to stabilize performance. Once the issue was identified and corrected, resources were right-sized, restoring operation without disruption.&lt;/P&gt;
&lt;P&gt;This ability to adjust database capacity in minutes is critical for YES. Elastic scaling not only prevents downtime during peak loads but also allows the IT team to diagnose and resolve issues without affecting the youth and employer partners who depend on its platforms. From learning modules to Skillquest’s career services, elasticity keeps every digital interaction reliable and responsive.&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;&lt;SPAN class="lia-text-color-15"&gt;Nearing 100% uptime with reliability and security at scale&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;For a program that spans every province in South Africa, reliability is non-negotiable. Since migrating to Azure Database for MySQL, YES is nearing 100 percent database uptime during business hours, even as demand on its systems has grown.&lt;/P&gt;
&lt;P&gt;Previously, backups and maintenance were handled manually - a time-consuming process that tied up staff resources. Today, half-hourly snapshots of the central database and nightly backups across other systems protect critical data. Multi–availability zone protection ensures that their core system stays resilient with the Host Support Partner performing annual disaster recovery tests to confirm the system can be restored in another region.&lt;/P&gt;
&lt;P&gt;Security is built into the same foundation. Encryption at rest protects sensitive personal information, while &lt;A href="https://azure.microsoft.com/en-us/products/advisor" target="_blank" rel="noopener"&gt;Azure Advisor&lt;/A&gt; provides an evolving set of recommendations for configuration hardening. Each month, the YES team reviews Azure Advisor’s recommendations with their vendor, using them as a roadmap to guide implementation and future investments without requiring senior engineers on staff. YES also relies on Microsoft Defender extensively across its environment and is shifting VPN access into Microsoft Entra so remote staff can connect directly into Azure rather than routing through on-premises networks.&lt;/P&gt;
&lt;P&gt;These practices translate directly into measurable efficiency. By automating resilience and compliance tasks that would otherwise require senior expertise, YES keeps its cost per job below 2,500 rand (about USD $140) per year - one of the lowest figures of its kind globally. Every rand saved in IT overhead expands the number of youths who can be supported through placements, training, and career pathways.&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;&lt;SPAN class="lia-text-color-15"&gt;Expanding youth opportunities with AI and data&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;With a centralized, API-first foundation in place, YES is now building new services that extend beyond initial work placements. Skillquest, a career gateway for alumni not absorbed into permanent roles, allows youth to create CVs, showcase skills, and connect directly with employer partners searching for talent.&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-teams="true"&gt;At the core of Skillquest is a vector-based AI matching system where youth CVs are vectorized and compared against job specifications, surfacing the best-fit opportunities and automatically alerting candidates to apply.&lt;/SPAN&gt; The system also incorporates results from cognitive skill assessments - World Bank–designed games that measure reasoning, speed, and problem-solving ability. By combining vectorized CV data with cognitive assessments, Skillquest builds multidimensional profiles that employers can query with precision.&lt;/P&gt;
&lt;P&gt;YES has also introduced a ranking system to highlight top-performing youth. Running on the same MySQL foundation as the LMS, it aggregates structured inputs - SCORM course completions, reward triggers, supervisor feedback, and SkillQuest cognitive assessments - and applies weighting rules to produce a composite score. With rankings recalculated in real time through the CRM and APIs, employers gain a deeper, data-driven picture of candidates while YES maintains an always-current record of every journey.&lt;/P&gt;
&lt;P&gt;This architecture positions YES to scale its impact further, supporting internship and training programs not only in South Africa but potentially worldwide. By making systems more dynamic and adaptable, YES can evolve its services without re-architecting its infrastructure, ensuring that data continues to drive opportunity.&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;&lt;SPAN class="lia-text-color-15"&gt;Building systems that build futures&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;YES demonstrates that solving youth unemployment requires more than vision - it requires resilient systems that can deliver opportunity at scale. By migrating to Azure Database for MySQL, YES replaced reconciliation bottlenecks with continuous clarity, added elasticity to meet demand, and achieved the resiliency and uptime needed to support a nationwide program.&lt;/P&gt;
&lt;P&gt;For the IT team, tools like &lt;A href="https://azure.microsoft.com/en-us/products/github/copilot" target="_blank" rel="noopener"&gt;GitHub Copilot&lt;/A&gt; have been just as transformative. Most of the staff at YES are in their first jobs. Copilot gives them a way to learn quickly and take on projects that would normally require senior expertise. By extending Copilot to the people running the systems, YES can keep innovating with confidence.&lt;/P&gt;
&lt;P&gt;And the impact extends beyond infrastructure. With emerging services like Skillquest and AI-powered job matching, the organization is expanding its reach and deepening its impact.&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;&lt;SPAN class="lia-text-color-15"&gt;Join the conversation&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-teams="true"&gt;Hear more from Malcolm MacDonald, CIO at YES, in an upcoming session of the Monthly Azure Database for MySQL webinar series. In the meantime, read more about YES in Microsoft's featured &lt;A href="https://www.microsoft.com/en/customers/story/23074-yes-youth-employment-azure-virtual-machines#customers-share-modal-dialog" target="_blank" rel="noopener" aria-label="Link customer story and inspiring video"&gt;customer story and inspiring video&lt;/A&gt; to see how technology is driving real impact.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 13 Nov 2025 16:07:38 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/building-brighter-futures-how-yes-tackles-youth-unemployment/ba-p/4469247</guid>
      <dc:creator>SaurabhKirtani</dc:creator>
      <dc:date>2025-11-13T16:07:38Z</dc:date>
    </item>
    <item>
      <title>Custom Port Support in Azure Database for MySQL – Flexible Server is Now Generally Available</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/custom-port-support-in-azure-database-for-mysql-flexible-server/ba-p/4460248</link>
      <description>&lt;P&gt;We are excited to announce that&amp;nbsp;&lt;STRONG&gt;custom port support for Azure Database for MySQL – Flexible Server&lt;/STRONG&gt; is now generally available (GA). This long-requested feature gives you greater flexibility to align MySQL server deployments with your network and security requirements. By default, MySQL uses TCP port 3306; with this GA release, you can &lt;STRONG&gt;configure a custom port (between 25001 and 26000)&lt;/STRONG&gt; when creating a new Azure Database for MySQL flexible server. This enables easier integration with legacy applications, helps comply with strict network security policies, and avoids port conflicts in complex environments.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What’s new in GA (vs. Public Preview):&lt;/STRONG&gt; In the Public Preview (July 2025), custom ports were only supported for &lt;STRONG&gt;VNet-injected (private access) servers&lt;/STRONG&gt;, with &lt;STRONG&gt;no support for public access or Private Link&lt;/STRONG&gt; connectivity. &lt;STRONG&gt;Now, with GA, you can create custom-port servers in any network configuration&lt;/STRONG&gt; – including both publicly accessible servers and those using Private Link (private endpoint) connectivity. In short, all new MySQL flexible servers can be created with a custom port, whether they are configured for public network access or deployed into a private virtual network.&lt;/P&gt;
&lt;H2&gt;Feature Highlights&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Custom Port Range:&lt;/STRONG&gt; Choose a port between &lt;STRONG&gt;25001 and 26000&lt;/STRONG&gt; during server provisioning. (Only one custom port is supported per server.) This is in addition to the default MySQL port 3306, which remains available for use if needed.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Supported Scenarios:&lt;/STRONG&gt; Custom ports are fully supported for &lt;STRONG&gt;new server creation&lt;/STRONG&gt;, &lt;STRONG&gt;point-in-time restore&lt;/STRONG&gt; (including cross-port restores), &lt;STRONG&gt;read replica&lt;/STRONG&gt; setup, and &lt;STRONG&gt;High Availability (HA)&lt;/STRONG&gt; deployments. You can perform a restore or set up a replica even if the source and target servers use different ports, and you can enable HA on a server configured with a non-default port.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Networking Flexibility:&lt;/STRONG&gt; Supported on both &lt;STRONG&gt;public access&lt;/STRONG&gt; and &lt;STRONG&gt;private access&lt;/STRONG&gt; configurations. You can create servers with a custom port in &lt;STRONG&gt;public access mode&lt;/STRONG&gt; (accessible via the internet with firewall rules) or in &lt;STRONG&gt;private access mode&lt;/STRONG&gt; (injected into a VNet). &lt;STRONG&gt;Azure Private Link&lt;/STRONG&gt; is also supported – meaning you can connect via a private endpoint to a MySQL server running on a custom port. This enhancement broadens the feature’s applicability beyond the preview’s limited scope, allowing usage in all network scenarios.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Managed Experience:&lt;/STRONG&gt; The custom port feature is built into the managed service experience. Aside from specifying a different port number for client connections, &lt;STRONG&gt;there is no change in how you manage or operate the MySQL flexible server&lt;/STRONG&gt; – all administrative capabilities and integrations (backup, monitoring, etc.) work as they do with the default port.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Current Limitations&lt;/H2&gt;
&lt;P&gt;Be aware of a couple of &lt;STRONG&gt;limitations&lt;/STRONG&gt; at GA:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Port Immutable After Creation:&lt;/STRONG&gt; You &lt;STRONG&gt;cannot change the server’s port&lt;/STRONG&gt; after the server is created. If you need to use a different port, you will have to create a new server with that port. As a workaround, you can use &lt;STRONG&gt;Point-in-Time Restore (PITR)&lt;/STRONG&gt; to quickly clone your database into a new server with the desired port (since cross-port restores are supported), rather than performing a full manual migration.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Geo-Replication/Geo-Restore:&lt;/STRONG&gt; Cross-region operations like &lt;STRONG&gt;geo-restore and geo-replication are not yet supported&lt;/STRONG&gt; for servers using a custom port. In other words, you cannot perform a geo-restore of a backup from a custom-port server, and you cannot create cross-region read replicas on custom port servers at this time. These capabilities are on the roadmap but remain unsupported in the current release.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Why Custom Ports?&lt;/H2&gt;
&lt;P&gt;Many enterprise developers and DBAs have asked for custom port support to accommodate specialized network scenarios. For example, some organizations enforce strict firewall rules or use non-standard ports for databases to meet internal &lt;STRONG&gt;security compliance&lt;/STRONG&gt; requirements. Others may have &lt;STRONG&gt;legacy applications or multi-database setups&lt;/STRONG&gt; that require MySQL to run on a port other than 3306 to avoid conflicts. The custom port feature addresses these needs by allowing you to select a non-default port during server creation, while Azure continues to handle all the usual PaaS management tasks. In short, you get the &lt;STRONG&gt;flexibility of a custom network configuration without losing the benefits of a fully managed database service&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H2&gt;Getting Started&lt;/H2&gt;
&lt;P&gt;Using a custom port is straightforward. &lt;STRONG&gt;At GA, the Azure portal’s create experience is the way to set a custom port&lt;/STRONG&gt; (support in CLI/PowerShell/ARM will come later). In the portal, when you create a new Azure Database for MySQL – Flexible Server, you’ll find an option to specify the &lt;STRONG&gt;“Database port.”&lt;/STRONG&gt; Provide any value between 25001 and 26000 as the port number for your server. Once the server is deployed, client applications should connect using the &amp;lt;servername&amp;gt;.mysql.database.azure.com hostname and &lt;STRONG&gt;the port you chose&lt;/STRONG&gt;, instead of the default 3306. All other connection settings (such as SSL enforcement and credentials) remain the same.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;Make sure to configure network access rules to allow traffic on your chosen port. For public access servers, this means updating the firewall rules or network security groups to permit the custom port. For private access or Private Link setups, ensure that your networking (NSGs, on-premises firewall rules, etc.) permits traffic on the custom port to reach the database.&lt;/P&gt;
&lt;H2&gt;Learn More&lt;/H2&gt;
&lt;P&gt;Custom port support is now &lt;STRONG&gt;GA&lt;/STRONG&gt; and ready for production use, so we encourage you to try it out if your environment can benefit from it. For more details on Azure Database for MySQL – Flexible Server connectivity and custom ports, refer to the official documentation: &lt;A href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/concepts-networking#custom-port-support" target="_blank" rel="noopener"&gt;Networking Overview - Azure Database for MySQL | Microsoft Learn&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;We look forward to seeing how you use this new capability to tailor your MySQL deployments. With custom port support now generally available, Azure Database for MySQL – Flexible Server offers even more flexibility to meet your organizational policies and integration needs, all while delivering a fully managed experience. Happy deploying!&lt;/P&gt;</description>
      <pubDate>Wed, 15 Oct 2025 13:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/custom-port-support-in-azure-database-for-mysql-flexible-server/ba-p/4460248</guid>
      <dc:creator>Elendil</dc:creator>
      <dc:date>2025-10-15T13:00:00Z</dc:date>
    </item>
    <item>
      <title>September 2025 Recap: Azure Database for MySQL</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/september-2025-recap-azure-database-for-mysql/ba-p/4459546</link>
      <description>&lt;P&gt;Join us live on our YouTube channel on October 15, 2025 &lt;SPAN data-contrast="none"&gt;for an exclusive webinar where we’ll dive deeper into the latest &lt;A href="https://learn.microsoft.com/azure/mysql/" target="_blank"&gt;Azure Database for MySQL&lt;/A&gt; updates and answer your questions!&lt;/SPAN&gt;&amp;nbsp;&lt;A class="lia-external-url" href="https://youtu.be/kNiZbCh_W2E" target="_blank" rel="noopener"&gt;Watch it live here&lt;/A&gt;.&lt;/P&gt;
&lt;H3&gt;Support for In-Place Major Version Upgrade from 8.0 to 8.4&lt;/H3&gt;
&lt;P&gt;We previously &lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/adformysql/azure-database-for-mysql-8-4-now-generally-available/4448971" data-lia-auto-title="announced" data-lia-auto-title-active="0" target="_blank"&gt;announced&lt;/A&gt; that Azure Database for MySQL version 8.4 is now generally available. We’re now happy to share that&amp;nbsp;&lt;STRONG&gt;in-place major version upgrade is supported&lt;/STRONG&gt; for MySQL servers from &lt;STRONG&gt;8.0 to 8.4&lt;/STRONG&gt;. If you’re currently on &lt;STRONG&gt;MySQL 5.7&lt;/STRONG&gt;, you’ll first need to perform an in-place upgrade from &lt;STRONG&gt;5.7 to 8.0&lt;/STRONG&gt;, and then upgrade from &lt;STRONG&gt;8.0 to 8.4&lt;/STRONG&gt;. &lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/mysql/flexible-server/how-to-upgrade" target="_blank" rel="noopener"&gt;Learn more&lt;/A&gt;.&lt;/P&gt;
&lt;H3&gt;Near-Zero-Downtime Maintenance - General Availability&lt;/H3&gt;
&lt;P&gt;You can now take advantage of &lt;STRONG&gt;near-zero-downtime maintenance&lt;/STRONG&gt; for Azure Database for MySQL with high availability (HA) enabled. This capability is now generally available and is supported by our new HA architecture based on a dedicated Azure Standard Load Balancer design. Thanks to the dedicated Standard Load Balancer design, maintenance is now faster and no longer impacted by client-side DNS caching, which previously caused brief connection drops in some scenarios. This enhancement ensures that your mission-critical workloads remain continuously available, &lt;STRONG&gt;even during infrastructure updates&lt;/STRONG&gt;, helping you meet strict uptime requirements and maintain operational continuity.&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/concepts-maintenance#near-zero-downtime-maintenance" target="_blank" rel="noopener"&gt;Learn more&lt;/A&gt;.&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;We would love your feedback&lt;/H3&gt;
&lt;P&gt;We look forward to your feedback as you explore these enhancements and continue building with Azure Database for MySQL. If you have any suggestions or queries about our service, please let us know by emailing us at &lt;A class="lia-external-url" href="mailto:AskAzureDBforMySQL@service.microsoft.com" target="_blank" rel="noopener"&gt;AskAzureDBforMySQL@service.microsoft.com&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;To learn more about what's new with Flexible Server, see&amp;nbsp;&lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/mysql/flexible-server/whats-new" target="_blank" rel="noopener"&gt;What's new in Azure Database for MySQL - Flexible Server&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Stay tuned for more updates and announcements by following us on social media: &lt;A class="lia-external-url" href="https://aka.ms/mysql-yt-subscribe" target="_blank" rel="noopener"&gt;YouTube&lt;/A&gt;&amp;nbsp;|&amp;nbsp;&lt;A class="lia-external-url" href="https://www.linkedin.com/company/azure-database-for-mysql/" target="_blank" rel="noopener"&gt;LinkedIn&lt;/A&gt;&amp;nbsp;|&amp;nbsp;&lt;A class="lia-external-url" href="https://twitter.com/AzureDBMySQL" target="_blank" rel="noopener"&gt;X&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Thanks for being part of our community!&lt;/P&gt;</description>
      <pubDate>Thu, 09 Oct 2025 13:55:16 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/september-2025-recap-azure-database-for-mysql/ba-p/4459546</guid>
      <dc:creator>karlaescobar</dc:creator>
      <dc:date>2025-10-09T13:55:16Z</dc:date>
    </item>
    <item>
      <title>August 2025 Recap: Azure Database for MySQL</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/august-2025-recap-azure-database-for-mysql/ba-p/4450777</link>
      <description>&lt;P&gt;&lt;SPAN data-contrast="none"&gt;We're&amp;nbsp;excited to share a summary of the &lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/mysql/" target="_blank" rel="noopener"&gt;Azure Database for MySQL&lt;/A&gt; updates for the month of August 2025. &lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Join us live on our YouTube channel on September 11, 2025&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;for an exclusive&amp;nbsp;webinar&amp;nbsp;where&amp;nbsp;we’ll&amp;nbsp;dive deeper into these updates and answer your questions!&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;A class="lia-external-url" href="https://youtu.be/JILm3xoyXPU" target="_blank" rel="noopener"&gt;Watch it live here.&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4 aria-level="3"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 3"&gt;Azure Database for MySQL 8.4 - General Availability&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;We’re&amp;nbsp;excited to announce that&amp;nbsp;Azure Database for MySQL&amp;nbsp;now supports&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;MySQL 8.4&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&amp;nbsp;in&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;General Availability (GA)&lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;. This means you can create new MySQL 8.4 servers on Azure&amp;nbsp;fully supported for production&amp;nbsp;workloads. MySQL 8.4 is a long-term supported release from the MySQL community, bringing the latest features and improvements while emphasizing stability. With Azure’s managed service, you get these new capabilities&amp;nbsp;backed by Azure’s enterprise-grade reliability and support. In&amp;nbsp;short, MySQL 8.4 GA opens the door for you to upgrade your databases and future-proof your MySQL environment on Azure.&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/mysql/concepts-version-policy#supported-mysql-versions" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Learn more.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4 aria-level="3"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 3"&gt;Cross subscription and cross resource-group placement in restore/replica provisioning workflow&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335557856&amp;quot;:16777215,&amp;quot;335559738&amp;quot;:450,&amp;quot;335559739&amp;quot;:270}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;You can now restore a server or create a read replica in a different subscription and resource group in Azure Database for MySQL – Flexible Server. This enhancement offers greater flexibility for cross-environment restores, resource organization, and subscription-level separation, helping meet governance and operational requirements&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/how-to-restore-server-portal" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;L&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;earn mor&lt;/SPAN&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;e&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4&gt;&lt;SPAN data-contrast="none"&gt;Ability to&amp;nbsp;delete&amp;nbsp;on-demand backup&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;You can now&amp;nbsp;delete&amp;nbsp;on-demand backups in Azure Database for MySQL – Flexible Server, giving you greater control over backup management and storage costs. This feature allows you to remove on-demand backups that are no longer needed, helping&amp;nbsp;maintain&amp;nbsp;a cleaner backup inventory and&amp;nbsp;optimize&amp;nbsp;resource usage.&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/how-to-trigger-on-demand-backup#trigger-on-demand-backup" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Learn more.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4&gt;&lt;SPAN data-contrast="none"&gt;Unlocking Regional Insights with the Location Based Capabilities REST API&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Managing MySQL Flexible Server deployments across Azure regions often means choosing the right Azure region for your MySQL deployment is critical. The new Location-Based Capability Set – List API helps you:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="none"&gt;Retrieve real-time, region-specific capabilities.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="none"&gt;Compare SKUs, storage options, backup retention, and HA configurations.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="none"&gt;Integrate insights into automation pipelines for smarter deployments.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;This API empowers architects and developers to make informed decisions, reduce misconfigurations, and accelerate deployment cycles.&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://techcommunity.microsoft.com/blog/adformysql/unlocking-regional-insights-with-the-location-based-capabilities-rest-api/4445785" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Learn more&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="none"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;Stay Connected&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;We look forward to your feedback as you explore these enhancements and continue building with Azure Database for MySQL. If you have any suggestions or queries about our service, please let us know by emailing us at&amp;nbsp;&lt;A href="mailto:AsAzureDBforMySQL@service.microsoft.com" target="_blank" rel="noopener"&gt;AskAzureDBforMySQL@service.microsoft.com.&amp;nbsp;&lt;/A&gt;You can also submit product ideas and feedback at Azure Database for MySQL Community &lt;A class="lia-external-url" href="https://feedback.azure.com/d365community/forum/47b1e71d-ee24-ec11-b6e6-000d3a4f0da0" target="_blank" rel="noopener"&gt;forum&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;To learn more about what's new with Flexible Server, see&amp;nbsp;&lt;A href="https://learn.microsoft.com/azure/mysql/flexible-server/whats-new" target="_blank" rel="noopener"&gt;What's new in Azure Database for MySQL - Flexible Server&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Stay tuned for more updates and announcements by following us on social media:&amp;nbsp;&lt;A href="https://aka.ms/mysql-yt-subscribe" target="_blank" rel="noopener"&gt;YouTube&lt;/A&gt;&amp;nbsp;|&amp;nbsp;&lt;A href="https://www.linkedin.com/company/azure-database-for-mysql/" target="_blank" rel="noopener"&gt;LinkedIn&lt;/A&gt;&amp;nbsp;|&amp;nbsp;&lt;A href="https://twitter.com/AzureDBMySQL" target="_blank" rel="noopener"&gt;X&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Take care, and thanks for being part of our community!&lt;/P&gt;</description>
      <pubDate>Thu, 04 Sep 2025 13:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/august-2025-recap-azure-database-for-mysql/ba-p/4450777</guid>
      <dc:creator>Vandhana_Mehta</dc:creator>
      <dc:date>2025-09-04T13:00:00Z</dc:date>
    </item>
    <item>
      <title>Azure Database for MySQL 8.4 Now Generally Available</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/azure-database-for-mysql-8-4-now-generally-available/ba-p/4448971</link>
      <description>&lt;P&gt;&lt;STRONG&gt;Note (January 2026):&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/STRONG&gt;The &lt;EM&gt;Business-Critical&lt;/EM&gt;&amp;nbsp;service tier referenced in this blog has been rebranded to &lt;EM&gt;Memory Optimized&lt;/EM&gt;. This change reflects updated naming only; the underlying performance characteristics and use cases described here continue to apply.&lt;/P&gt;
&lt;P&gt;We’re excited to announce that &lt;STRONG&gt;Azure Database for MySQL – Flexible Server&lt;/STRONG&gt; now supports &lt;STRONG&gt;MySQL 8.4&lt;/STRONG&gt; in &lt;STRONG&gt;General Availability (GA)&lt;/STRONG&gt;. This means you can create new MySQL 8.4 servers on Azure &lt;STRONG&gt;fully supported for production&lt;/STRONG&gt; workloads. MySQL 8.4 is a long-term supported release from the MySQL community, bringing the latest features and improvements while emphasizing stability. With Azure’s managed service, you get these new capabilities &lt;STRONG&gt;backed by Azure’s enterprise-grade reliability and support&lt;/STRONG&gt;. In short, MySQL 8.4 GA opens the door for you to upgrade your databases and future-proof your MySQL environment on Azure.&lt;/P&gt;
&lt;H2&gt;Why Upgrade to MySQL 8.4?&lt;/H2&gt;
&lt;P&gt;&lt;STRONG&gt;Avoid End-of-Support Deadlines:&lt;/STRONG&gt; If you’re running MySQL 5.7 or 8.0 on Azure, planning an upgrade is crucial. &lt;STRONG&gt;MySQL 5.7’s community support ended on October 31, 2023&lt;/STRONG&gt;, and &lt;STRONG&gt;MySQL 8.0’s end-of-life is April 30, 2026&lt;/STRONG&gt;. Azure’s standard support for these versions extends slightly beyond those dates (until March 31, 2026 for 5.7, and May 31, 2026 for 8.0). After those points, servers on 5.7 or 8.0 enter &lt;STRONG&gt;Extended Support&lt;/STRONG&gt;, a paid support phase that provides critical fixes for up to three years (through 2029). Running your database in Extended Support means additional costs. Upgrading to MySQL 8.4 now ensures your database stays &lt;STRONG&gt;within standard support&lt;/STRONG&gt; for years to come, sparing you the hassle of last-minute upgrades or extended support fees.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Benefits of MySQL 8.4:&lt;/STRONG&gt; MySQL 8.4 is essentially an evolution of 8.0, so it brings numerous performance enhancements, security patches, and new SQL features that have been introduced since 8.0. Because it’s an LTS release, MySQL 8.4 is designed for stability – making it an ideal target for enterprises. Most applications that work on MySQL 8.0 will be compatible with 8.4 with little to no changes, but with 8.4 you gain improvements in areas like replication, query optimization, and JSON handling (among others) that can boost your application’s efficiency. Moreover, by standardizing on 8.4, you align with the version that will receive updates well into the future. In summary, upgrading means &lt;STRONG&gt;better reliability, availability, and security now, and assured support longevity&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H2&gt;Upgrading from MySQL 8.0 (In-Place Upgrade)&lt;/H2&gt;
&lt;P&gt;For current Azure Database for MySQL &lt;STRONG&gt;8.0&lt;/STRONG&gt; users, moving to 8.4 is straightforward, thanks to our &lt;STRONG&gt;in-place major version upgrade&lt;/STRONG&gt; capability. You can upgrade your existing 8.0 server to 8.4 &lt;STRONG&gt;on the same server instance&lt;/STRONG&gt;, without dumping and restoring data. Here’s how it works:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Upgrade Availability:&lt;/STRONG&gt; If you create a &lt;STRONG&gt;new MySQL 8.0 server&lt;/STRONG&gt; today (post-GA), the option to upgrade to 8.4 is available &lt;STRONG&gt;immediately&lt;/STRONG&gt; in the Azure portal or CLI. For &lt;STRONG&gt;existing 8.0 servers&lt;/STRONG&gt; (those created before this GA release), the upgrade &lt;STRONG&gt;capability will become available after your next scheduled maintenance window&lt;/STRONG&gt;. The September 2025 platform update is enabling this feature across all regions. &lt;EM&gt;Note:&lt;/EM&gt; Azure will &lt;STRONG&gt;not auto-upgrade&lt;/STRONG&gt; your server during that maintenance; it only enables the new version as an option. You remain in control of when to perform the major version upgrade.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Performing the Upgrade:&lt;/STRONG&gt; Once the feature is enabled for your server, you can initiate the upgrade via the Azure portal, Azure CLI, or PowerShell. The process involves a downtime (the server will be taken offline and restarted on MySQL 8.4), so plan to execute during a maintenance window or low-traffic period. We strongly recommend taking a backup or snapshot before upgrading, as a precaution. For a step-by-step guide and best practices (including how to minimize downtime by using read replicas for the upgrade), refer to the official Azure documentation on &lt;A href="https://learn.microsoft.com/azure/mysql/flexible-server/how-to-upgrade%5b%5e1" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/azure/mysql/flexible-server/how-to-upgrade&lt;/A&gt;. In most cases, upgrading from 8.0 to 8.4 is completed within several minutes. After upgrade, your server retains the same endpoints, configuration, and data – just running on the new MySQL 8.4 engine.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Upgrading from MySQL 5.7 (Two-Step Path)&lt;/H2&gt;
&lt;P&gt;Upgrading from &lt;STRONG&gt;MySQL 5.7&lt;/STRONG&gt; to 8.4 requires a two-step approach, since a direct jump is not supported:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;First upgrade 5.7 to 8.0:&lt;/STRONG&gt; Azure MySQL Flexible Server supports in-place major upgrade from 5.7 to 8.0. This moves your server to a supported major version and is a necessary intermediate step (you cannot skip major versions in one go). MySQL 8.0 introduced some changes from 5.7 (for example, stricter SQL modes and a new default authentication plugin), so after upgrading to 8.0, test your application and fix any compatibility issues. Azure’s standard support for 5.7 runs until March 31, 2026, so you should aim to complete this step before then.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Then upgrade 8.0 to 8.4:&lt;/STRONG&gt; With your server now on 8.0, you can use the in-place upgrade to 8.4 as described above. All Azure 8.0 servers will have the 8.4 upgrade option by the end of the next maintenance cycle (after the feature rollout in September 2025). Plan to perform the 8.0 → 8.4 upgrade at a convenient time, ideally well before MySQL 8.0’s support winds down in 2026. This final step ensures you’re on the latest GA version and out of the legacy support cycle.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Some customers may choose to &lt;STRONG&gt;migrate 5.7 to 8.4&lt;/STRONG&gt; by creating a new 8.4 server and importing data (using dump and restore or Azure Database Migration Service). This approach can be useful if you want to reorganize your environment or test in parallel. However, it will likely involve more downtime than the sequential in-place upgrades. Evaluate which method fits your needs – either way, &lt;STRONG&gt;now is the time to start&lt;/STRONG&gt;, given that free support for 5.7 ends in less than two years.&lt;/P&gt;
&lt;H2&gt;Support Timeline Summary and Next Steps&lt;/H2&gt;
&lt;P&gt;To recap the support timelines and why upgrading matters:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;MySQL 5.7:&lt;/STRONG&gt; &lt;EM&gt;Community EOL:&lt;/EM&gt; Oct 31, 2023. &lt;EM&gt;Azure standard support until:&lt;/EM&gt; &lt;STRONG&gt;March 31, 2026&lt;/STRONG&gt;. After that, servers enter extended support (critical fixes only, with additional charges) until March 31, 2029.&amp;nbsp;&lt;STRONG&gt;Action:&lt;/STRONG&gt; Plan to upgrade off 5.7 before Q1 2026 to stay within standard support.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;MySQL 8.0:&lt;/STRONG&gt; &lt;EM&gt;Community EOL:&lt;/EM&gt; Apr 30, 2026. &lt;EM&gt;Azure standard support until:&lt;/EM&gt; &lt;STRONG&gt;May 31, 2026&lt;/STRONG&gt;. Extended support then runs to May 31, 2029.&amp;nbsp;&lt;STRONG&gt;Action:&lt;/STRONG&gt; Begin upgrading 8.0 instances to 8.4 in the coming months, rather than waiting until the last moment. The upgrade feature is available now (or after one maintenance cycle for older servers).&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;MySQL 8.4:&lt;/STRONG&gt; &lt;EM&gt;GA start:&lt;/EM&gt; Sep 2025 (now). This is the &lt;STRONG&gt;recommended target&lt;/STRONG&gt; for all MySQL deployments on Azure going forward. It will be fully supported on Azure well beyond 2026, receiving regular updates and improvements as part of the Azure service. &lt;STRONG&gt;Action:&lt;/STRONG&gt; Deploy new databases on 8.4 and upgrade existing 5.7/8.0 databases to 8.4 when feasible, to benefit from the latest features and long-term support.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Next Steps:&lt;/STRONG&gt; Getting started with MySQL 8.4 on Azure is easy. You can create a new Azure Database for MySQL &lt;STRONG&gt;8.4&lt;/STRONG&gt; server from the Azure Portal or via CLI today. For existing servers, review the &lt;A href="https://learn.microsoft.com/azure/mysql/flexible-server/how-to-upgrade" target="_blank" rel="noopener"&gt;https://learn.microsoft.com/azure/mysql/flexible-server/how-to-upgrade&lt;/A&gt; to choose your upgrade method (in-place with some downtime vs. replica method for minimal downtime) and schedule a time for the upgrade.&lt;/P&gt;
&lt;P&gt;By moving to Azure Database for MySQL 8.4, you’re investing in a more &lt;STRONG&gt;stable, performant, and future-proof&lt;/STRONG&gt; foundation for your applications. We’re thrilled to see customers embrace MySQL 8.4, and we’re committed to making your upgrade process as smooth as possible. &lt;STRONG&gt;Upgrade with confidence&lt;/STRONG&gt;, and leverage the power of MySQL 8.4 in Azure to drive your business forward!&lt;/P&gt;
&lt;P&gt;For more information or to provide feedback, contact &lt;A href="mailto:AskAzureDBforMySQL@service.microsoft.com" target="_blank" rel="noopener" data-linktype="external"&gt;Ask Azure Database For MySQL&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href="#community--1-_ftnref1" target="_blank" rel="noopener" name="_ftn1"&gt;&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 27 Jan 2026 08:49:51 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/azure-database-for-mysql-8-4-now-generally-available/ba-p/4448971</guid>
      <dc:creator>Elendil</dc:creator>
      <dc:date>2026-01-27T08:49:51Z</dc:date>
    </item>
    <item>
      <title>Unlocking Regional Insights with the Location Based Capabilities REST API</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/unlocking-regional-insights-with-the-location-based-capabilities/ba-p/4445785</link>
      <description>&lt;P aria-level="2"&gt;&lt;SPAN data-contrast="auto"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;Managing MySQL Flexible Server deployments across Azure regions often means navigating differences in available features, SKUs, storage options, backup retention periods, or high availability configurations. &lt;/SPAN&gt;These variations can directly &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;impact&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt; performance, cost, and resilience, making it critical to choose the right region for each workload. &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;That’s&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt; where &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;the &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/rest/api/mysql/location-based-capability-set/list?view=rest-mysql-2023-12-30&amp;amp;tabs=HTTP" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Location-Based Capability Set – List API&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt; &lt;SPAN data-ccp-parastyle="heading 2"&gt;comes&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt; in, &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;providing&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt; a programmatic way to retrieve up-to-date, region-specific capabilities. With this API, architects and developers can quickly compare offerings across multiple regions, understand which configurations are supported, and align deployment strategies with organizational needs. Instead of relying on static documentation, teams can integrate these insights into automation pipelines, ensuring deployments are &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;optimized&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt; for the latest regional capabilities. This enables informed decision-making, reduces the risk of misconfiguration, and accelerates the design-to-deployment cycle for MySQL Flexible Server workloads in Azure.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H4 aria-level="2"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;What Is This API?&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This endpoint allows you to query the capabilities available for Azure Database for MySQL in a specific subscription and location. It's accessed with:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;PRE&gt;&lt;STRONG&gt;&lt;SPAN data-ccp-props="{}"&gt;&lt;SPAN data-contrast="auto"&gt;GET &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.DBforMySQL/locations/{locationName}/capabilitySets?api-version=2023-12-30&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;You can find the subscription ID from&amp;nbsp;&lt;A class="lia-external-url" href="https://portal.azure.com/#view/Microsoft_Azure_Billing/SubscriptionsBladeV2" target="_blank" rel="noopener"&gt;Subscriptions&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;You can find the list of regions supported by Azure Database for MySQL Flexible Server from &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/overview#azure-regions" target="_blank" rel="noopener"&gt;Azure regions&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;The API returns comprehensive details such as supported high-availability modes (e.g. zone redundancy), server editions (like Burstable), storage configurations, zone placement, and geo-backup support.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;A typical response from this API includes:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;value&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;:&lt;/STRONG&gt; An array of &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Capability&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; objects for each region.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;Inside each&amp;nbsp;&lt;STRONG&gt;Capability&lt;/STRONG&gt;:&lt;SPAN style="color: rgb(30, 30, 30);" data-ccp-props="{}"&gt; &lt;/SPAN&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;STRONG&gt;id, name, and type:&lt;/STRONG&gt; Azure Resource Manager metadata identifiers.&amp;nbsp;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;properties.supportedFlexibleServerEditions&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;:&lt;/STRONG&gt; Lists available editions with attributes:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;name (e.g. “GeneralPurpose”), &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;defaultSku, defaultStorageSize&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;supportedStorageEditions:&lt;/STRONG&gt; Details like name, minStorageSize, maxStorageSize, minBackupRetentionDays, maxBackupRetentionDays, minBackupIntervalHours, maxBackupIntervalHours&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;supportedSkus&lt;/STRONG&gt;: Details like vCores, supportedZones, supportedHAMode, etc.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;&lt;SPAN data-contrast="auto"&gt;properties.supportedServerVersions&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);" data-contrast="auto"&gt;&lt;STRONG&gt;:&lt;/STRONG&gt; Array of supported MySQL server versions (name field only).&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="color: rgb(30, 30, 30);" data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;properties.supportedGeoBackupRegions&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;:&lt;/STRONG&gt; Regions eligible for geo-backup.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;systemData&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;: &lt;/STRONG&gt;Metadata with creation and last-modified timestamps and user/identity info.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;nextLink&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;:&lt;/STRONG&gt; For paging through multiple capability sets&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4 aria-level="2"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;Interpreting Empty or Missing Values&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;If fields like supportedServerVersions or supportedFlexibleServerEditions appear empty (such as empty arrays), it means your &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;subscription currently lacks access&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; to create servers with those configurations in the selected region. This limitation is not an error; it reflects access or availability restrictions.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Resolution:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt; File a &lt;/SPAN&gt;&lt;A href="https://ms.portal.azure.com/#blade/Microsoft_Azure_Support/HelpAndSupportBlade" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;support request&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt; with Azure to enable access for your subscription in the chosen region.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;H4 aria-level="2"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;Why This API Matters&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Deployment Validation&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;:&lt;/STRONG&gt; Before creating a server, you can verify if your subscription supports specific configurations, such as editions, zones, or server versions in the chosen region to avoid deployment errors.&lt;/SPAN&gt; &lt;SPAN data-contrast="auto"&gt;For example, absence of SKUs in a region can result in failures like "No available SKUs in this location".&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);" data-contrast="auto"&gt;Automation &amp;amp; Infrastructure as Code&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style="color: rgb(30, 30, 30);" data-contrast="auto"&gt;&lt;STRONG&gt;:&lt;/STRONG&gt; Embedding regional capability checks in automated deployment pipelines ensures that infrastructure templates only target supported configurations, making scripts resilient and reducing manual intervention.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Enhanced Resilience Planning&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;:&lt;/STRONG&gt; You can programmatically detect if your region supports features like zone-redundant high availability, enabling better design for fault-tolerance across availability zones.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Improved Developer Experience&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;:&lt;/STRONG&gt; Developers gain clarity on feature availability per region. Instead of guessing or trial and error, they can accurately query supported server versions or editions before launching servers.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Pre-Emptive Error Handling&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;:&lt;/STRONG&gt; Rather than encountering obscure deployment errors, teams can pre-check and interpret empty or unavailable values, knowing that empty lists mean a lack of access, and that a support request may be needed to enable provisioning in that region.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/OL&gt;
&lt;H4 aria-level="2"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;Scripts for &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;pre-&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;deployment validation&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;Using this API in deployment automation enables region-aware, resilient, and standards-compliant deployment. The following scripts (Bash and PowerShell) can be used to programmatically query a region’s Azure Database for MySQL capabilities, extract key configuration details such as supported server versions and high-availability modes, and alert when your subscription lacks access in that region (prompting a support request).&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt; These scripts &lt;/SPAN&gt;&lt;SPAN data-contrast="none"&gt;enable easier integration into automated workflows or deployment pipelines.&amp;nbsp;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H5&gt;&lt;SPAN data-ccp-props="{}"&gt;Bash Script&amp;nbsp;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/azure-mysql/blob/master/scripts/GetLocationCapabilities.sh" target="_blank" rel="noopener"&gt;&lt;SPAN data-ccp-props="{}"&gt;GetLocationCapabilities.sh&amp;nbsp;&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;#!/usr/bin/env bash
set -euo pipefail

# Usage message function
usage() {
  echo "Usage: $0 --subscriptionId &amp;lt;subscriptionId&amp;gt; --location &amp;lt;location&amp;gt;"
  exit 1
}

# Parse named parameters using GNU getopt
ARGS=$(getopt -o '' --long subscriptionId:,location: -n "$0" -- "$@") || usage
eval set -- "$ARGS"

while true; do
  case "$1" in
    --subscriptionId)
      subscriptionId="$2"
      shift 2
      ;;
    --location)
      location="$2"
      shift 2
      ;;
    --)
      shift
      break
      ;;
    *)
      usage
      ;;
  esac
done

# Validate required arguments
if [[ -z "${subscriptionId-}" || -z "${location-}" ]]; then
  echo "Error: Missing required parameters."
  usage
fi

apiVersion="2023-12-30"
uri="/subscriptions/${subscriptionId}/providers/Microsoft.DBforMySQL/locations/${location}/capabilitySets?api-version=${apiVersion}"

echo "INFO: Calling API - GET $uri"

# Execute API call with logging
if response=$(az rest --method GET --uri "$uri" --output json --only-show-errors); then
  echo "INFO: API call succeeded"
else
  echo "ERROR: API call failed"
  exit 1
fi

data=$(echo "$response" | jq .)

# Check for 'value' array
if [[ "$(echo "$data" | jq '.value | length')" -lt 1 ]]; then
  echo "WARN: No capabilitySets returned — your subscription may lack access in region '$location'. Consider filing a support request."
  exit 0
fi

echo -e "\nSupported MySQL server versions in region '$location':"
supported_versions=$(echo "$response" | jq -r '.value[0].properties.supportedServerVersions // [] | .[]? | .name // empty')
if [[ -n "$supported_versions" ]]; then
  echo "$supported_versions" | sed 's/^/- /'
else
  echo "  [Warning] No supported server versions found; your subscription may lack access in this region. Consider filing a support request."
fi

echo -e "\nAvailable Flexible Server editions and HA modes:"
editions=$(echo "$response" | jq -c '.value[0].properties.supportedFlexibleServerEditions // [] | .[]?')
if [[ -n "$editions" ]]; then
  while IFS= read -r edition; do
    name=$(jq -r '.name' &amp;lt;&amp;lt;&amp;lt; "$edition")
    echo "Edition: $name"
    jq -c '.supportedSkus[]?' &amp;lt;&amp;lt;&amp;lt; "$edition" | while IFS= read -r sku; do
      sku_name=$(jq -r '.name' &amp;lt;&amp;lt;&amp;lt; "$sku" )
      hamodes=$(jq -r '.supportedHAMode | join(", ")' &amp;lt;&amp;lt;&amp;lt; "$sku")
      echo "  SKU Name: $sku_name; HA Modes: $hamodes"
    done
  done &amp;lt;&amp;lt;&amp;lt; "$editions"
else
  echo "  [Warning] No server editions found; your subscription may lack access in this region. Consider filing a support request."
fi&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Usage Example&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;PRE&gt;&lt;SPAN data-contrast="auto"&gt;./GetLocationCapabilities.sh --subscriptionId 01234567-89ab-cdef-0123-456789abcdef --location eastus&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;H5&gt;&lt;SPAN data-contrast="none"&gt;PowerShell Script&lt;/SPAN&gt;&lt;/H5&gt;
&lt;P&gt;&lt;A class="lia-external-url" href="https://github.com/Azure/azure-mysql/blob/master/scripts/GetLocationCapabilities.ps1" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-contrast="auto"&gt;GetLocationCapabilities.ps1&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;
&lt;LI-CODE lang="powershell"&gt;param(
  [Parameter(Mandatory = $true)][string]$SubscriptionId,
  [Parameter(Mandatory = $true)][string]$Location
)

Connect-AzAccount -Subscription $SubscriptionId | Out-Null

$apiVersion = "2023-12-30"
$uri = "/subscriptions/$SubscriptionId/providers/Microsoft.DBforMySQL/locations/$Location/capabilitySets?api-version=$apiVersion"

# Log request details
Write-Host "INFO: Calling API - GET $uri" -ForegroundColor Cyan

try {
    $response = Invoke-AzRestMethod -Method GET -Path $uri -ErrorAction Stop
    Write-Host "INFO: API call succeeded" -ForegroundColor Green
}
catch {
    Write-Host " ** REST API call failed **" -ForegroundColor Red
    Write-Host "Error Message: $($_.Exception.Message)"
    if ($_.Exception.Response) {
        # Attempt to extract HTTP status if available
        $status = $_.Exception.Response.StatusCode.value__ 2&amp;gt;$null
        if ($status) { Write-Host "Status Code: $status" }
    }
    return
}

$data = $response.Content | ConvertFrom-Json
# Check if 'value' exists and has at least one item
if (-not $data.value -or $data.value.Count -eq 0) {
    Write-Warning "No capabilitySets returned in the response. You may not have access in region '$Location'. Consider filing a support request."
    return
}

$capability = $data.value[0]

# Supported server versions
$supportedVersions = $capability.properties.supportedServerVersions | Select-Object -ExpandProperty name
Write-Host "`nSupported MySQL server versions in '$Location':"
if ($supportedVersions) {
    $supportedVersions | ForEach-Object { Write-Host "- $_" }
} else {
    Write-Warning "No supported server versions available; your subscription may lack access in this region. Consider filing a support request."
}

# Flexible Server editions &amp;amp; HA modes
Write-Host "`nAvailable Flexible Server editions and HA modes:"
$editions = $capability.properties.supportedFlexibleServerEditions
if ($editions) {
    foreach ($edition in $editions) {
        Write-Host "`nEdition: $($edition.name)"
        foreach ($sku in $edition.supportedSkus) {
            $haModes = $sku.supportedHAMode -join ", "
            Write-Host "  SKU Name: $($sku.name); HA Modes: $haModes"
        }
    }
} else {
    Write-Warning "No server editions available; your subscription may lack access in this region. Consider filing a support request."
}&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Usage Example&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;PRE&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-contrast="auto"&gt;.\GetLocationCapabilities.ps1 -SubscriptionId "01234567-89ab-cdef-0123-456789abcdef" -Location "eastus"&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="none"&gt;These PowerShell and Bash scripts help you quickly check Azure Database for MySQL capabilities in a region to prevent deployment issues and ensure reliable provisioning workflows. You can m&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{}"&gt;odify these scripts to extract the required information from the API response.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Feel free to comment below or write to us with your feedback and queries at &lt;/SPAN&gt;&lt;A href="mailto:AskAzureDBforMySQL@service.microsoft.com" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;AskAzureDBforMySQL@service.microsoft.com&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 21 Aug 2025 05:45:03 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/unlocking-regional-insights-with-the-location-based-capabilities/ba-p/4445785</guid>
      <dc:creator>ramkumarchan</dc:creator>
      <dc:date>2025-08-21T05:45:03Z</dc:date>
    </item>
    <item>
      <title>Announcing Extended Support for Azure Database for MySQL</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/announcing-extended-support-for-azure-database-for-mysql/ba-p/4442924</link>
      <description>&lt;BLOCKQUOTE&gt;
&lt;P&gt;ℹ️ &lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Important Note (March 2026):&amp;nbsp;&lt;/STRONG&gt;Based on customer feedback requesting additional time to complete major version upgrades, we have &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;extended the grace period before extended support billing begins&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;for Azure Database for MySQL:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:279}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;MySQL 5.7&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;: Extended support billing start date&amp;nbsp;moved&amp;nbsp;from&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;April 1,&amp;nbsp;2026&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;to&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;August 1, 2026&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:279}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI aria-setsize="-1" data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;multilevel&amp;quot;}" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;MySQL 8.0&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;: Extended support billing start date&amp;nbsp;moved&amp;nbsp;from&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;June 1,&amp;nbsp;2026&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;&amp;nbsp;to&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;January 1, 2027&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:279}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;This update&amp;nbsp;provides&amp;nbsp;customers additional time to plan,&amp;nbsp;validate, and complete upgrades while&amp;nbsp;maintaining&amp;nbsp;service continuity and security. We continue to recommend upgrading to a supported MySQL version as early as possible to avoid extended support charges and benefit from the latest improvements.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559740&amp;quot;:279}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As part of our ongoing commitment to customer success and operational continuity, we are introducing &lt;STRONG&gt;Extended Support for Azure Database for MySQL as a paid offering&lt;/STRONG&gt; designed to help customers continue running workloads on older MySQL versions with confidence, even after community support ends.&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Why Extended Support?&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;We initially planned to retire support for&amp;nbsp;&lt;STRONG&gt;MySQL 5.7&lt;/STRONG&gt;&amp;nbsp;in Azure by&amp;nbsp;&lt;STRONG&gt;September 2025&lt;/STRONG&gt;, aligning with the community’s end-of-life (EOL) timeline. However, after engaging with many of our customers, we learned that a significant number of users prefer to remain on MySQL 5.7 due to application dependencies and stability considerations. At the same time, &lt;STRONG&gt;MySQL 8.0&lt;/STRONG&gt;&amp;nbsp;is also approaching its community EOL in 2026.&lt;/P&gt;
&lt;P&gt;To support customers through these transitions, we’re launching&amp;nbsp;&lt;STRONG&gt;Extended Support as&lt;/STRONG&gt; a paid feature to provide our customers with additional time and flexibility to plan and execute upgrades, without compromising on security, reliability, or support.&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;What’s Included in Extended Support?&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;With Extended Support, customers will continue to receive:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;SLA-backed availability&lt;/STRONG&gt;: Your MySQL servers remain covered by Azure’s enterprise-grade SLA.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Security updates&lt;/STRONG&gt;: We will continue to deliver critical security patches to help protect your workloads.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Technical support&lt;/STRONG&gt;: Azure support engineers will remain available to assist with troubleshooting and operational issues.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;&lt;STRONG&gt;Seamless and Predictable Experience&lt;/STRONG&gt;&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Automatic enrollment&lt;/STRONG&gt;: Once a MySQL version reaches community EOL, Azure-managed servers running that version will automatically enter Extended Support—no action is required from customers.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Grace period&lt;/STRONG&gt;: Billing for Extended Support will begin&amp;nbsp;&lt;STRONG&gt;one month after&lt;/STRONG&gt;&amp;nbsp;the community EOL date, giving customers time to plan.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Pay-as-you-go pricing&lt;/STRONG&gt;: Extended Support will be billed&amp;nbsp;&lt;STRONG&gt;per vCore per hour&lt;/STRONG&gt;, with no upfront commitment.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Automatic exit&lt;/STRONG&gt;: Once a server is upgraded to a supported community version, it will automatically exit Extended Support and billing will stop.&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5&gt;&lt;STRONG&gt;Pricing and Availability&lt;/STRONG&gt;&lt;/H5&gt;
&lt;P&gt;The pricing for Extended Support will be announced by Q3 2025 and will be available via the &lt;A href="https://azure.microsoft.com/en-us/pricing/calculator/" target="_blank" rel="noopener"&gt;Azure pricing calculator&amp;nbsp;&lt;/A&gt;at that time.&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Support Timeline for MySQL 5.7 and 8.0&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;ℹ️&amp;nbsp;&lt;STRONG&gt;Important note: Please refer to &lt;A href="https://learn.microsoft.com/en-us/azure/mysql/concepts-version-policy#major-version-retirement-policy" target="_blank" rel="noopener"&gt;Version Support Policy | Microsoft Learn&lt;/A&gt; for latest extended support timeline.&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class="styles_lia-table-wrapper__h6Xo9 styles_table-responsive__MW0lN"&gt;&lt;table class="lia-background-color-16 lia-border-color-20" border="1" style="border-width: 1px;"&gt;&lt;thead&gt;&lt;tr&gt;&lt;td class="lia-border-color-20"&gt;
&lt;P&gt;&lt;STRONG&gt;Version&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-border-color-20"&gt;
&lt;P&gt;&lt;STRONG&gt;Azure Support Start Date&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-border-color-20"&gt;
&lt;P&gt;&lt;STRONG&gt;Community Retirement Date&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-border-color-20"&gt;
&lt;P&gt;&lt;STRONG&gt;Azure Standard Support End Date&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-border-color-20"&gt;
&lt;P&gt;&lt;STRONG&gt;Azure Extended Support Start Date&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-border-color-20"&gt;
&lt;P&gt;&lt;STRONG&gt;Azure Extended Support End Date&lt;/STRONG&gt;&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="lia-border-color-20"&gt;
&lt;P&gt;MySQL 5.7&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-border-color-20"&gt;
&lt;P&gt;March 20, 2018&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-border-color-20"&gt;
&lt;P&gt;October 31, 2023&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-border-color-20"&gt;
&lt;P&gt;&lt;DEL&gt;March 31, 2026&lt;/DEL&gt;&lt;/P&gt;
&lt;P&gt;July 31, 2026&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-border-color-20"&gt;
&lt;P&gt;&lt;DEL&gt;April 1, 2026&lt;/DEL&gt;&lt;BR /&gt;August 1, 2026&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-border-color-20"&gt;
&lt;P&gt;March 31, 2029&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="lia-border-color-20"&gt;
&lt;P&gt;MySQL 8.0&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-border-color-20"&gt;
&lt;P&gt;December 11, 2019&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-border-color-20"&gt;
&lt;P&gt;April 30, 2026&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-border-color-20"&gt;
&lt;P&gt;&lt;DEL&gt;May 31, 2026&lt;/DEL&gt;&lt;/P&gt;
&lt;P&gt;December 31, 2026&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-border-color-20"&gt;
&lt;P&gt;&lt;DEL&gt;June 1, 2026&lt;/DEL&gt;&lt;/P&gt;
&lt;P&gt;January 1, 2027&lt;/P&gt;
&lt;/td&gt;&lt;td class="lia-border-color-20"&gt;
&lt;P&gt;&lt;DEL&gt;March 31, 2029&lt;/DEL&gt;&lt;/P&gt;
&lt;P&gt;May 31, 2029&lt;/P&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;colgroup&gt;&lt;col style="width: 16.67%" /&gt;&lt;col style="width: 16.67%" /&gt;&lt;col style="width: 16.67%" /&gt;&lt;col style="width: 16.67%" /&gt;&lt;col style="width: 16.67%" /&gt;&lt;col style="width: 16.67%" /&gt;&lt;/colgroup&gt;&lt;/table&gt;&lt;/DIV&gt;
&lt;P&gt;Starting with MySQL 5.7,&amp;nbsp;&lt;STRONG&gt;all future MySQL versions&lt;/STRONG&gt; hosted on Azure will follow this Extended Support model after their respective community EOL dates.&amp;nbsp;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;How to Upgrade&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;If you prefer not to enroll in Extended Support, you can upgrade your Azure Database for MySQL server to a supported major version using one of the following in-place upgrade options:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;STRONG&gt; In-Place upgrade on the same instance&lt;/STRONG&gt;&lt;BR /&gt;Azure Database for MySQL – Flexible Server supports in-place major version upgrades. You can initiate the upgrade directly from the Azure portal, CLI, or ARM templates. This method preserves your server configuration, connection strings, and data, minimizing operational overhead.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt; Validate the upgrade before applying to production&lt;/STRONG&gt;&lt;BR /&gt;To ensure a smooth upgrade experience, you can validate the upgrade using one of the following approaches:&lt;/LI&gt;
&lt;/OL&gt;
&lt;UL&gt;
&lt;LI style="list-style-type: none;"&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Replica-Based validation&lt;/STRONG&gt;:&lt;BR /&gt;Create a read replica of your production server, perform an in-place upgrade on the replica, and run validation tests. Once confirmed, you can either promote the replica or proceed with upgrading the primary server.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;PITR-Based validation&lt;/STRONG&gt;:&lt;BR /&gt;Use point-in-time restore (PITR) to create a new server from a recent backup of your production instance. Perform the upgrade on the restored server and validate your application behavior and performance before upgrading the production server.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H6&gt;&lt;STRONG style="color: rgb(30, 30, 30);"&gt;Best Practices&lt;/STRONG&gt;&lt;/H6&gt;
&lt;UL&gt;
&lt;LI style="list-style-type: none;"&gt;
&lt;UL&gt;
&lt;LI&gt;Always back up your data before initiating an upgrade.&lt;/LI&gt;
&lt;LI&gt;Review MySQL release notes for deprecated features and behavior changes.&lt;/LI&gt;
&lt;LI&gt;Monitor your application closely after the upgrade to ensure stability.&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;For detailed instructions, refer to &lt;A href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/how-to-upgrade" target="_blank" rel="noopener"&gt;Major Version Upgrade - Azure Database for MySQL | Microsoft Learn&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Mar 2026 10:16:43 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/announcing-extended-support-for-azure-database-for-mysql/ba-p/4442924</guid>
      <dc:creator>Elendil</dc:creator>
      <dc:date>2026-03-11T10:16:43Z</dc:date>
    </item>
    <item>
      <title>July 2025 Recap: Azure Database for MySQL</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/july-2025-recap-azure-database-for-mysql/ba-p/4440225</link>
      <description>&lt;P&gt;&lt;SPAN data-olk-copy-source="MailCompose"&gt;&lt;STRONG&gt;Note (January 2026):&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/STRONG&gt;The &lt;EM&gt;Business-Critical&lt;/EM&gt;&amp;nbsp;service tier referenced in this blog has been rebranded to &lt;EM&gt;Memory Optimized&lt;/EM&gt;. This change reflects updated naming only; the underlying performance characteristics and use cases described here continue to apply.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;We're excited to share a summary of the &lt;A class="lia-external-url" href="https://learn.microsoft.com/azure/mysql/" target="_blank" rel="noopener"&gt;Azure Database for MySQL&lt;/A&gt; updates from the last couple of months.&lt;/P&gt;
&lt;P&gt;Join us live on our YouTube channel on August 12, 2025, for an exclusive webinar where we’ll dive deeper into these updates and answer your questions. [&lt;A class="lia-external-url" href="https://youtube.com/live/r9rL6yd2WAI" target="_blank" rel="noopener"&gt;Watch it live here.&lt;/A&gt;]&lt;/P&gt;
&lt;H5&gt;Highlights:&lt;/H5&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;&lt;A href="#community--1-mcp-server" target="_self"&gt;MCP Server for Azure Database for MySQL&lt;/A&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;A href="#community--1-self-heal" target="_self"&gt;One-click Self-Heal (Public Preview)&lt;/A&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;A href="#community--1-extended-support" target="_self"&gt;Extended Support for older MySQL versions&lt;/A&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;A href="#community--1-accelerated-logs" target="_self"&gt;Accelerated logs in General Purpose service tier&lt;/A&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;A href="#community--1-slb" target="_self"&gt;Dedicated Azure Standard Load Balancer in Azure Database for MySQL (Public Preview)&lt;/A&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;A href="#community--1-az-functions" target="_self"&gt;Input and Output Bindings for Azure Functions (General Availability)&lt;/A&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;A href="#community--1-new-regions" target="_self"&gt;New Regions: Indonesia Central, Chile Central and Malaysia West&lt;/A&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;A href="#community--1-custom-port" target="_self"&gt;Custom Port Support (Public Preview)&lt;/A&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;A href="#community--1-backup-1" target="_self"&gt;Automate scheduling of on-demand backups&lt;/A&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;A href="#community--1-backup-2" target="_self"&gt;Configure backup interval for automated backups&lt;/A&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;A href="#community--1-time-zone" target="_self"&gt;Auto Initialization of Time Zones&lt;/A&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;A href="#community--1-iops" target="_self"&gt;Enable Auto-Scale of IOPS for Faster Restore and Replica Provisions&lt;/A&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P&gt;&lt;A href="#community--1-maintenance" target="_self"&gt;Key maintenance experience enhancements&lt;/A&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4 class="lia-linked-item"&gt;&lt;a id="community--1-mcp-server" class="lia-anchor"&gt;&lt;/a&gt;MCP Server for Azure Database for MySQL&lt;/H4&gt;
&lt;P&gt;We are thrilled to introduce an &lt;STRONG&gt;MCP Server for integrating your AI models&lt;/STRONG&gt; with data hosted in&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/overview" target="_blank" rel="noopener"&gt;Azure Database for MySQL&lt;/A&gt;. By utilizing this server, you can effortlessly connect any AI application that supports MCP to your MySQL flexible server (using either MySQL password-based authentication or Microsoft Entra authentication methods), enabling you to provide your business data as meaningful context in a standardized and secure manner. &lt;A href="https://techcommunity.microsoft.com/blog/adformysql/model-context-protocol-mcp-server-for-azure-database-for-mysql/4418075" target="_blank" rel="noopener"&gt;Learn more&lt;/A&gt;.&lt;/P&gt;
&lt;H4 class="lia-linked-item"&gt;&lt;a id="community--1-self-heal" class="lia-anchor"&gt;&lt;/a&gt;One-click Self-Heal (Public Preview)&lt;/H4&gt;
&lt;P&gt;The Self-Heal feature in Azure Database for MySQL empowers customers to &lt;STRONG&gt;resolve common server issues independently&lt;/STRONG&gt;, without needing to open a support case. It provides a one-click repair experience that helps restore service health quickly and safely.&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/how-to-self-heal" target="_blank" rel="noopener"&gt;Learn more&lt;/A&gt;.&lt;/P&gt;
&lt;H4 class="lia-linked-item"&gt;&lt;a id="community--1-extended-support" class="lia-anchor"&gt;&lt;/a&gt;Extended Support for older MySQL versions&lt;/H4&gt;
&lt;P&gt;As part of our ongoing commitment to customer success and operational continuity, we are introducing&amp;nbsp;Extended Support for Azure Database for MySQL as a paid offering&amp;nbsp;designed to help customers &lt;STRONG&gt;continue running workloads on older MySQL versions with confidence, even after community support ends. &lt;/STRONG&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/mysql/concepts-version-policy#what-happens-after-standard-support-ends" target="_blank" rel="noopener"&gt;Learn more.&lt;/A&gt;&lt;/P&gt;
&lt;H4 class="lia-linked-item"&gt;&lt;a id="community--1-accelerated-logs" class="lia-anchor"&gt;&lt;/a&gt;Accelerated logs in General Purpose service tier&lt;/H4&gt;
&lt;P&gt;Accelerated logs are now supported in the General Purpose service tier of Azure Database for MySQL – Flexible Server. Previously available only in the Business Critical tier, this feature enhances performance and reduces transaction latency. Accelerated logs feature in General Purpose tier is available at an additional cost.&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/concepts-accelerated-logs" target="_blank" rel="noopener"&gt;Learn more&lt;/A&gt;.&lt;/P&gt;
&lt;H4 class="lia-linked-item"&gt;&lt;a id="community--1-slb" class="lia-anchor"&gt;&lt;/a&gt;Dedicated Azure Standard Load Balancer in Azure Database for MySQL (Public Preview)&lt;/H4&gt;
&lt;P&gt;Announcing the &lt;STRONG&gt;public preview of a dedicated Azure Standard Load Balancer in Azure Database for MySQL - Flexible Server for high availability-enabled servers&lt;/STRONG&gt;. With this feature, a high availability configuration gets the benefit of a dedicated Standard Load Balancer, including low latency, high throughput network traffic distribution of front-end requests to backend servers. With Standard Load Balancer managing the MySQL data traffic path, you can enjoy a more optimized failover time for high availability servers. If you want to enable an SLB for your HA server,&amp;nbsp;&lt;A href="https://portal.azure.com/?#blade/Microsoft_Azure_Support/HelpAndSupportBlade" target="_blank" rel="noopener" data-linktype="external"&gt;file a support ticket with Azure Support.&lt;/A&gt;&lt;/P&gt;
&lt;H4 class="lia-linked-item"&gt;&lt;a id="community--1-az-functions" class="lia-anchor"&gt;&lt;/a&gt;Input and Output Bindings for Azure Functions (General Availability)&lt;/H4&gt;
&lt;P&gt;Azure Database for MySQL &lt;STRONG&gt;Input and Output bindings for Azure Functions are now generally available&lt;/STRONG&gt;, enabling seamless, declarative integration with MySQL databases. These bindings eliminate the need for manual connection or SQL logic, supporting both in-process and isolated worker models across C#, Python, Java, and JavaScript. Developers can now build event-driven, serverless apps that read, modify, and write MySQL data with minimal configuration and maximum flexibility. &lt;A class="lia-internal-link lia-internal-url lia-internal-url-content-type-blog" href="https://techcommunity.microsoft.com/blog/adformysql/azure-database-for-mysql-bindings-for-azure-functions-general-availability/4416304" target="_blank" rel="noopener" data-lia-auto-title="Learn more" data-lia-auto-title-active="0"&gt;Learn more&lt;/A&gt;.&lt;/P&gt;
&lt;H4 class="lia-linked-item"&gt;&lt;a id="community--1-new-regions" class="lia-anchor"&gt;&lt;/a&gt;New Regions: Indonesia Central, Chile Central and Malaysia West&lt;/H4&gt;
&lt;P&gt;New regions rollout! Azure Database for MySQL flexible server is now available in Indonesia Central, Chile Central and Malaysia West, giving customers in and around these regions lower latency and data residency options.&amp;nbsp;For the full list of supported regions, visit: &lt;A href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/overview#azure-regions" target="_blank" rel="noopener"&gt;Azure Regions&lt;/A&gt;&lt;/P&gt;
&lt;H4 class="lia-linked-item"&gt;&lt;a id="community--1-custom-port" class="lia-anchor"&gt;&lt;/a&gt;Custom Port Support (Public Preview)&lt;/H4&gt;
&lt;P&gt;Azure Database for MySQL (Flexible Server) now &lt;STRONG&gt;supports custom port selection (25001–26000) during server creation for VNet-injected servers&lt;/STRONG&gt;. This enables better compliance with network security policies and integration with legacy systems, while supporting restore, HA, and read replicas. &lt;A href="https://techcommunity.microsoft.com/blog/adformysql/now-in-public-preview-custom-port-support-in-azure-database-for-mysql-%E2%80%93-flexible/4432164" target="_blank" rel="noopener"&gt;Learn more&lt;/A&gt;.&lt;/P&gt;
&lt;H4 class="lia-linked-item"&gt;&lt;a id="community--1-backup-1" class="lia-anchor"&gt;&lt;/a&gt;Automate scheduling of on-demand backups&lt;/H4&gt;
&lt;P&gt;Azure Database for MySQL now supports the ability to &lt;STRONG&gt;schedule on-demand backups using automation tasks&lt;/STRONG&gt;. This feature gives you greater control and flexibility in managing on-demand backups for your Azure Database for MySQL Flexible Server instances. Learn more about how to schedule an automation task&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/create-automation-tasks#on-demand-backup-server-task" target="_blank" rel="noopener"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;H4 class="lia-linked-item"&gt;&lt;a id="community--1-backup-2" class="lia-anchor"&gt;&lt;/a&gt;Configure backup interval for automated backups&lt;/H4&gt;
&lt;P&gt;Azure Database for MySQL now supports the ability to &lt;STRONG&gt;configure backup interval for the automatic backups taken by the system to improve restore speed&lt;/STRONG&gt;. This new feature optimizes the process by introducing more frequent snapshots, thereby reducing the number of binlogs that need to be replayed for point-in-time restore and minimizing overall restore time. Learn more about the feature&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/concepts-backup-restore#backup-frequency" target="_blank" rel="noopener"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;H4 class="lia-linked-item"&gt;&lt;a id="community--1-time-zone" class="lia-anchor"&gt;&lt;/a&gt;Auto Initialization of Time Zones&lt;/H4&gt;
&lt;P&gt;Time zones are automatically loaded during server creation, removing the need for customers to manually execute the mysql.az_load_timezone stored procedure afterwards to load the time zone. For more information, refer to the server parameter details for&amp;nbsp;&lt;A href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/concepts-server-parameters#time_zone" target="_blank" rel="noopener"&gt;time_zone&lt;/A&gt;&lt;/P&gt;
&lt;H4 class="lia-linked-item"&gt;&lt;a id="community--1-iops" class="lia-anchor"&gt;&lt;/a&gt;Enable Auto-Scale of IOPS for Faster Restore and Replica Provisions&lt;/H4&gt;
&lt;P&gt;Azure Database for MySQL now supports the ability to enable &lt;A href="https://techcommunity.microsoft.com/blog/adformysql/autoscale-iops-for-azure-database-for-mysql---flexible-server---general-availabi/3884602" target="_blank" rel="noopener"&gt;autoscaling of IOPS&lt;/A&gt; for both the source and target servers during restore operations and replica provisioning workflows. This enhancement helps accelerate the restore and replica provisioning process by temporarily boosting IOPS to meet the performance demands of these operations. Once provisioning is complete, you can disable the autoscale IOPS setting.&amp;nbsp;To learn more, visit &lt;A href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/how-to-restore-server-portal" target="_blank" rel="noopener"&gt;Point-in-time restore&lt;/A&gt;.&lt;/P&gt;
&lt;H4 class="lia-linked-item"&gt;&lt;a id="community--1-maintenance" class="lia-anchor"&gt;&lt;/a&gt;Key maintenance experience enhancements&lt;/H4&gt;
&lt;P&gt;&lt;STRONG&gt;Virtual Canary&lt;/STRONG&gt;: Virtual Canary is intended for non-production workloads that want to validate updates early. Servers under this policy receive updates ahead of general availability and do not follow the standard update cadence - there’s no guaranteed 30-day interval and no 7-day advance notice. Burstable SKU servers are enrolled in the Virtual Canary policy by default.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Maintenance Batches&lt;/STRONG&gt;: Our custom maintenance feature has long been there and is one of the favorite features for our customers. Staged custom maintenance features provide custom advanced control, you can assign the server to a batch (Batch 1 or Batch 2) to help stagger maintenance across environments like TEST and PROD.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Maintenance Rollout Status Check&lt;/STRONG&gt;&amp;nbsp;(public preview): Each maintenance event includes a Tracking ID. Clicking this ID opens a detailed view of all servers in your subscription that are part of the same maintenance rollout. This gives you a consolidated overview across your fleet - no need to check each server individually or rely solely on email notifications.&lt;BR /&gt;&lt;A href="https://techcommunity.microsoft.com/blog/adformysql/announcing-key-maintenance-experience-enhancements-for-azure-database-for-mysql/4411810" target="_blank" rel="noopener"&gt;Learn more&lt;/A&gt;.&lt;/P&gt;
&lt;H4&gt;&lt;STRONG&gt;Stay Connected&lt;/STRONG&gt;&lt;/H4&gt;
&lt;P&gt;We look forward to your feedback as you explore these enhancements and continue building with Azure Database for MySQL. If you have any suggestions or queries about our service, please let us know by emailing us at&amp;nbsp;&lt;A href="mailto:AsAzureDBforMySQL@service.microsoft.com" target="_blank" rel="noopener"&gt;AskAzureDBforMySQL@service.microsoft.com&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;To learn more about what's new with Flexible Server, see&amp;nbsp;&lt;A href="https://learn.microsoft.com/azure/mysql/flexible-server/whats-new" target="_blank" rel="noopener"&gt;What's new in Azure Database for MySQL - Flexible Server&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Stay tuned for more updates and announcements by following us on social media: &lt;A href="https://aka.ms/mysql-yt-subscribe" target="_blank" rel="noopener"&gt;YouTube&lt;/A&gt;&amp;nbsp;|&amp;nbsp;&lt;A href="https://www.linkedin.com/company/azure-database-for-mysql/" target="_blank" rel="noopener"&gt;LinkedIn&lt;/A&gt;&amp;nbsp;|&amp;nbsp;&lt;A href="https://twitter.com/AzureDBMySQL" target="_blank" rel="noopener"&gt;X&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Take care, and thanks for being part of our community!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 27 Jan 2026 09:18:32 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/july-2025-recap-azure-database-for-mysql/ba-p/4440225</guid>
      <dc:creator>SaurabhKirtani</dc:creator>
      <dc:date>2026-01-27T09:18:32Z</dc:date>
    </item>
    <item>
      <title>Now in Public Preview: Custom Port Support in Azure Database for MySQL – Flexible Server</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/now-in-public-preview-custom-port-support-in-azure-database-for/ba-p/4432164</link>
      <description>&lt;H4 data-start="491" data-end="514"&gt;Why Custom Ports?&lt;/H4&gt;
&lt;P data-start="516" data-end="777"&gt;By default, MySQL servers listen on port 3306. While this works well for most setups, some organizations need custom port configurations—for example, to comply with network security policies, reduce port conflicts, or streamline integration with legacy systems.&lt;/P&gt;
&lt;P data-start="779" data-end="971"&gt;With this update, &lt;STRONG data-start="797" data-end="881"&gt;you can now choose a custom port number when creating your VNet-injected MySQL Flexible Server&lt;/STRONG&gt;—giving you flexibility without compromising on the fully managed experience Azure offers.&lt;/P&gt;
&lt;H4 data-start="973" data-end="995"&gt;Key Capabilities&lt;/H4&gt;
&lt;UL data-start="997" data-end="1320"&gt;
&lt;LI data-start="997" data-end="1097"&gt;&lt;STRONG data-start="999" data-end="1026"&gt;Flexible Port Selection&lt;/STRONG&gt;: Choose any port between &lt;STRONG data-start="1052" data-end="1071"&gt;25001 and 26000&lt;/STRONG&gt; during server creation.&lt;/LI&gt;
&lt;LI data-start="1098" data-end="1236"&gt;&lt;STRONG data-start="1100" data-end="1127"&gt;Seamless Restore and HA&lt;/STRONG&gt;: Use custom ports with supported operations such as restore, read replica creation, and high availability.&lt;/LI&gt;
&lt;LI data-start="1237" data-end="1320"&gt;&lt;STRONG data-start="1239" data-end="1262"&gt;One Port per Server&lt;/STRONG&gt;: Each server supports a single custom port configuration.&lt;/LI&gt;
&lt;/UL&gt;
&lt;img /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H4 data-start="1322" data-end="1361"&gt;&amp;nbsp;What’s Supported (and What’s Not)&lt;/H4&gt;
&lt;P data-start="1363" data-end="1390"&gt;&lt;STRONG data-start="1365" data-end="1389"&gt;Supported in Public Preview&lt;/STRONG&gt;:&lt;/P&gt;
&lt;UL data-start="1391" data-end="1551"&gt;
&lt;LI&gt;VNet-injected servers&lt;/LI&gt;
&lt;LI data-start="1391" data-end="1431"&gt;New server creation with a custom port&lt;/LI&gt;
&lt;LI data-start="1432" data-end="1465"&gt;Restores across different ports&lt;/LI&gt;
&lt;LI data-start="1466" data-end="1486"&gt;Read replica creation&lt;/LI&gt;
&lt;LI data-start="1487" data-end="1527"&gt;High Availability (HA) on custom ports&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-start="1553" data-end="1578"&gt;&lt;STRONG data-start="1556" data-end="1577"&gt;Current Limitations&lt;/STRONG&gt;:&lt;/P&gt;
&lt;UL data-start="1579" data-end="1720"&gt;
&lt;LI data-start="1579" data-end="1620"&gt;Updating the port after server creation&lt;/LI&gt;
&lt;LI data-start="1621" data-end="1654"&gt;Geo-restore and geo-replication&lt;/LI&gt;
&lt;LI data-start="1655" data-end="1720"&gt;Public access and Private Link (coming soon)&lt;/LI&gt;
&lt;/UL&gt;
&lt;H5 data-start="1722" data-end="1767"&gt;Designed for Secure, Custom Deployments&lt;/H5&gt;
&lt;P data-start="1769" data-end="2076"&gt;This feature is ideal for customers operating in tightly controlled network environments or managing complex workloads that demand specific port configurations. During the preview, custom port support is available for &lt;STRONG data-start="1987" data-end="2017"&gt;VNet-injected servers only&lt;/STRONG&gt;—offering an added layer of network isolation and security.&lt;/P&gt;
&lt;P data-start="1769" data-end="2076"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-start="1769" data-end="2076"&gt;For more details, visit the Azure Database for MySQL documentation - &lt;A href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/concepts-networking" target="_blank"&gt;Networking Overview - Azure Database for MySQL - Flexible Server | Microsoft Learn&lt;/A&gt; and &lt;A href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/how-to-manage-virtual-network-portal" target="_blank"&gt;Manage Virtual Networks - Azure Portal - Azure Database for MySQL - Flexible Server | Microsoft Learn&lt;/A&gt;.&lt;/P&gt;
&lt;P data-start="2083" data-end="2245"&gt;We can’t wait to hear how you use this new capability to streamline your MySQL deployments! If you have any feedback or questions about the information provided above, please leave a comment below or email us at&amp;nbsp;&lt;A href="mailto:AskAzureDBforMySQL@service.microsoft.com" target="_blank"&gt;AskAzureDBforMySQL@service.microsoft.com&lt;/A&gt;. Thank you!&lt;/P&gt;
&lt;P data-start="2247" data-end="2343"&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 10 Jul 2025 22:16:02 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/now-in-public-preview-custom-port-support-in-azure-database-for/ba-p/4432164</guid>
      <dc:creator>Aditi_Gupta</dc:creator>
      <dc:date>2025-07-10T22:16:02Z</dc:date>
    </item>
    <item>
      <title>Boost your MySQL apps: why enterprises are migrating MySQL databases to Azure</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/boost-your-mysql-apps-why-enterprises-are-migrating-mysql/ba-p/4426780</link>
      <description>&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;MySQL is one of the world’s most popular open-source databases, and for good reason. It’s cost-effective, scalable, and familiar to millions of developers. But if your enterprise is running MySQL on-premises, you might be missing out on huge benefits in cost savings, performance, and agility. Recent findings from an ESG Economic Validation report, commissioned by Microsoft, reveal just how advantageous it is to migrate on-premises MySQL databases to Azure’s fully managed database&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;-&lt;/SPAN&gt; &lt;SPAN data-contrast="auto"&gt;as&lt;/SPAN&gt; &lt;SPAN data-contrast="auto"&gt;-&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;a&lt;/SPAN&gt; &lt;SPAN data-contrast="auto"&gt;-service platform&lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://aka.ms/MySQL-ESG-Report-2025" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Read the full MySQL report&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 aria-level="2"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;TL;DR&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt; – &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;b&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;enefits of &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;m&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;igrating to Azure Database for MySQL&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Managing data security, quality and privacy as well as general database management are among the most significant challenges facing developer teams. Some even report that database technology is evolving faster than they’re able to keep up with. Migrating to Azure’s fully managed service offloads these responsibilities so teams can focus fully on projects that move their business forward. Some benefits of moving from on premises to Azure Database for MySQL highlighted in the report include:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="17" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;54% lower total cost of ownership&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="17" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;86% lower MySQL admin costs&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="17" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="6" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;25% increase in development velocity&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-align-center"&gt;&lt;EM&gt;&lt;SPAN class="lia-text-color-15"&gt;“Our developers can now focus on their core job: creating code. We now put out 8 releases per year compared to 2 when we were on premises. This gets features and fixes in the hands of our customers sooner.”&amp;nbsp;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Review the &lt;/SPAN&gt;&lt;A href="https://aka.ms/PgSQL-ESG-Report-2025" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Azure Database for MySQL Economic Validation Infographic&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2 aria-level="2"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;Zooming &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;i&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;n&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt; – &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;h&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;ow &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;f&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;ully &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;m&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;anaged &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;open-source&lt;/SPAN&gt; &lt;SPAN data-ccp-parastyle="heading 2"&gt;d&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;atabases on Azure &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;d&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;eliver &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;e&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;conomic &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;w&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;ins for the &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;e&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;nterprise&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H2&gt;
&lt;H4&gt;&lt;SPAN data-contrast="auto"&gt;More than 50% lower costs and total cost of ownership&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Azure’s fully managed MySQL service delivers the same (or better) database capabilities for almost half the cost. By one estimate, a company could save millions over a few years and even see an ROI above 90% from the migration when factoring in both cost savings and new revenue opportunities. These savings come from a few key areas:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;No more hardware and maintenance expenses: &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;On-premises MySQL deployments require investing in servers, storage, networking gear – plus ongoing power, cooling, and data center space. Azure Database for MySQL eliminates those needs entirely. You don’t buy or maintain hardware; Microsoft handles the infrastructure.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Drastically reduced admin overhead: &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Companies in the study reported an 86% reduction in the cost of MySQL administration after migrating to Azure. All the routine tasks—installing updates, patching OS and MySQL versions, tuning performance, taking backups, managing high availability—are handled by Azure as part of the service.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Pay-as-you-go efficiency: &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;On-premises setups often over-provision resources to handle peak loads, which wastes money during lulls. Azure can scale resources on-demand, so you’re never stuck paying for idle capacity. You can also use cost controls like burstable instances for dev/test, stop/start to pause servers, and reserved instances for discounts.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="4" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Included extras:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt; &lt;/STRONG&gt;Many capabilities that would incur extra cost on-premises (or require separate licenses) are bundled into Azure Database for MySQL. For example, security features, monitoring and performance tuning tools, backup storage, and high availability options come built-in at no extra charge in Azure’s service tiers.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;&lt;SPAN data-contrast="auto"&gt;Improved performance and scalability&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Beyond cost, Azure Database for MySQL helps your applications run faster and scale seamlessly to meet demand. In on-premises environments, you might need to tune configs, add hardware, or handle sharding as usage grows. Azure takes a lot of that burden away and offers cloud-scale performance out of the box:&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Better throughput:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt; &lt;/STRONG&gt;Azure’s managed MySQL runs on high-performance cloud infrastructure (with fast SSD storage, plenty of memory, and low-latency networking). Microsoft has also added capabilities like accelerated I/O logs and intelligent caching that improve MySQL’s throughput and response times compared to typical on-premises setups.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="3" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Elastic scaling on demand:&lt;/STRONG&gt; &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;With Azure, scaling up a MySQL server is as simple as a configuration change. No new hardware is required. You can scale vertically (bigger machine) or horizontally (add read replicas) in minutes. Azure even supports autoscaling of IOPS and storage based on set thresholds. This flexibility means your database can handle traffic spikes or growth without manual intervention.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="20" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;No wasted capacity: &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;On-premises, you often must deploy extra servers “just in case” future demand increases, and that hardware sits underutilized most of the time. Azure’s model avoids this waste. Enterprises reported that Azure’s ability to fine-tune resources helped them avoid overprovisioning and maintain a better price/performance mix.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="20" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="5" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Reliable high performance at scale: &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Whether you have 10 users or 10 million, Azure’s global infrastructure can scale to meet your needs. One customer in the study found that after migrating, they could provide MySQL services 5× faster than when they were on-premises.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;&lt;SPAN data-contrast="auto"&gt;Faster development cycles and greater developer productivity&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;For developers, one of the biggest wins of moving MySQL to Azure is time back to innovate. When you no longer have to babysit your database infrastructure, you can focus on building features and improving your applications. The ESG report highlighted that companies saw significantly improved developer productivity and agility after migrating.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Faster development:&lt;/STRONG&gt; &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Organizations reported that their development cycles became 25% faster on average once on Azure. One customer shared that “our developers can now focus on their core job: creating code.” The customer went from shipping two software releases per year to eight releases per year after migrating to Azure.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Elimination of toil: &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Azure’s fully managed platform lifts the burden of routine DB administration from your team. No more worrying about backups, failover, or OS patches. The service continuously applies best practices and optimizations automatically, so your team doesn’t have to. Teams can be more agile because they’re not bogged down by lengthy processes or constant maintenance.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="2" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;Faster time-to-market:&lt;/STRONG&gt; &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;ESG modeled that by releasing features earlier and more often, thanks to Azure MySQL, a mid-sized software company could realize an additional $15 million in revenue over three years by being first-to-market with new capabilities can capture customers and market share.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4&gt;&lt;SPAN data-contrast="auto"&gt;Stronger security and high availability&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Running MySQL in Azure doesn’t just make life easier and cheaper. It also makes your databases more secure and resilient. Enterprises often struggle to keep up with patches, security threats, and high availability when managing databases on-premises. Azure Database for MySQL is hardened with enterprise-grade security and reliability features that can significantly reduce your risk.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="1" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Fully managed security updates: &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;In the ESG survey, nearly half of organizations (46%) said they needed outside expertise to help manage database platforms on-premises often because of the complexity of securing and tuning them. Azure takes care of patching the MySQL engine and underlying OS for you, ensuring you’re always on a supported, secure version.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="2" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Enhanced data protection: &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;By default, Azure Database for MySQL encrypts data at rest and in transit. It also offers network isolation options to lock down access to your database. Many customers found that after migrating, their security posture was stronger than before. They could easily implement role-based access control via Azure AD, set up threat detection alerts, and use Azure’s monitoring to audit activity with just a few clicks.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="3" data-aria-level="1"&gt;&lt;SPAN data-contrast="auto"&gt;&lt;STRONG&gt;High availability and disaster recovery built In:&lt;/STRONG&gt; &lt;/SPAN&gt;&lt;SPAN data-contrast="auto"&gt;Azure Database for MySQL can be deployed with high availability configurations across availability zones. In case of an outage, it can switch to a standby replica usually in under 60 seconds, dramatically reducing downtime for your apps. Companies in the study experienced 70% less downtime incidents after moving to Azure.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;UL&gt;
&lt;LI data-leveltext="" data-font="Symbol" data-listid="1" data-list-defn-props="{&amp;quot;335552541&amp;quot;:1,&amp;quot;335559685&amp;quot;:720,&amp;quot;335559991&amp;quot;:360,&amp;quot;469769226&amp;quot;:&amp;quot;Symbol&amp;quot;,&amp;quot;469769242&amp;quot;:[8226],&amp;quot;469777803&amp;quot;:&amp;quot;left&amp;quot;,&amp;quot;469777804&amp;quot;:&amp;quot;&amp;quot;,&amp;quot;469777815&amp;quot;:&amp;quot;hybridMultilevel&amp;quot;}" aria-setsize="-1" data-aria-posinset="4" data-aria-level="1"&gt;&lt;STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Compliance and governance: &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN data-contrast="auto"&gt;Azure Database for MySQL is compliant with a broad set of industry standards and certifications, easing the audit burden. Many organizations found that moving to Azure made it simpler to adhere to internal security policies and compliance standards because so many controls are built into the platform.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4 aria-level="2"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;Enterprise&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;-&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;r&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;eady MySQL&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt; is &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;j&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;ust a &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;f&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;ew &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;c&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;licks &lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;a&lt;/SPAN&gt;&lt;SPAN data-ccp-parastyle="heading 2"&gt;way&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;134245418&amp;quot;:true,&amp;quot;134245529&amp;quot;:true,&amp;quot;335559738&amp;quot;:160,&amp;quot;335559739&amp;quot;:80}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;&lt;SPAN data-contrast="auto"&gt;Azure provides a hardened, enterprise-ready environment for MySQL that most companies would be hard-pressed to build on their own. By entrusting MySQL to Azure’s managed service, you benefit from Microsoft’s investments in security and infrastructure resiliency. The result is peace of mind: your data is safer, your databases are more stable, and your team has far fewer 3 AM incidents to deal with.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="https://cdn-dynmedia-1.microsoft.com/is/content/microsoftcorp/microsoft/final/en-us/microsoft-brand/documents/esg-economic-validation-microsoft-azure-database-for-mysql-apr-2025-1057420.pdf" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;Read the full report&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt; for more details about the quantified benefits and customer testimonials. If you’re ready to start your journey, check out our &lt;/SPAN&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/dms/" target="_blank" rel="noopener"&gt;&lt;SPAN data-contrast="none"&gt;&lt;SPAN data-ccp-charstyle="Hyperlink"&gt;migration guides&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN data-contrast="auto"&gt;. With Azure’s fully managed open-source databases, you can supercharge your data strategy, empower your developers, and ultimately accelerate your path to an AI-driven future.&lt;/SPAN&gt;&lt;SPAN data-ccp-props="{&amp;quot;201341983&amp;quot;:0,&amp;quot;335559738&amp;quot;:360,&amp;quot;335559739&amp;quot;:80,&amp;quot;335559740&amp;quot;:276}"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 02 Jul 2025 15:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/boost-your-mysql-apps-why-enterprises-are-migrating-mysql/ba-p/4426780</guid>
      <dc:creator>TeneilLawrence</dc:creator>
      <dc:date>2025-07-02T15:00:00Z</dc:date>
    </item>
    <item>
      <title>Model Context Protocol (MCP) Server for Azure Database for MySQL</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/model-context-protocol-mcp-server-for-azure-database-for-mysql/ba-p/4418075</link>
      <description>&lt;P class="lia-align-justify"&gt;The &lt;A class="lia-external-url" href="https://www.anthropic.com/news/model-context-protocol" target="_blank" rel="noopener"&gt;Model Context Protocol&lt;/A&gt; (MCP) is an open standard designed to facilitate seamless integration between AI applications and various external systems, including tools, data sources, and resources. MCP aims to standardize how AI models, such as large language models (LLMs), interact with external tools and data sources. MCP enables developers to build AI applications that can easily connect to MCP servers, which expose specific capabilities through the standardized protocol. This protocol helps reduce development effort by allowing a “write once, work everywhere” approach, ensuring that any AI application can utilize MCP servers without additional work.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;The Model Context Protocol (MCP) offers several key benefits that make it a compelling choice for integrating AI applications with external systems:&lt;/P&gt;
&lt;OL class="lia-align-justify"&gt;
&lt;LI&gt;&lt;STRONG&gt;Simplified integration&lt;/STRONG&gt;: MCP provides a standardized way for AI models to interact with external tools and data sources, reducing the need for custom integration code for each service.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Tool discovery and self-description&lt;/STRONG&gt;: MCP servers can expose specific capabilities through the protocol, allowing AI models to discover and utilize these tools without additional configuration.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Consistent security model&lt;/STRONG&gt;: MCP ensures a consistent security framework for interactions between AI models and external systems, enhancing the overall security of the integration.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Built for local and cloud Resources&lt;/STRONG&gt;: MCP supports both local and cloud-based resources, making it versatile for various deployment scenarios.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Enhanced developer experience&lt;/STRONG&gt;: MCP's standardized approach reduces development effort by allowing a “write once, work everywhere” methodology, ensuring that any AI application can utilize MCP servers without additional work.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Future-proofing your AI stack&lt;/STRONG&gt;: MCP is designed to be adaptable to future advancements in AI technology, ensuring that your AI applications remain compatible with new tools and data sources.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P class="lia-align-justify"&gt;These advantages make MCP a powerful protocol for developers looking to streamline their AI integration processes and enhance the capabilities of their AI applications.&lt;/P&gt;
&lt;H3 class="lia-align-justify"&gt;Azure Database for MySQL MCP Server&lt;/H3&gt;
&lt;P class="lia-align-justify"&gt;We are thrilled to introduce an MCP Server for integrating your AI models with data hosted in &lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/mysql/flexible-server/overview" target="_blank" rel="noopener"&gt;Azure Database for MySQL&lt;/A&gt;. By utilizing this server, you can effortlessly connect any AI application that supports MCP to your MySQL flexible server (using either MySQL password-based authentication or Microsoft Entra authentication methods), enabling you to provide your business data as meaningful context in a standardized and secure manner.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;This server exposes the following tools, which can be invoked by MCP Clients in your AI agents, AI applications or tools like &lt;A class="lia-external-url" href="https://claude.ai/download" target="_blank" rel="noopener"&gt;Claude Desktop&lt;/A&gt; and &lt;A class="lia-external-url" href="https://code.visualstudio.com/" target="_blank" rel="noopener"&gt;Visual Studio Code&lt;/A&gt;:&lt;/P&gt;
&lt;UL class="lia-align-justify"&gt;
&lt;LI&gt;List all databases in your Azure Database for MySQL flexible server instance.&lt;/LI&gt;
&lt;LI&gt;List all tables in a database along with their schema information.&lt;/LI&gt;
&lt;LI&gt;Execute read queries to retrieve data from your database.&lt;/LI&gt;
&lt;LI&gt;Insert or update records in your database.&lt;/LI&gt;
&lt;LI&gt;Create a new table or drop an existing table in your database.&lt;/LI&gt;
&lt;LI&gt;List Azure Database for MySQL flexible server configuration, including its MySQL version, and compute and storage configurations. *&lt;/LI&gt;
&lt;LI&gt;Retrieve specific server parameter values. *&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="lia-align-justify"&gt;*Available when using Microsoft Entra authentication method&lt;/P&gt;
&lt;H3 class="lia-align-justify"&gt;Getting started&lt;/H3&gt;
&lt;P class="lia-align-justify"&gt;In this section, we’ll show you how to use the MCP server with Claude Desktop and Visual Studio Code to gain valuable insights and visualizations from your databases through natural language queries!&amp;nbsp;&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;Before diving in, please refer to our GitHub repository:&amp;nbsp;&lt;A href="https://github.com/Azure/azure-mysql/tree/master/azure-mysql-mcp" target="_blank" rel="noopener"&gt;azure-mysql/azure-mysql-mcp &lt;/A&gt;to ensure all the prerequisites are in place. You'll also find detailed onboarding guidance and the MCP server code available there.&lt;/P&gt;
&lt;H4 class="lia-align-justify"&gt;Install the Azure Database for MySQL MCP Server&lt;/H4&gt;
&lt;P&gt;1. Clone the azure-mysql repository:&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;git clone https://github.com/Azure/azure-mysql.git
cd azure-mysql
cd azure-mysql-mcp&lt;/LI-CODE&gt;
&lt;P&gt;2.&amp;nbsp;Create a virtual environment:&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;python -m venv azure-mysql-mcp-venv
.\azure-mysql-mcp-venv\Scripts\activate.bat&lt;/LI-CODE&gt;
&lt;P class="lia-align-justify"&gt;&lt;STRONG&gt;Note&lt;/STRONG&gt;: The above commands are applicable to Windows OS. For users of other operating systems, please refer to the full guide in the&amp;nbsp;&lt;A href="https://github.com/Azure/azure-mysql/tree/master/azure-mysql-mcp" target="_blank" rel="noopener"&gt;GitHub repository&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;3. Install the dependencies:&lt;/P&gt;
&lt;LI-CODE lang="bash"&gt;pip install mcp
pip install mysql-connector-python
pip install azure-mgmt-mysqlflexibleservers
pip install azure-identity&lt;/LI-CODE&gt;
&lt;H4 class="lia-align-justify"&gt;&lt;SPAN class="lia-align-justify"&gt;Use the MCP Server with Claude Desktop&lt;/SPAN&gt;&lt;/H4&gt;
&lt;P&gt;1. In the Claude Desktop app, navigate to the “Settings” pane, select the “Developer” tab and click on “Edit Config”.&lt;/P&gt;
&lt;P&gt;2. Open the “claude_desktop_config.json” file and add the following configuration to the “mcpServers” section to configure the Azure Database for MySQL MCP server:&lt;/P&gt;
&lt;LI-CODE lang="json"&gt;{
    "mcpServers": {
        "azure-mysql-mcp": {
            "command": "&amp;lt;path to the virtual environment&amp;gt;\\azure-mysql-mcp-venv\\Scripts\\python",
            "args": [
                "&amp;lt;path to azure_mysql_mcp.py file&amp;gt;\\azure_mysql_mcp.py"
            ],
            "env": {
                "MYSQLHOST": "&amp;lt;Fully qualified name of your Azure Database for MySQL instance&amp;gt;",
                "MYSQLUSER": "&amp;lt;Your Azure Database for MySQL username&amp;gt;",
                "MYSQLPASSWORD": "&amp;lt;Your Azure Database for MySQL password&amp;gt;"
            }
        }       
    }
}&lt;/LI-CODE&gt;
&lt;P class="lia-align-justify"&gt;&lt;STRONG class="lia-align-justify"&gt;Note&lt;/STRONG&gt;: In this example, we use password-based authentication to connect the MCP Server to Azure Database for MySQL for testing purposes only. However, we recommend using Microsoft Entra authentication. Please refer to&amp;nbsp;&lt;A href="https://github.com/Azure/azure-mysql/tree/master/azure-mysql-mcp#using-microsoft-entra-authentication-method" target="_blank" rel="noopener"&gt;these instructions&lt;/A&gt; for guidance.&lt;/P&gt;
&lt;P&gt;3. Restart the Claude Desktop app.&lt;/P&gt;
&lt;P&gt;4. Upon restarting, Click on the “Search and tools” icon at the bottom of the input box. Selecting this icon will display the tools exposed by the MCP Server&lt;/P&gt;
&lt;img /&gt;
&lt;P class="lia-clear-both lia-align-justify"&gt;You are now all set to start interacting with your data using natural language queries through Claude Desktop!&lt;/P&gt;
&lt;P class="lia-clear-both lia-align-justify"&gt;Here is an example of creating an interactive Histogram of the distribution of Petal Length in the&amp;nbsp;&lt;A class="lia-external-url" href="https://dev.mysql.com/doc/heatwave/en/mys-hwaml-iris-quickstart.html" target="_blank" rel="noopener"&gt;iris dataset&lt;/A&gt;.&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;P class="lia-align-justify"&gt;Here is an example of querying the server parameters:&lt;/P&gt;
&lt;img /&gt;
&lt;P class="lia-align-justify"&gt;Here is an example of querying the server properties:&amp;nbsp;&lt;/P&gt;
&lt;img /&gt;
&lt;H4 class="lia-align-justify"&gt;Use the MCP Server with Visual Studio Code&lt;/H4&gt;
&lt;P&gt;1. In Visual Studio Code, navigate to “File”, select “Preferences” and then choose “Settings”.&lt;/P&gt;
&lt;P&gt;2. Search for “MCP” and select “Edit in settings.json”.&lt;/P&gt;
&lt;img /&gt;
&lt;P&gt;3. Add the following configuration to the “mcp” section of the “settings.json” file:&lt;/P&gt;
&lt;LI-CODE lang="json"&gt;{
    "mcp": {
        "inputs": [],
        "servers": {
            "azure-mysql-mcp": {
                "command": "&amp;lt;path to the virtual environment&amp;gt;\\azure-mysql-mcp-venv\\Scripts\\python",
                "args": [
                    "&amp;lt;path to azure_mysql_mcp.py file&amp;gt;\\azure_mysql_mcp.py"
                ],
                "env": {
                    "MYSQLHOST": "&amp;lt;Fully qualified name of your Azure Database for MySQL instance&amp;gt;",
                    "MYSQLUSER": "&amp;lt;Your Azure Database for MySQL username&amp;gt;",
                    "MYSQLPASSWORD": "&amp;lt;Your Azure Database for MySQL password&amp;gt;"
                }
            }
        }
    }
}&lt;/LI-CODE&gt;
&lt;P class="lia-align-justify"&gt;&lt;STRONG class="lia-align-justify"&gt;Note&lt;/STRONG&gt;: In this example, we use password-based authentication to connect the MCP Server to Azure Database for MySQL for testing purposes only. However, we recommend using Microsoft Entra authentication. Please refer to&amp;nbsp;&lt;A href="https://github.com/Azure/azure-mysql/tree/master/azure-mysql-mcp#using-microsoft-entra-authentication-method" target="_blank" rel="noopener"&gt;these instructions&lt;/A&gt;&amp;nbsp;for guidance.&lt;/P&gt;
&lt;P&gt;4. Select the “Copilot” icon in the upper-right corner to open the GitHub Copilot Chat window.&lt;/P&gt;
&lt;P&gt;5. Next, choose “Agent mode” from the dropdown at the bottom of the chat input box.&lt;/P&gt;
&lt;P&gt;6. Click on “Select Tools” to view the Tools exposed by the MCP Server.&lt;/P&gt;
&lt;img /&gt;
&lt;P class="lia-align-justify"&gt;You are now all set to start interacting with your data using natural language queries through Visual Studio Code!&lt;/P&gt;
&lt;H3 class="lia-align-justify"&gt;What’s next?&lt;/H3&gt;
&lt;P class="lia-align-justify"&gt;Start using Model Context Protocol (MCP) today, to integrate your AI apps and agents with your data sources and services. We hope that the new Azure Database for MySQL MCP Server eases your MCP integration journey and helps you unlock the full combined potential of AI and your data stored in Azure Database for MySQL.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;Stay tuned for updates as we further enhance the capabilities of the MCP Server to introduce new ways for AI models to interact with your business data. Meanwhile we look forward to your feedback and learning more about how this functionality benefits you.&lt;/P&gt;
&lt;P class="lia-align-justify"&gt;Feel free to comment below or write to us with your feedback and queries at &lt;A href="mailto:AskAzureDBforMySQL@service.microsoft.com" target="_blank" rel="noopener"&gt;AskAzureDBforMySQL@service.microsoft.com&lt;/A&gt;.&lt;/P&gt;</description>
      <pubDate>Mon, 02 Jun 2025 16:00:00 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/model-context-protocol-mcp-server-for-azure-database-for-mysql/ba-p/4418075</guid>
      <dc:creator>ramkumarchan</dc:creator>
      <dc:date>2025-06-02T16:00:00Z</dc:date>
    </item>
    <item>
      <title>Azure Database for MySQL bindings for Azure Functions (General Availability)</title>
      <link>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/azure-database-for-mysql-bindings-for-azure-functions-general/ba-p/4416304</link>
      <description>&lt;P&gt;We’re thrilled to announce the&amp;nbsp;&lt;STRONG&gt;general availability (GA)&lt;/STRONG&gt;&amp;nbsp;of&amp;nbsp;&lt;STRONG&gt;Azure Database for MySQL Input and Output bindings for Azure Functions&lt;/STRONG&gt;—a powerful way to build event-driven, serverless applications that seamlessly integrate with your MySQL databases.&lt;/P&gt;
&lt;H2&gt;Key Capabilities&lt;/H2&gt;
&lt;P&gt;With this GA release, your applications can use:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Input bindings&lt;/STRONG&gt; that allow your function to &lt;STRONG&gt;retrieve data from a MySQL database&lt;/STRONG&gt; without writing any connection or query logic.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Output bindings&lt;/STRONG&gt; that allow your function to &lt;STRONG&gt;insert or update data in a MySQL table&lt;/STRONG&gt; without writing explicit SQL commands.&lt;/LI&gt;
&lt;LI&gt;In addition you can use both the &lt;STRONG&gt;input &lt;/STRONG&gt;and &lt;STRONG&gt;output bindings &lt;/STRONG&gt;in the same function to &lt;STRONG&gt;read-modify-write&lt;/STRONG&gt; data patterns. For example, retrieve a record, update a field, and write it back—all without managing connections or writing SQL.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;These bindings are fully supported for both&amp;nbsp;&lt;STRONG&gt;in-process&lt;/STRONG&gt;&amp;nbsp;and&amp;nbsp;&lt;STRONG&gt;isolated worker models&lt;/STRONG&gt;, giving you flexibility in how you build and deploy your Azure Functions.&lt;/P&gt;
&lt;H2&gt;How It Works&lt;/H2&gt;
&lt;P&gt;Azure Functions bindings abstract away the boilerplate code required to connect to external services. With the&amp;nbsp;&lt;STRONG&gt;MySQL Input and Output bindings&lt;/STRONG&gt;, you can now declaratively connect your serverless functions to your Azure Database for MySQL database with minimal configuration.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You can configure these bindings using&amp;nbsp;&lt;STRONG&gt;attributes in C#&lt;/STRONG&gt;, &lt;STRONG&gt;decorators in Python&lt;/STRONG&gt;, or &lt;STRONG&gt;annotations in JavaScript/Java&lt;/STRONG&gt;. The bindings use the &lt;STRONG&gt;MySql.Data.MySqlClient&lt;/STRONG&gt; library under the hood and support &lt;STRONG&gt;Azure Database for MySQL Flexible Server&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H2&gt;Getting Started&lt;/H2&gt;
&lt;P&gt;To use the bindings, install the appropriate &lt;STRONG&gt;NuGet&lt;/STRONG&gt; or &lt;STRONG&gt;npm&lt;/STRONG&gt; package:&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;# For isolated worker model (C#) 
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.MySql 

# For in-process model (C#) 
dotnet add package Microsoft.Azure.WebJobs.Extensions.MySql&lt;/LI-CODE&gt;
&lt;P&gt;Then, configure your function with a connection string and binding metadata.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Full samples for all the supported programming frameworks are available in our&amp;nbsp;&lt;A class="lia-external-url" href="https://github.com/Azure/azure-functions-mysql-extension/tree/main/samples" target="_blank" rel="noopener" data-tabster="{&amp;quot;restorer&amp;quot;:{&amp;quot;type&amp;quot;:1}}"&gt;github repository&lt;/A&gt;.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here&amp;nbsp; is a sample &lt;STRONG&gt;C#&amp;nbsp; in-process function&lt;/STRONG&gt; example where you want to retrieve a user by ID, increment their login count, and save the updated record back to the MySQL database for lightweight data transformations, modifying status fields or updating counters and timestamps.&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="csharp"&gt;public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int LoginCount { get; set; }
}

public static class UpdateLoginCountFunction
{
    [FunctionName("UpdateLoginCount")]
    public static async Task&amp;lt;IActionResult&amp;gt; Run(
        [HttpTrigger(AuthorizationLevel.Function, "post", Route = "user/{id}/login")] HttpRequest req,
        
        [MySql("SELECT * FROM users WHERE id = @id", 
               CommandType = System.Data.CommandType.Text, 
               Parameters = "@id={id}", 
               ConnectionStringSetting = "MySqlConnectionString")] 
        User user,

        [MySql("users", ConnectionStringSetting = "MySqlConnectionString")] 
        IAsyncCollector&amp;lt;User&amp;gt; userCollector,

        ILogger log)
    {
        if (user == null)
        {
            return new NotFoundObjectResult("User not found.");
        }

        // Modify the user object
        user.LoginCount += 1;

        // Write the updated user back to the database
        await userCollector.AddAsync(user);

        return new OkObjectResult($"Login count updated to {user.LoginCount} for user {user. Name}.");
    }
}
&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;H2&gt;Learn More&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-azure-mysql?tabs=isolated-process&amp;amp;pivots=programming-language-csharp" target="_blank"&gt;Azure Functions MySQL Bindings&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A class="lia-external-url" href="https://learn.microsoft.com/en-us/azure/azure-functions/" target="_blank"&gt;Azure Functions&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2&gt;Conclusion&lt;/H2&gt;
&lt;P&gt;With &lt;STRONG&gt;input &lt;/STRONG&gt;and &lt;STRONG&gt;output bindings&lt;/STRONG&gt; for &lt;STRONG&gt;Azure Database for MySQL&lt;/STRONG&gt; now &lt;STRONG&gt;generally available&lt;/STRONG&gt;, building serverless apps on Azure with MySQL has never been simpler or more efficient. By eliminating the need for manual connection management and boilerplate code, these bindings empower you to focus on what matters most: building scalable, event-driven applications with clean, maintainable code.&lt;/P&gt;
&lt;P&gt;Whether you're building real-time dashboards, automating workflows, or syncing data across systems, these bindings unlock new levels of productivity and performance. We can’t wait to see what you’ll build with them.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you have any feedback or questions about the information provided above, please leave a comment below or email us at&amp;nbsp;&lt;A href="mailto:AskAzureDBforMySQL@service.microsoft.com" target="_blank"&gt;AskAzureDBforMySQL@service.microsoft.com&lt;/A&gt;. Thank you!&lt;/P&gt;</description>
      <pubDate>Wed, 21 May 2025 19:59:03 GMT</pubDate>
      <guid>https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/azure-database-for-mysql-bindings-for-azure-functions-general/ba-p/4416304</guid>
      <dc:creator>Sai_Kondapalli</dc:creator>
      <dc:date>2025-05-21T19:59:03Z</dc:date>
    </item>
  </channel>
</rss>

