From 94c08b95c3c3d88ac101027934a4d884873e217f Mon Sep 17 00:00:00 2001 From: IriaO Date: Wed, 9 Oct 2024 12:45:35 -0400 Subject: [PATCH 01/53] NSP doc from old repo --- articles/cosmos-db/how-to-configure-nsp.md | 55 ++++++++++++++++++ .../network-service-perimeter/add-nsp.png | Bin 0 -> 260890 bytes .../nsp-overview.png | Bin 0 -> 87029 bytes articles/cosmos-db/nosql/TOC.yml | 2 + 4 files changed, 57 insertions(+) create mode 100644 articles/cosmos-db/how-to-configure-nsp.md create mode 100644 articles/cosmos-db/media/network-service-perimeter/add-nsp.png create mode 100644 articles/cosmos-db/media/network-service-perimeter/nsp-overview.png diff --git a/articles/cosmos-db/how-to-configure-nsp.md b/articles/cosmos-db/how-to-configure-nsp.md new file mode 100644 index 0000000000..e0c852cfa2 --- /dev/null +++ b/articles/cosmos-db/how-to-configure-nsp.md @@ -0,0 +1,55 @@ +--- +title: Configure Network Security Perimeter for an Azure Cosmos DB account +description: Learn how to secure your Cosmos DB account using Network Service Perimeter. +ms.service: cosmos-db +ms.topic: how-to +ms.date: 04/25/2024 +ms.author: iriaosara +author: iriaosara +--- + +# Configure Network Security Perimeter for an Azure Cosmos DB account +[!INCLUDE[NoSQL](includes/appliesto-nosql.md)] + +This article explains how to configure Network Security Perimeter on your Azure Cosmos DB account. + +> [!IMPORTANT] +> Network Security Perimeter is in public preview. +> This feature is provided without a service level agreement. +> For more information, see [Supplemental Terms of Use for Microsoft Azure Previews](https://azure.microsoft.com/support/legal/preview-supplemental-terms/). + +## Feature overview +Network administrators can define a network isolation boundary for their PaaS services, which allows communication between their Azure Cosmos DB account and Keyvault, SQL, and other services using Network Security Perimeter. Securing public access on Azure Service can be accomplished in several ways: + +- Securing inbound connections: Restrict public exposure of your Azure Cosmos DB account by explicitly granting ingress access to resources inside the perimeter. By default, access from unauthorized networks is denied, and access from private endpoints into the perimeter or resources in a subscription can be configured. +- Securing service-to-service communication: All resources inside the perimeter can communicate with any other resources within the perimeter, preventing data exfiltration. +- Securing outbound connections: If Network Security Perimeter doesn't manage the destination tenant, it blocks access when attempting to copy data from one tenant to another. Access is granted based on FQDN or access from other network perimeters; all other access attempts are denied. + +:::image type="content" source="./media/network-service-perimeter/nsp-overview.png" alt-text="Screenshot showing network service perimeter."::: + +All of these communications are taken care of automatically once Network Security Perimeter is set up, and users don't have to manage them. Instead of setting up a private endpoint for each resource to enable communication or configure virtual network, Network Security Perimeter at the top level enables this functionality. + +> [!NOTE] +> Network security perimeter complements what we currently have in place today, including private endpoint, which allows access to a private resource within the perimeter, and VNet injection, which enables managed VNet offerings to access resources within the perimeter. +> We currently do not support the combination of network security perimeter, customer-managed keys (CMK), and log store features. If you need to perform restores on a CMK with a network security perimeter account, you'll temporarily need to relax the perimeter settings in the key vault to allow your Cosmos DB account access to the key. + +## Getting started +> [!IMPORTANT] +> Before setting up a network security perimeter [create a managed identity in Azure](./how-to-setup-managed-identity.md#add-a-user-assigned-identity). + +* In the Azure portal, search for **network security perimeters** in the resource list and select **Create +**. +* From the list of resources, select the resources that you want to associate with the perimeter. +* Add an inbound access rule, the source type can be either an IP address or a subscription. +* Add outbound access rules to allow resources inside the perimeter to connect to the internet and resources outside of the perimeter. + +In cases where you have existing Azure Cosmos DB account and looking to add security perimeter: +* Select **Networking** from the **Settings** + +:::image type="content" source="./media/network-service-perimeter/add-nsp.png" alt-text="Screenshot showing how to add NSP to an Azure resource."::: + +* Then select **Associate NSP** to associate this resource with your network security perimeter to enable communication with other Azure resources in the same perimeter while restricting public access to only allow the connections you specify. + +## Next steps + +* Overview of [network service perimeter](../private-link/network-security-perimeter-overview.md) +* Learn to monitor with [diagnostic logs in network security perimeter](../private-link/network-security-perimeter-diagnostic-logs.md) \ No newline at end of file diff --git a/articles/cosmos-db/media/network-service-perimeter/add-nsp.png b/articles/cosmos-db/media/network-service-perimeter/add-nsp.png new file mode 100644 index 0000000000000000000000000000000000000000..bab2f5f5ad5426d2a14eb191831e7904794b9da6 GIT binary patch literal 260890 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
=z$rs{nzD(c>ux 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%0AT}F{FL?sHg${%F11$9 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

AGn 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℘_zKerjf0fr};SEnxaV*T8SNh_2RYR4) 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 Kk}m!J@V@}wEEGEc literal 0 HcmV?d00001 diff --git a/articles/cosmos-db/media/network-service-perimeter/nsp-overview.png b/articles/cosmos-db/media/network-service-perimeter/nsp-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..80b592511676865311b4cf942153c8ba8e4eb829 GIT binary patch literal 87029 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�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

G$b=H?7dVTk`Ha2R< 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 Date: Mon, 21 Oct 2024 15:09:39 -0400 Subject: [PATCH 02/53] update --- articles/cosmos-db/how-to-configure-nsp.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/articles/cosmos-db/how-to-configure-nsp.md b/articles/cosmos-db/how-to-configure-nsp.md index e0c852cfa2..6456509350 100644 --- a/articles/cosmos-db/how-to-configure-nsp.md +++ b/articles/cosmos-db/how-to-configure-nsp.md @@ -1,7 +1,7 @@ --- title: Configure Network Security Perimeter for an Azure Cosmos DB account description: Learn how to secure your Cosmos DB account using Network Service Perimeter. -ms.service: cosmos-db +ms.service: azure-cosmos-db ms.topic: how-to ms.date: 04/25/2024 ms.author: iriaosara @@ -49,7 +49,8 @@ In cases where you have existing Azure Cosmos DB account and looking to add secu * Then select **Associate NSP** to associate this resource with your network security perimeter to enable communication with other Azure resources in the same perimeter while restricting public access to only allow the connections you specify. -## Next steps - + \ No newline at end of file From 222c543a5fba34a284cf860fce3ccb75904906a5 Mon Sep 17 00:00:00 2001 From: IriaO Date: Tue, 22 Oct 2024 11:07:09 -0400 Subject: [PATCH 03/53] add aka ms links --- articles/cosmos-db/how-to-configure-nsp.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/articles/cosmos-db/how-to-configure-nsp.md b/articles/cosmos-db/how-to-configure-nsp.md index 6456509350..146dc60e34 100644 --- a/articles/cosmos-db/how-to-configure-nsp.md +++ b/articles/cosmos-db/how-to-configure-nsp.md @@ -49,8 +49,7 @@ In cases where you have existing Azure Cosmos DB account and looking to add secu * Then select **Associate NSP** to associate this resource with your network security perimeter to enable communication with other Azure resources in the same perimeter while restricting public access to only allow the connections you specify. - \ No newline at end of file +## Next steps + +* Overview of [network service perimeter](https://aka.ms/networksecurityperimeter) +* Learn to monitor with [diagnostic logs in network security perimeter](https://aka.ms/networksecurityperimeter) \ No newline at end of file From b00b5f58b0d38731670bbe8f52626e189b48459d Mon Sep 17 00:00:00 2001 From: Nacho Alonso Portillo <41644064+nachoalonsoportillo@users.noreply.github.com> Date: Mon, 4 Nov 2024 11:22:52 +0100 Subject: [PATCH 04/53] Update regions-table.md --- .../flexible-server/includes/regions-table.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/articles/postgresql/flexible-server/includes/regions-table.md b/articles/postgresql/flexible-server/includes/regions-table.md index ff33cb909c..13732d7b9f 100644 --- a/articles/postgresql/flexible-server/includes/regions-table.md +++ b/articles/postgresql/flexible-server/includes/regions-table.md @@ -2,23 +2,23 @@ author: akashraokm ms.author: akashrao ms.reviewer: maghan -ms.date: 06/28/2024 +ms.date: 11/04/2024 ms.service: azure-database-postgresql ms.subservice: flexible-server ms.topic: include --- | Region | Intel V3/V4/V5/AMD Compute | Zone-Redundant HA | Same-Zone HA | Geo-Redundant backup | | ------ | -------------------------- | ----------------- | ------------ | -------------------- | -| Australia Central | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | -| Australia Central 2 * | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :x: | +| Australia Central | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | +| Australia Central 2 * | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :x: | | Australia East | :heavy_check_mark: (all SKUs) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Australia Southeast | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | -| Brazil South | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | -| Brazil Southeast * | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :x: | +| Brazil South | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | +| Brazil Southeast * | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :x: | | Canada Central | :heavy_check_mark: (all SKUs) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Canada East | :heavy_check_mark: (all SKUs) | :x: | :heavy_check_mark: | :heavy_check_mark: | -| Central India | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Central US | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | +| Central India | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | +| Central US | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | | China East 2 | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :x: | | China East 3 | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | China North 2 | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :x: | @@ -27,34 +27,34 @@ ms.topic: include | East US | :heavy_check_mark: (all SKUs) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | | East US 2 | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | | France Central | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| France South | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | -| Germany North * | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | +| France South | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | +| Germany North * | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | Germany West Central | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Israel Central | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: | :heavy_check_mark: | :x: | -| Italy North | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: | :heavy_check_mark: | :x: | +| Italy North | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :x: | | Japan East | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | -| Japan West | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | +| Japan West | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | Jio India Central | :heavy_check_mark: (v3 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | Jio India West | :heavy_check_mark: (v3 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | Korea Central | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: $ ** | :heavy_check_mark: | :heavy_check_mark: | | Korea South | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | -| Mexico Central | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: | :heavy_check_mark: | :x: | +| Mexico Central | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :x: | | North Central US | :heavy_check_mark: (all SKUs) | :x: | :heavy_check_mark: | :heavy_check_mark: | -| North Europe | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| North Europe | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | | Norway East * | :heavy_check_mark: (all SKUs) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Norway West | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | +| Norway West | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | Poland Central | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: | :heavy_check_mark: | :x: | | Qatar Central | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :x: | | South Africa North | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| South Africa West * | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | +| South Africa West * | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | South Central US | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | | South India | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Southeast Asia | :heavy_check_mark: (all SKUs) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| Southeast Asia | :heavy_check_mark: (all SKUs) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | | Spain Central | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: | :heavy_check_mark: | :x: | | Sweden Central | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Switzerland North | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| Switzerland North | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | | Switzerland West * | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | -| UAE Central * | :heavy_check_mark: (v3 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | +| UAE Central * | :heavy_check_mark: (v3/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | UAE North | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | UK South | :heavy_check_mark: (all SKUs) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | UK West | :heavy_check_mark: (all SKUs) | :x: | :heavy_check_mark: | :heavy_check_mark: | From 6bc59b004e462cdfd79195b64062d586fed8b236 Mon Sep 17 00:00:00 2001 From: nachoalonsoportillo Date: Mon, 4 Nov 2024 11:24:30 +0100 Subject: [PATCH 05/53] Update regions-table.md --- .../flexible-server/includes/regions-table.md | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/articles/postgresql/flexible-server/includes/regions-table.md b/articles/postgresql/flexible-server/includes/regions-table.md index ff33cb909c..13732d7b9f 100644 --- a/articles/postgresql/flexible-server/includes/regions-table.md +++ b/articles/postgresql/flexible-server/includes/regions-table.md @@ -2,23 +2,23 @@ author: akashraokm ms.author: akashrao ms.reviewer: maghan -ms.date: 06/28/2024 +ms.date: 11/04/2024 ms.service: azure-database-postgresql ms.subservice: flexible-server ms.topic: include --- | Region | Intel V3/V4/V5/AMD Compute | Zone-Redundant HA | Same-Zone HA | Geo-Redundant backup | | ------ | -------------------------- | ----------------- | ------------ | -------------------- | -| Australia Central | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | -| Australia Central 2 * | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :x: | +| Australia Central | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | +| Australia Central 2 * | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :x: | | Australia East | :heavy_check_mark: (all SKUs) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Australia Southeast | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | -| Brazil South | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | -| Brazil Southeast * | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :x: | +| Brazil South | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | +| Brazil Southeast * | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :x: | | Canada Central | :heavy_check_mark: (all SKUs) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Canada East | :heavy_check_mark: (all SKUs) | :x: | :heavy_check_mark: | :heavy_check_mark: | -| Central India | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Central US | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | +| Central India | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | +| Central US | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | | China East 2 | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :x: | | China East 3 | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | China North 2 | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :x: | @@ -27,34 +27,34 @@ ms.topic: include | East US | :heavy_check_mark: (all SKUs) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | | East US 2 | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | | France Central | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| France South | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | -| Germany North * | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | +| France South | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | +| Germany North * | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | Germany West Central | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Israel Central | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: | :heavy_check_mark: | :x: | -| Italy North | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: | :heavy_check_mark: | :x: | +| Italy North | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :x: | | Japan East | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | -| Japan West | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | +| Japan West | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | Jio India Central | :heavy_check_mark: (v3 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | Jio India West | :heavy_check_mark: (v3 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | Korea Central | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: $ ** | :heavy_check_mark: | :heavy_check_mark: | | Korea South | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | -| Mexico Central | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: | :heavy_check_mark: | :x: | +| Mexico Central | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :x: | | North Central US | :heavy_check_mark: (all SKUs) | :x: | :heavy_check_mark: | :heavy_check_mark: | -| North Europe | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| North Europe | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | | Norway East * | :heavy_check_mark: (all SKUs) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Norway West | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | +| Norway West | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | Poland Central | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: | :heavy_check_mark: | :x: | | Qatar Central | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :x: | | South Africa North | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| South Africa West * | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | +| South Africa West * | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | South Central US | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | | South India | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Southeast Asia | :heavy_check_mark: (all SKUs) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| Southeast Asia | :heavy_check_mark: (all SKUs) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | | Spain Central | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: | :heavy_check_mark: | :x: | | Sweden Central | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Switzerland North | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| Switzerland North | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | | Switzerland West * | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | -| UAE Central * | :heavy_check_mark: (v3 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | +| UAE Central * | :heavy_check_mark: (v3/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | UAE North | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | UK South | :heavy_check_mark: (all SKUs) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | UK West | :heavy_check_mark: (all SKUs) | :x: | :heavy_check_mark: | :heavy_check_mark: | From a341d3132f2373daf4b312b88f7043f58db2389d Mon Sep 17 00:00:00 2001 From: IriaO Date: Tue, 5 Nov 2024 11:30:11 -0500 Subject: [PATCH 06/53] Adding azure to network service perimeter --- articles/cosmos-db/how-to-configure-nsp.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/articles/cosmos-db/how-to-configure-nsp.md b/articles/cosmos-db/how-to-configure-nsp.md index 146dc60e34..1d146a8064 100644 --- a/articles/cosmos-db/how-to-configure-nsp.md +++ b/articles/cosmos-db/how-to-configure-nsp.md @@ -19,7 +19,7 @@ This article explains how to configure Network Security Perimeter on your Azure > For more information, see [Supplemental Terms of Use for Microsoft Azure Previews](https://azure.microsoft.com/support/legal/preview-supplemental-terms/). ## Feature overview -Network administrators can define a network isolation boundary for their PaaS services, which allows communication between their Azure Cosmos DB account and Keyvault, SQL, and other services using Network Security Perimeter. Securing public access on Azure Service can be accomplished in several ways: +Network administrators can define a network isolation boundary for their PaaS services, which allows communication between their Azure Cosmos DB account and Keyvault, SQL, and other services using Azure Network Security Perimeter. Securing public access on Azure Service can be accomplished in several ways: - Securing inbound connections: Restrict public exposure of your Azure Cosmos DB account by explicitly granting ingress access to resources inside the perimeter. By default, access from unauthorized networks is denied, and access from private endpoints into the perimeter or resources in a subscription can be configured. - Securing service-to-service communication: All resources inside the perimeter can communicate with any other resources within the perimeter, preventing data exfiltration. @@ -30,7 +30,7 @@ Network administrators can define a network isolation boundary for their PaaS se All of these communications are taken care of automatically once Network Security Perimeter is set up, and users don't have to manage them. Instead of setting up a private endpoint for each resource to enable communication or configure virtual network, Network Security Perimeter at the top level enables this functionality. > [!NOTE] -> Network security perimeter complements what we currently have in place today, including private endpoint, which allows access to a private resource within the perimeter, and VNet injection, which enables managed VNet offerings to access resources within the perimeter. +> Azure Network security perimeter complements what we currently have in place today, including private endpoint, which allows access to a private resource within the perimeter, and VNet injection, which enables managed VNet offerings to access resources within the perimeter. > We currently do not support the combination of network security perimeter, customer-managed keys (CMK), and log store features. If you need to perform restores on a CMK with a network security perimeter account, you'll temporarily need to relax the perimeter settings in the key vault to allow your Cosmos DB account access to the key. ## Getting started From 5a316d92a271e7f0bd6785852e986d2529ad6dbf Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Thu, 7 Nov 2024 16:16:43 -0800 Subject: [PATCH 07/53] SFI remediation: azure-docs-pr| azure-sql-edge | DAIC databases --- articles/dms/migration-dms-powershell-cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/dms/migration-dms-powershell-cli.md b/articles/dms/migration-dms-powershell-cli.md index d3a38edd5e..f6ced87b41 100644 --- a/articles/dms/migration-dms-powershell-cli.md +++ b/articles/dms/migration-dms-powershell-cli.md @@ -129,7 +129,7 @@ az datamigration sql-managed-instance create ` --migration-service "/subscriptions/mySubscriptionID/resourceGroups/myRG/providers/Microsoft.DataMigration/SqlMigrationServices/myMigrationService" ` --scope "/subscriptions/mySubscriptionID/resourceGroups/myRG/providers/Microsoft.Sql/managedInstances/mySQLMI" ` --source-database-name "AdventureWorks2008" ` ---source-sql-connection authentication="SqlAuthentication" data-source="mySQLServer" password="myPassword" user-name="sqluser" ` +--source-sql-connection authentication="SqlAuthentication" data-source="mySQLServer" password="" user-name="sqluser" ` --target-db-name "AdventureWorks2008" ` --resource-group myRG ` --managed-instance-name mySQLMI From fd8792cba3089a2cf359d139a8d80eac3015d3ff Mon Sep 17 00:00:00 2001 From: Mark Ghanayem <22989000+markingmyname@users.noreply.github.com> Date: Mon, 11 Nov 2024 15:38:42 -0600 Subject: [PATCH 08/53] [Docfx] Create global entries for titlesuffix for yaml files --- docfx.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docfx.json b/docfx.json index 64f2afe24b..20d57a38a4 100644 --- a/docfx.json +++ b/docfx.json @@ -227,7 +227,11 @@ "articles/mysql/flexible-server/**/*.md": "Azure Database for MySQL - Flexible Server", "articles/postgresql/scripts/**/*.md": "Azure Database for PostgreSQL - Flexible Server", "articles/postgresql/flexible-server/**/*.md": "Azure Database for PostgreSQL - Flexible Server", - "articles/postgresql/migrate/**/*.md": "Azure Database for PostgreSQL - Flexible Server" + "articles/postgresql/migrate/**/*.md": "Azure Database for PostgreSQL - Flexible Server", + "articles/mysql/flexible-server/**/*.yml": "Azure Database for MySQL - Flexible Server", + "articles/postgresql/scripts/**/*.yml": "Azure Database for PostgreSQL - Flexible Server", + "articles/postgresql/flexible-server/**/*.yml": "Azure Database for PostgreSQL - Flexible Server", + "articles/postgresql/migrate/**/*.yml": "Azure Database for PostgreSQL - Flexible Server", } }, "overwrite": [], From 01ea4671a30ad0342a3ff8519fad0cf39bf9417d Mon Sep 17 00:00:00 2001 From: Justine Cocchi Date: Mon, 11 Nov 2024 17:13:05 -0800 Subject: [PATCH 09/53] update docs for change feed deletes --- articles/cosmos-db/nosql/change-feed-modes.md | 69 +++++++++++++------ 1 file changed, 47 insertions(+), 22 deletions(-) diff --git a/articles/cosmos-db/nosql/change-feed-modes.md b/articles/cosmos-db/nosql/change-feed-modes.md index 4bd698391c..556d5c4290 100644 --- a/articles/cosmos-db/nosql/change-feed-modes.md +++ b/articles/cosmos-db/nosql/change-feed-modes.md @@ -120,7 +120,7 @@ During the preview, the following methods to read the change feed are available | **Method to read change feed** | **.NET** | **Java** | **Python** | **Node.js** | | --- | --- | --- | --- | --- | | [Change feed pull model](change-feed-pull-model.md) | [>= 3.32.0-preview](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.32.0-preview) | [>= 4.42.0](https://mvnrepository.com/artifact/com.azure/azure-cosmos/4.37.0) | No | [>= 4.1.0](https://www.npmjs.com/package/@azure/cosmos?activeTab=versions) | -| [Change feed processor](change-feed-processor.md) | No | [>= 4.42.0](https://mvnrepository.com/artifact/com.azure/azure-cosmos/4.42.0) | No | No | +| [Change feed processor](change-feed-processor.md) | [>= 3.40.0-preview.0](https://www.nuget.org/packages/Microsoft.Azure.Cosmos/3.40.0-preview.0) | [>= 4.42.0](https://mvnrepository.com/artifact/com.azure/azure-cosmos/4.42.0) | No | No | | Azure Functions trigger | No | No | No | No | > [!NOTE] @@ -138,27 +138,52 @@ The Azure Cosmos DB team reviews your request and contacts you via email to conf ### Parse the response object -The response object is an array of items that represent each change. The array looks like the following example: - -```json -[ - {  - "current": { - - },  - "previous" : { - - },  - "metadata": { - "lsn": , - "operationType": , - "previousImageLSN" : , - "timeToLiveExpired" : , - "crts": - } +The response object is an array of items that represent each change. Different properties will be populated depending on the change type. There is currently no way to get the previous version of items for either replace or delete operations. + +* Create operations + ```json + { + "current": { + + }, + "metadata": { + "operationType": "create", + "lsn": , + "crts": + } } -] -``` + ``` + +* Replace operations + ```json + { + "current": { + + }, + "metadata": { + "operationType": "replace", + "lsn": , + "crts": , + "previousImageLSN" : , + } + } + ``` + +* Delete operations + ```json + { + "metadata": { + "operationType": "delete", + "lsn": , + "crts": , + "previousImageLSN" : , + "id": "", + "partitionKey": { + "": "" + } + } + } + ``` ### Limitations @@ -170,7 +195,7 @@ The response object is an array of items that represent each change. The array l * The ability to start reading the change feed from the beginning or to select a start time based on a past time stamp isn't currently supported. You can either start from "now" or from a previous [lease](change-feed-processor.md#components-of-the-change-feed-processor) or [continuation token](change-feed-pull-model.md#save-continuation-tokens). -* Receiving the previous version of items that have been updated isn't currently available. +* Receiving the previous version of items that have been deleted or updated isn't currently available. * Accounts that have enabled [merging partitions](../merge.md) aren't supported. From d666f25cc65e170797108589754119b9d4919b2d Mon Sep 17 00:00:00 2001 From: Justine Cocchi Date: Mon, 11 Nov 2024 17:41:50 -0800 Subject: [PATCH 10/53] updates --- articles/cosmos-db/nosql/change-feed-modes.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/articles/cosmos-db/nosql/change-feed-modes.md b/articles/cosmos-db/nosql/change-feed-modes.md index 556d5c4290..69cb0dd3fa 100644 --- a/articles/cosmos-db/nosql/change-feed-modes.md +++ b/articles/cosmos-db/nosql/change-feed-modes.md @@ -6,7 +6,7 @@ ms.author: jucocchi ms.service: azure-cosmos-db ms.custom: build-2023 ms.topic: conceptual -ms.date: 07/25/2024 +ms.date: 11/11/2024 --- # Change feed modes in Azure Cosmos DB @@ -85,7 +85,7 @@ In addition to the [common features across all change feed modes](../change-feed * Change feed items come in the order of their modification time. Deletes from TTL expirations aren't guaranteed to appear in the feed immediately after the item expires. They appear when the item is purged from the container. -* All changes that occurred within the retention window that's set for continuous backups on the account can be read. Attempting to read changes that occurred outside of the retention window results in an error. For example, if your container was created eight days ago and your continuous backup period retention period is seven days, then you can only read changes from the last seven days. +* All changes that occurred within the retention window for continuous backups on the account can be read. Attempting to read changes that occurred outside of the retention window results in an error. For example, if your container was created eight days ago and your continuous backup period retention period is seven days, then you can only read changes from the last seven days. * The change feed starting point can be from "now" or from a specific checkpoint within your retention period. You can't read changes from the beginning of the container or from a specific point in time by using this mode. @@ -107,7 +107,7 @@ You can use the following ways to consume changes from change feed in latest ver ### Parse the response object -In latest version mode, the default response object is an array of items that have changed. Each item contains the standard metadata for any Azure Cosmos DB item, including `_etag` and `_ts`, with the addition of a new property, `_lsn`. +In latest version mode, the default response object is an array of items that changed. Each item contains the standard metadata for any Azure Cosmos DB item, including `_etag` and `_ts`, with the addition of a new property, `_lsn`. The `_etag` format is internal and you shouldn't take dependency on it because it can change anytime. `_ts` is a modification or a creation time stamp. You can use `_ts` for chronological comparison. `_lsn` is a batch ID that is added for change feed only that represents the transaction ID. Many items can have same `_lsn`. @@ -132,13 +132,13 @@ To get started using all versions and deletes change feed mode, enroll in the pr :::image type="content" source="media/change-feed-modes/enroll-in-preview.png" alt-text="Screenshot of All versions and deletes change feed mode feature in Preview Features page in Subscriptions overview in Azure portal."::: -Before you submit your request, ensure that you have at least one Azure Cosmos DB account in the subscription. This account can be an existing account or a new account that you created to try out the preview feature. If you have no accounts in the subscription when the Azure Cosmos DB team receives your request, the request is declined because there are no accounts to apply the feature to. +Before you submit your request, ensure that you have at least one Azure Cosmos DB account in the subscription. This account can be an existing account or a new account that you created to try out the preview feature. If you have no accounts in the subscription when your request is received, the request is declined because there are no accounts to apply the feature to. The Azure Cosmos DB team reviews your request and contacts you via email to confirm which Azure Cosmos DB accounts in the subscription you want to enroll in the preview. To use the preview, you must have [continuous backups](../continuous-backup-restore-introduction.md) configured for your Azure Cosmos DB account. Continuous backups can be enabled either before or after being admitted to the preview, but continuous backups must be enabled before you attempt to read from the change feed in all versions and deletes mode. ### Parse the response object -The response object is an array of items that represent each change. Different properties will be populated depending on the change type. There is currently no way to get the previous version of items for either replace or delete operations. +The response object is an array of items that represent each change. Different properties will be populated depending on the change type. There's currently no way to get the previous version of items for either replace or delete operations. * Create operations ```json @@ -195,9 +195,9 @@ The response object is an array of items that represent each change. Different p * The ability to start reading the change feed from the beginning or to select a start time based on a past time stamp isn't currently supported. You can either start from "now" or from a previous [lease](change-feed-processor.md#components-of-the-change-feed-processor) or [continuation token](change-feed-pull-model.md#save-continuation-tokens). -* Receiving the previous version of items that have been deleted or updated isn't currently available. +* Receiving the previous version of items that were deleted or updated isn't currently available. -* Accounts that have enabled [merging partitions](../merge.md) aren't supported. +* Accounts that enabled [merging partitions](../merge.md) aren't supported. --- From 2eb1de0ebc62652aedb7939779da72557a02e6bb Mon Sep 17 00:00:00 2001 From: Sudhanshu Vishodia <41684987+suvishodcitus@users.noreply.github.com> Date: Tue, 12 Nov 2024 19:47:51 +0530 Subject: [PATCH 11/53] Updated supported region --- articles/cosmos-db/mongodb/vcore/free-tier.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/articles/cosmos-db/mongodb/vcore/free-tier.md b/articles/cosmos-db/mongodb/vcore/free-tier.md index 822b8cf53f..0f5f7a2651 100644 --- a/articles/cosmos-db/mongodb/vcore/free-tier.md +++ b/articles/cosmos-db/mongodb/vcore/free-tier.md @@ -19,7 +19,7 @@ ms.custom: references_regions Azure Cosmos DB for MongoDB (vCore) now introduces a new SKU, the "Free Tier," enabling users to explore the platform without any financial commitments. The free tier lasts for the lifetime of your account, boasting command and feature parity with a regular Azure Cosmos DB for MongoDB (vCore) account. -It makes it easy for you to get started, develop, test your applications, or even run small production workloads for free. With Free Tier, you get a dedicated MongoDB cluster with 32-GB storage, perfect for all of your learning & evaluation needs. Users can provision a single free DB server per supported Azure region for a given subscription. This feature is currently available in the Southeast Asia region. +It makes it easy for you to get started, develop, test your applications, or even run small production workloads for free. With Free Tier, you get a dedicated MongoDB cluster with 32-GB storage, perfect for all of your learning & evaluation needs. Users can provision a single free DB server per supported Azure region for a given subscription. This feature is currently available in the South India region. ## Get started @@ -48,7 +48,7 @@ specify your storage requirements, and you're all set. Rest assured, your data, ## Restrictions * For a given subscription, only one free tier account is permissible. -* Free tier is currently available in the Southeast Asia region only. +* Free tier is currently available in the South India region only. * High availability, Azure Active Directory (Azure AD) and Diagnostic Logging are not supported. From d5b5a605e206515246d011ea389b0e90206cff76 Mon Sep 17 00:00:00 2001 From: Sudhanshu Vishodia <41684987+suvishodcitus@users.noreply.github.com> Date: Tue, 12 Nov 2024 19:50:07 +0530 Subject: [PATCH 12/53] Delete articles/cosmos-db/mongodb/vcore/media/how-to-scale-cluster/provision-free-tier.jpg Deleted the old file with incorrect Region --- .../provision-free-tier.jpg | Bin 37698 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 articles/cosmos-db/mongodb/vcore/media/how-to-scale-cluster/provision-free-tier.jpg diff --git a/articles/cosmos-db/mongodb/vcore/media/how-to-scale-cluster/provision-free-tier.jpg b/articles/cosmos-db/mongodb/vcore/media/how-to-scale-cluster/provision-free-tier.jpg deleted file mode 100644 index 2b917d902d834e9f4a29a8560b9211d0f6e6a7ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37698 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�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 From 4b5fd00557825f232093c1c88d87e874197c651b Mon Sep 17 00:00:00 2001 From: IriaO Date: Tue, 12 Nov 2024 09:20:12 -0500 Subject: [PATCH 13/53] update the ms date --- articles/cosmos-db/how-to-configure-nsp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/cosmos-db/how-to-configure-nsp.md b/articles/cosmos-db/how-to-configure-nsp.md index 1d146a8064..de22ec5e54 100644 --- a/articles/cosmos-db/how-to-configure-nsp.md +++ b/articles/cosmos-db/how-to-configure-nsp.md @@ -3,7 +3,7 @@ title: Configure Network Security Perimeter for an Azure Cosmos DB account description: Learn how to secure your Cosmos DB account using Network Service Perimeter. ms.service: azure-cosmos-db ms.topic: how-to -ms.date: 04/25/2024 +ms.date: 11/20/2024 ms.author: iriaosara author: iriaosara --- From 290ee0b07b0f5bda9af226be1073dca39a5d6ec7 Mon Sep 17 00:00:00 2001 From: Sudhanshu Vishodia <41684987+suvishodcitus@users.noreply.github.com> Date: Tue, 12 Nov 2024 19:50:52 +0530 Subject: [PATCH 14/53] Added new screenshot with South India Region --- .../provision-free-tier.jpg | Bin 0 -> 42626 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 articles/cosmos-db/mongodb/vcore/media/how-to-scale-cluster/provision-free-tier.jpg diff --git a/articles/cosmos-db/mongodb/vcore/media/how-to-scale-cluster/provision-free-tier.jpg b/articles/cosmos-db/mongodb/vcore/media/how-to-scale-cluster/provision-free-tier.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7260c61fd30eb12e6e7dbcbc8adbdbf525a1d211 GIT binary patch literal 42626 zcmeFZ1yo#Hwk}+_yE{Pwp^)J2!9$P`TtW!JQV@a_P zsi1$I?!Nu*Io%*y@y`IFU<`98$B7PI?FOvP=2^RcclI-t-{V%ze0E8H5s4owL3?L7n2Qw2Y?^gTM)t8d0&WYGjH{;wgZp*3wP zn>r*&#Ul!fdG}GOdc6Mn^aJt4<&5__>YHn-=aMYkLlx-&?z|`fcX@O+&7Pq@TjK=3 zXoVD!Cycr|Tr25Bv?Y~uY@eFVi;7nA>HYf-G6I`S7y}o+>qs~AX^%_F#9XHe{uAkU zsfsbV&pEK^=$O27h@!aj0`Y&fzv|#+_N(dAPky}$q?0O?XwRa!bI?njeDdtm`EyH# z#ntRwID64n*iz+(D`&h&)jTj0z67fm=*Ptf(W!T12g(s%zxT(tUvJ0`7j=nRr%S)= zZ!}tpId3scn*X}IxSzUbv>kfKgPn`@Ye*eA0r|j5F;rU|YIVF1&sLb6dR%Cqg`34- zyqoOy)4tKnph0rOMsya*b?$_my%cv`I?sl?^>q-<$`E}t&)BQWW>E9|$O=y^!aPVTK%O87z3sg>ETEG-MxyiBc(iAHC6I%i^n@@g)GZ;UOEM= zcZ|gE3$U1^&$n+Tu2a5e$E?HO{0vxJN;?lY=Q^*1jIXI?T-^fL3 zN>4T0*^5zVvb?ag3{C>O&{)*QakFbsaYT}FD)bl{q_LiEm3BYYOGI{_2O$SK8`i@i z(zY9yi|!@gnmHTc9}g$Y`h6+FR(;u1FnDO#?g@1bxCRfju&@MltJmoeAX_ayO+tX! zozPYE!y}*6Qt`-_<<5(}#|cZupCQXBmi?|tB&!%6Ak_J-k%r|e6I`m-_U!bWvBM(WTYmD?o=a=P161_7E6`L-U)%m?3%5HP)F zfH6mN&Yq{Ae6hG=t4f&98ao=SwrZ&b@XF%8Zt%E+aO~~!$3!~0Z7#1qRt_II0{`8JnA_(5s%f|buc`(=-`X`OH4cz1e zy6F3QpBc}owz8<~YZe}O0)EY7#G{QeHQ^zYs^^BV0C8;b9_tZp8$-mve-VBQR z)*0W4XN}y2$M;#{rT?rOKURNY(`K-~tzKCfW5oVyC7+$0U1owE8owm4X%*ces0C-x zL(udRoTBYF`U7h_rmF7Fz}mDvzn?zEG60)lsT*0nBUgmA$HUaFD4kT{;juD`g?s+g zjR@js=t%shgO-%>$d}&^L)dD_qqQV;-n-LaLYhXH-cU-DGpZ09q1I;0j%C&t4C+aVjj%_0Yx zgs3M0!o=b^XXi43wZa9w5sOwC^1@FyAo-Zp!d$SFg;_`?GPr=)5&lp)B(?oE8Q5Ct=pOQ$Z+5* zXTncx5ovf_2RS_>%5e=@YO5X0u2$=Fp>)co+>ZMJJt=01u9RB^RUD>z2_MYGw;L-` z9N%+($6usE+{XhKJ`41DQGwvW?5nCAedc4Fk6wc4&!idrE}!vEn}5dd%V92H zfdGts*Tdv(b*Sw->E)=99e!#me&RhH#5yFF{fuAf3Ythihvs3k5_-FiP)Uqa4ItId zm5`+yE&{G1RC~>Z1K>|Mxo3PClXcKy*W7VFu12>ln%U-&~O+!#gQm9@MSQk*?f;5scy1G7GN9rE1T=@q|MFG=p0ikY% z0pn}!s9%V4ZvlgQ|JZ|3lGhyY`?2xA|MSFT*l_yS)Lz zP~j~BrJf3aQtyeVlY@(U*)o`AINjJ%1hVNw#mX`kD04CnON*2NiLTtB!z;7P?LBMT z8_x%t%R4fORwDY%mw656iP(VXg)6FfEc}R3X=P+Gj9@)l$|zLSf^AyEES}&N@N(6R zV*qC6oA`=NFfs^#4^8F>GYhiW=Z?85=B-4fNqr5JBiEy)w*- zT$?#%)5*(dwxaN@q?W_vOll;RZM5L9!UNrBddcb}KBxeu9O87{curf%b~7}yJ7ssN zRIaH5}?ralo$j6#qs(sW($hr^A!FIMRNTAdm%9xClV0SC3D3VHFWKK|-$ zf1gUY4vQAOboELKej0xZa9F3|iWF%QT?PgaIRv>MD?XTeIVw9p25-U|g*T{>EYl<$liH>GI>FqIX>HN$ze9(xFRe=z3zb zX>@Gn9R=M9CswZfcr{x8D-9ClC^v_`VHK#UVp z;7$nKteg54P`7)M1gd2& zS~#XL6T@-d7|!(?z{`;1W>b&SDh^(oEUa+0O%nj=o|Aqt6?l6b`8G_D?Hg?lNyFhd z#0F9J0B#f`5{v%b?o#FJ=h&NA`FEau&#l-5$;2gD?~#!kRO2K^bs;G>WL>(lSP^f; z#pIaar{O1AOTH|GNH6`Q6Cx>#n7dEu*U-p^-hiT-#x`d@ToBi8@Zt2)C(eix$vV4u z_C!moL-WbBb_T0M&Pb8ZjIgSO696S?!j}8fij$A8FFS)wobry&Zq!#6%mdu@PnmC92u-qcCXQh}8aE zaFuCZ1Jmi=*lVcj>AVQq>)$}LKhcP-pmtZuEVuy+%;UF!2ZbI~BUik)fFv6z$tA|( zEnx3$CC+)l)U$aA7nDiPn=6bUo5n$~b@}0>M%|cj{Y-H4euA4i$&0*>XHy-xU`qdK zId=H`72Ab1JOk-CZ6L>RDHLFPT~nM&;dXBBZRwImUwPepIHn;w0%kk*=nP-Skr9RY z7N>RnNI$76vQ+bW1!G9YtStTa`0;DbpyR`7BUGd*H7rKl?3 z3`z5_ec~I)01w1p%roL4p0GKRsy;tNcPEPXJ?)x?qRjz4aCbbU!E{ULN__%?QRdKM z7v^3?T23$0k`mJr`vLD9JUUy4n?{-tDftxOSK?K|X#E0NDwYe+?_XK9x?aMDG=C57GZHI=aJN4m+`oCF3g6+vG6g!0ewhAM4F)8- zPatiwd&%yXy5=5_OKymdFNPVarw&@+=Jlgffz)r35bv{)+^~YzdvCC->nFbv#G^UV zq@N@fs@9k+Tc9<}S#jP^)ME4QNmJHbFo z=f~y5g#>0b>Qw^d_pFA!Wt!r)t?RF9LY>hTF3y|QW2{ISpmx2o0sVrDu}T(F0EC(F zkqL*Lfx>7==t?gKy6Xp{bci6*4z`YkobTr=Fa`smC+`Cam8{`6kzQhjPDFc&fo)ED zSnm`N!Qs{xJNGp{m!B@h_n4;UUy35@kOx-8$h`B}jjRD*S)vN^h4=YNN~5l?yr3VP z4J~P7JU#;*eH%mX%-@+fp6~No^3N}0tgGGk)HhX7l);MKNeRQD<9D0KD12!&*2sd_ z#$IwW+43k{G}mTZh9vq|6?rs}Pw_?nJmbL_b5A;4(t;4e8T z1LQR#DsendGfL2mD&kZpRP1G1#QZrDgE6rcC;V0WN0`TYRMT#}4w# zpq^3+sM^U{f11r}vE8PMbY$;e zcGm88x?0v~W0QfreqJiBR(KGCJS4D(-h1lXrIYW-vX-~YX%Z{HKp|QD+Bnx*;!l|x zt`9~|4-*n!lkVe1ryNR0zP+d#9tC>+yaU& zhY$YTg^PxM5J_clt%#rzp>R0rzvQY==+m~05j>;oM!GZZ5|zJz-vT0BY+@dyNmZs{ z%|rzzQHn&U({XGT-)-P+6U=vL^qeOg6i-}H&@pzGGw*R_@?ZVc+>ZcFA`1mAi@#WyA)5>ktS zJ596swXx1cF*dkop(`V2RhXOG%qeQURs=FM8|_Lvm%TTn6Yjvnw}RttMGgteLp;ez z<)3q^IqY!SJt%dtECe(^O?*4_C6XFj*Qst)WE5+t;dOnGpZBo@Kw_=IoM=N_ELX^s z(&8vQkTBv|!=0`^krXi=lcN7cfeXX+dzrf~j_5~-2t2GguOYq!`S`(%NNTgwKy}M> zZW4wx`RKjax0PomkuRU8%6xsi494lD_DnKeM!Km7FKJk3LgNNFRg+lrXn1I_5>$h9 zo-8yCV7cfiP>#hGXPP?>3@jW3lhhKNazYTq$7_~X&daTt%>&-$m)Yn@=dVg_ll(HW zg*tg_>R-+Gr%Y7mzP8H!@QSINdv*&D8JG_>%lIt0kR{1ntzTJ&(5GXAC z8I4uslibQxtH#}SwmkeTL8yk56d}D?JZ#Po>@y=qD?smUVyC&r21i+Am0}) z);I%64H{PH+cVnN(uTa9BqEWFpGL}-t5l-qP20mbFmenuluDR_1F?i}sK!!m0rEaS zZYZU~Q5lRJqPj`z$j|Dm(DkBYDuE5ZQ55yMP zi~IHuq}dhsQCd!a6Mu4|@;l*wjiqBkxUJmINgR{Pwo z0f-^RV>)E{qb&J77~D5WxhIc zCwHejWTmF{rYhObifUSeY=a-%9I~Sq_>x6^p1z?)N~^>B*Taq=T)B&2&!d{ADZXzD zHg)elIIrXC#(p5&@}yk2?7^pzJJ06h(D+u?0B zgV^Vq@c<+lgQ6yy;WugCxgF82MT_J4GAyEPEMEU;#>E%VL zK~a+4uq>OKfvtLd)WVKW7&SypRbmWF+0g>OuklmJSHDB! ztJnha>OTz@2ci?>;v~-C_x^*r{u%Q8%KjYV3H`g82Kt1Mqt2ISX=7(z&SyV1rM=u5 zCB{WVDvg;2(shRfZ8z%PX0hR6V~|V?Gl{0v|6YGAFqC2W zlOTiVMq%0b_F0@xx;+@>4il^Ilx;l61s|DHqeVQ44Na|wj&d2-POm<% zZS1Ux0v~6pQso=zlLmFM(^47z(b)gd`iWHF4N<8}g)RHk1lS)>@8*&=C^W_lQ!VMm zsA~omG`t2-CFfjm!_`9TMzypjAxt?A^qxgo7T*iQ(lAL^`Ei$dcmg*GRcV>=z8C+4 zdH+KP+Eg#0CxSzdZIGP%$pcz^901zF__xAO?S{+C^c%e09^xc@Wd?%r{3hBU~{TZ zqfFuebay}6U$hss7j>5ykL)fzYRyk}u;`W8Q(!LynCF!qEY(+r7i;_Z2_!n686?*xBK;rLZ-v$FimwIie2(i_>H{#ys5X|VAcy@42 zRgoLUU2qzoj7HPxq`e>r-LmdGJ^`&$CT0Q+Lmg?eJ;0skUl9{T1N zZejwg!x%(*)?dw$r)7Pq{cy43i?(M3htsRgFHgA8qP}Cu9`vJfAE@E_^cW5;V84ZxKDocfyEotCDRKASYX)rag^1z7mCHvJCi$ zc2wmYc%~1$myokqeLKPn3JDe>(FL=Yuww^`{v~d%^irH~Up}VLX>OiAc6Pqo7-w=f zoyyD87BfkGXlwQsfK>VBa)G&U3)m0}2n9Gyn%MPR2x11VVnV_p zW5No|K$s4dgBN{A1Xg@FC&mdA3DfJN1u#n)IShP=URG zJzWL$h3{d3gN^#TgdjZ=En#N2CIAj(E-m~@0F(X`k=F}Q4GY_pPO{=xR-+d6CT>iduRypPsS;_XShoHqk#Wt~h9dwkxcrAighx4AkcJebgab)J!vb@$map<*|H@oD%tW9q2bW{+vc z`l92clb~8fFGDx)s9npN{rhN4K|BniVp{31-D7SFj4M`D&d%;7Ot#axz>#OlvQ7?Sw^ITQj#=vZZEqk`^z^b7~|8h=q~!nP3~! zPIy-QCXwNVui1#NpZ*pDm@l0x^|dacWMXhB2jSDi`Ma&__+U=~e6atxW|-=GzM0q~ z^sOZ04PwBM1XCE0;f9n%OxAw@_T6@}-XUwdVvfAF7YO1gZ>?4UCgA(a<&dp8-LS%E zE*>roO*_9ltt6i^_!OqTwxo9XMpzn;MiOWH@x-NJV~mUnSGfBg{Srsk#TiUm+IWkD z>)kG(L2^lwi}~HD0Zk8mYQ9{?b#r-tsp*1x?I0z!zp^&Z^`P)lV5~uSryE%grSs3%DPvPNj+%5P(1G(NHj#1f(7jd|WH!l_nXgI0? z&dklQ>>}?QZe(P!rCRy2Q-bm0qhxc3>ZAIICf$$3KfZ(~`8x-`l0G(uNT#Vz)o~wr zSaBIlk-_4QkAJA~I=|jSoY3LKp+afN96}Z*aJa4uF|tZ&)^N#e*;lk^TlM;`a)Ci?jU5rIDw=cIYrkauv7)40rjE#@98Cf@XR6P3xJ94L_*Hgyo(R06D>_C&IK zoL2TxD75p)!pyw=QZ4hk_*L!EV&g~;*1&7GX-QZh_nK3BQ8CP^okh)8+S&$R!^6#+ zKsy!kRz=1ANXWSHm7uvmc)eMyxSD6{r<$gg?EYiSGB!GLv1dYvUCjIJ!9FiqFK+<^ zYsC?^b0V>tK)e%cV`uA@df|Tl>9hN26J-GP14W!-szh6O|FQcX==tp0&V#wI>ggfC z%5DoO0}EVWDv+rV+4^`6qUQTFE!{9vw0>FTI>n1H+YxNU(r);blC*b+R!J~Ey+%ep zpd1;Xh1e;WHxy@i-qw;fOdXf8Z9Ef_EdmW#?3O<^((~K6RyLg}=bZVj~P1=Y9-f;H$s{sTnsU`Hp&lejSiCG?Eb!QBXDq;O z?Jzx01!|W0Xj!WXq^0{tjb_ofKF5CX6Vr$7L5x=zjBv;7(B(di8}i*Lt4CoH9==6- zz7)eR0^S}Ew;VANzgiqujPq$X>akjKMS9E4Z{Gr*uME0o3&=V50pmLP-9CIZd4*&# zo?bVzkna;*UOs5lH*XoT*^$Az_zBtp5KC8EClKRE0(9^o3K{*T+aK^;7^#iul@4en zg?O`^ds=IQ^Kt6kvV`V6bjZMVCg@ty_D7;KwSeW;v?u9&;c`#AF}Dz(H*6|A*t^Ib z#C@KOg_Q8UNfont3iNVzCbzF`az>j7BN|gYohnm?kEvgYmOCUlk;sl-|2Pk917q7H zzpfq*38T|-CUFFK>~!9Zgdy{0VAYw>$>O&38-~Y>O(xh+ULPrKB458&b!?xHZc`~j zz96BrP%CB<4A$Y#WOUgb#Ms2t?sSsC(qI6{1p3bPBBivI&7<{aPGHS0NBizSpiv1|V`FZ3ceXcZrT&Ut5G*%C~yMeSF zYzXG6a%9~6!<#RSjnnwJwk=^A^v@=778E>|hc4GPw`J1zAe>e4lwhYvvkxpaS|X&? zJ{&v0vFl`=@i7VudtY*xrnCv3+0wv#CgW{pgBP=#_5N4~9vPZFRzxVH55-jDven!-c{2NR z(^g{((}Pf$T5Tu{%=v^bq*G{+D(ZsUpbtXpj(v+OVh?oRz7oCiox}B^w zg5pVd*A%$;u@+Y2&%CfP4*SKeubx0Ulh04a_3AbVck7>Iz+Mzm?hK6UPRJ+*$i7V@ z4R}FrC~3oxF0Kb8r*o_S)E1XAy$nXjg!6zMVJ8}7uMH14&sNR82m#TOgNbE*46_og zD-?M$bqwn}B5fAP*ZR6FntpzG&mv2LPx;!f8Z8Fmyi~Cp4xLKH%bVe|yx1DX6YQdi z0jT1=rpZ<|KgmF_nj&3#CRE))_(6`Pg8Y81r1od=P1#D(sr?tI?GcWP^!(I+MZ-VjRuGHP!LU}4@)T;TW zB5R2$mHYYheFkw>X_eI7#GOEiK};i!aS%=9g%Y4ko(iru^KE&s6q0ut&S_S#ek=OL>mVU@(>H zloDZ0h`6ucMUmLM*{Qg1+{tJPvSh&rE83;bP509`Rd=RR^X$yBroxOvh}GWRIU8a; z_Uw002i08^#|wNn;oA-#8(uIrd!Ns3`)qm3H383(6k}oomW#~Yh|XrPr`~+n8vh7^ zo#w?{SZMh$bTev4W6b2*cWZ-($L8eO zpLP=R*S-`*cpUd5y*!Hflo~qmTU@)--FWt4TWL>3Gs$BTm_DMLY z%q)v|0-^{TXN+eA7eBh`*3vTJt<%Qa(Rk4ir&Q!{LWid#dd~I+70ngzaK-^-#ZZwn z;W&zb^|`*_7BF8Re*vhF+I460)vlQoxpc}@np=V~fMH2=MF#G+y11+#;#90q-)O$- zEg+{p{syxcIf0$|0&I1oQo(i8e&-f2fprI=8iOXk)S!LTh^uh{@Gg~+CRj!WJd9Gg z$7b4BUNJ)&NTxvlmyqhWuz`Ot23TJj_Q=$mbEO62C|lO%K>Q{} zFD=~kw1GyS;3wgnM^dTnJ_%|LAkNxPpPRluj8A9{ilu!TsM%lu@BvZnGSeYfZ7L5h z9;K9k-7Mj)hq`SSDg*U|c+@#1tqWW!BC!ld(&rCrI)n$F1m=S-RqVZl7gvdB%;S5~ zS^}r}+Dzd+BKvmyHo7<&yKfwDQaS8{sRtM^$dHZC zgHW5WDZy(HEjyWT`N_x61%!cg@wTEVMM$Vx7fY(N(EBvl<4O|YKi%IUIC~{uutz^TZU5u6*wHlZGx^+{ii!tky6zaQ7$DXp z9D#+U0XQwGl!nE}R$kHMm<8CHs+E94p0vhmPgT5lR@2`1{!RgVB0W!AY@BEAAcql) zeD^fpX!sRJmJnjBzS61{Xti(JKakqcfO)7LRx{k2S;C8{^16aUO%PNxHzRPD)`+k^7+OD{}^{vrp(cX_R8?L(^5j4{g z2@QLAM!mE_E*qcaYUPCl_Sp=`5lwh}4_xLivvz^7@-+=`##%Z1Zh8t^z3rp`$*||? z*ye#P)(z6TO+1LaGuvACBX@`6^9I@ieHtGxb?S8B1`JWdajv5;0&bGktkC+637J`l zR2!(%xP<*5t!2mipUW#i&HcqGqAJv=jIvV%L<6jP8=X!(XY^G39sN`PN8HDLyBGiS zdl|FSr3_Np2rk}B0OB&MyQI!ZyLfX<@-E4mqb*&1OgC{@Dyz*72fG=l6TCFncqs>- z?-qArj{kT_A66#Y+P0{(wx%IMJW9rajfK~}f+k}Z^}~l7qf3Sa-oxi)I(2s*g0acR zqK9IwsLXhr(vN;LSst4dc?ilE|4PFl4H%~k;MeHxnHNM6gEk(vJc`Uk3ir!lBb-0A zyqxG+YV#LwlA^5Xfo^6WRX~{3@r#G4mz85M8h5KoOLB;%H(5emAg=KI{xz0qPbOvk zsS`d>Uu^xuSUP;XBfPHBR|L=i3h?w`C$Z?rDZx6}b6k7!ySBVu)cL{eb|VT6GX8w_ z;#GH)9R7zGNcU^t3U>}ksz1vWUYf?Fh&(p9xND7X&PY3**32k=;0KOUs)V_W+jUA+ zNGY1ZPo-sh*Fev!??>5qZCs^bD}BV(QfyAWg;`(n0d+YO!&p#m=#v|L*WvrUPZ3k? z_)&nb0&!$Ih00JXntm6))yB|z>i|DYTuYr#GD6)VQTeHY-y~xC$R!tu{Lot z;z|c$YOf@%R(Ba{ENe~HSl~M;P+7Kh%}MuV3$BNa7S)T3N;N99hdm_#w^93v|IU34 zXOlXzVjbyXST`%u+WgXkKm)USMQP!=^-4gv&$nzkh_|0_@4TTDe~=wC`q+*HMsSF( z?8q;%lz(HQ>i?AuZk#=MxT(1~y+jJs`-ngk-fIyYGXL*>rjwhiR7!4Y7 z-_35AcHz4>A(q^?fUYu^8?~zCkFIiBmU?A+nukL-Qj3cRRlc%%$WS?&u{~9T(x%0q zRlQne6-*T#`SP;B@ADhsSBWlwfQ8QDTfn}E2Mkr7jQJh;Dz4lko}vkd)AVE=X8}ey zKV{0F=m0%t9@MISW42)2%~apUnnW(5`>|OD4xl>wpqFJWY-&&ntz0p4K3F9wgF@oz zQl6AOrg&bEWaxEZkrxI0+WSr6?-`swPiXqv<`aL8u=nq}-oGFM{s$rO*C%QdkKZ=( z_!sRSY72@-zv&R5jLM8*{ad%_0B#2a1rUl_#jF#cJnt}o(w}wlz^6P-NEAQxtUkH5+=ERk{uApOD|iI9R$35sOZcQld~k2IVgEJARO%W&EwDEb^kn;VD##7iLip#L1;)K z`((%i?|DisGgg1hB!wiOHJwO=FzR|fQ=Miv(tAN*MI3ja0|E8M%(2IQ+28qnSzR`{vrDtxyctU zg7eTa@(N9}{xj(V*?CIU%5KFRgd;MO zYN5}PX@iG*B@^FLG)0|d1cWaUhhE-M+-!BiloOt=)V@w_7Z~?;?A2#gqb%N0uQvA9 zR3aTs@Dfvy8<`We7m*e7y-aBWvs#StfeM2UTyZ1S%DMk5fns&A6ey0OHQUmN(m_cvITu&oRu9u&8`xT7 z!h!7j+&G9Y(6Hiou0T#=Uu+*wN*U~bqQQA7lyH}Z6w6B7S#8*Ado?6xW0P&{*=}zq z$|W+COO~u0lJ?}-r)-TyW!bzj!*Fa@;*tpQ*j$GtFxXi`pAJjopB+n1{WyO+$5GSE znHB~*{(e_+@WT)O^S!}VO!5z&{j)@WZDxis-XMs(uJol5a@!COGGBRt@`BVhme_lnC0 z>MhPeP}$e7h~lDQv0`V(Q72?Qwr5&dVEh+ESqr1A?8xp4aCUDNA^b-us04h0u zVl(~n`$(BFhdXze$%!RvFh6@N5|_rUq^p7i4PrYjsuSE|7kj1b#r%%Fk<2mUZ88x| zJXz!pCAHnxltev6UUhstwq_=qZc8>~_NAhuX`T}^8{9AvDk~-{uigHsuA%?9f9NZ} zrF^~Fm$;}%d}kG$J7GQ{gYn_(@DMEoOE)v04jnkVhrVL8DpKUyS96+KYs9zN7X5YD z02R9WZk%LKfp>3mO`s#-I}0Vmd`h$mSKGG`nV}E2F+G^0PF{8FplgkLIU@5^`P}zi zBI3RauOIT$pEw79H+m!Kga9LHh-m8xP+`y@uSh772&F$<*!IR!{c%|exsLAL)!c0%m&LK z36~)*U=X)W8@9?0+exn6_m`Wk?~glJ?^zNL&u?#-Dy(zzxChjENqz4_<~FQ3aR^w$ zj@3|&Gfy!_6qBq34NtXTdZf6?8gKg3re{qGagzoIb_Y#>XkvJF zGLKgx=%yh|R|Sc~1?r3s&>U|q z^PF>a*E*_`l^)zxxv3%sky*G4N{FBSmUkDLmXxW60AyE&$bQ!i7fgul?6-Bw6~~LX zSabp=xphTU?N7}M-}{Jgch#?Y@uv^t&+Zk#*wxz2|eFJo=Xo_DA!@ zmx81b3M_4Rx~WOCCDkxgwy3fNgs$T(PeAX0Qn)sfz;}Zk_2q}+hS#vOD3szEob2; zjl1ixXJz%`0QJvRLdbQ$jjD*$^wh+1FiroD4xTAna2-fl2i^~F3fltN7uC+##1BVm zy^&seZk4v%g`GDg550%9-CV`!_m`Zmm-W3=?lJTcy}k)5)+(uw%cW@hbP~MEY{ieN z((42!}_F7}EorBH=RkzGct6H2-b4;$aWtlFI;3;wlIkQqF8qr~H zFwUh#$g$hY(avp7o>uakJxT5HdjteZGenmbG=?TVe{P%@P5NB1+BOc1gWd5Op%Z+i zR_Tx>hD5<)6$U1&;98aWa(4>n$paed208sv`Nain6OJd(YVMPh(QlzE%{vtxdUeQL zmq3Io7r;(^)LHbk@Q&P<9)3m|O*N`bzR_;m-fns71(=_CbHpC4E}P*J>+hZ?1kgd~ z;dW6~0s=AuQpkLr_$SRyz)}A3qn+c4k0TOKQt(;Vs1`7KZ3=zoL;QhAr@@xOoA-t0 zYib{j2aNCtv zr_dxZ2xv97@1Ep<`l$kq94C0t7=<493xt}ggsvwRJNbkj(Z7+?7yppBIK)Pnpb4E} zEM>Y6E?T{rS|={wZa12Lkpv`|pFTawnL62SoZdB&$!mPfp(^d#ny)!r0O?BE`FLeG z>A|FiDlO_pmF*Igl}Qsly3uNlu(pd^H63_jm>AfD-UoOjq)ydmh7>liTFl?Po9Yhi zE&JO2eah_iK%obPxk~Xq zz3p6~yEP8>W1_m(QiDm@XXsm-lCU;2s9iq}0w?r4kvaIr3CJ)WDQvv3I`VQUu&u$4 z*&@n$DAfEFL+m?QpmLAb4-_0CcW1l|8LfmMI(c7(bkYc0y9GR);`iXH%UTjQ0Tsoq ziKntX%ufm0!pwgj*O6^+CT*nr z$RWx3j#?42h~ORd{23oD*O%Tov)83x?fs}I?iEhKPqHk(yGm?G}|_$0x<@_)_Y3TfP;@&8Rf=Kf@9}2 z4L?dT$3Z}|&x~q3j8bAGgvG&9QC~@p0~oI!+ybI3H#J(|4vp7qtre(Za*nb^k==u} zr(44cf*3L0*{{p3j<{~NJbL&Rhh63SPRPhEHH&cy6 zd1iQht&QG6=gzCGnTuoI6_Pi!V6nq~Cs(s8{Z}p1VyNY)y0#myzJkIH>!@>fA;LYW+de?7e;ZRa>V|NAz0hB*q`6H>{CPWcThWfoL9q z2xFM;FR7i|e04#giLsr&JNxrl^;IeWR@83YU6gft3bd9YaKq%yYitX4lc1soI}@9v zd-V5mQi!)w?@@-S>7x-AkeQoa$s%JhSr*|}Pxy*<(N8ve&rd&Me)}2{K@d;}8gCLk z5Yfev+^|A(up)7f@bdG%m%el6Ik5jC;q1#RoTtC-5RQ@m-|!TK{6bd< zYR3tA9Er;p0dOIo@5gQrsuBFLz6A%VHR}%Z)$Q&5b@@P!m-mPLbLQV#`44vDiZU#o z6v5q}nPe8Y5?#+|B)#^`8>UjL1`zk;prBbnq~t9?Dd5K7R37>LPF8pRzSsqIibJs} zU2H|U7NM1WQN!Kbz%-Al|LXvNKvn2{HCbWUO-MqO4T$Qc`AP(fAG5*8>6WO^ zPU3ZOs-5VyJ6a1Z_UB(%J9$tj3oM>+1Z$Vy_Z(sX<_>zW#tmfT?xix*PnOqZ^3O># zNexprHa0|9+r+9;sZHRYvHanTD7gCfiueyO`*-S4`=gNmf!+O1^(=o7@^9$+A0!Rv z{k@ET1IB+Z=&x!0%`Sdv>#uJ8%eMZyF#YnxzpjM;)&&9sR>}gOT1Ov1E$ES_Eay8Z z$0<7F@Cg+`|cEx+E^B`P3zg4##*)IV^V2<0}l-~ZoP#@XrO z`at@4TpN{dK&7Q$%ZaSwhKWo;JT7}=U=Kj5*6q|X-;(Q+Ghj$!rt^r8>n1X+)hgx| zK;teSluhj6LI-~H=)yDWBcWIcy-DUf9=2eGp=a0{0Haa(s%gqujI8OW*U51et&InZ zvDB*~i_4Q%l2_8#c^&t_qaw@KHXD!|3iw#D4c~S{D_4YdJ1$nMHqCqI#PSFhdpb}P zFOELi>UCU)_+e)qSGSftEjViW(WjZ6wx&k=x~8o-(wYX!z>{6MPEo%*HOJrnLIJnL zxdcKW2%JHN)5uqc4L-JcNV`5^2Qj-xQ4fS36b3qoe_nLPVaHesls${$VQ4KW2i1-$pNAzx5%m-abLq|24c=+ypm+)BC65H8-5cP4= zEM?`{tL~J=w^@6@y`{gYzm4R)4*3&C5;!M^o}o}XEx=%fAf(rxn8{1*d9aZ*^yxvb z>&%v~E=~t(8&q$BJ5w&tr*q>rb=8?Fa^Ig9B!x;-#Xo(7COU9MHYdmG)JekYBFANK z>J=_yd8WzFE7JTRArFU52scRq&zu~i5jp|zsxuNt?Q!oVM~w7_f&QQNzB?MuzU`KW zAZqk(M2+ZO^bkEl5S<~SMVKIBM42GbyC4W6dW$*)qxar>ok2vj87(8mJm-GSIqR(R zo%OxnI`8?)I)6O>&04H`-D~Dou50go?fqtmC;jx{j2Ps$UYBJ30KH-aL72AsIN9$7 z<|`4LeEEz+QoeP9Ne zj@S(Ic|7|x2>FhUqsi4K1$I^&lphuA`jL8_lwC3|=kn5n`9cx9@fAOrcS8i{h!Qqb z95Ky0L9Kn6-bzu>=wCD;YW?&Z2Nb(!78&>%FoP^O97KdL-4dl+AKy2dMkeSwcIZGY z8%iTzYMU!d{^)K2zrzc+Vm5kcZekPg3Xbh_4HX`HTa6~Q!b5beH;7Y6^!oKw&j{zH zz!E`b*gZ@lQoIKgYcINh5JIl0Qjz0{(XE+muiD`Oz0SL4*)Nr>bpIqU_c0pjd)-cj z0pJ@jBen^7J{!V11xBvdBNySEU`xH>RhxB$RTIe@HF-difVVQ2na@KKn~|YajZbAF6@vS`4?YyfjeKqqGjoGY{ z2d-n^*87}^OGX+nsq=4DlfEE)w{#Av0MsQCrPCu$4s(Ecz`ET_WfPb2E8EwJR4g0y zBM|9p*N4@Q5DS7=)**}Nkda?+ZhYWkOzr!fP(rz2vZD3IvwZ}@`uKY-tzMEIZxZQn zz-O9*AJrgi=GA>zHx=4L7n@V$M%vrXmLuwQjLYu0>tQ3*`27`F^j(oWWxi1VBWShR z)VYTtOs{VCK+q!?j?zzb{JhM0Y;JR?&LpvjF<3&vrJm>BO|)5n@6Huv zbWb2Fc5JlXu4eLW@NHH&N)M7TY^ept5R{>eV%gdgH^n2eR^{dm{ZXC<`t=As+F|Vs zp%zURYBKKY)%1av9=u&0Ov-v&06ozj&(w;vBi}Nd^%5;YClooVU39?{cWmHEtK83m z3g1@VkgEYpE6)mDsX&W=Jw$7#Rt9OtTCZNd5t(^f7{!d-ms=Rddb6pF*y1}k*UqD;l9pTc ztgf%v{URm$@h^wL8RcF^2Pxj0X@i%`&4CplrjA43_7$6{r!~NQlO1?4Lnm|RN_>Un z2cqj$!Ki2o-%7(Dr0L$NKh-F30C+&Yf!qb=`!6;QK?m6~4Oif_oq$$t`4_7zzI&-w zS-*PLO!iR;saq=SHt?Ckh^~g#E8#VjujW4&N9z(r)7?f*{$L@wJuo)>$(S_B20w|$ z8g*XeKSk%ggLAs}wKS&QSUVDF7%>Y&fu)XKJ_Ac>+@i~$9O4U48~S3joNXKqSgUP3 znhg@(@`QBPTG`n=&*gIQRQxR*El2#!YFl!!$d>Wcrd*zN#jdFO;8ZT-v(-Q`HnS23 z2s|RLdf8r=z6kGQw=>|?Bc2S%Yl|zajHG_IDREcJ3z~r}iB=9opW32#qY|y`~JhsHRgw&`a7d{GOzAQ(YM3SQ_~Yn z2HT$=f?92V&oO*5tK881k`^#!5+|2ZuM9vg#m%K|dDKUy`YnM}nx?G{)3@6ak8Rkq zqc)|guk`suR62|IY2DRGmD!PF;t!%5;+3vUMjj<78NB+?oaLw4;ms;$nV!mDXW--U z85_RY3X4*uo^4>yEQB-bQd&HwY(oroq0(T>I!_$&hXKW9TkK0R`=TI}MOe^%f&AjN z`+-bF$Q)Hq?f&0x9LhdA+axI>bzx4K3`EJzk)v+AvLOQQHBdDaO?Z%Nv36riM1HyE z=jUO!8^AV?Se;G@uErQbSuIZpUn)Emo);dL8KJoq^aPU|U+rNnIuM~OoUgm^=5=PN zRB+?(g94rjDPE~QHsSVO5!-s_Fi(QtZU3C~=6{aWLGum(+L3Py;GSw4@_q}j{pfJZ z0d=bKVol5407C3Ie;OxLiZHL+FuL>3W_X;~micvT_lVeoAr$EkFs5Um$Rwwgfx=@t!dDdWki=$`~Uw&K`_ zcVN_lyCvNdocmx>)q6`gespA?LWm?zey$;~`HA_n7Ee|tRypn**3QLR?&Zo-&D5QI z?uE!Dob=S$p9G7%hS+?FToH4;Ob6ZNo8Xh5^u+Z>GJn)+wLW!z>(k}$#X7D~Jr5?w zi2(8hlXGQRBo%4T(3^a*4E>qgjr67CM3>Ly2~)c!O!tBAv%3H-j^oKg#{wUjk;hnV z#D>}x`_)~V+RM!GKM4d~#+G&!#)7pH!cRvo+Az%T+J%BN7Gx^&sIiYG`T*PS9mImY z5T-h+T9j%!8z$>e*AP0Xr@H4;7(pDy>K%8QZoU9w+rCa}IA(Y*zhF?>SGu@nTQpL5 zvQpGPAu>#j{5a#ty-U2X_q7b&+Lg6l3#oXnN;_G7ZUa>vp*o+>rcCXlo(GHCeW)?4 z>~T}*pLiWA45BrU*39tqOA!OL+ zdGG@ewW`2+btIkv>eM6I6!EG}(=uy(Q1^Apy00!v`@>Ji#2@DZR$@*dk&2Af@$E!7 zlPQ1-Z-GR-5XZf$f&`%AHEe7QUDlo^_sTP~P*RlAoI3g5;h-bCHpYN^s>z`z2KST= zkn!xjM$h`HY|Lj+EfVx`AEbnqA5G10k`_7J1>M5>20Qz@`fk!ttXkXIvF~kWXg9ij z|Hd6IUG`As<5T(E0OeDyx43JpK`>glFOLKsOw|9n2}Ul`kjH2_q=bc7XPDHs%?4#W zaT8d%x7aPu2YLBf_$G-jxOnPtvGvhTXVShlb)_uPukOE zzNwB-E(wn6HhNkN3BF_GJ zGTE=`5VZLFm0a%Y)x(XQ(zUoxuEmBn7{M@{+7@5EAxvXNwy*A!?efQ82KX?ug00^b&CK8^`XOFyd};)_2_ zpcd{%fMAeP9OHG4vLNdEk*6TirMCLH=hs0ow)LBtVxjRaNgOv=ClvY(o;mTJzkv~A zUG{sW_h+E~dKtF4i%SM&ZE=Rae5B#@`WD`r*VEpI_7<4z&GjbV%{Jzq4hozwdg_%& zV3|NGKrF{LeA+WiPD{QWCLK*g=Og(m!B>4E4o6sm<<-5;Z&z6iQk=~&MZd4^Ss8p$ z7;|~-7)O@B#$l=?`OJI}Bu(9k`euda*bAY#PR3K1r=UPrx`n>2dD#ct+$r zSP|8YpQc!$__)k^=*3H?CGtXIaQHrDA;&GK>=%26tjFr0tajG=S;UiKtp9~+Yr3g#G4%KL2GgqUbUukgutZ-W zuV5+HmuB&0wO%edjD6KsH8WPe2hWHWt3Y16S;bat(AnqF+OKL!JXT4|8sv$QC2yvD zcZbyDnfLD@2>P_UF;^tJPXg+y6WKdcrsr3Bz+R*DHwm@r!GR7B-@&&u4$w-Upj-FT+40u^BViZ%k0&%{R7bX zUIMUVrOwfTQvn2|6EB8_mmD~vcf0L*(TzDMJ;Z&K=lvJ13w~t{Rnm{r$iNM@BlN;j z;@QJqw(-5U)F*yY!l)5K)U{02pa_{~bB^_FLH;8py@CeD65KRRFB3Ulka{VZ2X&Aj z2<0Oj(c8Hs=+#`V2wz{Wq-Cw<2E9kVJbm>JUPhxN0WyS_p_}pA$A;HAKp+TU)T>qI zE}upHah~4#K5}K~sNq}Ak;M18?=G)3;UQ1;JU?%rS0%e|+R@-yTWzsMD4}!lSnK$m zw8k1wcmPC9Ihl>G*7kuF;=|(;V)B9!sxBhlv#NGFEbHgFd{s&`Cep%k=5gHKOV2j5 zt1!p>ZJD?eu2ErZ&SJBS~YqwekYiege+Y z8c?>X08pKPuUvp)VanrAf}#og_(HdId;aT+c4Bw74{Gi+$9NY0s!^pS|Ne{m3Nf=V zshh0CY*!I~-5t3L){UuM?Vywun-50i8q2mf#J8!wDQ|i4I}F@=@#)n3Gd2+E;pzHl z4vC&mWU4B$p->V&tBEr5ARs3Dk|ehMkWQ|QD7BA?_Oj^e9)27~)h@6S6o`Hn?d-bs zQI=v&t!MspV^EBzDSqU(rM1!e-64hmAC`pO+(4S80h?Lab5L{#*(*_>n_Lq})nvZq zUQ=<>$9fN$eqOThi9A+g-2rD^ISqiQt-E9)3_;51j<7?#pzYmC>-pxAL%KiA6tdhb z#<@RpJDgMG3a4LZsJUKkgefvdiQ}|Nm-kf_Fxp>!7sFxC-aDMKr0_)5P(JpTBn}f$4hT|-@gVj#c;N@jUA?h$wh6`imiRVLrk#v zWJuw&PJai7Dmkn>|GE(7nhHFAHy+_}aTtWzqH;O}<`@@&)3*GQ+2wHce4Mn%$wRRz zE<_DKoyQ!ciL8#$K|vx9WR?*0ka({RLjzfdCp)GRN{e|i@da;t1e3w}EgNAt6_lOM z!&%v2iidNMvmwexW{XDeG0}og&R<-J^EZ78UvYiNWd=~*AQ}&EPvjWsL-aMgw>Thw z`e3V3?-}KwVy&oogmS5Q>g{>3e9J`%*3SpPGGtbVp3cEo*=>49W(w2{ik zI!e$cOEoahwig-0x}^GB>R&<@a1-o3*@K;23B z@TS|pgXsUa;O2k!Z~qA7|4&GeRyO)SS`<9IYHyu=`m3LcJ$}Jp#?yF6W#?doQlk1- z&f?pG)vObmC1Jc?KcHW9bXPljDC>LC_OzqksF#kRmd#yB$Mm$CV__KGgo}RJft1L{ zDdbeYYZt+S27c9BVZr_OAPoPuIgBI|_Gy-iuu&1!azT<^)xFY$UQN0wFCJEej$0 z@p~ZFYhFnRehW~2$?$;W%)h1R4J=zJ7&8y9j~49ggU!4GcNkALaB?c`kpwV7Zf~z^=zzB%YWxz8 z)>+fGn_P^C>+amsFbgB>zfXeD+)7J~^$L;4@hNgOec79m9m9tDQE_=RCfs+u{n{tv zF~kIMgHS)$K;rUwZX0GD6yXnI^)qM#X~uZc0QY}>uCis0Mqn&dLw5DR@`ia5)$WmY z8%7=U;4xSZ3%SV5K|Jw8?kR&e!5~|s&+E_UGuo-2(oK6fQ=)CPF3N_?Dai*}rEB}A zx~d;xc~M5p(5)^uofzdu%UTU@#`8P_AjR(UDTV1plhOgH%9VU;NgD6$GFJe1eZn6m zy0zNl2eb@KE>3SreGDD2Iw3NN;_q>W1=ti}^P5V0%osZn5g&D5cFw|0bg*#P zb!m~iD$B~ACr_Vil}DC+YG7-@ictWaevS_1yRr+XCqeG6B%xROI8nsRlxXqn*_x?- ztFD=NwkL!4*e%C?4F#oO`9{Sog0l%GAcQ9OkC{|sj9f<%_I20xt)ls=K+ejC+jI;v zafAxQTh$~btr+vz609HMzF(!Kjhiq*vtr?bZu%D*UXO{9Zl56>367D2ELGLP{`uFN#=T#yPNS6jBN9L{KQp0?H4dBj4hVV0y# zqx>Yi%Du;u?S2QGtt|XdV_+Pt+|vrltXFFE+IlUSD?EhbBzFUbOM2NUM08xseptIy z`w=_bxB_Q-6DGx7e^0p6rLgNT#s?^Hps({Tc!3GgqJ4EP_;t18b=7so#R}|DjrUOP z>8S-^1n+qYm>~Ikx3Wwyj_-9a<4CKZnTUHO*p;59_1jilyoD>zC-q))O1A|S`CQs^ z#CeD3rhSLq3X)cfS5<;Ws>5gbfJ)jZ(sXGcm}Voiu=OrSuyj^Ex_&?yc~wmjB#)U0 zOYK^}T^l|;<@%PtKRLuPJ_-I|>*MxGk7SIN-XG0GFNZ!;ui%+Cdc+U&4id4J>-6}! zE1ji~p6h0h-OH86%Mfs8YsirtpvG)%L2oRD>(wr_Q~dn>y2zCzzhn(CHH<*b|CHo2 zDR|CIn3fhwN%oV<4L_1%G_$ua0Vj&ZZDlz_;50adXVomg{?jNC#pX zC(n%IYx&3#@hLrKSm5juu?IVhna>-b0b#>C*^DCcdd!*F5{fGJFW%^+mbMl;3W%^a ziF3y{kJD&K_^NXyYC#3Ew-RHmBYP)q1*u%QhNlAC)${xnhIZNu5$*7?MTBJJFfjZw zdGKLw0HFr%T`qkO41~CkA?g9qRLQVY-RZPYGtY84rqKG+3J)#n~jr? zHBWawdfp@WH7wkzY=mj;2T>oW^18DfC<>IIAT+>g*DC@q+89Dy18GLH`J3Exww@(R zcnbkU?Mm2<%Mf0iCi*x^nTk281Icb9&f1VJVPk1EKE1~ru~ZT}npV;`3v2cBEF=7( zMet@J24Px+73^7P`40EH5EUCz9@;%wHjGV@hTnG@;v}qk;xJ6MO`8m6y3X!<4Xf+u zzXw+_(w!5HsH!A86loap|I%cv1&D5 z4HHcKqvjZQxfw0FY+nWqNA}^9y45oE{qJPRo%_p#odg$m{}Zl0^8cu3{?{37)6ie1 zbZmcm4!&Rl>beI#cDsEWk-+5y4`IWGcY`7L5&V3k91sV25_Bw_Ra z*oSHV5@Hm_uy<~t^Kfzt2*Hbu8rbu_6U*TG;Zx-*AbNhRM`1rMvC0|y3mLR7QVaOB zx-=|{9gEUAs@_a?=5$%aiUtlC$-l^2#d2m^tN*8mYUgRPDE1Fe5ZWZyuOf zAbSpkFcXJv@iTrg0KJL1VAy3lTjJ zZEH&7dyh(yk9Ll3rX+LN3~TG+X+E^L2y9%~K+%IeQVXzOPX>%*JXnZL_L`V#AJpo; zkBz*Ivgl&L)6rO;FW(`WI6EfA0-|ocxdtE+6WgIX=h!;4T^D;Ls2<4qb-!Um;Hs=C zdC7EyqtUm2u_{Oy1-bbnj|w6Ad4s6LU7J1F)kIRe*v3*cQ-j#2?_nJo{z(7rhQwx` z)|a>UV9_v|gAhTixH0+=ce>2qKXe-b=Qi|E_Tr0qHpuIvSV0-4@V%KG^e$HbF<*=U zMIoGBOQCfu`q>6RZ?MLE(75dVfr!7WDJ1~0WR|~#arzb zA~Y3b=i$7iWGD10{t@7HJB6QdFMmLNJptjE{NOFHYf|T^S(nrqXAD`IX9to0c)6!| z))*o_?dR@?#p(FI5WLblTX{cXNano85X&o={o3hYzFl8CEpSM{}vX@7L5O>aZ!|0})$1Fh@9vi z_>3Qnjt-PP^>_{V&QyozGS0pFhBH8cXsxnAw9rJe^pil>WPT5iSJ!iu{F8M#wLDG4 zZ>MEn1Zkj|ae{g1cvwkrn|A8bNsk%Tyk>3MvK7v4WuXU06@oD zb`#VZlqU{V1ZE7bNRt!Ahf-WmmB&_(PHW=}*x!7@^!&)HPg{5oBsj7M)AWI#VvHgL zS_4&{+Nq5-WeI1-rQTO*%A)A+EWLbYP8rh`$$jO_K)Cg$q?2NU(G9PV(c3N%X^gRm zkqQ3-b6<8ZUZ3t>pn~6SlveT?w~N*9OSorDz-bhVX9fs>CuKout@xQMfDy<_nw1M+ z$Ir#OJ1ph&xc**Sx@0BPwjl5$gB6bYX2vO;*6W z>4=O&LKnjobh|Ze>oJFgJL)(RgieD_bY}fYaFMtKLo&B~YraxT?l@HSZ0%`!jjU(? z1UFAI79^v7c&(}?HeqX&g4da`W*XIQ~5q>7N8QlKv#X0O4AdXz(>T8x5WU@bg5u{g1?yC%J%0Xujrs062Q4hBE}A zE0lqaq!AJRCqdXC44Xyp^UhZ=p3yZ72xB##grTiy{v@E+!QGv>0eFJu1FHYcIuKsq ztzwLD2H^f;wb}8TK?a0l()^R4ck1sK`}-RMVkNPEud%;(<=@A}f6)QEd5jY+fExAU z>9QY8zi0>$gR^>iQN3@uzpHhjlqvVkSe^<~KzSx?xAV^lPyTh!7cR~#XhIE6fG;tZ7nbBv>3j*IJE{zRXA+jRbVZ9fmeRc22@QUobDH|O`u*Y z55EOgJ&2Uf#v;<)l8%-cO`yMm3XfhqbBMttQrUrle0d!tECz6@5i9fi^4xknyL8d! z`l?ka_Okm9QJF#LO|HBYVei)3dd9`)DHvvBi0>pch7u;M_b_SU_0i z|A@FrC!}3arU}_;Eqi9Z-gDyv6Tvw_@^rg%2L=@G2VU|SLCz<5GNbfY?n59*KjRj7 zV_jwC3<9)&t1`dHeQ>2o{9AbHPoN7^a#kBSj%EHe|N0kO^AUI4k&M%*|TF7A`s6~ z)FN@3MIO-{9>R^;fsCDIPrED+oZjlo(FB)FE(~>$pI3;J|JWe*n_yh+aoP-);&d5j z-(RILpg3+|fJ-R_)za|0#B)XwDf!4#)`Qar22}52fB9}^OP9MhB|+Z=ZXC1*Z<#mJ z-D`CN`u1uX@|L5A$6Z8x)89Z(uwaybI06FmbwW-sxxKkQEI-a&F__J7PT?Py`WdGm zhnaYD3M0cdp(1wZ)w$h3(M`eof~gq2#5$j~Yf*AR#qr&XiDTg;&d z%0CHc&kh6oT2!+uVBN0ex>>eOQ4nX!{RSPco9Wt5CCXzAxCjJ3va51qufMM1RN!sX zGW%3Cz~E{tjQpqEo2<4oCST=ldA~(;L-~`G2Ykhvl%dlt)r8R9-d&VG07s!pru~#! zITcsTo915G=y~$G75OI)r`+WKSP>B&#iPM$q{W*@j?Kug%IHz5X29lq0o@p?Ix5Sh zO2nc`pg)jZ0;3Vn7c)G0FM)gaJ7so_F89`CJN2rYH_m--3mZ^5gi0i_cjwu%n4>!V zSzG)iA)1^@Lpy-a_hwMv_b1G_r@#xUSm5V_cvd}ys^6E@J>y9`eS&Mn#6fE z-}M*SCaem|h#F_!)D##SXz4Nuce|}IrYuc0kDxhPEf)(GklkGuLMPOt>(t&cw|uPz z2-x}Qjh}4uO;vj-_U;$UW0My2kLXaGpAeYBuUBSioL0IH!Ah=M9aPU1Z#1^Lqd4#G zKWI*N3^$3m5Nu3a!oi;;$<6cQjR}X8{VFRa;yP%~uGy&U_Xkwj8>d|}55II|TQuqN zrK#dPZU+}-w1g+Gx4*>byswmnL~`Aov*=d@#W!p)KnFAfQ<1Gio+Tn*zOUbFr1w@x z`nH0Iyy^@eS3eU^03^1XV2&kd*1!Os4ILSK@Ji1!e+p+(?kUTz?bF3exRneVjiZ`k z?(CFoG=Hn2Kht~q)BauqylxJm=7+q>0Ub_hQVj)bSV$4n^Mu2zVm?7Yy*dhI0PGTt z2fQ$hYV1? zOty+3JJ+!P#~1IOiA@*2XQhavCe??;1U=qNWC>zLCx#)2L}Q`T!@nNk$I#d1#IrJi zA6+$->$`p(;%Wp=xzq_)?~5Y52!7MsV=FeR$p@$QLnJ0;0+?WRbsIllsy|qHf~(_< zoPbX?p7#(<#{6UqzvIjuCPj8^PrFG&xhEeYg}wGy&GD2SJ1R`KkQ!ofNhd5(fAGTS z$w>2n(Z_|ySK_uK0ar>vis=DtR*#}zP&5xIsFSLx-yxJuq{o&F;P1`_DQ%9dz-ace zlw%>~&;-=(1w9BEZX2{N4sotF6bwA>!SM2m> zx)jb$zM877M@K$y-K5e!?d+iPGc@X7@L3W~yD0IO9WPKl<*Z)*4!n!e$PUA@5+&v9 z&(s6m>-;k~XXKc?-E{Hk*`daom_t$=U7VDZ676I{FRe9v7gmo?3ji{vrY@tkmvEe(%!SbXXon$xA<6s9>|*DB=0TTtrkpmg0fc0&-UAS-IHrD$33~0 z#{Iqx3|YyB(zBup;x`x%q`9X{o=9q(o+z4j=%0CLK4WN@T86`pD0nz z@a=aFSlfK%x*Wl8=3}Z9ZDQ!h#e~L}p;I@#vWwglg)mIb1@3oh-94e{-+%uQuzPrz zW^%&BKd!AOJ8D#d9YF5(PS8Q~^w95jW6q8lEtmCVBl3bh7?y)^v>(ymQI>OGUJ0Gv zb|H~INz&q0q*>bP`&}K^&b(~&b(Lbx!w7+xhKO}OzK9n6$`?L%8+s#*gxld+?u|E3 zUgiOmEBY#%J$7X!s!HT=%iZN$ zPB))hfyn5@;WxVmklsN;TqRUpWgsC$1V5pTrXTH)ArGSQ;tZs z3?Jk^wNL%$Vow4l-UbCDb0|93xn^Y5ZtYon6*-sKEUzxx+YeCI3@4Yj)JX$tVEz|Q zRPC?!Y2z=nWgLXR+Y)n!=r6RT1VCHZ&p zU?6v_I6mSUfPqL}0x*ynta}E4fvA4d;3<&+3{+A27y6I24*3fP>i7!=`lNTho7-&F?w Q#SPv0O!k*n^UtOK2Hlos#{d8T literal 0 HcmV?d00001 From 4503f9933fc57af3202205bd67de5f302e36d0ec Mon Sep 17 00:00:00 2001 From: Hiroshi Yoshioka <40815708+hyoshioka0128@users.noreply.github.com> Date: Wed, 13 Nov 2024 00:36:04 +0900 Subject: [PATCH 15/53] =?UTF-8?q?Update=20how-to-azure-ad.md=20(Typo=20"fl?= =?UTF-8?q?exible=20server"=E2=86=92"Flexible=20Server")?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/MicrosoftDocs/azure-databases-docs/blob/main/articles/mysql/flexible-server/how-to-azure-ad.md #PingMSFTDocs --- .../mysql/flexible-server/how-to-azure-ad.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/articles/mysql/flexible-server/how-to-azure-ad.md b/articles/mysql/flexible-server/how-to-azure-ad.md index ceda1bf523..2e7a7a29ea 100644 --- a/articles/mysql/flexible-server/how-to-azure-ad.md +++ b/articles/mysql/flexible-server/how-to-azure-ad.md @@ -17,12 +17,12 @@ ms.custom: [!INCLUDE[applies-to-mysql-flexible-server](../includes/applies-to-mysql-flexible-server.md)] -This tutorial shows you how to set up Microsoft Entra authentication for Azure Database for MySQL flexible server. +This tutorial shows you how to set up Microsoft Entra authentication for Azure Database for MySQL Flexible Server. In this tutorial, you learn how to: - Configure the Microsoft Entra Admin. -- Connect to Azure Database for MySQL flexible server using Microsoft Entra ID. +- Connect to Azure Database for MySQL Flexible Server using Microsoft Entra ID. ## Prerequisites @@ -31,7 +31,7 @@ In this tutorial, you learn how to: - If you don't have an Azure subscription, create an [Azure free account](https://azure.microsoft.com/free) before you begin. > [!NOTE] - > With an Azure free account, you can now try Azure Database for MySQL flexible server for free for 12 months. For more information, see [Try Azure Database for MySQL flexible server for free](how-to-deploy-on-azure-free-account.md). + > With an Azure free account, you can now try Azure Database for MySQL Flexible Server for free for 12 months. For more information, see [Try Azure Database for MySQL Flexible Server for free](how-to-deploy-on-azure-free-account.md). - Install or upgrade Azure CLI to the latest version. See [Install Azure CLI](/cli/azure/install-azure-cli). @@ -41,7 +41,7 @@ In this tutorial, you learn how to: To create a Microsoft Entra Admin user, follow the following steps. -- In the Azure portal, select the instance of Azure Database for MySQL flexible server that you want to enable for Microsoft Entra ID. +- In the Azure portal, select the instance of Azure Database for MySQL Flexible Server that you want to enable for Microsoft Entra ID. - Under the Security pane, select **Authentication**: :::image type="content" source="media//how-to-Azure-ad/Azure-ad-configuration.jpg" alt-text="Diagram of how to configure Microsoft Entra authentication."::: @@ -137,7 +137,7 @@ After you grant the permissions to the UMI, they're enabled for all servers crea -## Connect to Azure Database for MySQL flexible server using Microsoft Entra ID +## Connect to Azure Database for MySQL Flexible Server using Microsoft Entra ID @@ -164,7 +164,7 @@ The command launches a browser window to the Microsoft Entra authentication page ### 2 - Retrieve Microsoft Entra access token -Invoke the Azure CLI tool to acquire an access token for the Microsoft Entra authenticated user from step 1 to access Azure Database for MySQL flexible server. +Invoke the Azure CLI tool to acquire an access token for the Microsoft Entra authenticated user from step 1 to access Azure Database for MySQL Flexible Server. - Example (for Public Cloud): @@ -205,7 +205,7 @@ After authentication is successful, Microsoft Entra ID returns an access token: The token is a Base 64 string that encodes all the information about the authenticated user and is targeted to the Azure Database for MySQL service. -The access token validity is anywhere between 5 minutes to 60 minutes. We recommend you get the access token before initiating the sign-in to Azure Database for MySQL flexible server. +The access token validity is anywhere between 5 minutes to 60 minutes. We recommend you get the access token before initiating the sign-in to Azure Database for MySQL Flexible Server. - You can use the following PowerShell command to see the token validity. @@ -217,7 +217,7 @@ The access token validity is anywhere between 5 minutes to 60 minutes. We recomm You need to use the access token as the MySQL user password when connecting. You can use the method described above to retrieve the token using GUI clients such as MySQL workbench. -## Connect to Azure Database for MySQL flexible server using MySQL CLI +## Connect to Azure Database for MySQL Flexible Server using MySQL CLI When using the CLI, you can use this shorthand to connect: @@ -245,7 +245,7 @@ mysql -h mydb.mysql.database.azure.com \ --password=$((Get-AzAccessToken -ResourceUrl https://ossrdbms-aad.database.windows.net).Token) ``` -## Connect to Azure Database for MySQL flexible server using MySQL Workbench +## Connect to Azure Database for MySQL Flexible Server using MySQL Workbench - Launch MySQL Workbench and Select the Database option, then select **Connect to database**. - In the hostname field, enter the MySQL FQDN for example, mysql.database.azure.com. @@ -421,4 +421,4 @@ Most drivers are supported; however, make sure to use the settings for sending t ## Next steps -- Review the concepts for [Microsoft Entra authentication with Azure Database for MySQL flexible server](concepts-azure-ad-authentication.md) +- Review the concepts for [Microsoft Entra authentication with Azure Database for MySQL Flexible Server](concepts-azure-ad-authentication.md) From 11fdd8fb2d7d9ea0b96c58dedd153a9fc45e0266 Mon Sep 17 00:00:00 2001 From: Sudhanshu Vishodia <41684987+suvishodcitus@users.noreply.github.com> Date: Tue, 12 Nov 2024 21:26:49 +0530 Subject: [PATCH 16/53] Update compatibility.md Update support for $documents --- articles/cosmos-db/mongodb/vcore/compatibility.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/cosmos-db/mongodb/vcore/compatibility.md b/articles/cosmos-db/mongodb/vcore/compatibility.md index 75e39c9eff..75da56506e 100644 --- a/articles/cosmos-db/mongodb/vcore/compatibility.md +++ b/articles/cosmos-db/mongodb/vcore/compatibility.md @@ -495,7 +495,7 @@ Below are the list of operators currently supported on Azure Cosmos DB for Mongo $collStatsYesYesYes $countYesYesYes $densifyYesYes -$documentsNoNo +$documentsYesYes $facetYesYesYes $fillYesYes $geoNearYesYesYes From d4bb45fb21a8bb40b5b749fe4e840731ff5eee6b Mon Sep 17 00:00:00 2001 From: Shriram Muthukrishnan Date: Wed, 13 Nov 2024 16:58:10 +0530 Subject: [PATCH 17/53] Changes to the existing autoM docs --- ...migration-single-to-flexible-postgresql.md | 55 +++++++++---------- 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/articles/postgresql/migrate/automigration-single-to-flexible-postgresql.md b/articles/postgresql/migrate/automigration-single-to-flexible-postgresql.md index fd3e3002a3..19845cef6d 100644 --- a/articles/postgresql/migrate/automigration-single-to-flexible-postgresql.md +++ b/articles/postgresql/migrate/automigration-single-to-flexible-postgresql.md @@ -17,56 +17,53 @@ ms.custom: [!INCLUDE [applies-to-postgresql-single-server](../includes/applies-to-postgresql-single-server.md)] -**Automigration** from Azure Database for Postgresql – Single Server to Flexible Server is a service-initiated migration during a planned downtime window for Single Server running PostgreSQL 11 and database workloads with **Basic, General Purpose or Memory Optimized SKU**, data storage used **<= 10 GiB** and **no complex features (CMK, Microsoft Entra ID, Read Replica or Private Link) enabled**. The eligible servers are identified by the service and are sent advance notifications detailing steps to review migration details and make modifications if necessary. +**Automigration** from Azure Database for PostgreSQL – Single Server to Flexible Server is a service-initiated migration that takes place during a planned downtime window for Single Server, separate from its patching or maintenance window. The service identifies eligible servers and sends advance notifications with detailed steps about the automigration process. You can review and adjust the migration schedule if needed or submit a support request to opt out of automigration for your servers. -The automigration provides a highly resilient and self-healing offline migration experience during a planned migration window, with up to **20 mins** of downtime. The migration service is a hosted solution using the [pgcopydb](https://github.com/dimitri/pgcopydb) binary and provides a fast and efficient way of copying databases from the source PostgreSQL instance to the target. This migration removes the overhead to manually migrate your server. Post migration, you can take advantage of the benefits of Flexible Server, including better price & performance, granular control over database configuration, and custom maintenance windows. Following described are the key phases of the migration: +Automigration leverages the [Azure PostgreSQL migration service](../migrate/migration-service/overview-migration-service-postgresql.md) to deliver a resilient offline migration during the planned migration window. Downtime will vary based on workload characteristics, with larger workloads potentially requiring up to 20 minutes. For migration speed benchmarks, see [Azure PostgreSQL Migration Speed Benchmarking](../migrate/migration-service/best-practices-migration-service-postgresql.md#migration-speed-benchmarking). This migration eliminates the need for manual server migration, allowing you to benefit from Flexible Server features post-migration, including improved price-performance, granular database configuration control, and custom maintenance windows. -- **Target Flexible Server is deployed** and matches your Single server SKU in terms of performance and cost, inheriting all firewall rules from source Single Server. +> [!NOTE] +> The Automigration service selects Single server to migrate based on the following criteria: +> - Single server version 11 +> - Servers with no complex feature such as CMK, Microsoft Entra ID, Read Replica and Private end-point +> - Size of data <= 10 GB +> - Public access is enabled -- **Date is migrated** during the migration window chosen by the service or elected by you. If the window is chosen by the service, it's typically outside business hours of the specific region the server is hosted in. Source Single Server is set to read-only and the data & schema is migrated from the source Single Server to the target Flexible Server. User roles, privileges, and ownership of all database objects are also migrated to the flexible server. +## Automigration Process -- **DNS switch and cutover** are performed within the planned migration window with minimal downtime, allowing usage of the same connection string post-migration. Client applications seamlessly connect to the target flexible server without any user driven manual updates or changes. In addition to both connection string formats (Single and Flexible Server) being supported on migrated Flexible Server, both username formats – username@server_name and username are also supported on the migrated Flexible Server. +The automigration process includes several key phases: -- The **migrated Flexible Server is online** and can now be managed via Azure portal/CLI. + 1. **Target Flexible Server Creation** - A Flexible Server is created to match the performance and cost of your Single Server SKU. It inherits all firewall rules from the source Single Server. -- The **updated connection strings** to connect to your old single server are shared with you by email if you have enabled Service health notifications on the Azure portal. Alternatively, you can find the connection strings in the Single server portal page under **Settings->Connection strings**. The connection strings can be used to log in to the Single server if you want to copy any settings to your new Flexible server. + 2. **Data Migration** - Data migration occurs during the designated migration window, typically scheduled outside business hours for the server’s hosting region (if the window is chosen by the service). The source Single Server is set to read-only, and all data, schemas, user roles, privileges, and ownership of database objects are migrated to the Flexible Server. -- The **legacy Single Server** is deleted **seven days** after the migration. + 3. **DNS Switch** - After data migration, a DNS switch is performed, allowing the existing Single Server connection string to seamlessly connect to the new Flexible Server. Both Single and Flexible Server connection string formats, as well as username formats (**username@server_name** and **username**), are supported on the migrated Flexible Server. -> [!NOTE] -> The Automigration service selects Single server to migrate based on the following criteria: -> - The server runs PostgreSQL version 11 -> - Servers with no complex feature such as CMK, Microsoft Entra ID, Read Replica and Private end-point -> - Size of data <= 10 GB -> - Public access is enabled + 4. **Flexible Server Visibility** - After a successful data migration and DNS switch, the new Flexible Server appears under your subscription and can be managed via the Azure portal or CLI. -The preceding filters are used to select servers to be Automigrated. Servers can also be nominated for Automigration by the user. The nomination process is more flexible and not all filters are applicable. + 5. **Updated Single Server Connection Strings** - Updated connection strings for the legacy Single Server are sent via Service Health notifications on the Azure portal. They are also accessible on the Single Server portal page under **Settings -> Connection Strings**. -## Nominate Single servers for Automigration + 6. **Single Server Deletion** - The Single Server is retained for seven days post-migration before it is deleted. -The nomination process is for users who want to voluntarily fast-track their migration to Flexible server. If you own a Single Server workload, you can now nominate yourself (if not already scheduled by the service) for automigration. Submit your server details through this [form](https://forms.office.com/r/4pF55L8TxY). -## Configure migration alerts and review migration schedule -Servers eligible for automigration are sent advance Azure health notifications by the service. The health notifications are sent **30 days, 14 days and 7 days** before the migration date. Notifications are also sent when the migration is **in progress, has completed, and 6 days after migration** before the legacy Single server is dropped. You can check and configure the Azure portal to receive the automigration notifications via email or SMS. +## Nominate Single servers for Automigration -Following described are the ways to check and configure automigration notifications: +The nomination process is for users who want to voluntarily fast-track their migration to Flexible server. If you own a Single Server workload, you can now nominate yourself (if not already scheduled by the service) for automigration. Submit your server details through this [form](https://forms.office.com/r/4pF55L8TxY). -- Subscription owners for Single Servers scheduled for automigration receive an email notification. -- Configure **service health alerts** to receive automigration schedule and progress notifications via email/SMS by following steps [here](../single-server/concepts-planned-maintenance-notification.md#to-receive-planned-maintenance-notification). -- Check the automigration **notification on the Azure portal** by following steps [here](../single-server/concepts-planned-maintenance-notification.md#check-planned-maintenance-notification-from-azure-portal). +## How to check if your Single Server is scheduled for Automigration -Following described are the ways to review your migration schedule once you receive the automigration notification: +To determine if your Single Server is selected for automigration, follow these steps: + - **[Service Health Notifications](https://learn.microsoft.com/azure/service-health/service-health-portal-update)** - In the Azure portal, go to **Service Health > Planned Maintenance** events. Look for events labeled **'Notification for Scheduled Auto Migration to Azure Database for PostgreSQL Single Server'**. The notifications are sent 30, 14, and 7 days before the migration date, and again during migration stages: in progress, completed, and six days before the Single Server is decommissioned. > [!NOTE] -> The migration schedule will be locked 7 days prior to the scheduled migration window during which you'll be unable to reschedule. +> These notifications do not land in your inbox by default. To receive them via email or SMS, you need to set up Service Health Alerts by following the steps [here](../single-server/concepts-planned-maintenance-notification.md#to-receive-planned-maintenance-notification) -- The **Single Server overview page** for your instance displays a portal banner with information about your migration schedule. -- For Single Servers scheduled for automigration, the **Overview** page is updated with the relevant information. You can review the migration schedule by navigating to the Overview page of your Single Server instance. -- If you wish to defer the migration, you can defer by a month at a time on the Azure portal. You can reschedule the migration by selecting another migration window within a month. +- **Single Server Overview Page** - Navigate to your Single Server instance in the Azure portal and check the Overview page. If scheduled for automigration, you’ll find details here, including an option to defer the migration by one month at a time or reschedule within the current month. > [!NOTE] -> Typically, candidate servers short-listed for automigration do not use cross region or Geo redundant backups. And these features can only be enabled during create time for a postgresql Flexible Server. In case you plan to use any of these features, it's recommended to opt out of the automigration schedule and migrate your server manually. +> The migration schedule will be locked 7 days prior to the scheduled migration window during which you'll be unable to reschedule. + +- **Azure CXP email notifications** - Azure Customer Experience(CXP) also sends direct emails to classic roles and RBAC roles associated with the subscription containing the Single Server, providing information on upcoming automigrations. ## Prerequisite checks for automigration From 9c504f9d6962b419417fc8d8c31f5a8ed4e6067b Mon Sep 17 00:00:00 2001 From: Shriram Muthukrishnan Date: Wed, 13 Nov 2024 17:04:15 +0530 Subject: [PATCH 18/53] Changing the hyperlinks --- .../migrate/automigration-single-to-flexible-postgresql.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/postgresql/migrate/automigration-single-to-flexible-postgresql.md b/articles/postgresql/migrate/automigration-single-to-flexible-postgresql.md index 19845cef6d..7a5f757da8 100644 --- a/articles/postgresql/migrate/automigration-single-to-flexible-postgresql.md +++ b/articles/postgresql/migrate/automigration-single-to-flexible-postgresql.md @@ -56,7 +56,7 @@ To determine if your Single Server is selected for automigration, follow these s - **[Service Health Notifications](https://learn.microsoft.com/azure/service-health/service-health-portal-update)** - In the Azure portal, go to **Service Health > Planned Maintenance** events. Look for events labeled **'Notification for Scheduled Auto Migration to Azure Database for PostgreSQL Single Server'**. The notifications are sent 30, 14, and 7 days before the migration date, and again during migration stages: in progress, completed, and six days before the Single Server is decommissioned. > [!NOTE] -> These notifications do not land in your inbox by default. To receive them via email or SMS, you need to set up Service Health Alerts by following the steps [here](../single-server/concepts-planned-maintenance-notification.md#to-receive-planned-maintenance-notification) +> These notifications do not land in your inbox by default. To receive them via email or SMS, you need to set up Service Health Alerts by following the steps [here](https://learn.microsoft.com/previous-versions/azure/postgresql/single-server/concepts-planned-maintenance-notification#to-receive-planned-maintenance-notification) - **Single Server Overview Page** - Navigate to your Single Server instance in the Azure portal and check the Overview page. If scheduled for automigration, you’ll find details here, including an option to defer the migration by one month at a time or reschedule within the current month. From b5a15140f262b19b75c53ce0c1dbe38d4a16a171 Mon Sep 17 00:00:00 2001 From: Hiroshi Yoshioka <40815708+hyoshioka0128@users.noreply.github.com> Date: Thu, 14 Nov 2024 00:15:54 +0900 Subject: [PATCH 19/53] =?UTF-8?q?Update=20how-to-move-regions.md=20(Typo?= =?UTF-8?q?=20"flexible=20server"=E2=86=92"Flexible=20Server")?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/MicrosoftDocs/azure-databases-docs/blob/main/articles/mysql/flexible-server/how-to-move-regions.md #PingMSFTDocs --- .../flexible-server/how-to-move-regions.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/articles/mysql/flexible-server/how-to-move-regions.md b/articles/mysql/flexible-server/how-to-move-regions.md index 7d10d0e705..714d128e92 100644 --- a/articles/mysql/flexible-server/how-to-move-regions.md +++ b/articles/mysql/flexible-server/how-to-move-regions.md @@ -16,9 +16,9 @@ ms.custom: [!INCLUDE[applies-to-mysql-flexible-server](../includes/applies-to-mysql-flexible-server.md)] -There are various scenarios for moving an existing Azure Database for MySQL flexible server instance from one region to another. For example, you might want to move a production server to another region as part of your disaster recovery planning. +There are various scenarios for moving an existing Azure Database for MySQL Flexible Server instance from one region to another. For example, you might want to move a production server to another region as part of your disaster recovery planning. -You can use Azure Database for MySQL flexible server's [geo restore](concepts-backup-restore.md#geo-restore) feature to complete the move to another region. To do so, first ensure geo-redundancy is enabled for your Azure Database for MySQL flexible server instance. Next, trigger geo-restore for your geo-redundant server and move your server to the geo-paired region. +You can use Azure Database for MySQL Flexible Server's [geo restore](concepts-backup-restore.md#geo-restore) feature to complete the move to another region. To do so, first ensure geo-redundancy is enabled for your Azure Database for MySQL Flexible Server instance. Next, trigger geo-restore for your geo-redundant server and move your server to the geo-paired region. > [!NOTE] > This article focuses on moving your server to a different region. If you want to move your server to a different resource group or subscription, refer to the [move](/azure/azure-resource-manager/management/move-resource-group-and-subscription) article. @@ -27,13 +27,13 @@ You can use Azure Database for MySQL flexible server's [geo restore](concepts-ba - Ensure the source server has geo-redundancy enabled. You can enable geo-redundancy post server-create for locally redundant or same-zone redundant servers. Currently, for a Zone-redundant High Availability server geo-redundancy can only be enabled/disabled at server create time. -- Make sure that your source Azure Database for MySQL flexible server instance is deployed in the Azure region that you want to move from. +- Make sure that your source Azure Database for MySQL Flexible Server instance is deployed in the Azure region that you want to move from. ## Move -To move the Azure Database for MySQL flexible server instance to the geo-paired region using the Azure portal, use the following steps: +To move the Azure Database for MySQL Flexible Server instance to the geo-paired region using the Azure portal, use the following steps: -1. In the [Azure portal](https://portal.azure.com/), choose your Azure Database for MySQL flexible server instance that you want to restore the backup from. +1. In the [Azure portal](https://portal.azure.com/), choose your Azure Database for MySQL Flexible Server instance that you want to restore the backup from. 1. Select **Overview** from the left panel. @@ -63,17 +63,17 @@ The new server created by geo-restore has the same server admin sign-in name and ## Clean up source server -You may want to delete the source Azure Database for MySQL flexible server instance. To do so, use the following steps: +You may want to delete the source Azure Database for MySQL Flexible Server instance. To do so, use the following steps: -1. Once the replica has been created, locate and select your Azure Database for MySQL flexible server source instance. +1. Once the replica has been created, locate and select your Azure Database for MySQL Flexible Server source instance. 1. In the **Overview** window, select **Delete**. 1. Type in the name of the source server to confirm you want to delete. 1. Select **Delete**. ## Next steps -In this tutorial, you moved an Azure Database for MySQL flexible server instance from one region to another by using the Azure portal and then cleaned up the unneeded source resources. +In this tutorial, you moved an Azure Database for MySQL Flexible Server instance from one region to another by using the Azure portal and then cleaned up the unneeded source resources. - Learn more about [geo-restore](concepts-backup-restore.md#geo-restore) -- Learn more about [Azure paired regions](overview.md#azure-regions) supported for Azure Database for MySQL flexible server +- Learn more about [Azure paired regions](overview.md#azure-regions) supported for Azure Database for MySQL Flexible Server - Learn more about [business continuity](concepts-business-continuity.md) options From 62283d1da1cd4e566242b9d1e7500b02302bc101 Mon Sep 17 00:00:00 2001 From: Shriram Muthukrishnan Date: Wed, 13 Nov 2024 21:57:46 +0530 Subject: [PATCH 20/53] Addressing the comments --- ...utomigration-single-to-flexible-postgresql.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/articles/postgresql/migrate/automigration-single-to-flexible-postgresql.md b/articles/postgresql/migrate/automigration-single-to-flexible-postgresql.md index 7a5f757da8..52b2a91328 100644 --- a/articles/postgresql/migrate/automigration-single-to-flexible-postgresql.md +++ b/articles/postgresql/migrate/automigration-single-to-flexible-postgresql.md @@ -32,17 +32,17 @@ Automigration leverages the [Azure PostgreSQL migration service](../migrate/migr The automigration process includes several key phases: - 1. **Target Flexible Server Creation** - A Flexible Server is created to match the performance and cost of your Single Server SKU. It inherits all firewall rules from the source Single Server. + - **Target Flexible Server Creation** - A Flexible Server is created to match the performance and cost of your Single Server SKU. It inherits all firewall rules from the source Single Server. - 2. **Data Migration** - Data migration occurs during the designated migration window, typically scheduled outside business hours for the server’s hosting region (if the window is chosen by the service). The source Single Server is set to read-only, and all data, schemas, user roles, privileges, and ownership of database objects are migrated to the Flexible Server. + - **Data Migration** - Data migration occurs during the designated migration window, typically scheduled outside business hours for the server’s hosting region (if the window is chosen by the service). The source Single Server is set to read-only, and all data, schemas, user roles, privileges, and ownership of database objects are migrated to the Flexible Server. - 3. **DNS Switch** - After data migration, a DNS switch is performed, allowing the existing Single Server connection string to seamlessly connect to the new Flexible Server. Both Single and Flexible Server connection string formats, as well as username formats (**username@server_name** and **username**), are supported on the migrated Flexible Server. + - **DNS Switch** - After data migration, a DNS switch is performed, allowing the existing Single Server connection string to seamlessly connect to the new Flexible Server. Both Single and Flexible Server connection string formats, as well as username formats (**username@server_name** and **username**), are supported on the migrated Flexible Server. - 4. **Flexible Server Visibility** - After a successful data migration and DNS switch, the new Flexible Server appears under your subscription and can be managed via the Azure portal or CLI. + - **Flexible Server Visibility** - After a successful data migration and DNS switch, the new Flexible Server appears under your subscription and can be managed via the Azure portal or CLI. - 5. **Updated Single Server Connection Strings** - Updated connection strings for the legacy Single Server are sent via Service Health notifications on the Azure portal. They are also accessible on the Single Server portal page under **Settings -> Connection Strings**. + - **Updated Single Server Connection Strings** - Updated connection strings for the legacy Single Server are sent via Service Health notifications on the Azure portal. They are also accessible on the Single Server portal page under **Settings -> Connection Strings**. - 6. **Single Server Deletion** - The Single Server is retained for seven days post-migration before it is deleted. + - **Single Server Deletion** - The Single Server is retained for seven days post-migration before it is deleted. @@ -112,7 +112,7 @@ Here's the info you need to know post automigration: In Azure Database for PostgreSQL Single Server, a virtual network (VNet) rule is a subnet listed in the server’s access control list (ACL). This rule allows the Single Server to accept communication from nodes within that particular subnet. For Flexible Server, VNet rules are not supported. Instead, Flexible Server allows the creation of [private endpoints](../flexible-server/concepts-networking-private-link.md), enabling the server to function within your virtual network. A private endpoint assigns a private IP to the Flexible Server, and all traffic between your virtual network and the server travels securely via the Azure backbone network, eliminating the need for public internet exposure. -After the migration, you must add a private endpoint to your Flexible Server for all subnets previously covered by VNet rules on your Single Server. You can complete this process using either the [Azure Portal](../flexible-server/how-to-manage-virtual-network-private-endpoint-portal.md) or the [Azure CLI](../flexible-server/how-to-manage-virtual-network-private-endpoint-cli.md). +After the migration, you must add a private endpoint to your Flexible Server for all subnets previously covered by VNet rules on your Single Server. You can complete this process using either the [Azure portal](../flexible-server/how-to-manage-virtual-network-private-endpoint-portal.md) or the [Azure CLI](../flexible-server/how-to-manage-virtual-network-private-endpoint-cli.md). Once this step is completed, your network connectivity will remain intact on the Flexible Server after the migration from Single Server. ## Frequently Asked Questions (FAQs) @@ -146,7 +146,7 @@ Once this step is completed, your network connectivity will remain intact on the **Q. I see a pricing difference on my potential move from postgresql Basic Single Server to postgresql Flexible Server??​** -**A.** Few servers might see a minor price revision after migration as the minimum storage limit on both offerings is different (5 GiB on Single Server and 32 GiB on Flexible Server). Storage cost for Flexible Server is marginally higher than Single Server. Any price increase is offset through better throughput and performance compared to Single Server. For more information on Flexible server pricing, click [here](https://azure.microsoft.com/pricing/details/postgresql/flexible-server/) +**A.** Few servers might see a minor price revision after migration as the minimum storage limit on both offerings is different (5 GiB on Single Server and 32 GiB on Flexible Server). Storage cost for Flexible Server is marginally higher than Single Server. Any price increase is offset through better throughput and performance compared to Single Server. For more information on Flexible server pricing, please refer to [this document](https://azure.microsoft.com/pricing/details/postgresql/flexible-server/) ## Related content From b5c6366400282156c970c761fc342afce1ce7ea3 Mon Sep 17 00:00:00 2001 From: Hiroshi Yoshioka <40815708+hyoshioka0128@users.noreply.github.com> Date: Fri, 15 Nov 2024 00:40:53 +0900 Subject: [PATCH 21/53] =?UTF-8?q?Update=20how-to-troubleshoot-high-cpu-uti?= =?UTF-8?q?lization.md=20(Typo=20"flexible=20server"=E2=86=92"Flexible=20S?= =?UTF-8?q?erver")?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/MicrosoftDocs/azure-databases-docs/blob/main/articles/mysql/flexible-server/how-to-troubleshoot-high-cpu-utilization.md #PingMSFTDocs --- .../how-to-troubleshoot-high-cpu-utilization.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/articles/mysql/flexible-server/how-to-troubleshoot-high-cpu-utilization.md b/articles/mysql/flexible-server/how-to-troubleshoot-high-cpu-utilization.md index 389395e569..2d6e27a24a 100644 --- a/articles/mysql/flexible-server/how-to-troubleshoot-high-cpu-utilization.md +++ b/articles/mysql/flexible-server/how-to-troubleshoot-high-cpu-utilization.md @@ -16,7 +16,7 @@ ms.topic: troubleshooting [!INCLUDE[azure-database-for-mysql-single-server-deprecation](~/reusable-content/ce-skilling/azure/includes/mysql/includes/azure-database-for-mysql-single-server-deprecation.md)] -Azure Database for MySQL flexible server provides a range of metrics that you can use to identify resource bottlenecks and performance issues on the server. To determine whether your server is experiencing high CPU utilization, monitor metrics such as “Host CPU percent”, “Total Connections”, “Host Memory Percent”, and “IO Percent”. At times, viewing a combination of these metrics will provide insights into what might be causing the increased CPU utilization on your Azure Database for MySQL flexible server instance. +Azure Database for MySQL Flexible Server provides a range of metrics that you can use to identify resource bottlenecks and performance issues on the server. To determine whether your server is experiencing high CPU utilization, monitor metrics such as “Host CPU percent”, “Total Connections”, “Host Memory Percent”, and “IO Percent”. At times, viewing a combination of these metrics will provide insights into what might be causing the increased CPU utilization on your Azure Database for MySQL Flexible Server instance. For example, consider a sudden surge in connections that initiates surge of database queries that cause CPU utilization to shoot up. @@ -50,7 +50,7 @@ Queries that are expensive to execute and scan a large number of rows without an ## Capturing details of the current workload -The SHOW (FULL) PROCESSLIST command displays a list of all user sessions currently connected to the Azure Database for MySQL flexible server instance. It also provides details about the current state and activity of each session. +The SHOW (FULL) PROCESSLIST command displays a list of all user sessions currently connected to the Azure Database for MySQL Flexible Server instance. It also provides details about the current state and activity of each session. This command only produces a snapshot of the current session status and doesn't provide information about historical session activity. @@ -150,7 +150,7 @@ This state usually means the open table operation is consuming a long time. Usua ### Sending data -While this state can mean that the thread is sending data through the network, it can also indicate that the query is reading data from the disk or memory. This state can be caused by a sequential table scan. You should check the values of the innodb_buffer_pool_reads and innodb_buffer_pool_read_requests to determine whether a large number of pages are being served from the disk into the memory. For more information, see [Troubleshoot low memory issues in Azure Database for MySQL flexible server](how-to-troubleshoot-low-memory-issues.md). +While this state can mean that the thread is sending data through the network, it can also indicate that the query is reading data from the disk or memory. This state can be caused by a sequential table scan. You should check the values of the innodb_buffer_pool_reads and innodb_buffer_pool_read_requests to determine whether a large number of pages are being served from the disk into the memory. For more information, see [Troubleshoot low memory issues in Azure Database for MySQL Flexible Server](how-to-troubleshoot-low-memory-issues.md). ### Updating From bd5f820421c2b309cdb6f6c91541c30d2d5fa9ba Mon Sep 17 00:00:00 2001 From: Sidney Andrews Date: Thu, 14 Nov 2024 14:20:18 -0500 Subject: [PATCH 22/53] Update how-to-grant-control-plane-role-based-access.md --- .../security/how-to-grant-control-plane-role-based-access.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/cosmos-db/nosql/security/how-to-grant-control-plane-role-based-access.md b/articles/cosmos-db/nosql/security/how-to-grant-control-plane-role-based-access.md index 958273066b..1a53b99f6d 100644 --- a/articles/cosmos-db/nosql/security/how-to-grant-control-plane-role-based-access.md +++ b/articles/cosmos-db/nosql/security/how-to-grant-control-plane-role-based-access.md @@ -24,7 +24,7 @@ Diagram of the sequence of the deployment guide including these locations, in or This article walks through the steps to grant an identity access to manage an Azure Cosmos DB for NoSQL account and its resources. > [!IMPORTANT] -> The steps in this article only cover control plane access to perform operations on the account itself of any resources in the account's hierarchy. To learn how to manage roles, definitions, and assignments for the control plane, see [grant data plane role-based access](how-to-grant-data-plane-role-based-access.md). +> The steps in this article only cover control plane access to perform operations on the account itself of any resources in the account's hierarchy. To learn how to manage items and execute queries for the data plane, see [grant data plane role-based access](how-to-grant-data-plane-role-based-access.md). [!INCLUDE[Grant control plane role-based access](../../includes/grant-control-plane-role-based-access.md)] From 28a314881a496997505dee54200bf4ba2862c8b6 Mon Sep 17 00:00:00 2001 From: Sidney Andrews Date: Thu, 14 Nov 2024 14:21:20 -0500 Subject: [PATCH 23/53] Update header --- .../nosql/security/how-to-grant-data-plane-role-based-access.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access.md b/articles/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access.md index 3055b2282d..bdc5225d0a 100644 --- a/articles/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access.md +++ b/articles/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access.md @@ -27,7 +27,7 @@ Diagram of the sequence of the deployment guide including these locations, in or This article walks through the steps to grant an identity access to manage data in an Azure Cosmos DB for NoSQL account. > [!IMPORTANT] -> The steps in this article only cover data plane access to perform operations on individual items and run queries. To learn how to manage roles, definitions, and assignments for the control plane, see [grant control plane role-based access](how-to-grant-control-plane-role-based-access.md). +> The steps in this article only cover data plane access to perform operations on individual items and run queries. To learn how to manage databases and containers for the control plane, see [grant control plane role-based access](how-to-grant-control-plane-role-based-access.md). ## Prerequisites From 9da00d026cf6779a62bc10800e289e785a82ebc4 Mon Sep 17 00:00:00 2001 From: Hiroshi Yoshioka <40815708+hyoshioka0128@users.noreply.github.com> Date: Sat, 16 Nov 2024 00:13:43 +0900 Subject: [PATCH 24/53] =?UTF-8?q?Update=20concepts-slow-query-logs.md=20(T?= =?UTF-8?q?ypo=20"flexible=20server"=E2=86=92"Flexible=20Server")?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/MicrosoftDocs/azure-databases-docs/blob/main/articles/mysql/flexible-server/concepts-slow-query-logs.md #PingMSFTDocs --- .../mysql/flexible-server/concepts-slow-query-logs.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/articles/mysql/flexible-server/concepts-slow-query-logs.md b/articles/mysql/flexible-server/concepts-slow-query-logs.md index e64c412fe1..fa39849b9a 100644 --- a/articles/mysql/flexible-server/concepts-slow-query-logs.md +++ b/articles/mysql/flexible-server/concepts-slow-query-logs.md @@ -13,7 +13,7 @@ ms.topic: conceptual [!INCLUDE[applies-to-mysql-flexible-server](../includes/applies-to-mysql-flexible-server.md)] -In Azure Database for MySQL flexible server, the slow query log is available to users to configure and access. Slow query logs are disabled by default and can be enabled to assist with identifying performance bottlenecks during troubleshooting. +In Azure Database for MySQL Flexible Server, the slow query log is available to users to configure and access. Slow query logs are disabled by default and can be enabled to assist with identifying performance bottlenecks during troubleshooting. For more information about the MySQL slow query log, see the [slow query log section](https://dev.mysql.com/doc/refman/5.7/en/slow-query-log.html) in the MySQL engine documentation. @@ -22,7 +22,7 @@ By default, the slow query log is disabled. To enable logs, set the `slow_query_ Other parameters you can adjust to control slow query logging behavior include: -- **long_query_time**: log a query if it takes longer than `long_query_time` (in seconds) to complete. The default is 10 seconds. Server parameter `long_query_time` applies globally to all newly established connections in MySQL. However, it doesn't affect threads that are already connected. It's recommended to reconnect to Azure Database for MySQL flexible server from the application, or restarting the server will help clear out threads with older values of "long_query_time" and apply the updated parameter value. +- **long_query_time**: log a query if it takes longer than `long_query_time` (in seconds) to complete. The default is 10 seconds. Server parameter `long_query_time` applies globally to all newly established connections in MySQL. However, it doesn't affect threads that are already connected. It's recommended to reconnect to Azure Database for MySQL Flexible Server from the application, or restarting the server will help clear out threads with older values of "long_query_time" and apply the updated parameter value. - **log_slow_admin_statements**: determines if administrative statements (ex. `ALTER_TABLE`, `ANALYZE_TABLE`) are logged. - **log_queries_not_using_indexes**: determines if queries that don't use indexes are logged. - **log_throttle_queries_not_using_indexes**: limits the number of non-indexed queries that can be written to the slow query log. This parameter takes effect when `log_queries_not_using_indexes` is set to *ON* @@ -34,7 +34,7 @@ See the MySQL [slow query log documentation](https://dev.mysql.com/doc/refman/5. ## Access slow query logs -Slow query logs are integrated with Azure Monitor diagnostic settings. Once you've enabled slow query logs on your Azure Database for MySQL flexible server instance, you can emit them to Azure Monitor logs, Event Hubs, or Azure Storage. To learn more about diagnostic settings, see the [diagnostic logs documentation](/azure/azure-monitor/essentials/platform-logs-overview). To learn more about how to enable diagnostic settings in the Azure portal, see the [slow query log portal article](tutorial-query-performance-insights.md#set-up-diagnostics). +Slow query logs are integrated with Azure Monitor diagnostic settings. Once you've enabled slow query logs on your Azure Database for MySQL Flexible Server instance, you can emit them to Azure Monitor logs, Event Hubs, or Azure Storage. To learn more about diagnostic settings, see the [diagnostic logs documentation](/azure/azure-monitor/essentials/platform-logs-overview). To learn more about how to enable diagnostic settings in the Azure portal, see the [slow query log portal article](tutorial-query-performance-insights.md#set-up-diagnostics). >[!Note] >Premium Storage accounts are not supported if you are sending the logs to Azure storage via diagnostics and settings. @@ -118,7 +118,7 @@ Once your slow query logs are piped to Azure Monitor Logs through Diagnostic Log | render timechart ``` -- Display queries longer than 10 seconds across all Azure Database for MySQL flexible server instances with Diagnostic Logs enabled +- Display queries longer than 10 seconds across all Azure Database for MySQL Flexible Server instances with Diagnostic Logs enabled ```Kusto AzureDiagnostics From e36bb524709ce02854a81b962563c1b6605e6195 Mon Sep 17 00:00:00 2001 From: tarabhatiamsft <111526230+tarabhatiamsft@users.noreply.github.com> Date: Fri, 15 Nov 2024 14:41:08 -0800 Subject: [PATCH 25/53] Learn Editor: Update partitioning-overview.md --- articles/cosmos-db/partitioning-overview.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/articles/cosmos-db/partitioning-overview.md b/articles/cosmos-db/partitioning-overview.md index 3fb0073358..495fe4d14f 100644 --- a/articles/cosmos-db/partitioning-overview.md +++ b/articles/cosmos-db/partitioning-overview.md @@ -102,6 +102,16 @@ If you need [multi-item ACID transactions](database-transactions-optimistic-conc > [!NOTE] > If you only have one physical partition, the value of the partition key may not be relevant as all queries will target the same physical partition. +## Types of partition keys + + +| **Partitioning Strategy** | **When to Use** | **Pros** | **Cons** | +|------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +|**Regular Partition Key** (e.g., CustomerId, OrderId) | - Use when the partition key has high cardinality and aligns with query patterns (e.g., filtering by CustomerId).
- Suitable for workloads where queries mostly target a single customer’s data (e.g., retrieving all orders for a customer). | - Simple to manage.
- Efficient queries when the access pattern matches the partition key (e.g., querying all orders by CustomerId).
- Prevents cross-partition queries if access patterns are consistent. | - Risk of hot partitions if some values (e.g., a few high-traffic customers) generate significantly more data than others.
- May hit the 20 GB limit per logical partition if data volume for a specific key grows rapidly. | +|**Synthetic Partition Key** (e.g., CustomerId + OrderDate) | - Use when no single field has both high cardinality and matches query patterns.
- Good for write-heavy workloads where data needs to be evenly distributed across physical partitions (e.g., many orders placed on the same date). | - Helps distribute data evenly across partitions, reducing hot partitions (e.g., distributing orders by both CustomerId and OrderDate).
- Spreads writes across multiple partitions, improving throughput. | - Queries that only filter by one field (e.g., CustomerId only) could result in cross-partition queries.
- Cross-partition queries can lead to higher RU consumption (2-3 RU/s additional charge for every physical partition that exists) and added latency. | +| **Hierarchical Partition Key (HPK)** (e.g., CustomerId/OrderId, StoreId/ProductId) | - Use when you need multi-level partitioning to support large-scale datasets.
- Ideal when queries filter on first and second levels of the hierarchy. | - Helps avoid the 20 GB limit by creating multiple levels of partitioning.
- Efficient querying on both hierarchical levels (e.g., filtering first by CustomerID, then by OrderID).
- Minimizes cross-partition queries for queries targeting the top level (e.g., retrieving all data from a specific CustomerID). | - Requires careful planning to ensure the first-level key has high cardinality and is included in most queries.
- More complex to manage than a regular partition key.
- If queries don’t align with the hierarchy (e.g., filtering only by OrderID when CustomerID is the first level), query performance could suffer. | + + ## Partition keys for read-heavy containers For most containers, the above criteria are all you need to consider when picking a partition key. For large read-heavy containers, however, you might want to choose a partition key that appears frequently as a filter in your queries. Queries can be [efficiently routed to only the relevant physical partitions](how-to-query-container.md#in-partition-query) by including the partition key in the filter predicate. From 9d2ab5b08a2e89a338d9e3caea503859cf12d68b Mon Sep 17 00:00:00 2001 From: tarabhatiamsft <111526230+tarabhatiamsft@users.noreply.github.com> Date: Fri, 15 Nov 2024 14:41:38 -0800 Subject: [PATCH 26/53] Learn Editor: Update partitioning-overview.md From af9d6118a1e4f752913874c4e5075bab388d04d5 Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Fri, 15 Nov 2024 15:26:13 -0800 Subject: [PATCH 27/53] SFI remediation --- articles/postgresql/flexible-server/concepts-logical.md | 6 +++--- articles/postgresql/flexible-server/concepts-pgbouncer.md | 4 ++-- articles/postgresql/flexible-server/how-to-connect-scram.md | 2 +- .../flexible-server/how-to-perform-fullvacuum-pg-repack.md | 2 +- .../flexible-server/quickstart-create-server-python-sdk.md | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/articles/postgresql/flexible-server/concepts-logical.md b/articles/postgresql/flexible-server/concepts-logical.md index 65de5cae6d..79b70c4bd3 100644 --- a/articles/postgresql/flexible-server/concepts-logical.md +++ b/articles/postgresql/flexible-server/concepts-logical.md @@ -189,7 +189,7 @@ Here's an example of configuring pglogical at the provider database server and t ```sql select pglogical.create_node( node_name := 'provider1', - dsn := ' host=myProviderServer.postgres.database.azure.com port=5432 dbname=myDB user=myUser password=myPassword'); + dsn := ' host=myProviderServer.postgres.database.azure.com port=5432 dbname=myDB user=myUser password='); ``` 1. Create a replication set. @@ -214,7 +214,7 @@ Here's an example of configuring pglogical at the provider database server and t ```sql select pglogical.create_node( node_name := 'subscriber1', - dsn := ' host=mySubscriberServer.postgres.database.azure.com port=5432 dbname=myDB user=myUser password=myPasword' ); + dsn := ' host=mySubscriberServer.postgres.database.azure.com port=5432 dbname=myDB user=myUser password=' ); ``` 1. Create a subscription to start the synchronization and the replication process. @@ -223,7 +223,7 @@ Here's an example of configuring pglogical at the provider database server and t select pglogical.create_subscription ( subscription_name := 'subscription1', replication_sets := array['myreplicationset'], - provider_dsn := 'host=myProviderServer.postgres.database.azure.com port=5432 dbname=myDB user=myUser password=myPassword'); + provider_dsn := 'host=myProviderServer.postgres.database.azure.com port=5432 dbname=myDB user=myUser password='); ``` 1. You can then verify the subscription status. diff --git a/articles/postgresql/flexible-server/concepts-pgbouncer.md b/articles/postgresql/flexible-server/concepts-pgbouncer.md index bc81b9cf9c..22f1e43a12 100644 --- a/articles/postgresql/flexible-server/concepts-pgbouncer.md +++ b/articles/postgresql/flexible-server/concepts-pgbouncer.md @@ -79,7 +79,7 @@ To connect to the `pgbouncer` database: 1. Connect to the `pgbouncer` database as this user and set the port as `6432`: ```sql - psql "host=myPgServer.postgres.database.azure.com port=6432 dbname=pgbouncer user=myUser password=myPassword sslmode=require" + psql "host=myPgServer.postgres.database.azure.com port=6432 dbname=pgbouncer user=myUser password= sslmode=require" ``` After you're connected to the database, use `SHOW` commands to view PgBouncer statistics: @@ -98,7 +98,7 @@ To start using PgBouncer, follow these steps: 1. Connect to your database server, but use port 6432 instead of the regular port 5432. Verify that this connection works. ```azurecli-interactive - psql "host=myPgServer.postgres.database.azure.com port=6432 dbname=postgres user=myUser password=myPassword sslmode=require" + psql "host=myPgServer.postgres.database.azure.com port=6432 dbname=postgres user=myUser password= sslmode=require" ``` 2. Test your application in a QA environment against PgBouncer, to make sure you don't have any compatibility problems. The PgBouncer project provides a compatibility matrix, and we recommend [transaction pooling](https://www.PgBouncer.org/features.html#sql-feature-map-for-pooling-modes) for most users. diff --git a/articles/postgresql/flexible-server/how-to-connect-scram.md b/articles/postgresql/flexible-server/how-to-connect-scram.md index 5a50539958..f83fea9f74 100644 --- a/articles/postgresql/flexible-server/how-to-connect-scram.md +++ b/articles/postgresql/flexible-server/how-to-connect-scram.md @@ -34,7 +34,7 @@ Salted Challenge Response Authentication Mechanism (SCRAM) is a password-based m 1. From your Azure Database for PostgreSQL flexible server client, connect to the Azure Database for PostgreSQL flexible server instance. For example, ```bash - psql "host=myPGServer.postgres.database.azure.com port=5432 dbname=postgres user=myDemoUser password=MyPassword sslmode=require" + psql "host=myPGServer.postgres.database.azure.com port=5432 dbname=postgres user=myDemoUser password= sslmode=require" psql (12.3 (Ubuntu 12.3-1.pgdg18.04+1), server 12.6) SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off) diff --git a/articles/postgresql/flexible-server/how-to-perform-fullvacuum-pg-repack.md b/articles/postgresql/flexible-server/how-to-perform-fullvacuum-pg-repack.md index c04f49d2fa..cdadbdc5fa 100644 --- a/articles/postgresql/flexible-server/how-to-perform-fullvacuum-pg-repack.md +++ b/articles/postgresql/flexible-server/how-to-perform-fullvacuum-pg-repack.md @@ -88,7 +88,7 @@ Example of how to run pg_repack on a table named info in a public schema within 1. Connect to the Azure Database for PostgreSQL flexible server instance. This article uses psql for simplicity. ```psql - psql "host=xxxxxxxxx.postgres.database.azure.com port=5432 dbname=foo user=xxxxxxxxxxxxx password=[my_password] sslmode=require" + psql "host=xxxxxxxxx.postgres.database.azure.com port=5432 dbname=foo user=xxxxxxxxxxxxx password= sslmode=require" ``` 2. Create the pg_repack extension in the databases intended to be repacked. diff --git a/articles/postgresql/flexible-server/quickstart-create-server-python-sdk.md b/articles/postgresql/flexible-server/quickstart-create-server-python-sdk.md index c6ab6d9253..4b98613c96 100644 --- a/articles/postgresql/flexible-server/quickstart-create-server-python-sdk.md +++ b/articles/postgresql/flexible-server/quickstart-create-server-python-sdk.md @@ -61,7 +61,7 @@ def main(): "location": "westus", "properties": { "administratorLogin": "cloudsa", - "administratorLoginPassword": "password", + "administratorLoginPassword": "", "availabilityZone": "1", "backup": {"backupRetentionDays": 7, "geoRedundantBackup": "Disabled"}, "createMode": "Create", From 8d40f94334cd1437aaa3f81af768bda8818404e0 Mon Sep 17 00:00:00 2001 From: Hiroshi Yoshioka <40815708+hyoshioka0128@users.noreply.github.com> Date: Sun, 17 Nov 2024 00:33:04 +0900 Subject: [PATCH 28/53] =?UTF-8?q?Update=20concept-reserved-pricing.md=20(T?= =?UTF-8?q?ypo=20"flexible=20server"=E2=86=92"Flexible=20Server")?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/MicrosoftDocs/azure-databases-docs/blob/main/articles/mysql/flexible-server/concept-reserved-pricing.md #PingMSFTDocs --- .../concept-reserved-pricing.md | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/articles/mysql/flexible-server/concept-reserved-pricing.md b/articles/mysql/flexible-server/concept-reserved-pricing.md index c89a747741..d3eee17b82 100644 --- a/articles/mysql/flexible-server/concept-reserved-pricing.md +++ b/articles/mysql/flexible-server/concept-reserved-pricing.md @@ -16,22 +16,22 @@ ms.topic: conceptual [!INCLUDE[azure-database-for-mysql-single-server-deprecation](~/reusable-content/ce-skilling/azure/includes/mysql/includes/azure-database-for-mysql-single-server-deprecation.md)] -Azure Database for MySQL flexible server now helps you save money by prepaying for compute resources compared to pay-as-you-go prices. With Azure Database for MySQL flexible server reserved instances, you make an upfront commitment on Azure Database for MySQL flexible server for a one or three year period to get a significant discount on the compute costs. To purchase Azure Database for MySQL flexible server reserved capacity, you need to specify the Azure region, deployment type, performance tier, and term. +Azure Database for MySQL Flexible Server now helps you save money by prepaying for compute resources compared to pay-as-you-go prices. With Azure Database for MySQL Flexible Server reserved instances, you make an upfront commitment on Azure Database for MySQL Flexible Server for a one or three year period to get a significant discount on the compute costs. To purchase Azure Database for MySQL Flexible Server reserved capacity, you need to specify the Azure region, deployment type, performance tier, and term. ## How does the instance reservation work? -You don't need to assign the reservation to specific Azure Database for MySQL flexible server instances. An already running Azure Database for MySQL flexible server instance or ones that are newly deployed automatically get the benefit of reserved pricing. By purchasing a reservation, you're pre-paying for the compute costs for a period of one or three years. As soon as you buy a reservation, the Azure Database for MySQL flexible server compute charges that match the reservation attributes are no longer charged at the pay-as-you go rates. A reservation doesn't cover software, networking, or storage charges associated with Azure Database for MySQL flexible server. At the end of the reservation term, the billing benefit expires, and Azure Database for MySQL flexible server is billed at the pay-as-you go price. Reservations don't auto-renew. For pricing information, see the [Azure Database for MySQL flexible server reserved capacity offering](https://azure.microsoft.com/pricing/details/mysql/). +You don't need to assign the reservation to specific Azure Database for MySQL Flexible Server instances. An already running Azure Database for MySQL Flexible Server instance or ones that are newly deployed automatically get the benefit of reserved pricing. By purchasing a reservation, you're pre-paying for the compute costs for a period of one or three years. As soon as you buy a reservation, the Azure Database for MySQL Flexible Server compute charges that match the reservation attributes are no longer charged at the pay-as-you go rates. A reservation doesn't cover software, networking, or storage charges associated with Azure Database for MySQL Flexible Server. At the end of the reservation term, the billing benefit expires, and Azure Database for MySQL Flexible Server is billed at the pay-as-you go price. Reservations don't auto-renew. For pricing information, see the [Azure Database for MySQL Flexible Server reserved capacity offering](https://azure.microsoft.com/pricing/details/mysql/). -You can buy Azure Database for MySQL flexible server reserved capacity in the [Azure portal](https://portal.azure.com/). Pay for the reservation [up front or with monthly payments](/azure/cost-management-billing/reservations/prepare-buy-reservation). To buy the reserved capacity: +You can buy Azure Database for MySQL Flexible Server reserved capacity in the [Azure portal](https://portal.azure.com/). Pay for the reservation [up front or with monthly payments](/azure/cost-management-billing/reservations/prepare-buy-reservation). To buy the reserved capacity: * To buy a reservation, you must have owner role or reservation purchaser role on an Azure subscription. * For Enterprise subscriptions, **Add Reserved Instances** must be enabled in the [EA portal](https://ea.azure.com/). Or, if that setting is disabled, you must be an EA Admin on the subscription. -* For Cloud Solution Provider (CSP) program, only the admin agents or sales agents can purchase Azure Database for MySQL flexible server reserved capacity.
+* For Cloud Solution Provider (CSP) program, only the admin agents or sales agents can purchase Azure Database for MySQL Flexible Server reserved capacity.
The details on how enterprise customers and Pay-As-You-Go customers are charged for reservation purchases, see [understand Azure reservation usage for your Enterprise enrollment](/azure/cost-management-billing/reservations/understand-reserved-instance-usage-ea) and [understand Azure reservation usage for your Pay-As-You-Go subscription](/azure/cost-management-billing/reservations/understand-reserved-instance-usage). ## Reservation exchanges and refunds -You can exchange a reservation for another reservation of the same type. You can also exchange a reservation from Azure Database for MySQL - Single Server with one for Azure Database for MySQL flexible server. It's also possible to refund a reservation, if you no longer need it. The Azure portal can be used to exchange or refund a reservation. For more information, see [Self-service exchanges and refunds for Azure Reservations](/azure/cost-management-billing/reservations/exchange-and-refund-azure-reservations). +You can exchange a reservation for another reservation of the same type. You can also exchange a reservation from Azure Database for MySQL - Single Server with one for Azure Database for MySQL Flexible Server. It's also possible to refund a reservation, if you no longer need it. The Azure portal can be used to exchange or refund a reservation. For more information, see [Self-service exchanges and refunds for Azure Reservations](/azure/cost-management-billing/reservations/exchange-and-refund-azure-reservations). ## Reservation discount @@ -42,15 +42,15 @@ You may save up to 67% on compute costs with reserved instances. In order to fin The size of reservation should be based on the total amount of compute used by the existing or soon-to-be-deployed server within a specific region and using the same performance tier and hardware generation.
-For example, let's suppose that you're running one general purpose, Gen5 – 32 vCore Azure Database for MySQL flexible server database, and two memory optimized, Gen5 – 16 vCore Azure Database for MySQL flexible server databases. Further, let's supposed that you plan to deploy within the next month an additional general purpose, Gen5 – 32 vCore database server, and one memory optimized, Gen5 – 16 vCore database server. Let's suppose that you know that you'll need these resources for at least 1 year. In this case, you should purchase a 64 (2x32) vCores, 1 year reservation for single database general purpose - Gen5 and a 48 (2x16 + 16) vCore 1 year reservation for single database memory optimized - Gen5. +For example, let's suppose that you're running one general purpose, Gen5 – 32 vCore Azure Database for MySQL Flexible Server database, and two memory optimized, Gen5 – 16 vCore Azure Database for MySQL Flexible Server databases. Further, let's supposed that you plan to deploy within the next month an additional general purpose, Gen5 – 32 vCore database server, and one memory optimized, Gen5 – 16 vCore database server. Let's suppose that you know that you'll need these resources for at least 1 year. In this case, you should purchase a 64 (2x32) vCores, 1 year reservation for single database general purpose - Gen5 and a 48 (2x16 + 16) vCore 1 year reservation for single database memory optimized - Gen5. ## Buy Azure Database for MySQL reserved capacity 1. Sign in to the [Azure portal](https://portal.azure.com/). 2. Select **All services** > **Reservations**. -3. Select **Add** and then in the Purchase reservations pane, select **Azure Database for MySQL** to purchase a new reservation for your Azure Database for MySQL flexible server databases. -4. Fill-in the required fields. Existing or new databases that match the attributes you select qualify to get the reserved capacity discount. The actual number of your Azure Database for MySQL flexible server instances that get the discount depend on the scope and quantity selected. +3. Select **Add** and then in the Purchase reservations pane, select **Azure Database for MySQL** to purchase a new reservation for your Azure Database for MySQL Flexible Server databases. +4. Fill-in the required fields. Existing or new databases that match the attributes you select qualify to get the reserved capacity discount. The actual number of your Azure Database for MySQL Flexible Server instances that get the discount depend on the scope and quantity selected. :::image type="content" source="media/concepts-reserved-pricing/mysql-reserved-price.png" alt-text="Overview of reserved pricing"::: @@ -60,13 +60,13 @@ The following table describes required fields. | Field | Description | | :------------ | :------- | -| Subscription | The subscription used to pay for the Azure Database for MySQL flexible server reserved capacity reservation. The payment method on the subscription is charged the upfront costs for the Azure Database for MySQL flexible server reserved capacity reservation. The subscription type must be an enterprise agreement (offer numbers: MS-AZR-0017P or MS-AZR-0148P) or an individual agreement with pay-as-you-go pricing (offer numbers: MS-AZR-0003P or MS-AZR-0023P). For an enterprise subscription, the charges are deducted from the enrollment's Azure Prepayment (previously called monetary commitment) balance or charged as overage. For an individual subscription with pay-as-you-go pricing, the charges are billed to the credit card or invoice payment method on the subscription. -| Scope | The vCore reservation's scope can cover one subscription or multiple subscriptions (shared scope). If you select:

**Shared**, the vCore reservation discount is applied to Azure Database for MySQL flexible server instances running in any subscriptions within your billing context. For enterprise customers, the shared scope is the enrollment and includes all subscriptions within the enrollment. For Pay-As-You-Go customers, the shared scope is all Pay-As-You-Go subscriptions created by the account administrator.

**Single subscription**, the vCore reservation discount is applied to Azure Database for MySQL flexible server instances in this subscription.

**Single resource group**, the reservation discount is applied to Azure Database for MySQL flexible server instances in the selected subscription and the selected resource group within that subscription. -| Region | The Azure region that's covered by the Azure Database for MySQL flexible server reserved capacity reservation. -| Deployment Type | The Azure Database for MySQL flexible server resource type that you want to buy the reservation for. -| Performance Tier | The service tier for the Azure Database for MySQL flexible server instances. +| Subscription | The subscription used to pay for the Azure Database for MySQL Flexible Server reserved capacity reservation. The payment method on the subscription is charged the upfront costs for the Azure Database for MySQL Flexible Server reserved capacity reservation. The subscription type must be an enterprise agreement (offer numbers: MS-AZR-0017P or MS-AZR-0148P) or an individual agreement with pay-as-you-go pricing (offer numbers: MS-AZR-0003P or MS-AZR-0023P). For an enterprise subscription, the charges are deducted from the enrollment's Azure Prepayment (previously called monetary commitment) balance or charged as overage. For an individual subscription with pay-as-you-go pricing, the charges are billed to the credit card or invoice payment method on the subscription. +| Scope | The vCore reservation's scope can cover one subscription or multiple subscriptions (shared scope). If you select:

**Shared**, the vCore reservation discount is applied to Azure Database for MySQL Flexible Server instances running in any subscriptions within your billing context. For enterprise customers, the shared scope is the enrollment and includes all subscriptions within the enrollment. For Pay-As-You-Go customers, the shared scope is all Pay-As-You-Go subscriptions created by the account administrator.

**Single subscription**, the vCore reservation discount is applied to Azure Database for MySQL Flexible Server instances in this subscription.

**Single resource group**, the reservation discount is applied to Azure Database for MySQL Flexible Server instances in the selected subscription and the selected resource group within that subscription. +| Region | The Azure region that's covered by the Azure Database for MySQL Flexible Server reserved capacity reservation. +| Deployment Type | The Azure Database for MySQL Flexible Server resource type that you want to buy the reservation for. +| Performance Tier | The service tier for the Azure Database for MySQL Flexible Server instances. | Term | One year or three years -| Quantity | The amount of compute resources being purchased within the Azure Database for MySQL reserved capacity reservation. The quantity is a number of vCores in the selected Azure region and Performance tier that are being reserved and will get the billing discount. For example, if you're running or planning to run Azure Database for MySQL flexible server instances with the total compute capacity of Gen5 16 vCores in the East US region, then you would specify quantity as 16 to maximize the benefit for all servers. +| Quantity | The amount of compute resources being purchased within the Azure Database for MySQL reserved capacity reservation. The quantity is a number of vCores in the selected Azure region and Performance tier that are being reserved and will get the billing discount. For example, if you're running or planning to run Azure Database for MySQL Flexible Server instances with the total compute capacity of Gen5 16 vCores in the East US region, then you would specify quantity as 16 to maximize the benefit for all servers. ## Reserved instances API support @@ -87,11 +87,11 @@ vCore size flexibility helps you scale up or down within a performance tier and ## How to view reserved instance purchase details -You can view your reserved instance purchase details via the [Reservations menu on the left side of the Azure portal](https://aka.ms/reservations). For more information, see [How a reservation discount is applied to Azure Database for MySQL flexible server](/azure/cost-management-billing/reservations/understand-reservation-charges-mysql). +You can view your reserved instance purchase details via the [Reservations menu on the left side of the Azure portal](https://aka.ms/reservations). For more information, see [How a reservation discount is applied to Azure Database for MySQL Flexible Server](/azure/cost-management-billing/reservations/understand-reservation-charges-mysql). ## Reserved instance expiration -You receive email notifications, the first one 30 days prior to reservation expiry and the other one at expiration. Once the reservation expires, deployed VMs will continue to run and be billed at a pay-as-you-go rate. For more information, see [Reserved Instances for Azure Database for MySQL flexible server](/azure/cost-management-billing/reservations/understand-reservation-charges-mysql). +You receive email notifications, the first one 30 days prior to reservation expiry and the other one at expiration. Once the reservation expires, deployed VMs will continue to run and be billed at a pay-as-you-go rate. For more information, see [Reserved Instances for Azure Database for MySQL Flexible Server](/azure/cost-management-billing/reservations/understand-reservation-charges-mysql). ## Need help ? Contact us @@ -99,7 +99,7 @@ If you have questions or need help, [create a support request](https://portal.az ## Next steps -The vCore reservation discount is applied automatically to the number of Azure Database for MySQL flexible server instances that match the Azure Database for MySQL flexible server reserved capacity reservation scope and attributes. You can update the scope of the Azure Database for MySQL flexible server reserved capacity reservation through the Azure portal, PowerShell, Azure CLI, or through the API. +The vCore reservation discount is applied automatically to the number of Azure Database for MySQL Flexible Server instances that match the Azure Database for MySQL Flexible Server reserved capacity reservation scope and attributes. You can update the scope of the Azure Database for MySQL Flexible Server reserved capacity reservation through the Azure portal, PowerShell, Azure CLI, or through the API. To learn more about Azure Reservations, see the following articles: From 6a259a6aefa201d4ef3bd558c106e2d32da4cfc6 Mon Sep 17 00:00:00 2001 From: Hiroshi Yoshioka <40815708+hyoshioka0128@users.noreply.github.com> Date: Mon, 18 Nov 2024 00:18:54 +0900 Subject: [PATCH 29/53] =?UTF-8?q?Update=20how-to-troubleshoot-connectivity?= =?UTF-8?q?-issues.md=20(Typo=20"flexible=20server"=E2=86=92"Flexible=20Se?= =?UTF-8?q?rver")?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/MicrosoftDocs/azure-databases-docs/blob/main/articles/mysql/flexible-server/how-to-troubleshoot-connectivity-issues.md #PingMSFTDocs --- .../how-to-troubleshoot-connectivity-issues.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/articles/mysql/flexible-server/how-to-troubleshoot-connectivity-issues.md b/articles/mysql/flexible-server/how-to-troubleshoot-connectivity-issues.md index 62af4df90f..c6aa8af478 100644 --- a/articles/mysql/flexible-server/how-to-troubleshoot-connectivity-issues.md +++ b/articles/mysql/flexible-server/how-to-troubleshoot-connectivity-issues.md @@ -22,7 +22,7 @@ There are potential issues associated with this type of connection handling. For ## Diagnosing common connectivity errors -Whenever your instance of Azure Database for MySQL flexible server is experiencing connectivity issues, remember that problems can exist in any of the three layers involved: the client device, the network, or your Azure Database for MySQL flexible server instance. +Whenever your instance of Azure Database for MySQL Flexible Server is experiencing connectivity issues, remember that problems can exist in any of the three layers involved: the client device, the network, or your Azure Database for MySQL Flexible Server instance. As a result, whenever you’re diagnosing connectivity errors, be sure to consider full details of the: @@ -46,11 +46,11 @@ Quick reference notes for some client-side error 2005 codes appear in the follow | **ERROR 2005 code** | **Notes** | |----------|----------| -| **(11) "EAI_SYSTEM - system error"** | There's an error on the DNS resolution on the client side. Not an Azure Database for MySQL flexible server issue. Use dig/nslookup on the client to troubleshoot. | -| **(110) "ETIMEDOUT - Connection timed out"** | There was a timeout connecting to the client's DNS server. Not an Azure Database for MySQL flexible server issue. Use dig/nslookup on the client to troubleshoot. | -| **(0) "name unknown"** | The name specified wasn't resolvable by DNS. Check the input on the client. This is very likely not an issue with Azure Database for MySQL flexible server. | +| **(11) "EAI_SYSTEM - system error"** | There's an error on the DNS resolution on the client side. Not an Azure Database for MySQL Flexible Server issue. Use dig/nslookup on the client to troubleshoot. | +| **(110) "ETIMEDOUT - Connection timed out"** | There was a timeout connecting to the client's DNS server. Not an Azure Database for MySQL Flexible Server issue. Use dig/nslookup on the client to troubleshoot. | +| **(0) "name unknown"** | The name specified wasn't resolvable by DNS. Check the input on the client. This is very likely not an issue with Azure Database for MySQL Flexible Server. | -The second call in mysql is with socket connectivity and when looking at an error message like "ERROR 2003 (HY000): Can't connect to Azure Database for MySQL flexible server on 'mysql-example.mysql.database.azure.com' (111)", the number in the end (99, 110, 111, 113, etc.). +The second call in mysql is with socket connectivity and when looking at an error message like "ERROR 2003 (HY000): Can't connect to Azure Database for MySQL Flexible Server on 'mysql-example.mysql.database.azure.com' (111)", the number in the end (99, 110, 111, 113, etc.). ### Client-side error 2003 codes @@ -58,9 +58,9 @@ Quick reference notes for some client-side error 2003 codes appear in the follow | **ERROR 2003 code** | **Notes** | |----------|----------| -| **(99) "EADDRNOTAVAIL - Cannot assign requested address"** | This error isn’t caused by Azure Database for MySQL flexible server, rather it is on the client side. | -| **(110) "ETIMEDOUT - Connection timed out"** | TThere was a timeout connecting to the IP address provided. Likely a security (firewall rules) or networking (routing) issue. Usually, this isn’t an issue with Azure Database for MySQL flexible server. Use `nc/telnet/TCPtraceroute` on the client device to troubleshoot. | -| **(111) "ECONNREFUSED - Connection refused"** | While the packets reached the target server, the server rejected the connection. This might be an attempt to connect to the wrong server or the wrong port. This also might relate to the target service (Azure Database for MySQL flexible server) being down, recovering from failover, or going through crash recovery, and not yet accepting connections. This issue could be on either the client side or the server side. Use `nc/telnet/TCPtraceroute` on the client device to troubleshoot. | +| **(99) "EADDRNOTAVAIL - Cannot assign requested address"** | This error isn’t caused by Azure Database for MySQL Flexible Server, rather it is on the client side. | +| **(110) "ETIMEDOUT - Connection timed out"** | TThere was a timeout connecting to the IP address provided. Likely a security (firewall rules) or networking (routing) issue. Usually, this isn’t an issue with Azure Database for MySQL Flexible Server. Use `nc/telnet/TCPtraceroute` on the client device to troubleshoot. | +| **(111) "ECONNREFUSED - Connection refused"** | While the packets reached the target server, the server rejected the connection. This might be an attempt to connect to the wrong server or the wrong port. This also might relate to the target service (Azure Database for MySQL Flexible Server) being down, recovering from failover, or going through crash recovery, and not yet accepting connections. This issue could be on either the client side or the server side. Use `nc/telnet/TCPtraceroute` on the client device to troubleshoot. | | **(113) "EHOSTUNREACH - Host unreachable"** | The client device’s routing table doesn’t include a path to the network on which the database server is located. Check the client device's networking configuration. | ### Other error codes @@ -77,7 +77,7 @@ Quick reference notes for some other error codes related to issues that occur af | **ERROR 1129 "Host '1.2.3.4' is blocked because of many connection errors”** | Unblock with 'mysqladmin flush-hosts'" - all clients in a single machine will be blocked if one client of that machine attempts several times to use the wrong protocol to connect with MySQL (telnetting to the MySQL port is one example). As the error message says, the database’s admin user has to run `FLUSH HOSTS;` to clear the issue. | > [!NOTE] -> For more information about connectivity errors, see the blog post [Investigating connection issues with Azure Database for MySQL flexible server](https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/investigating-connection-issues-with-azure-database-for-mysql/ba-p/2121204). +> For more information about connectivity errors, see the blog post [Investigating connection issues with Azure Database for MySQL Flexible Server](https://techcommunity.microsoft.com/t5/azure-database-for-mysql-blog/investigating-connection-issues-with-azure-database-for-mysql/ba-p/2121204). ## Next steps From a8b3ff025e0db157cabf5bc1dcf06b87f1763db8 Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 18 Nov 2024 11:25:16 +0000 Subject: [PATCH 30/53] Update extensions --- .../flexible-server/includes/extensions-table.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/articles/postgresql/flexible-server/includes/extensions-table.md b/articles/postgresql/flexible-server/includes/extensions-table.md index 406d91bc37..9f119d8793 100644 --- a/articles/postgresql/flexible-server/includes/extensions-table.md +++ b/articles/postgresql/flexible-server/includes/extensions-table.md @@ -2,7 +2,7 @@ author: akashraokm ms.author: akashrao ms.reviewer: maghan -ms.date: 11/04/2024 +ms.date: 11/18/2024 ms.service: azure-database-postgresql ms.subservice: flexible-server ms.topic: include @@ -34,7 +34,7 @@ ms.topic: include | [lo](https://www.postgresql.org/docs/current/lo.html) | Large Object maintenance | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1| | [login_hook](https://github.com/splendiddata/login_hook) | Login_hook - hook to execute login_hook.login() at login time | 1.5 | 1.5 | 1.4 | 1.4 | 1.4 | 1.4 | 1.4| | [ltree](https://www.postgresql.org/docs/current/ltree.html) | Data type for hierarchical tree-like structures | 1.3 | 1.2 | 1.2 | 1.2 | 1.2 | 1.1 | 1.1| -| [oracle_fdw](https://github.com/laurenz/oracle_fdw) | Foreign data wrapper for Oracle databases | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | N/A| +| [oracle_fdw](https://github.com/laurenz/oracle_fdw) | Foreign data wrapper for Oracle access | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | N/A| | [orafce](https://github.com/orafce/orafce) | Functions and operators that emulate a subset of functions and packages from the Oracle RDBMS | 4.9 | 4.4 | 3.24 | 3.18 | 3.18 | 3.18 | 3.7| | [pageinspect](https://www.postgresql.org/docs/current/pageinspect.html) | Inspect the contents of database pages at a low level | 1.12 | 1.12 | 1.11 | 1.9 | 1.8 | 1.7 | 1.7| | [pgaudit](https://www.pgaudit.org/) | Provides auditing functionality | 16.0 :heavy_check_mark: | 16.0 :heavy_check_mark: | 1.7 :heavy_check_mark: | 1.6.2 :heavy_check_mark: | 1.5 :heavy_check_mark: | 1.4.3 :heavy_check_mark: | 1.3.2 :heavy_check_mark:| @@ -50,7 +50,7 @@ ms.topic: include | [pgrouting](https://pgrouting.org/) | PgRouting Extension | N/A | N/A | 3.5.0 | 3.3.0 | 3.3.0 | 3.3.0 | 3.3.0| | [pgrowlocks](https://www.postgresql.org/docs/current/pgrowlocks.html) | Show row-level locking information | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2| | [pg_squeeze](https://github.com/cybertec-postgresql/pg_squeeze) | A tool to remove unused space from a relation. | 1.7 :heavy_check_mark: | 1.6 :heavy_check_mark: | 1.6 :heavy_check_mark: | 1.5 :heavy_check_mark: | 1.5 :heavy_check_mark: | 1.5 :heavy_check_mark: | 1.5 :heavy_check_mark:| -| [pg_stat_statements](https://www.postgresql.org/docs/current/pgstatstatements.html) | Track execution statistics of all SQL statements executed | 1.11 :heavy_check_mark: | 1.10 :heavy_check_mark: | 1.10 :heavy_check_mark: | 1.9 :heavy_check_mark: | 1.8 :heavy_check_mark: | 1.7 :heavy_check_mark: | 1.6 :heavy_check_mark:| +| [pg_stat_statements](https://www.postgresql.org/docs/current/pgstatstatements.html) | Track planning and execution statistics of all SQL statements executed | 1.11 :heavy_check_mark: | 1.10 :heavy_check_mark: | 1.10 :heavy_check_mark: | 1.9 :heavy_check_mark: | 1.8 :heavy_check_mark: | 1.7 :heavy_check_mark: | 1.6 :heavy_check_mark:| | [pgstattuple](https://www.postgresql.org/docs/current/pgstattuple.html) | Show tuple-level statistics | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 | 1.5 | 1.5| | [pg_trgm](https://www.postgresql.org/docs/current/pgtrgm.html) | Text similarity measurement and index searching based on trigrams | 1.6 | 1.6 | 1.6 | 1.6 | 1.5 | 1.4 | 1.4| | [pg_visibility](https://www.postgresql.org/docs/current/pgvisibility.html) | Examine the visibility map (VM) and page-level visibility info | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2| @@ -68,7 +68,7 @@ ms.topic: include | [sslinfo](https://www.postgresql.org/docs/current/sslinfo.html) | Information about SSL certificates | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2 | 1.2| | [tablefunc](https://www.postgresql.org/docs/current/tablefunc.html) | Functions that manipulate whole tables, including crosstab | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0| | [tds_fdw](https://github.com/tds-fdw/tds_fdw) | Foreign data wrapper for querying a TDS database (Sybase or Microsoft SQL Server) | 2.0.3 | 2.0.3 | 2.0.3 | 2.0.3 | 2.0.3 | 2.0.3 | 2.0.3| -| [timescaledb](https://github.com/timescale/timescaledb) | Enables scalable inserts and complex queries for time-series data | N/A | 2.13.0 :heavy_check_mark: | 2.10.0 :heavy_check_mark: | 2.10.0 :heavy_check_mark: | 2.10.0 :heavy_check_mark: | 2.10.0 :heavy_check_mark: | 1.7.4 :heavy_check_mark:| +| [timescaledb](https://github.com/timescale/timescaledb) | Enables scalable inserts and complex queries for time-series data (Apache 2 Edition) | N/A | 2.13.0 :heavy_check_mark: | 2.10.0 :heavy_check_mark: | 2.10.0 :heavy_check_mark: | 2.10.0 :heavy_check_mark: | 2.10.0 :heavy_check_mark: | 1.7.4 :heavy_check_mark:| | [tsm_system_rows](https://www.postgresql.org/docs/13/tsm-system-rows.html) | TABLESAMPLE method which accepts number of rows as a limit | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0| | [tsm_system_time](https://www.postgresql.org/docs/current/tsm-system-time.html) | TABLESAMPLE method which accepts time in milliseconds as a limit | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0| | [unaccent](https://www.postgresql.org/docs/current/unaccent.html) | Text search dictionary that removes accents | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1 | 1.1| From 101aa6de32e16812ff18e6180f83ef08b89a3e60 Mon Sep 17 00:00:00 2001 From: Hiroshi Yoshioka <40815708+hyoshioka0128@users.noreply.github.com> Date: Tue, 19 Nov 2024 01:04:42 +0900 Subject: [PATCH 31/53] =?UTF-8?q?Update=20tutorial-query-performance-insig?= =?UTF-8?q?hts.md=20(Typo=20"flexible=20server"=E2=86=92"Flexible=20Server?= =?UTF-8?q?")?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/MicrosoftDocs/azure-databases-docs/blob/main/articles/mysql/flexible-server/tutorial-query-performance-insights.md #PingMSFTDocs --- .../tutorial-query-performance-insights.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/articles/mysql/flexible-server/tutorial-query-performance-insights.md b/articles/mysql/flexible-server/tutorial-query-performance-insights.md index a4a56ff50e..c7f282082a 100644 --- a/articles/mysql/flexible-server/tutorial-query-performance-insights.md +++ b/articles/mysql/flexible-server/tutorial-query-performance-insights.md @@ -23,7 +23,7 @@ Query Performance Insight is designed to help you spend less time troubleshootin * The query details: view the history of execution with minimum, maximum, average, and standard deviation query time. * The resource utilizations (CPU, memory, and storage). -This article discusses how to use Azure Database for MySQL flexible server slow query logs, the Log Analytics tool, and workbooks templates to visualize Query Performance Insight for Azure Database for MySQL flexible server. +This article discusses how to use Azure Database for MySQL Flexible Server slow query logs, the Log Analytics tool, and workbooks templates to visualize Query Performance Insight for Azure Database for MySQL Flexible Server. In this tutorial, you'll learn how to: >[!div class="checklist"] @@ -34,7 +34,7 @@ In this tutorial, you'll learn how to: ## Prerequisites -- [Create an Azure Database for MySQL flexible server instance](./quickstart-create-server-portal.md). +- [Create an Azure Database for MySQL Flexible Server instance](./quickstart-create-server-portal.md). - [Create a Log Analytics workspace](/azure/azure-monitor/logs/quick-create-workspace). @@ -42,7 +42,7 @@ In this tutorial, you'll learn how to: 1. Sign in to the [Azure portal](https://portal.azure.com/). -1. Select your Azure Database for MySQL flexible server instance. +1. Select your Azure Database for MySQL Flexible Server instance. 1. On the left pane, under **Settings**, select **Server parameters**. @@ -64,10 +64,10 @@ You can return to the list of logs by closing the **Server parameters** page. ## Configure slow query logs by using the Azure CLI -Alternatively, you can enable and configure slow query logs for your Azure Database for MySQL flexible server instance from the Azure CLI by running the following command: +Alternatively, you can enable and configure slow query logs for your Azure Database for MySQL Flexible Server instance from the Azure CLI by running the following command: > [!IMPORTANT] -> To ensure that your Azure Database for MySQL flexible server instance's performance is not heavily affected, we recommend that you log only the event types and users that are required for your auditing purposes. +> To ensure that your Azure Database for MySQL Flexible Server instance's performance is not heavily affected, we recommend that you log only the event types and users that are required for your auditing purposes. - Enable slow query logs. @@ -145,7 +145,7 @@ Slow query logs are integrated with Azure Monitor diagnostic settings to allow y ## View query insights by using workbooks -1. In the Azure portal, on the left pane, under **Monitoring** for your Azure Database for MySQL flexible server instance, select **Workbooks**. +1. In the Azure portal, on the left pane, under **Monitoring** for your Azure Database for MySQL Flexible Server instance, select **Workbooks**. 1. Select the **Query Performance Insight** template. From 88a1d63355da969403f12b8854cebbbfa67513e0 Mon Sep 17 00:00:00 2001 From: TimShererWithAquent <28902327+TimShererWithAquent@users.noreply.github.com> Date: Mon, 18 Nov 2024 09:16:55 -0800 Subject: [PATCH 32/53] SFI remediation --- .../mysql/flexible-server/how-to-connect-tls-ssl.md | 4 ++-- .../flexible-server/quickstart-create-server-cli.md | 4 ++-- .../flexible-server/tutorial-add-redis-to-mysql.md | 2 +- ...ow-to-migrate-single-flexible-minimum-downtime.md | 12 ++++++------ 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/articles/mysql/flexible-server/how-to-connect-tls-ssl.md b/articles/mysql/flexible-server/how-to-connect-tls-ssl.md index e1807cf23f..e7d124d816 100644 --- a/articles/mysql/flexible-server/how-to-connect-tls-ssl.md +++ b/articles/mysql/flexible-server/how-to-connect-tls-ssl.md @@ -211,7 +211,7 @@ $db = new PDO('mysql:host=mydemoserver.mysql.database.azure.com;port=3306;dbname ```python try: conn = mysql.connector.connect(user='myadmin', - password='yourpassword', + password='', database='quickstartdb', host='mydemoserver.mysql.database.azure.com', ssl_ca='/var/www/html/DigiCertGlobalRootCA.crt.pem') @@ -223,7 +223,7 @@ except mysql.connector.Error as err: ```python conn = pymysql.connect(user='myadmin', - password='yourpassword', + password='', database='quickstartdb', host='mydemoserver.mysql.database.azure.com', ssl={'ca': '/var/www/html/DigiCertGlobalRootCA.crt.pem'}) diff --git a/articles/mysql/flexible-server/quickstart-create-server-cli.md b/articles/mysql/flexible-server/quickstart-create-server-cli.md index caf136f2ba..6b01671dfc 100644 --- a/articles/mysql/flexible-server/quickstart-create-server-cli.md +++ b/articles/mysql/flexible-server/quickstart-create-server-cli.md @@ -85,12 +85,12 @@ Your server 'serverXXXXXXXXX' is using SKU 'Standard_B1ms' (Paid Tier). For pric Creating MySQL database 'flexibleserverdb'... Make a note of your password. If you forget your password, reset the password by running 'az mysql flexible-server update -n serverXXXXXXXXX -g groupXXXXXXXXXX -p '. { - "connectionString": "server=serverXXXXXXXXX.mysql.database.azure.com;database=flexibleserverdb;uid=secureusername;pwd=securepasswordstring", + "connectionString": "server=.mysql.database.azure.com;database=flexibleserverdb;uid=secureusername;pwd=", "databaseName": "flexibleserverdb", "host": "serverXXXXXXXXX.mysql.database.azure.com", "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/groupXXXXXXXXXX/providers/Microsoft.DBforMySQL/flexibleServers/serverXXXXXXXXX", "location": "East US 2", - "password": "securepasswordstring", + "password": "", "resourceGroup": "groupXXXXXXXXXX", "skuname": "Standard_B1ms", "subnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/groupXXXXXXXXXX/providers/Microsoft.Network/virtualNetworks/serverXXXXXXXXXVNET/subnets/serverXXXXXXXXXSubnet", diff --git a/articles/mysql/flexible-server/tutorial-add-redis-to-mysql.md b/articles/mysql/flexible-server/tutorial-add-redis-to-mysql.md index 84b0e255be..d543fe1793 100644 --- a/articles/mysql/flexible-server/tutorial-add-redis-to-mysql.md +++ b/articles/mysql/flexible-server/tutorial-add-redis-to-mysql.md @@ -76,7 +76,7 @@ r = redis.Redis( port=6379, password='azure-redis-primary-access-key') -mysqlcnx = mysql.connector.connect(user='your-admin-username', password='db-user-password', +mysqlcnx = mysql.connector.connect(user='your-admin-username', password='', host='database-servername.mysql.database.azure.com', database='your-databsae-name') diff --git a/articles/mysql/migrate/how-to-migrate-single-flexible-minimum-downtime.md b/articles/mysql/migrate/how-to-migrate-single-flexible-minimum-downtime.md index f2ce78c42f..b236dfdca9 100644 --- a/articles/mysql/migrate/how-to-migrate-single-flexible-minimum-downtime.md +++ b/articles/mysql/migrate/how-to-migrate-single-flexible-minimum-downtime.md @@ -91,21 +91,21 @@ To configure Data in replication, perform the following steps: If you're using SSL, run the following command: ```sql - CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword'; + CREATE USER 'syncuser'@'%' IDENTIFIED BY ''; GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%' REQUIRE SSL; ``` If you're not using SSL, run the following command: ```sql - CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword'; + CREATE USER 'syncuser'@'%' IDENTIFIED BY ''; GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%'; ``` 1. To back up the database using mydumper, run the following command on the Azure VM where we installed the mydumper\myloader: ```bash - mydumper --host=.mysql.database.azure.com --user=@ --password= --outputdir=./backup --rows=100000 -G -E -R -z --trx-consistency-only --compress --build-empty-files --threads=16 --compress-protocol --ssl --regex '^(classicmodels\.)' -L mydumper-logs.txt + mydumper --host=.mysql.database.azure.com --user=@ --password= --outputdir=./backup --rows=100000 -G -E -R -z --trx-consistency-only --compress --build-empty-files --threads=16 --compress-protocol --ssl --regex '^(classicmodels\.)' -L mydumper-logs.txt ``` > [!TIP] @@ -143,7 +143,7 @@ To configure Data in replication, perform the following steps: 1. Restore the database using myloader by running the following command: ```bash - myloader --host=.mysql.database.azure.com --user= --password= --directory=./backup --queries-per-transaction=100 --threads=16 --compress-protocol --ssl --verbose=3 -e 2>myloader-logs.txt + myloader --host=.mysql.database.azure.com --user= --password= --directory=./backup --queries-per-transaction=100 --threads=16 --compress-protocol --ssl --verbose=3 -e 2>myloader-logs.txt ``` The variables in this command are explained below: @@ -169,7 +169,7 @@ To configure Data in replication, perform the following steps: iii. To configure Data in replication, run the following command: ```sql - CALL mysql.az_replication_change_master('.mysql.database.azure.com', '@', '', 3306, '', , @cert); + CALL mysql.az_replication_change_master('.mysql.database.azure.com', '@', '', 3306, '', , @cert); ``` > [!NOTE] @@ -178,7 +178,7 @@ To configure Data in replication, perform the following steps: - If SSL enforcement isn't enabled, then run the following command: ```sql - CALL mysql.az_replication_change_master('.mysql.database.azure.com', '@', '', 3306, '', , ''); + CALL mysql.az_replication_change_master('.mysql.database.azure.com', '@', '', 3306, '', , ''); ``` 1. To start replication from the replica server, call the below stored procedure. From e5b6ae4baf420ac49ddc82bd86a752009908293c Mon Sep 17 00:00:00 2001 From: Sudhanshu Vishodia <41684987+suvishodcitus@users.noreply.github.com> Date: Mon, 18 Nov 2024 22:56:13 +0530 Subject: [PATCH 33/53] Create autoscale --- articles/cosmos-db/mongodb/vcore/autoscale | 82 ++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 articles/cosmos-db/mongodb/vcore/autoscale diff --git a/articles/cosmos-db/mongodb/vcore/autoscale b/articles/cosmos-db/mongodb/vcore/autoscale new file mode 100644 index 0000000000..dd07c36da7 --- /dev/null +++ b/articles/cosmos-db/mongodb/vcore/autoscale @@ -0,0 +1,82 @@ +--- +title: Autoscale on vCore based Azure Cosmos DB for MongoDB +titleSuffix: Azure Cosmos DB for MongoDB (vCore) +description: Autoscale on vCore based Azure Cosmos DB for MongoDB. +author: suvishodcitus +ms.author: suvishod +ms.service: azure-cosmos-db +ms.subservice: mongodb-vcore +ms.topic: conceptual +ms.date: 11/18/2024 +ms.custom: references_regions +# CustomerIntent: As a PM, we wanted to offer our customers a feature that allows database adapts immediately to changing workloads, eliminating performance bottlenecks +--- + + +# Autoscale for vCore-based Azure Cosmos DB for MongoDB (public preview) + +[!INCLUDE[MongoDB (vCore)](~/reusable-content/ce-skilling/azure/includes/cosmos-db/includes/appliesto-mongodb-vcore.md)] + +Managing databases with fluctuating workloads can be complex and costly, especially when unpredictable traffic spikes require overprovisioning resources. To address this +challenge, Azure Cosmos DB for MongoDB introduces Autoscale for its vCore-based clusters. Autoscale is designed to handle variable workloads by dynamically adjusting capacity +in real-time, scaling up or down based on application demands. + +Unlike other managed MongoDB solutions, which often experience delays of several hours when scaling up and more than 24 hours +for scaling down, Azure Cosmos DB's Autoscale offers instant scalability. This feature ensures that your database adapts +immediately to changing workloads, eliminating performance bottlenecks and avoiding unnecessary costs. + +## Get started + +Follow this document to [create a new Azure Cosmos DB for MongoDB (vCore)](quickstart-portal.md) cluster and just select 'M200-Autoscale tier (Preview)' checkbox. +Alternatively, you can also use [Bicep template](quickstart-bicep.md) to provision the resource. + +:::image type="content" source="media/how-to-scale-cluster/provision-autoscale-tier.jpg" alt-text="Screenshot of the free tier provisioning."::: + +## Benefits + +1. Instant Scale + +* Automatically adjusts capacity without downtime, maintaining performance during unexpected workload spikes. +* Eliminates the need for manual scaling, reducing the risk of service disruptions. + +2. Cost Efficiency + +* Reduces expenses by preventing overprovisioning, utilizing resources only when necessary. +* Pay-as-you-use pricing ensures that you’re only billed for actual usage, maximizing resource utilization. + +3. Predictable Pricing + +* Core-based pricing with transparent cost calculations makes budgeting and forecasting easier. +* Flexible pricing model adapts to workload demands, avoiding unexpected cost spikes. + +## Pricing Model + +For simplicity it uses a core-based pricing model, where charges are based on the higher of CPU or committed memory usage +in the last hour, compared to a 35% utilization threshold. + +* Below 35% Utilization: Minimum price applies. +* Above 35% Utilization: Maximum price applies. +* Autoscale clusters incur a 50% premium over the base tier due to their instant scaling capabilities. +* Billing Frequency: Costs are calculated and billed hourly, ensuring you only pay for the capacity you use. + +### Example: +In a scenario where an application experiences usage spikes for 10% of its runtime: + +* Without Autoscale: An overprovisioned M200 cluster would cost $1,185.24. +* With Autoscale: An M200-Autoscale cluster would cost $968.41, offering a savings of 18.29%. + +This flexible pricing model helps reduce costs while maintaining optimal performance during peak demand. + +## Restrictions + +1. Currently, only the M200 Autoscale tier is supported, allowing scaling within the range of M80 to M200 tiers. +2. Autoscale applies only to compute resources. Storage capacity must still be scaled manually. +3. Upgrades or downgrades between the General Tier and Autoscale Tier are not supported at this time. + + +## Next steps + +Having explored the capabilities of the Autoscale tier in Azure Cosmos DB for MongoDB (vCore), the next step is to dive into the migration journey. This involves understanding how to conduct a migration assessment and planning a seamless transfer of your existing MongoDB workloads to Azure. + +> [!div class="nextstepaction"] +> [Migration options for Azure Cosmos DB for MongoDB (vCore)](migration-options.md) From 6093c2cea3980fbbe1008e684b7fbacbd65f5c99 Mon Sep 17 00:00:00 2001 From: Sudhanshu Vishodia <41684987+suvishodcitus@users.noreply.github.com> Date: Mon, 18 Nov 2024 23:01:23 +0530 Subject: [PATCH 34/53] Update autoscale --- articles/cosmos-db/mongodb/vcore/autoscale | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/articles/cosmos-db/mongodb/vcore/autoscale b/articles/cosmos-db/mongodb/vcore/autoscale index dd07c36da7..f6669ddc39 100644 --- a/articles/cosmos-db/mongodb/vcore/autoscale +++ b/articles/cosmos-db/mongodb/vcore/autoscale @@ -73,6 +73,31 @@ This flexible pricing model helps reduce costs while maintaining optimal perform 2. Autoscale applies only to compute resources. Storage capacity must still be scaled manually. 3. Upgrades or downgrades between the General Tier and Autoscale Tier are not supported at this time. +## Frequently Asked Questions (FAQs) + +1. Which clusters support Autoscale? + +Currently, Autoscale is only available for the M200 tier, with scaling capabilities from M80 to M200. + +2. Does Autoscale manage both compute and storage scaling? + +No, Autoscale only manages compute resources. Storage must be scaled manually. + +3. Can I switch between the General Tier and Autoscale Tier? + +No, upgrades or downgrades between the General Tier and Autoscale Tier are not supported at this time. + +4. Is there any downtime when Autoscale adjusts capacity? + +No, Autoscale adjusts capacity instantly and seamlessly, without any downtime or impact on performance. + +5. What happens if my workload exceeds the M200 tier limits? + +If your workload consistently exceeds the M200 limits, you may need to consider a higher tier or alternative scaling strategies, as Autoscale currently only supports up to M200. + +6. Is Autoscale available in all Azure regions? + +Autoscale support may vary by region. Please check the Azure portal for availability in your preferred region. ## Next steps From 7450f898c76ae19dad4568fa59a46653cc76c10b Mon Sep 17 00:00:00 2001 From: Sudhanshu Vishodia <41684987+suvishodcitus@users.noreply.github.com> Date: Mon, 18 Nov 2024 23:03:31 +0530 Subject: [PATCH 35/53] Rename autoscale to autoscale.md --- articles/cosmos-db/mongodb/vcore/{autoscale => autoscale.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename articles/cosmos-db/mongodb/vcore/{autoscale => autoscale.md} (100%) diff --git a/articles/cosmos-db/mongodb/vcore/autoscale b/articles/cosmos-db/mongodb/vcore/autoscale.md similarity index 100% rename from articles/cosmos-db/mongodb/vcore/autoscale rename to articles/cosmos-db/mongodb/vcore/autoscale.md From a1ff3fa80f59dbdff0b007b06e61716cbdc44de7 Mon Sep 17 00:00:00 2001 From: Sudhanshu Vishodia <41684987+suvishodcitus@users.noreply.github.com> Date: Mon, 18 Nov 2024 23:05:34 +0530 Subject: [PATCH 36/53] Update autoscale.md --- articles/cosmos-db/mongodb/vcore/autoscale.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/articles/cosmos-db/mongodb/vcore/autoscale.md b/articles/cosmos-db/mongodb/vcore/autoscale.md index f6669ddc39..cb01f58349 100644 --- a/articles/cosmos-db/mongodb/vcore/autoscale.md +++ b/articles/cosmos-db/mongodb/vcore/autoscale.md @@ -34,17 +34,17 @@ Alternatively, you can also use [Bicep template](quickstart-bicep.md) to provisi ## Benefits -1. Instant Scale +1. **Instant Scale** * Automatically adjusts capacity without downtime, maintaining performance during unexpected workload spikes. * Eliminates the need for manual scaling, reducing the risk of service disruptions. -2. Cost Efficiency +2. **Cost Efficiency** * Reduces expenses by preventing overprovisioning, utilizing resources only when necessary. * Pay-as-you-use pricing ensures that you’re only billed for actual usage, maximizing resource utilization. -3. Predictable Pricing +3. **Predictable Pricing** * Core-based pricing with transparent cost calculations makes budgeting and forecasting easier. * Flexible pricing model adapts to workload demands, avoiding unexpected cost spikes. @@ -54,7 +54,7 @@ Alternatively, you can also use [Bicep template](quickstart-bicep.md) to provisi For simplicity it uses a core-based pricing model, where charges are based on the higher of CPU or committed memory usage in the last hour, compared to a 35% utilization threshold. -* Below 35% Utilization: Minimum price applies. +* Upto 35% Utilization: Minimum price applies. * Above 35% Utilization: Maximum price applies. * Autoscale clusters incur a 50% premium over the base tier due to their instant scaling capabilities. * Billing Frequency: Costs are calculated and billed hourly, ensuring you only pay for the capacity you use. From 5819ef3946a1fbbbf60669a89a75a7d931c5ebee Mon Sep 17 00:00:00 2001 From: Sudhanshu Vishodia <41684987+suvishodcitus@users.noreply.github.com> Date: Mon, 18 Nov 2024 23:06:37 +0530 Subject: [PATCH 37/53] Add files via upload --- .../provision-autoscale-tier.jpg | Bin 0 -> 72766 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 articles/cosmos-db/mongodb/vcore/media/how-to-scale-cluster/provision-autoscale-tier.jpg diff --git a/articles/cosmos-db/mongodb/vcore/media/how-to-scale-cluster/provision-autoscale-tier.jpg b/articles/cosmos-db/mongodb/vcore/media/how-to-scale-cluster/provision-autoscale-tier.jpg new file mode 100644 index 0000000000000000000000000000000000000000..95f99d3fbf9bb42b7568b83f3557e47a506f7725 GIT binary patch literal 72766 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 literal 0 HcmV?d00001 From bc0adda7c44baf705575a2c68dbd2be4bee2a145 Mon Sep 17 00:00:00 2001 From: Sudhanshu Vishodia <41684987+suvishodcitus@users.noreply.github.com> Date: Mon, 18 Nov 2024 23:19:24 +0530 Subject: [PATCH 38/53] Update autoscale.md --- articles/cosmos-db/mongodb/vcore/autoscale.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/articles/cosmos-db/mongodb/vcore/autoscale.md b/articles/cosmos-db/mongodb/vcore/autoscale.md index cb01f58349..fd10f4cca3 100644 --- a/articles/cosmos-db/mongodb/vcore/autoscale.md +++ b/articles/cosmos-db/mongodb/vcore/autoscale.md @@ -99,6 +99,10 @@ If your workload consistently exceeds the M200 limits, you may need to consider Autoscale support may vary by region. Please check the Azure portal for availability in your preferred region. +7. How can I verify the charges incurred with Autoscale? + +To provide cost transparency, we’ve introduced a new metric called “Autoscale Utilization Percentage.” This metric shows the maximum of CPU or committed memory usage over time, allowing you to compare it against the charges incurred. + ## Next steps Having explored the capabilities of the Autoscale tier in Azure Cosmos DB for MongoDB (vCore), the next step is to dive into the migration journey. This involves understanding how to conduct a migration assessment and planning a seamless transfer of your existing MongoDB workloads to Azure. From fd4a3de6e22af12976e073ec098bd107f24862b7 Mon Sep 17 00:00:00 2001 From: Sudhanshu Vishodia <41684987+suvishodcitus@users.noreply.github.com> Date: Mon, 18 Nov 2024 23:20:27 +0530 Subject: [PATCH 39/53] Update TOC.yml --- articles/cosmos-db/mongodb/vcore/TOC.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/articles/cosmos-db/mongodb/vcore/TOC.yml b/articles/cosmos-db/mongodb/vcore/TOC.yml index 2d2cf69229..35a45fd5e7 100644 --- a/articles/cosmos-db/mongodb/vcore/TOC.yml +++ b/articles/cosmos-db/mongodb/vcore/TOC.yml @@ -24,6 +24,8 @@ href: tutorial-nodejs-web-app.md - name: Concepts items: + - name: Autoscale + href: autoscale.md - name: Free tier href: free-tier.md - name: Burstable tier From e91b0a1d0e96111cd26aad8cc460f9b4ab174822 Mon Sep 17 00:00:00 2001 From: Jaliya Udagedara Date: Tue, 19 Nov 2024 17:49:07 +1300 Subject: [PATCH 40/53] Fix Syntax error, incorrect syntax near } --- articles/cosmos-db/nosql/query/vectordistance.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/articles/cosmos-db/nosql/query/vectordistance.md b/articles/cosmos-db/nosql/query/vectordistance.md index 06ae57e8ef..f6d83cf91c 100644 --- a/articles/cosmos-db/nosql/query/vectordistance.md +++ b/articles/cosmos-db/nosql/query/vectordistance.md @@ -58,9 +58,9 @@ ORDER BY VectorDistance(c.vector1, ) This next example also includes optional arguments for `VectorDistance` ```nosql -SELECT TOP 10 s.name, VectorDistance(c.vector1, , true, {'distanceFunction':'cosine', 'dataType':'float32',}) +SELECT TOP 10 s.name, VectorDistance(c.vector1, , true, {'distanceFunction':'cosine', 'dataType':'float32'}) FROM c -ORDER BY VectorDistance(c.vector1, , true, {'distanceFunction':'cosine', 'dataType':'float32',}) +ORDER BY VectorDistance(c.vector1, , true, {'distanceFunction':'cosine', 'dataType':'float32'}) ``` ## Remarks From 06f53600d7b6fdfcbf0bfc31ace80bf98d706f68 Mon Sep 17 00:00:00 2001 From: Theo van Kraay Date: Tue, 19 Nov 2024 14:13:22 +0000 Subject: [PATCH 41/53] vnext emulator updates --- articles/cosmos-db/emulator-linux.md | 117 +++++++++++++++++++-------- 1 file changed, 82 insertions(+), 35 deletions(-) diff --git a/articles/cosmos-db/emulator-linux.md b/articles/cosmos-db/emulator-linux.md index 47006db48a..1e5a4ff4e8 100644 --- a/articles/cosmos-db/emulator-linux.md +++ b/articles/cosmos-db/emulator-linux.md @@ -52,6 +52,13 @@ c1bb8cf53f8a mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-prev > > The emulator gateway endpoint is typically available on port `8081` at the address . To navigate to the data explorer, use the address in your web browser. It may take a few seconds for data explorer to be available. The gateway endpoint is typically available immediately. +> [!IMPORTANT] +> The .NET and Java SDKs don't support HTTP mode in the emulator. Since this version of the emulator starts with HTTP by default, you will need to explicitly enable HTTPS when starting the container (see below). For the Java SDK, you will also need to [install certificates](#installing-certificates-for-java-sdk). +> +> ```bash +> docker run --detach --publish 8081:8081 --publish 1234:1234 mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:vnext-preview --protocol https +> ``` + ## Docker commands The following table summarizes the available Docker commands for configuring the emulator. This table details the corresponding arguments, environment variables, allowed values, default settings, and descriptions of each command. @@ -75,63 +82,103 @@ The following table summarizes the available Docker commands for configuring the This emulator is in active development and preview. As a result, not all Azure Cosmos DB features are supported. Some features will also not be supported in the future. This table includes the state of various features and their level of support. -| | Support | +| Feature | Support | |---|---| -| **Create database** | ✅ Supported | -| **Read database** | ✅ Supported | -| **Delete database** | ✅ Supported | -| **Read database feed** | ✅ Supported | -| **Create database twice conflict** | ✅ Supported | +| **Batch API** | ✅ Supported | +| **Bulk API** | ✅ Supported | +| **Change Feed** | ⚠️ Not yet implemented | +| **Create and read document with utf data** | ✅ Supported | | **Create collection** | ✅ Supported | -| **Read collection** | ✅ Supported | -| **Update collection** | ✅ Supported | -| **Delete collection** | ✅ Supported | -| **Read collection feed** | ✅ Supported | | **Create collection twice conflict** | ✅ Supported | -| **Create collection with custom index policy** | ✅ Supported | -| **Create collection with ttl expiration** | ✅ Supported | -| **Create partitioned collection** | ✅ Supported | -| **Get and change collection performance** | ✅ Supported | +| **Create collection with custom index policy** | ⚠️ Not yet implemented | +| **Create collection with ttl expiration** | ⚠️ Not yet implemented | +| **Create database** | ✅ Supported | +| **Create database twice conflict** | ✅ Supported | | **Create document** | ✅ Supported | -| **Read document** | ✅ Supported | -| **Update document** | ✅ Supported | -| **Patch document** | ✅ Supported | +| **Create partitioned collection** | ⚠️ Not yet implemented | +| **Delete collection** | ✅ Supported | +| **Delete database** | ✅ Supported | | **Delete document** | ✅ Supported | -| **Read document feed** | ✅ Supported | +| **Get and change collection performance** | ⚠️ Not yet implemented | | **Insert large document** | ✅ Supported | -| **Create and read document with utf data** | ✅ Supported | -| **Query with sql query spec** | ✅ Supported | -| **Query with equality** | ✅ Supported | -| **Query with and filter and projection** | ⚠️ Not yet implemented | +| **Patch document** | ✅ Supported | +| **Query partitioned collection in parallel** | ⚠️ Not yet implemented | +| **Query with aggregates** | ⚠️ Not yet implemented | | **Query with and filter** | ⚠️ Not yet implemented | +| **Query with and filter and projection** | ⚠️ Not yet implemented | +| **Query with equality** | ✅ Supported | | **Query with equals on id** | ✅ Supported | -| **Query with inequality** | ⚠️ Not yet implemented | -| **Query with range operators on numbers** | ⚠️ Not yet implemented | -| **Query with range operators on strings** | ⚠️ Not yet implemented | -| **Query with range operators date times** | ⚠️ Not yet implemented | +| **Query with joins** | ⚠️ Not yet implemented | | **Query with order by** | ✅ Supported | +| **Query with order by for partitioned collection** | ⚠️ Not yet implemented | | **Query with order by numbers** | ✅ Supported | | **Query with order by strings** | ⚠️ Not yet implemented | -| **Query with aggregates** | ⚠️ Not yet implemented | +| **Query with paging** | ⚠️ Not yet implemented | +| **Query with range operators date times** | ⚠️ Not yet implemented | +| **Query with range operators on numbers** | ⚠️ Not yet implemented | +| **Query with range operators on strings** | ⚠️ Not yet implemented | +| **Query with single join** | ⚠️ Not yet implemented | +| **Query with string math and array operators** | ⚠️ Not yet implemented | | **Query with subdocuments** | ⚠️ Not yet implemented | -| **Query with joins** | ⚠️ Not yet implemented | | **Query with two joins** | ⚠️ Not yet implemented | | **Query with two joins and filter** | ⚠️ Not yet implemented | -| **Query with single join** | ⚠️ Not yet implemented | -| **Query with string math and array operators** | ⚠️ Not yet implemented | -| **Query with paging** | ⚠️ Not yet implemented | -| **Query partitioned collection in parallel** | ⚠️ Not yet implemented | -| **Query with order by for partitioned collection** | ⚠️ Not yet implemented | -| **Stored procedure** | ❌ Not planned | +| **Read collection** | ✅ Supported | +| **Read collection feed** | ⚠️ Not yet implemented | +| **Read database** | ✅ Supported | +| **Read database feed** | ⚠️ Not yet implemented | +| **Read document** | ✅ Supported | +| **Read document feed** | ✅ Supported | +| **Replace document** | ✅ Supported | +| **Request Units** | ⚠️ Not yet implemented | +| **Stored procedures** | ❌ Not planned | | **Triggers** | ❌ Not planned | | **UDFs** | ❌ Not planned | +| **Update collection** | ⚠️ Not yet implemented | +| **Update document** | ✅ Supported | + ## Limitations In addition to features not yet supported or not planned, the following list includes current limitations of the emulator. - The .NET SDK for Azure Cosmos DB doesn't support bulk execution in the emulator. -- The .NET SDK doesn't support HTTP mode in the emulator. +- The .NET and Java SDKs don't support HTTP mode in the emulator. + +## Installing certificates for Java SDK + +When using the [Java SDK for Azure Cosmos DB](https://learn.microsoft.com/java/api/overview/azure/cosmos-readme?view=azure-java-stable) with this version of the emulator in https mode, it is necessary to install it's certificates to your local Java trust store. + +### Get certificate + +In a `bash` window, run the following: + +```bash +# If the emulator was started with /AllowNetworkAccess, replace localhost with the actual IP address of it: +EMULATOR_HOST=localhost +EMULATOR_PORT=8081 +EMULATOR_CERT_PATH=/tmp/cosmos_emulator.cert +openssl s_client -connect ${EMULATOR_HOST}:${EMULATOR_PORT} $EMULATOR_CERT_PATH +``` + +### Install certificate + +Navigate to the directory of your java installation where `cacerts` file is located (replace below with correct directory): + +```bash +cd "C:/Program Files/Eclipse Adoptium/jdk-17.0.10.7-hotspot/bin" +``` + +Import the cert (you may be asked for a password, the default value is "changeit"): + +```bash +keytool -cacerts -importcert -alias cosmos_emulator -file $EMULATOR_CERT_PATH +``` + +If you get an error because the alias already exists, delete it and then run the above again: + +```bash +keytool -cacerts -delete -alias cosmos_emulator +``` ## Reporting issues From 03ecbe41638adfbd3542bf199240ef928d2bd1b1 Mon Sep 17 00:00:00 2001 From: Theo van Kraay Date: Tue, 19 Nov 2024 14:35:09 +0000 Subject: [PATCH 42/53] fix link --- articles/cosmos-db/emulator-linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/cosmos-db/emulator-linux.md b/articles/cosmos-db/emulator-linux.md index 1e5a4ff4e8..f8bf2e3e1f 100644 --- a/articles/cosmos-db/emulator-linux.md +++ b/articles/cosmos-db/emulator-linux.md @@ -146,7 +146,7 @@ In addition to features not yet supported or not planned, the following list inc ## Installing certificates for Java SDK -When using the [Java SDK for Azure Cosmos DB](https://learn.microsoft.com/java/api/overview/azure/cosmos-readme?view=azure-java-stable) with this version of the emulator in https mode, it is necessary to install it's certificates to your local Java trust store. +When using the [Java SDK for Azure Cosmos DB](/articles/cosmos-db/nosql/sdk-java-v4.md) with this version of the emulator in https mode, it is necessary to install it's certificates to your local Java trust store. ### Get certificate From ff5c14fea26f5dcc903148495e28c57a301f8a13 Mon Sep 17 00:00:00 2001 From: Theo van Kraay Date: Tue, 19 Nov 2024 14:48:07 +0000 Subject: [PATCH 43/53] fix link --- articles/cosmos-db/emulator-linux.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/cosmos-db/emulator-linux.md b/articles/cosmos-db/emulator-linux.md index f8bf2e3e1f..be14595bc7 100644 --- a/articles/cosmos-db/emulator-linux.md +++ b/articles/cosmos-db/emulator-linux.md @@ -146,7 +146,7 @@ In addition to features not yet supported or not planned, the following list inc ## Installing certificates for Java SDK -When using the [Java SDK for Azure Cosmos DB](/articles/cosmos-db/nosql/sdk-java-v4.md) with this version of the emulator in https mode, it is necessary to install it's certificates to your local Java trust store. +When using the [Java SDK for Azure Cosmos DB](./nosql/sdk-java-v4.md) with this version of the emulator in https mode, it is necessary to install it's certificates to your local Java trust store. ### Get certificate From 2d662de881d852ce1de7e051004e7de1ab82e8e6 Mon Sep 17 00:00:00 2001 From: Hiroshi Yoshioka <40815708+hyoshioka0128@users.noreply.github.com> Date: Wed, 20 Nov 2024 00:09:21 +0900 Subject: [PATCH 44/53] =?UTF-8?q?Update=20how-to-troubleshoot-sys-schema.m?= =?UTF-8?q?d=20(Typo=20"flexible=20server"=E2=86=92"Flexible=20Server")?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ttps://github.com/MicrosoftDocs/azure-databases-docs/blob/main/articles/mysql/flexible-server/how-to-troubleshoot-sys-schema.md #PingMSFTDocs --- .../flexible-server/how-to-troubleshoot-sys-schema.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/articles/mysql/flexible-server/how-to-troubleshoot-sys-schema.md b/articles/mysql/flexible-server/how-to-troubleshoot-sys-schema.md index 43027057e8..a4a9a62673 100644 --- a/articles/mysql/flexible-server/how-to-troubleshoot-sys-schema.md +++ b/articles/mysql/flexible-server/how-to-troubleshoot-sys-schema.md @@ -16,7 +16,7 @@ ms.topic: troubleshooting [!INCLUDE[azure-database-for-mysql-single-server-deprecation](~/reusable-content/ce-skilling/azure/includes/mysql/includes/azure-database-for-mysql-single-server-deprecation.md)] -The MySQL performance_schema, first available in MySQL 5.5, provides instrumentation for many vital server resources such as memory allocation, stored programs, metadata locking, etc. However, the performance_schema contains more than 80 tables, and getting the necessary information often requires joining tables within the performance_schema, and tables from the information_schema. Building on both performance_schema and information_schema, the sys_schema provides a powerful collection of [user-friendly views](https://dev.mysql.com/doc/refman/5.7/en/sys-schema-views.html) in a read-only database and is fully enabled in Azure Database for MySQL flexible server version 5.7. +The MySQL performance_schema, first available in MySQL 5.5, provides instrumentation for many vital server resources such as memory allocation, stored programs, metadata locking, etc. However, the performance_schema contains more than 80 tables, and getting the necessary information often requires joining tables within the performance_schema, and tables from the information_schema. Building on both performance_schema and information_schema, the sys_schema provides a powerful collection of [user-friendly views](https://dev.mysql.com/doc/refman/5.7/en/sys-schema-views.html) in a read-only database and is fully enabled in Azure Database for MySQL Flexible Server version 5.7. :::image type="content" source="./media/how-to-troubleshoot-sys-schema/sys-schema-views.png" alt-text="Views of sys_schema."::: @@ -40,7 +40,7 @@ IO is the most expensive operation in the database. We can find out the average :::image type="content" source="./media/how-to-troubleshoot-sys-schema/io-latency-125GB.png" alt-text="IO latency: 125 GB."::: -Because Azure Database for MySQL flexible server scales IO with respect to storage, after increasing my provisioned storage to 1 TB, my IO latency reduces to 571 ms. +Because Azure Database for MySQL Flexible Server scales IO with respect to storage, after increasing my provisioned storage to 1 TB, my IO latency reduces to 571 ms. :::image type="content" source="./media/how-to-troubleshoot-sys-schema/io-latency-1TB.png" alt-text="IO latency: 1TB."::: @@ -56,7 +56,7 @@ To troubleshoot database performance issues, it may be beneficial to identify th :::image type="content" source="./media/how-to-troubleshoot-sys-schema/summary-by-statement.png" alt-text="Summary by statement."::: -In this example, Azure Database for MySQL flexible server spent 53 minutes flushing the slow query log 44579 times. That's a long time and many IOs. You can reduce this activity by either disabling your slow query log or decreasing the frequency of slow query login to the Azure portal. +In this example, Azure Database for MySQL Flexible Server spent 53 minutes flushing the slow query log 44579 times. That's a long time and many IOs. You can reduce this activity by either disabling your slow query log or decreasing the frequency of slow query login to the Azure portal. ## Database maintenance @@ -81,7 +81,7 @@ Indexes are great tools to improve read performance, but they do incur additiona ## Conclusion -In summary, the sys_schema is a great tool for both performance tuning and database maintenance. Make sure to take advantage of this feature in your Azure Database for MySQL flexible server instance. +In summary, the sys_schema is a great tool for both performance tuning and database maintenance. Make sure to take advantage of this feature in your Azure Database for MySQL Flexible Server instance. ## Next steps From 6ba54394665ad33fda87ed675760a61bee0f1a41 Mon Sep 17 00:00:00 2001 From: Regan Downer Date: Tue, 19 Nov 2024 11:09:03 -0500 Subject: [PATCH 45/53] Correcting to bullets --- articles/cosmos-db/mongodb/vcore/autoscale.md | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/articles/cosmos-db/mongodb/vcore/autoscale.md b/articles/cosmos-db/mongodb/vcore/autoscale.md index fd10f4cca3..aa68912376 100644 --- a/articles/cosmos-db/mongodb/vcore/autoscale.md +++ b/articles/cosmos-db/mongodb/vcore/autoscale.md @@ -27,27 +27,27 @@ immediately to changing workloads, eliminating performance bottlenecks and avoid ## Get started -Follow this document to [create a new Azure Cosmos DB for MongoDB (vCore)](quickstart-portal.md) cluster and just select 'M200-Autoscale tier (Preview)' checkbox. +Follow this document to [create a new Azure Cosmos DB for MongoDB (vCore)](quickstart-portal.md) cluster and select the 'M200-Autoscale tier (Preview)' checkbox. Alternatively, you can also use [Bicep template](quickstart-bicep.md) to provision the resource. :::image type="content" source="media/how-to-scale-cluster/provision-autoscale-tier.jpg" alt-text="Screenshot of the free tier provisioning."::: ## Benefits -1. **Instant Scale** +- **Instant Scale** -* Automatically adjusts capacity without downtime, maintaining performance during unexpected workload spikes. -* Eliminates the need for manual scaling, reducing the risk of service disruptions. + - Automatically adjusts capacity without downtime, maintaining performance during unexpected workload spikes. + - Eliminates the need for manual scaling, reducing the risk of service disruptions. -2. **Cost Efficiency** +- **Cost Efficiency** -* Reduces expenses by preventing overprovisioning, utilizing resources only when necessary. -* Pay-as-you-use pricing ensures that you’re only billed for actual usage, maximizing resource utilization. + - Reduces expenses by preventing overprovisioning, utilizing resources only when necessary. + - Pay-as-you-use pricing ensures that you’re only billed for actual usage, maximizing resource utilization. -3. **Predictable Pricing** +- **Predictable Pricing** -* Core-based pricing with transparent cost calculations makes budgeting and forecasting easier. -* Flexible pricing model adapts to workload demands, avoiding unexpected cost spikes. + - Core-based pricing with transparent cost calculations makes budgeting and forecasting easier. + - Flexible pricing model adapts to workload demands, avoiding unexpected cost spikes. ## Pricing Model @@ -69,37 +69,37 @@ This flexible pricing model helps reduce costs while maintaining optimal perform ## Restrictions -1. Currently, only the M200 Autoscale tier is supported, allowing scaling within the range of M80 to M200 tiers. -2. Autoscale applies only to compute resources. Storage capacity must still be scaled manually. -3. Upgrades or downgrades between the General Tier and Autoscale Tier are not supported at this time. +- Currently, only the M200 Autoscale tier is supported, allowing scaling within the range of M80 to M200 tiers. +- Autoscale applies only to compute resources. Storage capacity must still be scaled manually. +- Upgrades or downgrades between the General Tier and Autoscale Tier are not supported at this time. ## Frequently Asked Questions (FAQs) -1. Which clusters support Autoscale? +- Which clusters support Autoscale? Currently, Autoscale is only available for the M200 tier, with scaling capabilities from M80 to M200. -2. Does Autoscale manage both compute and storage scaling? +- Does Autoscale manage both compute and storage scaling? No, Autoscale only manages compute resources. Storage must be scaled manually. -3. Can I switch between the General Tier and Autoscale Tier? +- Can I switch between the General Tier and Autoscale Tier? No, upgrades or downgrades between the General Tier and Autoscale Tier are not supported at this time. -4. Is there any downtime when Autoscale adjusts capacity? +- Is there any downtime when Autoscale adjusts capacity? No, Autoscale adjusts capacity instantly and seamlessly, without any downtime or impact on performance. -5. What happens if my workload exceeds the M200 tier limits? +- What happens if my workload exceeds the M200 tier limits? If your workload consistently exceeds the M200 limits, you may need to consider a higher tier or alternative scaling strategies, as Autoscale currently only supports up to M200. -6. Is Autoscale available in all Azure regions? +- Is Autoscale available in all Azure regions? Autoscale support may vary by region. Please check the Azure portal for availability in your preferred region. -7. How can I verify the charges incurred with Autoscale? +- How can I verify the charges incurred with Autoscale? To provide cost transparency, we’ve introduced a new metric called “Autoscale Utilization Percentage.” This metric shows the maximum of CPU or committed memory usage over time, allowing you to compare it against the charges incurred. From 4bd16a5896424f18604357450bf94c9aa85d0d76 Mon Sep 17 00:00:00 2001 From: nachoalonsoportillo Date: Tue, 19 Nov 2024 17:32:39 +0100 Subject: [PATCH 46/53] Fix post-ignite --- .../how-to-use-pg-azure-storage.md | 256 +++++++++--------- 1 file changed, 131 insertions(+), 125 deletions(-) diff --git a/articles/postgresql/flexible-server/how-to-use-pg-azure-storage.md b/articles/postgresql/flexible-server/how-to-use-pg-azure-storage.md index 269fce8ca9..ce5c5e5974 100644 --- a/articles/postgresql/flexible-server/how-to-use-pg-azure-storage.md +++ b/articles/postgresql/flexible-server/how-to-use-pg-azure-storage.md @@ -63,6 +63,7 @@ Using [Configurations - Put](/rest/api/postgresql/flexibleserver/configurations/ Because the `shared_preload_libraries` is static, the server must be restarted for a change to take effect. For restarting the server, you can use the [Server - Restart](/rest/api/postgresql/flexibleserver/servers/restart) REST API. --- + 4. Include `azure_storage` in `azure.extensions`: # [Azure portal](#tab/portal-02) @@ -119,8 +120,9 @@ az rest --method patch --url https://management.azure.com/subscriptions/ --na Using [Storage Accounts - Update](/rest/api/storagerp/storage-accounts/update) REST API. --- -1. To pass it to the [azure_storage.account_add](#azure_storageaccount_add) function, [fetch either of the two access keys](/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#view-account-access-keys) of the Azure Storage account. + +2. To pass it to the [azure_storage.account_add](#azure_storageaccount_add) function, [fetch either of the two access keys](/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#view-account-access-keys) of the Azure Storage account. # [Azure portal](#tab/portal-05) @@ -156,9 +159,12 @@ az storage account keys list --resource-group - # [REST API](#tab/rest-05) Using [Storage Accounts - List Keys](/rest/api/storagerp/storage-accounts/list-keys) REST API. + --- -## azure_storage.account_add +## Functions + +### azure_storage.account_add Function that allows adding a storage account, and its associated access key, to the list of storage accounts that the `pg_azure_storage` extension can access. @@ -177,29 +183,29 @@ There's an overloaded version of this function, which accepts an `account_config azure_storage.account_add(account_config jsonb); ``` -### Permissions +#### Permissions Must be a member of `azure_storage_admin`. -### Arguments +#### Arguments -#### account_name_p +##### account_name_p `text` the name of the Azure blob storage account that contains all of your objects: blobs, files, queues, and tables. The storage account provides a unique namespace that is accessible from anywhere in the world over HTTPS. -#### account_key_p +##### account_key_p `text` the value of one of the access keys for the storage account. Your Azure blob storage access keys are similar to a root password for your storage account. Always be careful to protect your access keys. Use Azure Key Vault to manage and rotate your keys securely. The account key is stored in a table that is accessible only by the superuser. Users granted the `azure_storage_admin` role can interact with this table via functions. To see which storage accounts are added, use the function [azure_storage.account_list](#azure_storageaccount_list). -#### account_config +##### account_config `jsonb` the name of the Azure Storage account and all the required settings like authentication type, account type, or storage credentials. We recommend the use of the utility functions [azure_storage.account_options_managed_identity](#azure_storageaccount_options_managed_identity), [azure_storage.account_options_credentials](#azure_storageaccount_options_credentials), or [azure_storage.account_options](#azure_storageaccount_options) to create any of the valid values that must be passed as this argument. -### Return type +#### Return type `VOID` -## azure_storage.account_options_managed_identity +### azure_storage.account_options_managed_identity Function that acts as a utility function, which can be called as a parameter within [azure_storage.account_add](#azure_storageaccount_add), and is useful to produce a valid value for the `account_config` argument, when using a system assigned managed identity to interact with the Azure Storage account. @@ -207,25 +213,25 @@ Function that acts as a utility function, which can be called as a parameter wit azure_storage.account_options_managed_identity(name text, type azure_storage.storage_type); ``` -### Permissions +#### Permissions Any user or role can invoke this function. -### Arguments +#### Arguments -#### name +##### name `text` the name of the Azure blob storage account that contains all of your objects: blobs, files, queues, and tables. The storage account provides a unique namespace that is accessible from anywhere in the world over HTTPS. -#### type +##### type `azure_storage.storage_type` the value of one of the types of storage supported. Only supported value is `blob`. -### Return type +#### Return type `jsonb` -## azure_storage.account_options_credentials +### azure_storage.account_options_credentials Function that acts as a utility function, which can be called as a parameter within [azure_storage.account_add](#azure_storageaccount_add), and is useful to produce a valid value for the `account_config` argument, when using an Azure Storage access key to interact with the Azure Storage account. @@ -233,29 +239,29 @@ Function that acts as a utility function, which can be called as a parameter wit azure_storage.account_options_credentials(name text, credentials text, type azure_storage.storage_type); ``` -### Permissions +#### Permissions Any user or role can invoke this function. -### Arguments +#### Arguments -#### name +##### name `text` the name of the Azure blob storage account that contains all of your objects: blobs, files, queues, and tables. The storage account provides a unique namespace that is accessible from anywhere in the world over HTTPS. -#### credentials +##### credentials `text` the value of one of the access keys for the storage account. Your Azure blob storage access keys are similar to a root password for your storage account. Always be careful to protect your access keys. Use Azure Key Vault to manage and rotate your keys securely. The account key is stored in a table that is accessible only by the superuser. Users granted the `azure_storage_admin` role can interact with this table via functions. To see which storage accounts are added, use the function [azure_storage.account_list](#azure_storageaccount_list). -#### type +##### type `azure_storage.storage_type` the value of one of the types of storage supported. Only supported value is `blob`. -### Return type +#### Return type `jsonb` -## azure_storage.account_options +### azure_storage.account_options Function that acts as a utility function, which can be called as a parameter within [azure_storage.account_add](#azure_storageaccount_add), and is useful to produce a valid value for the `account_config` argument, when using an Azure Storage access key or a system assigned managed identity to interact with the Azure Storage account. @@ -263,33 +269,33 @@ Function that acts as a utility function, which can be called as a parameter wit azure_storage.account_options(name text, auth_type azure_storage.auth_type, storage_type azure_storage.storage_type, credentials text DEFAULT NULL); ``` -### Permissions +#### Permissions Any user or role can invoke this function. -### Arguments +#### Arguments -#### name +##### name `text` the name of the Azure blob storage account that contains all of your objects: blobs, files, queues, and tables. The storage account provides a unique namespace that is accessible from anywhere in the world over HTTPS. -#### auth_type +##### auth_type `azure_storage.auth_type` the value of one of the types of storage supported. Only supported values are `access-key`, and `managed-identity`. -#### storage_type +##### storage_type `azure_storage.storage_type` the value of one of the types of storage supported. Only supported value is `blob`. -#### credentials +##### credentials `text` the value of one of the access keys for the storage account. Your Azure blob storage access keys are similar to a root password for your storage account. Always be careful to protect your access keys. Use Azure Key Vault to manage and rotate your keys securely. The account key is stored in a table that is accessible only by the superuser. Users granted the `azure_storage_admin` role can interact with this table via functions. To see which storage accounts are added, use the function [azure_storage.account_list](#azure_storageaccount_list). -### Return type +#### Return type `jsonb` -## azure_storage.account_remove +### azure_storage.account_remove Function that allows removing a storage account and its associated access key from the list of storage accounts that the `pg_azure_storage` extension can access. @@ -297,21 +303,21 @@ Function that allows removing a storage account and its associated access key fr azure_storage.account_remove(account_name_p text); ``` -### Permissions +#### Permissions Must be a member of `azure_storage_admin`. -### Arguments +#### Arguments -#### account_name_p +##### account_name_p `text` the name of the Azure blob storage account that contains all of your objects: blobs, files, queues, and tables. The storage account provides a unique namespace that is accessible from anywhere in the world over HTTPS. -### Return type +#### Return type `VOID` -## azure_storage.account_user_add +### azure_storage.account_user_add Function that allows granting a PostgreSQL user or role access to a storage account through the functions provided by the `pg_azure_storage` extension. @@ -322,25 +328,25 @@ Function that allows granting a PostgreSQL user or role access to a storage acco azure_storage.account_add(account_name_p text, user_p regrole); ``` -### Permissions +#### Permissions Must be a member of `azure_storage_admin`. -### Arguments +#### Arguments -#### account_name_p +##### account_name_p `text` the name of the Azure blob storage account that contains all of your objects: blobs, files, queues, and tables. The storage account provides a unique namespace that is accessible from anywhere in the world over HTTPS. -#### user_p +##### user_p `regrole` the name of a PostgreSQL user or role available on the server. -### Return type +#### Return type `VOID` -## azure_storage.account_user_remove +### azure_storage.account_user_remove Function that allows revoking a PostgreSQL user or role access to a storage account through the functions provided by the `pg_azure_storage` extension. @@ -352,25 +358,25 @@ Function that allows revoking a PostgreSQL user or role access to a storage acco azure_storage.account_user_remove(account_name_p text, user_p regrole); ``` -### Permissions +#### Permissions Must be a member of `azure_storage_admin`. -### Arguments +#### Arguments -#### account_name_p +##### account_name_p `text` the name of the Azure blob storage account that contains all of your objects: blobs, files, queues, and tables. The storage account provides a unique namespace that is accessible from anywhere in the world over HTTPS. -#### user_p +##### user_p `regrole` the name of a PostgreSQL user or role available on the server. -### Return type +#### Return type `VOID` -## azure_storage.account_list +### azure_storage.account_list Function that lists the names of the storage accounts that were configured via the [azure_storage.account_add](#azure_storageaccount_add) function, together with the PostgreSQL users or roles that are granted permissions to interact with that storage account through the functions provided by the `pg_azure_storage` extension. @@ -378,19 +384,19 @@ Function that lists the names of the storage accounts that were configured via t azure_storage.account_list(); ``` -### Permissions +#### Permissions Must be a member of `azure_storage_admin`. -### Arguments +#### Arguments This function doesn't take any arguments. -### Return type +#### Return type `TABLE(account_name text, auth_type azure_storage.auth_type, azure_storage_type azure_storage.storage_type, allowed_users regrole[])` a four-column table with the list of Azure Storage accounts added, the type of authentication used to interact with each account, the type of storage, and the list of PostgreSQL users or roles that are granted access to it. -## azure_storage.blob_list +### azure_storage.blob_list Function that lists the names and other properties (size, lastModified, eTag, contentType, contentEncoding, and contentHash) of blobs stored in the given container of the referred storage account. @@ -398,17 +404,17 @@ Function that lists the names and other properties (size, lastModified, eTag, co azure_storage.blob_list(account_name text, container_name text, prefix text DEFAULT ''::text); ``` -### Permissions +#### Permissions User or role invoking this function must be added to the allowed list for the `account_name` referred, by executing [azure_storage.account_user_add](#azure_storageaccount_user_add). Members of `azure_storage_admin` are automatically allowed to reference all Azure Storage accounts whose references were added using [azure_storage.account_add](#azure_storageaccount_add). -### Arguments +#### Arguments -#### account_name +##### account_name `text` the name of the Azure blob storage account that contains all of your objects: blobs, files, queues, and tables. The storage account provides a unique namespace that is accessible from anywhere in the world over HTTPS. -#### container_name +##### container_name `text` the name of a container. A container organizes a set of blobs, similar to a directory in a file system. A storage account can include an unlimited number of containers, and a container can store an unlimited number of blobs. A container name must be a valid Domain Name System (DNS) name, as it forms part of the unique URI used to address the container or its blobs. @@ -417,44 +423,44 @@ When naming a container, make sure to follow [these rules](/rest/api/storageserv The URI for a container is similar to: `https://myaccount.blob.core.windows.net/mycontainer` -#### prefix +##### prefix `text` when specified, the function returns the blobs whose names begin with the value provided in this parameter. Defaults to an empty string. -### Return type +#### Return type `TABLE(path text, bytes bigint, last_modified timestamp with time zone, etag text, content_type text, content_encoding text, content_hash text)` a table with one record per blob returned, including the full name of the blob, and some other properties. -#### path +##### path `text` the full name of the blob. -#### bytes +##### bytes `bigint` the size of blob in bytes. -#### last_modified +##### last_modified `timestamp with time zone`the date and time the blob was last modified. Any operation that modifies the blob, including an update of the blob's metadata or properties, changes the last-modified time of the blob. -#### etag +##### etag `text` the ETag property is used for optimistic concurrency during updates. It isn't a timestamp as there's another property called Timestamp that stores the last time a record was updated. For example, if you load an entity and want to update it, the ETag must match what is currently stored. Setting the appropriate ETag is important because if you have multiple users editing the same item, you don't want them overwriting each other's changes. -#### content_type +##### content_type `text` the content type specified for the blob. The default content type is `application/octet-stream`. -#### content_encoding +##### content_encoding `text` the Content-Encoding property of a blob that Azure Storage allows you to define. For compressed content, you could set the property to be Gzip. When the browser accesses the content, it automatically decompresses the content. -#### content_hash +##### content_hash `text` the hash used to verify the integrity of the blob during transport. When this header is specified, the storage service checks the provided hash with one computed from content. If the two hashes don't match, the operation fails with error code 400 (Bad Request). -## azure_storage.blob_get +### azure_storage.blob_get Function that allows importing data. It downloads one or more files from a blob container in an Azure Storage account. Then it translates the contents into rows, which can be consumed and processed with SQL language constructs. This function adds support to filter and manipulate the data fetched from the blob container before importing it. @@ -471,17 +477,17 @@ There's an overloaded version of this function, which accepts a `rec` parameter azure_storage.blob_get(account_name text, container_name text, path text, rec anyelement, decoder text DEFAULT 'auto'::text, compression text DEFAULT 'auto'::text, options jsonb DEFAULT NULL::jsonb); ``` -### Permissions +#### Permissions User or role invoking this function must be added to the allowed list for the `account_name` referred, by executing [azure_storage.account_user_add](#azure_storageaccount_user_add). Members of `azure_storage_admin` are automatically allowed to reference all Azure Storage accounts whose references were added using [azure_storage.account_add](#azure_storageaccount_add). -### Arguments +#### Arguments -#### account_name +##### account_name `text` the name of the Azure blob storage account that contains all of your objects: blobs, files, queues, and tables. The storage account provides a unique namespace that is accessible from anywhere in the world over HTTPS. -#### container_name +##### container_name `text` the name of a container. A container organizes a set of blobs, similar to a directory in a file system. A storage account can include an unlimited number of containers, and a container can store an unlimited number of blobs. A container name must be a valid Domain Name System (DNS) name, as it forms part of the unique URI used to address the container or its blobs. @@ -490,15 +496,15 @@ When naming a container, make sure to follow [these rules](/rest/api/storageserv The URI for a container is similar to: `https://myaccount.blob.core.windows.net/mycontainer` -#### path +##### path `text` the full name of the blob. -#### rec +##### rec `anyelement` the definition of the record output structure. -#### decoder +##### decoder `text` the specification of the blob format. Can be set to any of the following values: @@ -510,7 +516,7 @@ The URI for a container is similar to: | `binary` | | Binary PostgreSQL COPY format. | | `text` \| `xml` \| `json` | | A file containing a single text value. | -#### compression +##### compression `text` the specification of compression type. Can be set to any of the following values: @@ -522,16 +528,16 @@ The URI for a container is similar to: The extension doesn't support any other compression types. -#### options +##### options `jsonb` the settings that define handling of custom headers, custom separators, escape characters, etc. `options` affects the behavior of this function in a way similar to how the options you can pass to the [`COPY`](https://www.postgresql.org/docs/current/sql-copy.html) command in PostgreSQL affect its behavior. -### Return type +#### Return type `SETOF record` `SETOF anyelement` -## azure_storage.blob_put +### azure_storage.blob_put Function that allows exporting data, by uploading files to a blob container in an Azure Storage account. The content of the files is produced from rows in PostgreSQL. @@ -564,17 +570,17 @@ azure_storage.blob_put(account_name text, container_name text, path text, tuple RETURNS VOID; ``` -### Permissions +#### Permissions User or role invoking this function must be added to the allowed list for the `account_name` referred, by executing [azure_storage.account_user_add](#azure_storageaccount_user_add). Members of `azure_storage_admin` are automatically allowed to reference all Azure Storage accounts whose references were added using [azure_storage.account_add](#azure_storageaccount_add). -### Arguments +#### Arguments -#### account_name +##### account_name `text` the name of the Azure blob storage account that contains all of your objects: blobs, files, queues, and tables. The storage account provides a unique namespace that is accessible from anywhere in the world over HTTPS. -#### container_name +##### container_name `text` the name of a container. A container organizes a set of blobs, similar to a directory in a file system. A storage account can include an unlimited number of containers, and a container can store an unlimited number of blobs. A container name must be a valid Domain Name System (DNS) name, as it forms part of the unique URI used to address the container or its blobs. @@ -583,15 +589,15 @@ When naming a container, make sure to follow [these rules](/rest/api/storageserv The URI for a container is similar to: `https://myaccount.blob.core.windows.net/mycontainer` -#### path +##### path `text` the full name of the blob. -#### tuple +##### tuple `record` the definition of the record output structure. -#### encoder +##### encoder `text` the specification of the blob format. Can be set to any of the following values: @@ -603,7 +609,7 @@ The URI for a container is similar to: | `binary` | | Binary PostgreSQL COPY format. | | `text` \| `xml` \| `json` | | A file containing a single text value. | -#### compression +##### compression `text` the specification of compression type. Can be set to any of the following values: @@ -615,15 +621,15 @@ The URI for a container is similar to: The extension doesn't support any other compression types. -#### options +##### options `jsonb` the settings that define handling of custom headers, custom separators, escape characters, etc. `options` affects the behavior of this function in a way similar to how the options you can pass to the [`COPY`](https://www.postgresql.org/docs/current/sql-copy.html) command in PostgreSQL affect its behavior. -### Return type +#### Return type `VOID` -## azure_storage.options_csv_get +### azure_storage.options_csv_get Function that acts as a utility function, which can be called as a parameter within `blob_get`, and is useful for decoding the content of a csv file. @@ -631,49 +637,49 @@ Function that acts as a utility function, which can be called as a parameter wit azure_storage.options_csv_get(delimiter text DEFAULT NULL::text, null_string text DEFAULT NULL::text, header boolean DEFAULT NULL::boolean, quote text DEFAULT NULL::text, escape text DEFAULT NULL::text, force_not_null text[] DEFAULT NULL::text[], force_null text[] DEFAULT NULL::text[], content_encoding text DEFAULT NULL::text); ``` -### Permissions +#### Permissions Any user or role can invoke this function. -### Arguments +#### Arguments -#### delimiter +##### delimiter `text` the character that separates columns within each row (line) of the file. It must be a single 1-byte character. Although this function supports delimiters of any number of characters, if you try to use more than a single 1-byte character, PostgreSQL reports back a `COPY delimiter must be a single one-byte character` error. -#### null_string +##### null_string `text` the string that represents a null value. The default is \N (backslash-N) in text format, and an unquoted empty string in CSV format. You might prefer an empty string even in text format for cases where you don't want to distinguish nulls from empty strings. -#### header +##### header `boolean` flag that indicates if the file contains a header line with the names of each column in the file. On output, the initial line contains the column names from the table. -#### quote +##### quote `text` the quoting character to be used when a data value is quoted. The default is double-quote. It must be a single 1-byte character. Although this function supports delimiters of any number of characters, if you try to use more than a single 1-byte character, PostgreSQL reports back a `COPY quote must be a single one-byte character` error. -#### escape +##### escape `text` the character that should appear before a data character that matches the QUOTE value. The default is the same as the QUOTE value (so that the quoting character is doubled if it appears in the data). It must be a single 1-byte character. Although this function supports delimiters of any number of characters, if you try to use more than a single 1-byte character, PostgreSQL reports back a `COPY escape must be a single one-byte character` error. -#### force_not_null +##### force_not_null `text[]` don't match the specified columns' values against the null string. In the default case where the null string is empty, it means that empty values are read as zero-length strings rather than nulls, even when they aren't quoted. -#### force_null +##### force_null `text[]` match the specified columns' values against the null string, even if quoted, and if a match is found, set the value to NULL. In the default case where the null string is empty, it converts a quoted empty string into NULL. -#### content_encoding +##### content_encoding `text` name of the encoding with which the file is encoded. If the option is omitted, the current client encoding is used. -### Return type +#### Return type `jsonb` -## azure_storage.options_copy +### azure_storage.options_copy Function that acts as a utility function, which can be called as a parameter within `blob_get`. It acts as a helper function for [options_csv_get](#azure_storageoptions_csv_get), [options_tsv](#azure_storageoptions_tsv), and [options_binary](#azure_storageoptions_binary). @@ -681,53 +687,53 @@ Function that acts as a utility function, which can be called as a parameter wit azure_storage.options_copy(delimiter text DEFAULT NULL::text, null_string text DEFAULT NULL::text, header boolean DEFAULT NULL::boolean, quote text DEFAULT NULL::text, escape text DEFAULT NULL::text, force_quote text[] DEFAULT NULL::text[], force_not_null text[] DEFAULT NULL::text[], force_null text[] DEFAULT NULL::text[], content_encoding text DEFAULT NULL::text); ``` -### Permissions +#### Permissions Any user or role can invoke this function. -### Arguments +#### Arguments -#### delimiter +##### delimiter `text` the character that separates columns within each row (line) of the file. It must be a single 1-byte character. Although this function supports delimiters of any number of characters, if you try to use more than a single 1-byte character, PostgreSQL reports back a `COPY delimiter must be a single one-byte character` error. -#### null_string +##### null_string `text` the string that represents a null value. The default is \N (backslash-N) in text format, and an unquoted empty string in CSV format. You might prefer an empty string even in text format for cases where you don't want to distinguish nulls from empty strings. -#### header +##### header `boolean` flag that indicates if the file contains a header line with the names of each column in the file. On output, the initial line contains the column names from the table. -#### quote +##### quote `text` the quoting character to be used when a data value is quoted. The default is double-quote. It must be a single 1-byte character. Although this function supports delimiters of any number of characters, if you try to use more than a single 1-byte character, PostgreSQL reports back a `COPY quote must be a single one-byte character` error. -#### escape +##### escape `text` the character that should appear before a data character that matches the QUOTE value. The default is the same as the QUOTE value (so that the quoting character is doubled if it appears in the data). It must be a single 1-byte character. Although this function supports delimiters of any number of characters, if you try to use more than a single 1-byte character, PostgreSQL reports back a `COPY escape must be a single one-byte character` error. -#### force_quote +##### force_quote `text[]` forces quoting to be used for all non-NULL values in each specified column. NULL output is never quoted. If * is specified, non-NULL values are quoted in all columns. -#### force_not_null +##### force_not_null `text[]` don't match the specified columns' values against the null string. In the default case where the null string is empty, it means that empty values are read as zero-length strings rather than nulls, even when they aren't quoted. -#### force_null +##### force_null `text[]` match the specified columns' values against the null string, even if quoted, and if a match is found, set the value to NULL. In the default case where the null string is empty, it converts a quoted empty string into NULL. -#### content_encoding +##### content_encoding `text` name of the encoding with which the file is encoded. If the option is omitted, the current client encoding is used. -### Return type +#### Return type `jsonb` -## azure_storage.options_tsv +### azure_storage.options_tsv Function that acts as a utility function, which can be called as a parameter within `blob_get`, and is useful for decoding the content of a tsv file. @@ -735,29 +741,29 @@ Function that acts as a utility function, which can be called as a parameter wit azure_storage.options_tsv(delimiter text DEFAULT NULL::text, null_string text DEFAULT NULL::text, content_encoding text DEFAULT NULL::text); ``` -### Permissions +#### Permissions Any user or role can invoke this function. -### Arguments +#### Arguments -#### delimiter +##### delimiter `text` the character that separates columns within each row (line) of the file. It must be a single 1-byte character. Although this function supports delimiters of any number of characters, if you try to use more than a single 1-byte character, PostgreSQL reports back a `COPY delimiter must be a single one-byte character` error. -#### null_string +##### null_string `text` the string that represents a null value. The default is \N (backslash-N) in text format, and an unquoted empty string in CSV format. You might prefer an empty string even in text format for cases where you don't want to distinguish nulls from empty strings. -#### content_encoding +##### content_encoding `text` name of the encoding with which the file is encoded. If the option is omitted, the current client encoding is used. -### Return type +#### Return type `jsonb` -## azure_storage.options_binary +### azure_storage.options_binary Function that acts as a utility function, which can be called as a parameter within `blob_get`, and is useful for decoding the content of a binary file. @@ -765,17 +771,17 @@ Function that acts as a utility function, which can be called as a parameter wit azure_storage.options_binary(content_encoding text DEFAULT NULL::text); ``` -### Permissions +#### Permissions Any user or role can invoke this function. -### Arguments +#### Arguments -#### content_encoding +##### content_encoding `text` name of the encoding with which the file is encoded. If the option is omitted, the current client encoding is used. -### Return type +#### Return type `jsonb` From 47c08d787d12cf38f66ac646f797291ae528666a Mon Sep 17 00:00:00 2001 From: Nacho Alonso Portillo <41644064+nachoalonsoportillo@users.noreply.github.com> Date: Tue, 19 Nov 2024 17:38:42 +0100 Subject: [PATCH 47/53] Update concepts-storage.md --- articles/postgresql/flexible-server/concepts-storage.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/articles/postgresql/flexible-server/concepts-storage.md b/articles/postgresql/flexible-server/concepts-storage.md index 99c217c578..07f02062ca 100644 --- a/articles/postgresql/flexible-server/concepts-storage.md +++ b/articles/postgresql/flexible-server/concepts-storage.md @@ -4,7 +4,7 @@ description: This article describes the storage options in Azure Database for Po author: kabharati ms.author: kabharati ms.reviewer: maghan -ms.date: 10/28/2024 +ms.date: 11/19/2024 ms.service: azure-database-postgresql ms.subservice: flexible-server ms.topic: conceptual @@ -111,7 +111,7 @@ As an illustration, take a server with a storage capacity of 2 TiB (greater than The default behavior is to increase the disk size to the next premium SSD storage tier. This increase is always double in both size and cost, regardless of whether you start the storage scaling operation manually or through storage autogrow. Enabling storage autogrow is valuable when you're managing unpredictable workloads, because it automatically detects low-storage conditions and scales up the storage accordingly. -The process of scaling storage is performed online without causing any downtime, except when the disk is provisioned at 4,096 GiB. This exception is a limitation of Azure Managed disks. If a disk is already 4,096 GiB, the storage scaling activity isn't triggered, even if storage autogrow is turned on. In such cases, you need to scale your storage manually. Manual scaling is an offline operation that you should plan according to your business requirements. +The process of scaling storage is performed online without causing any downtime, except when the disk is provisioned at 4,096 GiB. This exception is a limitation of Azure Managed disks. If a disk is already 4,096 GiB, the storage scaling activity isn't triggered, even if storage autogrow is turned on. In such cases, you need to scale your storage manually. Please rememeber that in this specific case, manual scaling is an offline operation and should be scheduled in alignment with your business needs. Remember that storage can only be scaled up, not down. From 9e7e1e50ea313c1b76490b6d898668245eecf343 Mon Sep 17 00:00:00 2001 From: nachoalonsoportillo Date: Tue, 19 Nov 2024 17:42:37 +0100 Subject: [PATCH 48/53] revert --- .../flexible-server/includes/regions-table.md | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/articles/postgresql/flexible-server/includes/regions-table.md b/articles/postgresql/flexible-server/includes/regions-table.md index 13732d7b9f..e456a54b54 100644 --- a/articles/postgresql/flexible-server/includes/regions-table.md +++ b/articles/postgresql/flexible-server/includes/regions-table.md @@ -2,23 +2,23 @@ author: akashraokm ms.author: akashrao ms.reviewer: maghan -ms.date: 11/04/2024 +ms.date: 06/28/2024 ms.service: azure-database-postgresql ms.subservice: flexible-server ms.topic: include --- | Region | Intel V3/V4/V5/AMD Compute | Zone-Redundant HA | Same-Zone HA | Geo-Redundant backup | | ------ | -------------------------- | ----------------- | ------------ | -------------------- | -| Australia Central | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | -| Australia Central 2 * | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :x: | +| Australia Central | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | +| Australia Central 2 * | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :x: | | Australia East | :heavy_check_mark: (all SKUs) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Australia Southeast | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | -| Brazil South | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | -| Brazil Southeast * | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :x: | +| Brazil South | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | +| Brazil Southeast * | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :x: | | Canada Central | :heavy_check_mark: (all SKUs) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Canada East | :heavy_check_mark: (all SKUs) | :x: | :heavy_check_mark: | :heavy_check_mark: | -| Central India | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | -| Central US | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | +| Central India | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | +| Central US | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | | China East 2 | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :x: | | China East 3 | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | China North 2 | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :x: | @@ -27,34 +27,34 @@ ms.topic: include | East US | :heavy_check_mark: (all SKUs) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | | East US 2 | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | | France Central | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| France South | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | -| Germany North * | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | +| France South | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | +| Germany North * | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | Germany West Central | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Israel Central | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: | :heavy_check_mark: | :x: | -| Italy North | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :x: | +| Italy North | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: | :heavy_check_mark: | :x: | | Japan East | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | -| Japan West | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | +| Japan West | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | Jio India Central | :heavy_check_mark: (v3 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | Jio India West | :heavy_check_mark: (v3 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | Korea Central | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: $ ** | :heavy_check_mark: | :heavy_check_mark: | | Korea South | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | -| Mexico Central | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :x: | +| Mexico Central | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: | :heavy_check_mark: | :x: | | North Central US | :heavy_check_mark: (all SKUs) | :x: | :heavy_check_mark: | :heavy_check_mark: | -| North Europe | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | +| North Europe | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Norway East * | :heavy_check_mark: (all SKUs) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Norway West | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | +| Norway West | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | Poland Central | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: | :heavy_check_mark: | :x: | | Qatar Central | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :x: | | South Africa North | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| South Africa West * | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | +| South Africa West * | :heavy_check_mark: (v3/v4 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | South Central US | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | | South India | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Southeast Asia | :heavy_check_mark: (all SKUs) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | +| Southeast Asia | :heavy_check_mark: (all SKUs) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Spain Central | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: | :heavy_check_mark: | :x: | | Sweden Central | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | -| Switzerland North | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | +| Switzerland North | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Switzerland West * | :heavy_check_mark: (v3/v4/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | -| UAE Central * | :heavy_check_mark: (v3/v5 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | +| UAE Central * | :heavy_check_mark: (v3 only) | :x: | :heavy_check_mark: | :heavy_check_mark: | | UAE North | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | UK South | :heavy_check_mark: (all SKUs) | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | UK West | :heavy_check_mark: (all SKUs) | :x: | :heavy_check_mark: | :heavy_check_mark: | @@ -65,4 +65,4 @@ ms.topic: include | West Europe | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | | West US | :heavy_check_mark: (all SKUs) | :x: | :heavy_check_mark: | :heavy_check_mark: | | West US 2 | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | -| West US 3 | :heavy_check_mark: (all SKUs) | :heavy_check_mark: ** | :heavy_check_mark: | :x: | +| West US 3 | :heavy_check_mark: (all SKUs) | :heavy_check_mark: ** | :heavy_check_mark: | :x: | \ No newline at end of file From f41933b245ac27b871edb063668f6d5e1e689fdb Mon Sep 17 00:00:00 2001 From: nachoalonsoportillo Date: Tue, 19 Nov 2024 17:43:20 +0100 Subject: [PATCH 49/53] Change --- articles/postgresql/flexible-server/includes/regions-table.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/postgresql/flexible-server/includes/regions-table.md b/articles/postgresql/flexible-server/includes/regions-table.md index e456a54b54..ff33cb909c 100644 --- a/articles/postgresql/flexible-server/includes/regions-table.md +++ b/articles/postgresql/flexible-server/includes/regions-table.md @@ -65,4 +65,4 @@ ms.topic: include | West Europe | :heavy_check_mark: (v3/v4/v5 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | | West US | :heavy_check_mark: (all SKUs) | :x: | :heavy_check_mark: | :heavy_check_mark: | | West US 2 | :heavy_check_mark: (v3/v4 only) | :heavy_check_mark: $ | :heavy_check_mark: | :heavy_check_mark: | -| West US 3 | :heavy_check_mark: (all SKUs) | :heavy_check_mark: ** | :heavy_check_mark: | :x: | \ No newline at end of file +| West US 3 | :heavy_check_mark: (all SKUs) | :heavy_check_mark: ** | :heavy_check_mark: | :x: | From 85dc0b9c5c75a4c925417e15f83b8461f385298c Mon Sep 17 00:00:00 2001 From: nachoalonsoportillo Date: Tue, 19 Nov 2024 17:51:33 +0100 Subject: [PATCH 50/53] Post-Ignite minor fixes --- articles/postgresql/flexible-server/concepts-index-tuning.md | 4 ++-- articles/postgresql/flexible-server/concepts-query-store.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/articles/postgresql/flexible-server/concepts-index-tuning.md b/articles/postgresql/flexible-server/concepts-index-tuning.md index 215edbb266..070607f44c 100644 --- a/articles/postgresql/flexible-server/concepts-index-tuning.md +++ b/articles/postgresql/flexible-server/concepts-index-tuning.md @@ -41,7 +41,7 @@ The algorithm iterates over the target databases, searching for possible indexes ### CREATE INDEX recommendations -For each database identified as a candidate to analyze for producing index recommendations, all SELECT queries executed during the lookup interval and in the context of that specific database are factored in. +For each database identified as a candidate to analyze for producing index recommendations, all SELECT, UPDATE, INSERT, and DELETE queries executed during the lookup interval and in the context of that specific database are factored in. > [!NOTE] > Index tuning analyzes not only SELECT statements, but also DML (UPDATE, INSERT, and DELETE) statements. @@ -155,7 +155,7 @@ Index tuning is supported on all [currently available tiers](concepts-compute.md ### Supported versions of PostgreSQL -Index tuning is supported on [major versions](concepts-supported-versions.md) **14 or greater** of Azure Database for PostgreSQL Flexible Server. +Index tuning is supported on [major versions](concepts-supported-versions.md) **12 or greater** of Azure Database for PostgreSQL Flexible Server. ### Use of search_path diff --git a/articles/postgresql/flexible-server/concepts-query-store.md b/articles/postgresql/flexible-server/concepts-query-store.md index 729b20a88a..546f0a0405 100644 --- a/articles/postgresql/flexible-server/concepts-query-store.md +++ b/articles/postgresql/flexible-server/concepts-query-store.md @@ -80,7 +80,7 @@ Here are some examples of how you can gain more insights into your workload usin ## Configuration options -When query store is enabled, it saves data in aggregation windows of length determined by the [pg_qs.interval_length_minutes](server-parameters-table-customized-options.md?pivots=postgresql-16#pg_qsinterval_length_minutes) server parameter (defaults to 15 minutes). For each window, it stores up to 500 distinct queries per window. Attributes that distinguish the uniqueness of each query are userid (identifier of the user who executes the query), dbid (identifier of the database in whose context the query exeutes), and queryid (an integer value uniquely identifying the query executed). If the number of distinct queries reaches 500 during the configured interval, 5% of the ones that are recorded are deallocated to make room for more. The ones deallocated first are the ones which were executed the least number of times. +When query store is enabled, it saves data in aggregation windows of length determined by the [pg_qs.interval_length_minutes](server-parameters-table-customized-options.md?pivots=postgresql-16#pg_qsinterval_length_minutes) server parameter (defaults to 15 minutes). For each window, it stores up to 500 distinct queries per window. Attributes that distinguish the uniqueness of each query are user_id (identifier of the user who executes the query), db_id (identifier of the database in whose context the query executes), and query_id (an integer value uniquely identifying the query executed). If the number of distinct queries reaches 500 during the configured interval, 5% of the ones that are recorded are deallocated to make room for more. The ones deallocated first are the ones which were executed the least number of times. The following options are available for configuring Query Store parameters: From a17e4a552e9c5726c09a36cf4acf271e5534c44e Mon Sep 17 00:00:00 2001 From: tarabhatiamsft <111526230+tarabhatiamsft@users.noreply.github.com> Date: Tue, 19 Nov 2024 09:06:27 -0800 Subject: [PATCH 51/53] Learn Editor: Update index-policy.md --- articles/cosmos-db/index-policy.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/articles/cosmos-db/index-policy.md b/articles/cosmos-db/index-policy.md index 181fb3cd31..29b2fc2da6 100644 --- a/articles/cosmos-db/index-policy.md +++ b/articles/cosmos-db/index-policy.md @@ -159,14 +159,14 @@ Here are some rules for included and excluded paths precedence in Azure Cosmos D | **`diskANN`** | Creates an index based on DiskANN for fast and efficient approximate search. | 4096 | A few points to note: - - The `flat` and `quantizedFlat` index types apply Azure Cosmos DB's index to store and read each vector when performing a vector search. Vector searches with a `flat` index are brute-force searches and produce 100% accuracy or recall. That is, it's guaranteed to find the most similar vectors in the dataset. However, there's a limitation of `505` dimensions for vectors on a flat index. +- The `flat` and `quantizedFlat` index types apply Azure Cosmos DB's index to store and read each vector when performing a vector search. Vector searches with a `flat` index are brute-force searches and produce 100% accuracy or recall. That is, it's guaranteed to find the most similar vectors in the dataset. However, there's a limitation of `505` dimensions for vectors on a flat index. - The `quantizedFlat` index stores quantized (compressed) vectors on the index. Vector searches with `quantizedFlat` index are also brute-force searches, however their accuracy might be slightly less than 100% since the vectors are quantized before adding to the index. However, vector searches with `quantized flat` should have lower latency, higher throughput, and lower RU cost than vector searches on a `flat` index. This is a good option for scenarios where you're using query filters to narrow down the vector search to a relatively small set of vectors, and high accuracy is required. - The `diskANN` index is a separate index defined specifically for vectors applying [DiskANN](https://www.microsoft.com/research/publication/diskann-fast-accurate-billion-point-nearest-neighbor-search-on-a-single-node/), a suite of high performance vector indexing algorithms developed by Microsoft Research. DiskANN indexes can offer some of the lowest latency, highest throughput, and lowest RU cost queries, while still maintaining high accuracy. However, since DiskANN is an approximate nearest neighbors (ANN) index, the accuracy might be lower than `quantizedFlat` or `flat`. The `diskANN` and `quantizedFlat` indexes can take optional index build parameters that can be used to tune the accuracy versus latency trade-off that applies to every Approximate Nearest Neighbors vector index. - - `quantizationByteSize`: Sets the size (in bytes) for product quantization. Min=1, Default=dynamic (system decides), Max=512. Setting this larger may result in higher accuracy vector searches at expense of higher RU cost and higher latency. This applies to both `quantizedFlat` and `DiskANN` index types. +- `quantizationByteSize`: Sets the size (in bytes) for product quantization. Min=1, Default=dynamic (system decides), Max=512. Setting this larger may result in higher accuracy vector searches at expense of higher RU cost and higher latency. This applies to both `quantizedFlat` and `DiskANN` index types. - `indexingSearchListSize`: Sets how many vectors to search over during index build construction. Min=10, Default=100, Max=500. Setting this larger may result in higher accuracy vector searches at the expense of longer index build times and higher vector ingest latencies. This applies to `DiskANN` indexes only. Here's an example of an indexing policy with a vector index: @@ -494,7 +494,7 @@ WHERE r.familyname = 'Anderson' AND ch.age > 20 A container's indexing policy can be updated at any time [by using the Azure portal or one of the supported SDKs](how-to-manage-indexing-policy.md). An update to the indexing policy triggers a transformation from the old index to the new one, which is performed online and in-place (so no extra storage space is consumed during the operation). The old indexing policy is efficiently transformed to the new policy without affecting the write availability, read availability, or the throughput provisioned on the container. Index transformation is an asynchronous operation, and the time it takes to complete depends on the provisioned throughput, the number of items and their size. If multiple indexing policy updates have to be made, it's recommended to do all the changes as a single operation in order to have the index transformation complete as quickly as possible. > [!IMPORTANT] -> Index transformation is an operation that consumes [request units](request-units.md). +> Index transformation is an operation that consumes [request units](request-units.md) and updating the index policy is an RU bound operation. If any indexing term is missed, the customer will see queries consuming more overall RUs. > [!NOTE] > You can track the progress of index transformation in the [Azure portal](how-to-manage-indexing-policy.md#use-the-azure-portal) or by [using one of the SDKs](how-to-manage-indexing-policy.md#dotnet-sdk). From 84ca50cdb0e555aa0c4f06f9d8c3b7105a359607 Mon Sep 17 00:00:00 2001 From: tarabhatiamsft <111526230+tarabhatiamsft@users.noreply.github.com> Date: Tue, 19 Nov 2024 09:06:42 -0800 Subject: [PATCH 52/53] Learn Editor: Update index-policy.md From ce2e947611b2e22583721000fff7af7474afa316 Mon Sep 17 00:00:00 2001 From: kabharati <92822591+kabharati@users.noreply.github.com> Date: Tue, 19 Nov 2024 12:42:37 -0500 Subject: [PATCH 53/53] Update concepts-backup-restore.md --- .../postgresql/flexible-server/concepts-backup-restore.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/articles/postgresql/flexible-server/concepts-backup-restore.md b/articles/postgresql/flexible-server/concepts-backup-restore.md index d4fb8aa8fa..e84cdaa907 100644 --- a/articles/postgresql/flexible-server/concepts-backup-restore.md +++ b/articles/postgresql/flexible-server/concepts-backup-restore.md @@ -183,6 +183,10 @@ On-demand backups can be taken in addition to scheduled automatic backups. These For more information about performing a on-demand backup, visit the [how-to guide](./how-to-perform-on-demand-backup-portal.md). +#### Limitations + +On-demand backup feature is currently not supported with the Burstable server compute tier. + ## Long-term retention Azure Backup and Azure Database for PostgreSQL flexible server services have built an enterprise-class long-term backup solution for Azure Database for PostgreSQL flexible server instances that retains backups for up to 10 years. You can use long-term retention (LTR) independently or in addition to the automated backup solution offered by Azure Database for PostgreSQL flexible server, which offers retention of up to 35 days. Automated backups are physical backups suited for operational recoveries, especially when you want to restore from the latest backups. Long-term backups help you with your compliance needs, are more granular, and are taken as logical backups using native pg_dump. In addition to long-term retention, the solution offers the following capabilities: