From f5e44ee75f9d55aab501b7b10767d7709fa9a647 Mon Sep 17 00:00:00 2001 From: Braier Alexandre Date: Wed, 4 Sep 2024 09:13:55 +0100 Subject: [PATCH 1/4] Add files via upload --- .../new-enable-control-plane-requests-logs.png | Bin 0 -> 45221 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 articles/cosmos-db/media/audit-control-plane-logs/new-enable-control-plane-requests-logs.png diff --git a/articles/cosmos-db/media/audit-control-plane-logs/new-enable-control-plane-requests-logs.png b/articles/cosmos-db/media/audit-control-plane-logs/new-enable-control-plane-requests-logs.png new file mode 100644 index 0000000000000000000000000000000000000000..0dcb046efd4c43cbae323970ffb85f12c945bca4 GIT binary patch literal 45221 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 o^fF|PNxU%qar6Jfe;9guGRa{^D#fG=2lb+j Date: Wed, 30 Oct 2024 17:57:33 +0000 Subject: [PATCH 2/4] [DocsArchive-1.0.24301.5](2024-10-30-17-57-09)Auto archive content --- .openpublishing.redirection.json | 440 ++++++++++++++++++ articles/mariadb/TOC.yml | 223 +-------- articles/mariadb/concepts-audit-logs.md | 166 ------- .../concepts-azure-advisor-recommendations.md | 41 -- articles/mariadb/concepts-backup.md | 125 ----- .../mariadb/concepts-business-continuity.md | 81 ---- .../mariadb/concepts-certificate-rotation.md | 171 ------- articles/mariadb/concepts-compatibility.md | 49 -- .../concepts-connectivity-architecture.md | 149 ------ articles/mariadb/concepts-connectivity.md | 46 -- ...cepts-data-access-security-private-link.md | 139 ------ .../concepts-data-access-security-vnet.md | 159 ------- .../mariadb/concepts-data-in-replication.md | 48 -- articles/mariadb/concepts-firewall-rules.md | 86 ---- .../mariadb/concepts-high-availability.md | 79 ---- articles/mariadb/concepts-limits.md | 97 ---- articles/mariadb/concepts-monitoring.md | 67 --- ...ncepts-planned-maintenance-notification.md | 79 ---- articles/mariadb/concepts-pricing-tiers.md | 100 ---- .../concepts-query-performance-insight.md | 67 --- articles/mariadb/concepts-query-store.md | 180 ------- articles/mariadb/concepts-read-replicas.md | 191 -------- articles/mariadb/concepts-security.md | 53 --- articles/mariadb/concepts-server-logs.md | 150 ------ .../mariadb/concepts-server-parameters.md | 236 ---------- articles/mariadb/concepts-servers.md | 69 --- .../concepts-ssl-connection-security.md | 77 --- .../mariadb/concepts-supported-versions.md | 52 --- articles/mariadb/connect-workbench.md | 119 ----- articles/mariadb/howto-alert-metric.md | 88 ---- .../mariadb/howto-auto-grow-storage-cli.md | 45 -- .../mariadb/howto-auto-grow-storage-portal.md | 43 -- .../howto-auto-grow-storage-powershell.md | 64 --- .../mariadb/howto-configure-audit-logs-cli.md | 66 --- .../howto-configure-audit-logs-portal.md | 71 --- .../howto-configure-privatelink-cli.md | 206 -------- .../howto-configure-privatelink-portal.md | 252 ---------- .../howto-configure-server-logs-cli.md | 61 --- .../howto-configure-server-logs-portal.md | 89 ---- .../howto-configure-server-parameters-cli.md | 116 ----- ...gure-server-parameters-using-powershell.md | 87 ---- articles/mariadb/howto-configure-ssl.md | 237 ---------- .../howto-connection-string-powershell.md | 53 --- articles/mariadb/howto-connection-string.md | 81 ---- .../howto-create-manage-server-portal.md | 104 ----- articles/mariadb/howto-create-users.md | 104 ----- articles/mariadb/howto-data-in-replication.md | 317 ------------- .../howto-deny-public-network-access.md | 43 -- articles/mariadb/howto-manage-firewall-cli.md | 132 ------ .../mariadb/howto-manage-firewall-portal.md | 59 --- articles/mariadb/howto-manage-vnet-cli.md | 59 --- articles/mariadb/howto-manage-vnet-portal.md | 60 --- .../mariadb/howto-migrate-dump-restore.md | 147 ------ articles/mariadb/howto-move-regions-portal.md | 74 --- articles/mariadb/howto-read-replicas-cli.md | 185 -------- .../mariadb/howto-read-replicas-portal.md | 138 ------ .../mariadb/howto-read-replicas-powershell.md | 119 ----- articles/mariadb/howto-redirection.md | 174 ------- articles/mariadb/howto-restart-server-cli.md | 44 -- .../mariadb/howto-restart-server-portal.md | 50 -- .../howto-restart-server-powershell.md | 58 --- .../mariadb/howto-restore-dropped-server.md | 72 --- articles/mariadb/howto-restore-server-cli.md | 128 ----- .../mariadb/howto-restore-server-portal.md | 128 ----- .../howto-restore-server-powershell.md | 169 ------- articles/mariadb/howto-server-parameters.md | 82 ---- articles/mariadb/howto-tls-configurations.md | 45 -- ...o-troubleshoot-common-connection-issues.md | 58 --- .../howto-troubleshoot-query-performance.md | 170 ------- .../azure-database-for-mariadb-deprecation.md | 11 - articles/mariadb/index.yml | 124 ----- .../advisor-example.png | Bin 67991 -> 0 bytes ...nnectivity-architecture-overview-proxy.png | Bin 33805 -> 0 bytes .../privatelink-overview.png | Bin 159302 -> 0 bytes .../select-private-link-message.png | Bin 9749 -> 0 bytes .../select-private-link-portal.png | Bin 97178 -> 0 bytes .../select-private-link.png | Bin 17633 -> 0 bytes .../show-mariadb-private-link.png | Bin 141307 -> 0 bytes .../show-private-link-approved-connection.png | Bin 58894 -> 0 bytes .../show-private-link-overview.PNG | Bin 54170 -> 0 bytes .../vnet-concept.png | Bin 74658 -> 0 bytes .../1-firewall-concept.png | Bin 53968 -> 0 bytes .../allow-azure-services.png | Bin 69499 -> 0 bytes .../availability-mariadb-server.png | Bin 184688 -> 0 bytes .../elastic-scaling-mariadb-server.png | Bin 179463 -> 0 bytes ...query-performance-insight-landing-page.png | Bin 106893 -> 0 bytes ...ry-performance-insight-wait-statistics.png | Bin 119458 -> 0 bytes .../read-replica-regions.png | Bin 345927 -> 0 bytes .../1_server-overview-name-login.png | Bin 41532 -> 0 bytes .../2-setup-new-connection.png | Bin 39158 -> 0 bytes .../connect-workbench/3-workbench-sql-tab.png | Bin 130304 -> 0 bytes .../10-action-group-type.png | Bin 65872 -> 0 bytes .../11-name-description-severity.png | Bin 55937 -> 0 bytes .../howto-alert-metric/2-alert-rules.png | Bin 109399 -> 0 bytes .../howto-alert-metric/4-add-rule-form.png | Bin 70437 -> 0 bytes .../6-configure-signal-logic.png | Bin 136108 -> 0 bytes .../7-set-threshold-time.png | Bin 99763 -> 0 bytes .../3-auto-grow.png | Bin 137575 -> 0 bytes .../5-auto-grow-successful.png | Bin 68972 -> 0 bytes .../add-diagnostic-setting.png | Bin 148944 -> 0 bytes .../audit-log-enabled.png | Bin 295333 -> 0 bytes .../audit-log-events.png | Bin 302826 -> 0 bytes .../audit-log-exclude-users.png | Bin 295847 -> 0 bytes .../configure-diagnostic-setting.png | Bin 45637 -> 0 bytes .../save-diagnostic-setting.png | Bin 45455 -> 0 bytes .../save-parameters.png | Bin 295925 -> 0 bytes .../server-parameters.png | Bin 295136 -> 0 bytes .../1-select-server-logs-configure.png | Bin 58353 -> 0 bytes .../3-save-discard.png | Bin 55225 -> 0 bytes .../4-server-logs-list.png | Bin 71954 -> 0 bytes .../5-download.png | Bin 71866 -> 0 bytes .../add-diagnostic-setting.png | Bin 75355 -> 0 bytes .../configure-diagnostic-setting.png | Bin 53591 -> 0 bytes .../save-diagnostic-setting.png | Bin 53419 -> 0 bytes .../media/howto-configure-ssl/enable-ssl.png | Bin 67039 -> 0 bytes .../mysql-workbench-ssl.png | Bin 22638 -> 0 bytes .../connection-strings-on-portal.png | Bin 91047 -> 0 bytes .../change-pricing-tier.png | Bin 131803 -> 0 bytes .../confirm-delete.png | Bin 23656 -> 0 bytes .../overview-delete.png | Bin 58869 -> 0 bytes .../overview-reset-password.png | Bin 58905 -> 0 bytes .../reset-password.png | Bin 16148 -> 0 bytes .../scaling-compute.png | Bin 133153 -> 0 bytes .../scaling-storage.png | Bin 133263 -> 0 bytes .../masterstatus.png | Bin 4629 -> 0 bytes .../replicationslave.PNG | Bin 92129 -> 0 bytes .../howto-data-in-replication/syncuser.PNG | Bin 73482 -> 0 bytes .../users_privileges.PNG | Bin 75401 -> 0 bytes .../deny-public-network-access-success.png | Bin 109781 -> 0 bytes .../deny-public-network-access.png | Bin 94558 -> 0 bytes .../1-connection-security.png | Bin 67022 -> 0 bytes .../2-add-my-ip.png | Bin 67944 -> 0 bytes .../4-specify-addresses.png | Bin 74760 -> 0 bytes .../5-save-firewall-rule.png | Bin 79029 -> 0 bytes .../1-connection-security.png | Bin 80166 -> 0 bytes .../2-configure-vnet.png | Bin 99641 -> 0 bytes ...ce-endpoints-enabled-vnet-rule-created.png | Bin 85631 -> 0 bytes .../1_server-overview-name-login.png | Bin 41530 -> 0 bytes .../2_setup-new-connection.png | Bin 39158 -> 0 bytes .../howto-read-replica-portal/add-replica.png | Bin 72001 -> 0 bytes .../delete-master-confirm.png | Bin 127760 -> 0 bytes .../delete-master-overview.png | Bin 116884 -> 0 bytes .../delete-replica-confirm.png | Bin 50987 -> 0 bytes .../delete-replica-select.png | Bin 78340 -> 0 bytes .../delete-replica.png | Bin 78501 -> 0 bytes .../list-replica.png | Bin 78268 -> 0 bytes ...replication-lag-time-range-thirty-mins.png | Bin 94888 -> 0 bytes .../monitor-replication-lag-time-range.png | Bin 104320 -> 0 bytes .../monitor-select-replication-lag.png | Bin 110587 -> 0 bytes .../replica-location.png | Bin 19734 -> 0 bytes .../replica-name.png | Bin 16117 -> 0 bytes .../stop-replication-confirm.png | Bin 75075 -> 0 bytes .../stop-replication-select.png | Bin 78340 -> 0 bytes .../stop-replication.png | Bin 78502 -> 0 bytes .../howto-restart-server-portal/2-server.png | Bin 49818 -> 0 bytes .../3-restart-confirm.png | Bin 41044 -> 0 bytes .../4-restarting-status.png | Bin 54453 -> 0 bytes .../5-restart-success.png | Bin 59820 -> 0 bytes .../activity-log.png | Bin 88572 -> 0 bytes .../create-server-from-rest-api.png | Bin 143949 -> 0 bytes .../howto-restore-server-portal/2-server.png | Bin 38203 -> 0 bytes .../2_navigate-to-mariadb.png | Bin 142497 -> 0 bytes .../3-geo-restore.png | Bin 53658 -> 0 bytes .../3-increase-backup-days.png | Bin 92442 -> 0 bytes .../howto-restore-server-portal/3-restore.png | Bin 24342 -> 0 bytes .../4-geo-restore-backup.png | Bin 53645 -> 0 bytes .../5-select-backup.png | Bin 59966 -> 0 bytes .../6-accept-backup.png | Bin 60190 -> 0 bytes .../howto-restore-server-portal/7-create.png | Bin 54739 -> 0 bytes .../pricing-tier.png | Bin 62982 -> 0 bytes .../3-toggle_parameter.png | Bin 119033 -> 0 bytes .../4-save_parameters.png | Bin 117939 -> 0 bytes .../5-reset_parameters.png | Bin 118798 -> 0 bytes .../azure-portal-server-parameters.png | Bin 118813 -> 0 bytes .../howto-server-parameters/timezone.png | Bin 125010 -> 0 bytes .../tls-configurations-success.png | Bin 119547 -> 0 bytes .../tls-configurations.png | Bin 107435 -> 0 bytes .../deploy-azure-database-mariadb-vnet.png | Bin 93700 -> 0 bytes .../setup-new-connection.png | Bin 39158 -> 0 bytes .../2_navigate-to-mariadb.png | Bin 142497 -> 0 bytes .../3-pricing-tier.png | Bin 49442 -> 0 bytes .../4-create-form.png | Bin 63174 -> 0 bytes .../5-firewall-2.png | Bin 53192 -> 0 bytes .../7-cloud-console.png | Bin 5761 -> 0 bytes .../8-bash.png | Bin 14253 -> 0 bytes .../delete-server.png | Bin 41316 -> 0 bytes .../setup-new-connection.png | Bin 39158 -> 0 bytes .../setup-new-connection.png | Bin 39158 -> 0 bytes .../1-Connection-security.png | Bin 81728 -> 0 bytes .../1-Navigate-to-mariadb.png | Bin 142497 -> 0 bytes .../1-restore-a-db.png | Bin 38196 -> 0 bytes .../2-create-form.png | Bin 63174 -> 0 bytes .../2-restore-form.png | Bin 24342 -> 0 bytes .../2-server-properties.png | Bin 41539 -> 0 bytes .../3-pricing-tier.png | Bin 49442 -> 0 bytes articles/mariadb/overview.md | 70 --- articles/mariadb/policy-reference.md | 32 -- ...te-mariadb-server-database-arm-template.md | 211 --------- ...rt-create-mariadb-server-database-bicep.md | 106 ----- ...mariadb-server-database-using-azure-cli.md | 240 ---------- ...iadb-server-database-using-azure-portal.md | 232 --------- ...-server-database-using-azure-powershell.md | 252 ---------- .../mariadb/reference-stored-procedures.md | 46 -- articles/mariadb/sample-scripts-azure-cli.md | 40 -- .../sample-change-server-configuration.md | 56 --- .../sample-create-server-and-firewall-rule.md | 53 --- .../sample-create-server-with-vnet-rule.md | 57 --- .../scripts/sample-point-in-time-restore.md | 53 --- .../mariadb/scripts/sample-scale-server.md | 55 --- .../mariadb/scripts/sample-server-logs.md | 56 --- articles/mariadb/security-controls-policy.md | 29 -- .../mariadb/select-right-deployment-type.md | 102 ---- .../mariadb/tutorial-design-database-cli.md | 212 --------- .../tutorial-design-database-using-portal.md | 195 -------- ...torial-design-database-using-powershell.md | 220 --------- 215 files changed, 451 insertions(+), 9818 deletions(-) delete mode 100644 articles/mariadb/concepts-audit-logs.md delete mode 100644 articles/mariadb/concepts-azure-advisor-recommendations.md delete mode 100644 articles/mariadb/concepts-backup.md delete mode 100644 articles/mariadb/concepts-business-continuity.md delete mode 100644 articles/mariadb/concepts-certificate-rotation.md delete mode 100644 articles/mariadb/concepts-compatibility.md delete mode 100644 articles/mariadb/concepts-connectivity-architecture.md delete mode 100644 articles/mariadb/concepts-connectivity.md delete mode 100644 articles/mariadb/concepts-data-access-security-private-link.md delete mode 100644 articles/mariadb/concepts-data-access-security-vnet.md delete mode 100644 articles/mariadb/concepts-data-in-replication.md delete mode 100644 articles/mariadb/concepts-firewall-rules.md delete mode 100644 articles/mariadb/concepts-high-availability.md delete mode 100644 articles/mariadb/concepts-limits.md delete mode 100644 articles/mariadb/concepts-monitoring.md delete mode 100644 articles/mariadb/concepts-planned-maintenance-notification.md delete mode 100644 articles/mariadb/concepts-pricing-tiers.md delete mode 100644 articles/mariadb/concepts-query-performance-insight.md delete mode 100644 articles/mariadb/concepts-query-store.md delete mode 100644 articles/mariadb/concepts-read-replicas.md delete mode 100644 articles/mariadb/concepts-security.md delete mode 100644 articles/mariadb/concepts-server-logs.md delete mode 100644 articles/mariadb/concepts-server-parameters.md delete mode 100644 articles/mariadb/concepts-servers.md delete mode 100644 articles/mariadb/concepts-ssl-connection-security.md delete mode 100644 articles/mariadb/concepts-supported-versions.md delete mode 100644 articles/mariadb/connect-workbench.md delete mode 100644 articles/mariadb/howto-alert-metric.md delete mode 100644 articles/mariadb/howto-auto-grow-storage-cli.md delete mode 100644 articles/mariadb/howto-auto-grow-storage-portal.md delete mode 100644 articles/mariadb/howto-auto-grow-storage-powershell.md delete mode 100644 articles/mariadb/howto-configure-audit-logs-cli.md delete mode 100644 articles/mariadb/howto-configure-audit-logs-portal.md delete mode 100644 articles/mariadb/howto-configure-privatelink-cli.md delete mode 100644 articles/mariadb/howto-configure-privatelink-portal.md delete mode 100644 articles/mariadb/howto-configure-server-logs-cli.md delete mode 100644 articles/mariadb/howto-configure-server-logs-portal.md delete mode 100644 articles/mariadb/howto-configure-server-parameters-cli.md delete mode 100644 articles/mariadb/howto-configure-server-parameters-using-powershell.md delete mode 100644 articles/mariadb/howto-configure-ssl.md delete mode 100644 articles/mariadb/howto-connection-string-powershell.md delete mode 100644 articles/mariadb/howto-connection-string.md delete mode 100644 articles/mariadb/howto-create-manage-server-portal.md delete mode 100644 articles/mariadb/howto-create-users.md delete mode 100644 articles/mariadb/howto-data-in-replication.md delete mode 100644 articles/mariadb/howto-deny-public-network-access.md delete mode 100644 articles/mariadb/howto-manage-firewall-cli.md delete mode 100644 articles/mariadb/howto-manage-firewall-portal.md delete mode 100644 articles/mariadb/howto-manage-vnet-cli.md delete mode 100644 articles/mariadb/howto-manage-vnet-portal.md delete mode 100644 articles/mariadb/howto-migrate-dump-restore.md delete mode 100644 articles/mariadb/howto-move-regions-portal.md delete mode 100644 articles/mariadb/howto-read-replicas-cli.md delete mode 100644 articles/mariadb/howto-read-replicas-portal.md delete mode 100644 articles/mariadb/howto-read-replicas-powershell.md delete mode 100644 articles/mariadb/howto-redirection.md delete mode 100644 articles/mariadb/howto-restart-server-cli.md delete mode 100644 articles/mariadb/howto-restart-server-portal.md delete mode 100644 articles/mariadb/howto-restart-server-powershell.md delete mode 100644 articles/mariadb/howto-restore-dropped-server.md delete mode 100644 articles/mariadb/howto-restore-server-cli.md delete mode 100644 articles/mariadb/howto-restore-server-portal.md delete mode 100644 articles/mariadb/howto-restore-server-powershell.md delete mode 100644 articles/mariadb/howto-server-parameters.md delete mode 100644 articles/mariadb/howto-tls-configurations.md delete mode 100644 articles/mariadb/howto-troubleshoot-common-connection-issues.md delete mode 100644 articles/mariadb/howto-troubleshoot-query-performance.md delete mode 100644 articles/mariadb/includes/azure-database-for-mariadb-deprecation.md delete mode 100644 articles/mariadb/index.yml delete mode 100644 articles/mariadb/media/concepts-azure-advisor-recommendations/advisor-example.png delete mode 100644 articles/mariadb/media/concepts-connectivity-architecture/connectivity-architecture-overview-proxy.png delete mode 100644 articles/mariadb/media/concepts-data-access-and-security-private-link/privatelink-overview.png delete mode 100644 articles/mariadb/media/concepts-data-access-and-security-private-link/select-private-link-message.png delete mode 100644 articles/mariadb/media/concepts-data-access-and-security-private-link/select-private-link-portal.png delete mode 100644 articles/mariadb/media/concepts-data-access-and-security-private-link/select-private-link.png delete mode 100644 articles/mariadb/media/concepts-data-access-and-security-private-link/show-mariadb-private-link.png delete mode 100644 articles/mariadb/media/concepts-data-access-and-security-private-link/show-private-link-approved-connection.png delete mode 100644 articles/mariadb/media/concepts-data-access-and-security-private-link/show-private-link-overview.PNG delete mode 100644 articles/mariadb/media/concepts-data-access-security-vnet/vnet-concept.png delete mode 100644 articles/mariadb/media/concepts-firewall-rules/1-firewall-concept.png delete mode 100644 articles/mariadb/media/concepts-firewall-rules/allow-azure-services.png delete mode 100644 articles/mariadb/media/concepts-high-availability/availability-mariadb-server.png delete mode 100644 articles/mariadb/media/concepts-high-availability/elastic-scaling-mariadb-server.png delete mode 100644 articles/mariadb/media/concepts-query-performance-insight/query-performance-insight-landing-page.png delete mode 100644 articles/mariadb/media/concepts-query-performance-insight/query-performance-insight-wait-statistics.png delete mode 100644 articles/mariadb/media/concepts-read-replica/read-replica-regions.png delete mode 100644 articles/mariadb/media/connect-workbench/1_server-overview-name-login.png delete mode 100644 articles/mariadb/media/connect-workbench/2-setup-new-connection.png delete mode 100644 articles/mariadb/media/connect-workbench/3-workbench-sql-tab.png delete mode 100644 articles/mariadb/media/howto-alert-metric/10-action-group-type.png delete mode 100644 articles/mariadb/media/howto-alert-metric/11-name-description-severity.png delete mode 100644 articles/mariadb/media/howto-alert-metric/2-alert-rules.png delete mode 100644 articles/mariadb/media/howto-alert-metric/4-add-rule-form.png delete mode 100644 articles/mariadb/media/howto-alert-metric/6-configure-signal-logic.png delete mode 100644 articles/mariadb/media/howto-alert-metric/7-set-threshold-time.png delete mode 100644 articles/mariadb/media/howto-auto-grow-storage-portal/3-auto-grow.png delete mode 100644 articles/mariadb/media/howto-auto-grow-storage-portal/5-auto-grow-successful.png delete mode 100644 articles/mariadb/media/howto-configure-audit-logs-portal/add-diagnostic-setting.png delete mode 100644 articles/mariadb/media/howto-configure-audit-logs-portal/audit-log-enabled.png delete mode 100644 articles/mariadb/media/howto-configure-audit-logs-portal/audit-log-events.png delete mode 100644 articles/mariadb/media/howto-configure-audit-logs-portal/audit-log-exclude-users.png delete mode 100644 articles/mariadb/media/howto-configure-audit-logs-portal/configure-diagnostic-setting.png delete mode 100644 articles/mariadb/media/howto-configure-audit-logs-portal/save-diagnostic-setting.png delete mode 100644 articles/mariadb/media/howto-configure-audit-logs-portal/save-parameters.png delete mode 100644 articles/mariadb/media/howto-configure-audit-logs-portal/server-parameters.png delete mode 100644 articles/mariadb/media/howto-configure-server-logs-portal/1-select-server-logs-configure.png delete mode 100644 articles/mariadb/media/howto-configure-server-logs-portal/3-save-discard.png delete mode 100644 articles/mariadb/media/howto-configure-server-logs-portal/4-server-logs-list.png delete mode 100644 articles/mariadb/media/howto-configure-server-logs-portal/5-download.png delete mode 100644 articles/mariadb/media/howto-configure-server-logs-portal/add-diagnostic-setting.png delete mode 100644 articles/mariadb/media/howto-configure-server-logs-portal/configure-diagnostic-setting.png delete mode 100644 articles/mariadb/media/howto-configure-server-logs-portal/save-diagnostic-setting.png delete mode 100644 articles/mariadb/media/howto-configure-ssl/enable-ssl.png delete mode 100644 articles/mariadb/media/howto-configure-ssl/mysql-workbench-ssl.png delete mode 100644 articles/mariadb/media/howto-connection-strings/connection-strings-on-portal.png delete mode 100644 articles/mariadb/media/howto-create-manage-server-portal/change-pricing-tier.png delete mode 100644 articles/mariadb/media/howto-create-manage-server-portal/confirm-delete.png delete mode 100644 articles/mariadb/media/howto-create-manage-server-portal/overview-delete.png delete mode 100644 articles/mariadb/media/howto-create-manage-server-portal/overview-reset-password.png delete mode 100644 articles/mariadb/media/howto-create-manage-server-portal/reset-password.png delete mode 100644 articles/mariadb/media/howto-create-manage-server-portal/scaling-compute.png delete mode 100644 articles/mariadb/media/howto-create-manage-server-portal/scaling-storage.png delete mode 100644 articles/mariadb/media/howto-data-in-replication/masterstatus.png delete mode 100644 articles/mariadb/media/howto-data-in-replication/replicationslave.PNG delete mode 100644 articles/mariadb/media/howto-data-in-replication/syncuser.PNG delete mode 100644 articles/mariadb/media/howto-data-in-replication/users_privileges.PNG delete mode 100644 articles/mariadb/media/howto-deny-public-network-access/deny-public-network-access-success.png delete mode 100644 articles/mariadb/media/howto-deny-public-network-access/deny-public-network-access.png delete mode 100644 articles/mariadb/media/howto-manage-firewall-portal/1-connection-security.png delete mode 100644 articles/mariadb/media/howto-manage-firewall-portal/2-add-my-ip.png delete mode 100644 articles/mariadb/media/howto-manage-firewall-portal/4-specify-addresses.png delete mode 100644 articles/mariadb/media/howto-manage-firewall-portal/5-save-firewall-rule.png delete mode 100644 articles/mariadb/media/howto-manage-vnet-portal/1-connection-security.png delete mode 100644 articles/mariadb/media/howto-manage-vnet-portal/2-configure-vnet.png delete mode 100644 articles/mariadb/media/howto-manage-vnet-portal/3-vnet-service-endpoints-enabled-vnet-rule-created.png delete mode 100644 articles/mariadb/media/howto-migrate-dump-restore/1_server-overview-name-login.png delete mode 100644 articles/mariadb/media/howto-migrate-dump-restore/2_setup-new-connection.png delete mode 100644 articles/mariadb/media/howto-read-replica-portal/add-replica.png delete mode 100644 articles/mariadb/media/howto-read-replica-portal/delete-master-confirm.png delete mode 100644 articles/mariadb/media/howto-read-replica-portal/delete-master-overview.png delete mode 100644 articles/mariadb/media/howto-read-replica-portal/delete-replica-confirm.png delete mode 100644 articles/mariadb/media/howto-read-replica-portal/delete-replica-select.png delete mode 100644 articles/mariadb/media/howto-read-replica-portal/delete-replica.png delete mode 100644 articles/mariadb/media/howto-read-replica-portal/list-replica.png delete mode 100644 articles/mariadb/media/howto-read-replica-portal/monitor-replication-lag-time-range-thirty-mins.png delete mode 100644 articles/mariadb/media/howto-read-replica-portal/monitor-replication-lag-time-range.png delete mode 100644 articles/mariadb/media/howto-read-replica-portal/monitor-select-replication-lag.png delete mode 100644 articles/mariadb/media/howto-read-replica-portal/replica-location.png delete mode 100644 articles/mariadb/media/howto-read-replica-portal/replica-name.png delete mode 100644 articles/mariadb/media/howto-read-replica-portal/stop-replication-confirm.png delete mode 100644 articles/mariadb/media/howto-read-replica-portal/stop-replication-select.png delete mode 100644 articles/mariadb/media/howto-read-replica-portal/stop-replication.png delete mode 100644 articles/mariadb/media/howto-restart-server-portal/2-server.png delete mode 100644 articles/mariadb/media/howto-restart-server-portal/3-restart-confirm.png delete mode 100644 articles/mariadb/media/howto-restart-server-portal/4-restarting-status.png delete mode 100644 articles/mariadb/media/howto-restart-server-portal/5-restart-success.png delete mode 100644 articles/mariadb/media/howto-restore-dropped-server/activity-log.png delete mode 100644 articles/mariadb/media/howto-restore-dropped-server/create-server-from-rest-api.png delete mode 100644 articles/mariadb/media/howto-restore-server-portal/2-server.png delete mode 100644 articles/mariadb/media/howto-restore-server-portal/2_navigate-to-mariadb.png delete mode 100644 articles/mariadb/media/howto-restore-server-portal/3-geo-restore.png delete mode 100644 articles/mariadb/media/howto-restore-server-portal/3-increase-backup-days.png delete mode 100644 articles/mariadb/media/howto-restore-server-portal/3-restore.png delete mode 100644 articles/mariadb/media/howto-restore-server-portal/4-geo-restore-backup.png delete mode 100644 articles/mariadb/media/howto-restore-server-portal/5-select-backup.png delete mode 100644 articles/mariadb/media/howto-restore-server-portal/6-accept-backup.png delete mode 100644 articles/mariadb/media/howto-restore-server-portal/7-create.png delete mode 100644 articles/mariadb/media/howto-restore-server-portal/pricing-tier.png delete mode 100644 articles/mariadb/media/howto-server-parameters/3-toggle_parameter.png delete mode 100644 articles/mariadb/media/howto-server-parameters/4-save_parameters.png delete mode 100644 articles/mariadb/media/howto-server-parameters/5-reset_parameters.png delete mode 100644 articles/mariadb/media/howto-server-parameters/azure-portal-server-parameters.png delete mode 100644 articles/mariadb/media/howto-server-parameters/timezone.png delete mode 100644 articles/mariadb/media/howto-tls-configurations/tls-configurations-success.png delete mode 100644 articles/mariadb/media/howto-tls-configurations/tls-configurations.png delete mode 100644 articles/mariadb/media/quickstart-create-mariadb-server-database-arm-template/deploy-azure-database-mariadb-vnet.png delete mode 100644 articles/mariadb/media/quickstart-create-mariadb-server-database-using-azure-cli/setup-new-connection.png delete mode 100644 articles/mariadb/media/quickstart-create-mariadb-server-database-using-azure-portal/2_navigate-to-mariadb.png delete mode 100644 articles/mariadb/media/quickstart-create-mariadb-server-database-using-azure-portal/3-pricing-tier.png delete mode 100644 articles/mariadb/media/quickstart-create-mariadb-server-database-using-azure-portal/4-create-form.png delete mode 100644 articles/mariadb/media/quickstart-create-mariadb-server-database-using-azure-portal/5-firewall-2.png delete mode 100644 articles/mariadb/media/quickstart-create-mariadb-server-database-using-azure-portal/7-cloud-console.png delete mode 100644 articles/mariadb/media/quickstart-create-mariadb-server-database-using-azure-portal/8-bash.png delete mode 100644 articles/mariadb/media/quickstart-create-mariadb-server-database-using-azure-portal/delete-server.png delete mode 100644 articles/mariadb/media/quickstart-create-mariadb-server-database-using-azure-portal/setup-new-connection.png delete mode 100644 articles/mariadb/media/quickstart-create-mariadb-server-database-using-azure-powershell/setup-new-connection.png delete mode 100644 articles/mariadb/media/tutorial-design-database-using-portal/1-Connection-security.png delete mode 100644 articles/mariadb/media/tutorial-design-database-using-portal/1-Navigate-to-mariadb.png delete mode 100644 articles/mariadb/media/tutorial-design-database-using-portal/1-restore-a-db.png delete mode 100644 articles/mariadb/media/tutorial-design-database-using-portal/2-create-form.png delete mode 100644 articles/mariadb/media/tutorial-design-database-using-portal/2-restore-form.png delete mode 100644 articles/mariadb/media/tutorial-design-database-using-portal/2-server-properties.png delete mode 100644 articles/mariadb/media/tutorial-design-database-using-portal/3-pricing-tier.png delete mode 100644 articles/mariadb/overview.md delete mode 100644 articles/mariadb/policy-reference.md delete mode 100644 articles/mariadb/quickstart-create-mariadb-server-database-arm-template.md delete mode 100644 articles/mariadb/quickstart-create-mariadb-server-database-bicep.md delete mode 100644 articles/mariadb/quickstart-create-mariadb-server-database-using-azure-cli.md delete mode 100644 articles/mariadb/quickstart-create-mariadb-server-database-using-azure-portal.md delete mode 100644 articles/mariadb/quickstart-create-mariadb-server-database-using-azure-powershell.md delete mode 100644 articles/mariadb/reference-stored-procedures.md delete mode 100644 articles/mariadb/sample-scripts-azure-cli.md delete mode 100644 articles/mariadb/scripts/sample-change-server-configuration.md delete mode 100644 articles/mariadb/scripts/sample-create-server-and-firewall-rule.md delete mode 100644 articles/mariadb/scripts/sample-create-server-with-vnet-rule.md delete mode 100644 articles/mariadb/scripts/sample-point-in-time-restore.md delete mode 100644 articles/mariadb/scripts/sample-scale-server.md delete mode 100644 articles/mariadb/scripts/sample-server-logs.md delete mode 100644 articles/mariadb/security-controls-policy.md delete mode 100644 articles/mariadb/select-right-deployment-type.md delete mode 100644 articles/mariadb/tutorial-design-database-cli.md delete mode 100644 articles/mariadb/tutorial-design-database-using-portal.md delete mode 100644 articles/mariadb/tutorial-design-database-using-powershell.md diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json index cf7285d3c5..77f03a2533 100644 --- a/.openpublishing.redirection.json +++ b/.openpublishing.redirection.json @@ -1,5 +1,445 @@ { "redirections": [ + { + "source_path": "articles/mariadb/scripts/sample-change-server-configuration.md", + "redirect_url": "/previous-versions/azure/mariadb/scripts/sample-change-server-configuration", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/scripts/sample-create-server-and-firewall-rule.md", + "redirect_url": "/previous-versions/azure/mariadb/scripts/sample-create-server-and-firewall-rule", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/scripts/sample-create-server-with-vnet-rule.md", + "redirect_url": "/previous-versions/azure/mariadb/scripts/sample-create-server-with-vnet-rule", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/scripts/sample-point-in-time-restore.md", + "redirect_url": "/previous-versions/azure/mariadb/scripts/sample-point-in-time-restore", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/scripts/sample-scale-server.md", + "redirect_url": "/previous-versions/azure/mariadb/scripts/sample-scale-server", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/scripts/sample-server-logs.md", + "redirect_url": "/previous-versions/azure/mariadb/scripts/sample-server-logs", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-audit-logs.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-audit-logs", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-azure-advisor-recommendations.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-azure-advisor-recommendations", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-backup.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-backup", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-business-continuity.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-business-continuity", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-certificate-rotation.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-certificate-rotation", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-compatibility.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-compatibility", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-connectivity-architecture.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-connectivity-architecture", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-connectivity.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-connectivity", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-data-access-security-private-link.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-data-access-security-private-link", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-data-access-security-vnet.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-data-access-security-vnet", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-data-in-replication.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-data-in-replication", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-firewall-rules.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-firewall-rules", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-high-availability.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-high-availability", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-limits.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-limits", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-monitoring.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-monitoring", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-planned-maintenance-notification.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-planned-maintenance-notification", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-pricing-tiers.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-pricing-tiers", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-query-performance-insight.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-query-performance-insight", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-query-store.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-query-store", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-read-replicas.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-read-replicas", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-security.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-security", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-server-logs.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-server-logs", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-server-parameters.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-server-parameters", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-servers.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-servers", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-ssl-connection-security.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-ssl-connection-security", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/concepts-supported-versions.md", + "redirect_url": "/previous-versions/azure/mariadb/concepts-supported-versions", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/connect-workbench.md", + "redirect_url": "/previous-versions/azure/mariadb/connect-workbench", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-alert-metric.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-alert-metric", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-auto-grow-storage-cli.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-auto-grow-storage-cli", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-auto-grow-storage-portal.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-auto-grow-storage-portal", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-auto-grow-storage-powershell.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-auto-grow-storage-powershell", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-configure-audit-logs-cli.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-configure-audit-logs-cli", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-configure-audit-logs-portal.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-configure-audit-logs-portal", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-configure-privatelink-cli.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-configure-privatelink-cli", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-configure-privatelink-portal.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-configure-privatelink-portal", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-configure-server-logs-cli.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-configure-server-logs-cli", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-configure-server-logs-portal.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-configure-server-logs-portal", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-configure-server-parameters-cli.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-configure-server-parameters-cli", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-configure-server-parameters-using-powershell.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-configure-server-parameters-using-powershell", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-configure-ssl.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-configure-ssl", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-connection-string-powershell.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-connection-string-powershell", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-connection-string.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-connection-string", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-create-manage-server-portal.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-create-manage-server-portal", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-create-users.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-create-users", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-data-in-replication.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-data-in-replication", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-deny-public-network-access.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-deny-public-network-access", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-manage-firewall-cli.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-manage-firewall-cli", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-manage-firewall-portal.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-manage-firewall-portal", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-manage-vnet-cli.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-manage-vnet-cli", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-manage-vnet-portal.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-manage-vnet-portal", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-migrate-dump-restore.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-migrate-dump-restore", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-move-regions-portal.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-move-regions-portal", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-read-replicas-cli.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-read-replicas-cli", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-read-replicas-portal.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-read-replicas-portal", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-read-replicas-powershell.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-read-replicas-powershell", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-redirection.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-redirection", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-restart-server-cli.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-restart-server-cli", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-restart-server-portal.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-restart-server-portal", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-restart-server-powershell.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-restart-server-powershell", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-restore-dropped-server.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-restore-dropped-server", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-restore-server-cli.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-restore-server-cli", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-restore-server-portal.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-restore-server-portal", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-restore-server-powershell.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-restore-server-powershell", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-server-parameters.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-server-parameters", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-tls-configurations.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-tls-configurations", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-troubleshoot-common-connection-issues.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-troubleshoot-common-connection-issues", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/howto-troubleshoot-query-performance.md", + "redirect_url": "/previous-versions/azure/mariadb/howto-troubleshoot-query-performance", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/index.yml", + "redirect_url": "/previous-versions/azure/mariadb/index", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/overview.md", + "redirect_url": "/previous-versions/azure/mariadb/overview", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/policy-reference.md", + "redirect_url": "/previous-versions/azure/mariadb/policy-reference", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/quickstart-create-mariadb-server-database-arm-template.md", + "redirect_url": "/previous-versions/azure/mariadb/quickstart-create-mariadb-server-database-arm-template", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/quickstart-create-mariadb-server-database-bicep.md", + "redirect_url": "/previous-versions/azure/mariadb/quickstart-create-mariadb-server-database-bicep", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/quickstart-create-mariadb-server-database-using-azure-cli.md", + "redirect_url": "/previous-versions/azure/mariadb/quickstart-create-mariadb-server-database-using-azure-cli", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/quickstart-create-mariadb-server-database-using-azure-portal.md", + "redirect_url": "/previous-versions/azure/mariadb/quickstart-create-mariadb-server-database-using-azure-portal", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/quickstart-create-mariadb-server-database-using-azure-powershell.md", + "redirect_url": "/previous-versions/azure/mariadb/quickstart-create-mariadb-server-database-using-azure-powershell", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/reference-stored-procedures.md", + "redirect_url": "/previous-versions/azure/mariadb/reference-stored-procedures", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/sample-scripts-azure-cli.md", + "redirect_url": "/previous-versions/azure/mariadb/sample-scripts-azure-cli", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/security-controls-policy.md", + "redirect_url": "/previous-versions/azure/mariadb/security-controls-policy", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/select-right-deployment-type.md", + "redirect_url": "/previous-versions/azure/mariadb/select-right-deployment-type", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/tutorial-design-database-cli.md", + "redirect_url": "/previous-versions/azure/mariadb/tutorial-design-database-cli", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/tutorial-design-database-using-portal.md", + "redirect_url": "/previous-versions/azure/mariadb/tutorial-design-database-using-portal", + "redirect_document_id": false + }, + { + "source_path": "articles/mariadb/tutorial-design-database-using-powershell.md", + "redirect_url": "/previous-versions/azure/mariadb/tutorial-design-database-using-powershell", + "redirect_document_id": false + }, { "source_path": "articles/postgresql/single-server/application-best-practices.md", "redirect_url": "/previous-versions/azure/postgresql/single-server/application-best-practices", diff --git a/articles/mariadb/TOC.yml b/articles/mariadb/TOC.yml index c713828e01..6e08924c7c 100644 --- a/articles/mariadb/TOC.yml +++ b/articles/mariadb/TOC.yml @@ -1,249 +1,53 @@ -- name: Azure Database for MariaDB documentation - href: index.yml - name: Overview - expanded: true items: - name: What's happening to Azure DB for MariaDB href: whats-happening-to-mariadb.md - - name: What is Azure DB for MariaDB? - href: overview.md - - name: Which MariaDB option should I choose? - href: select-right-deployment-type.md - - name: Supported versions - href: concepts-supported-versions.md - - name: Pricing tiers - href: concepts-pricing-tiers.md -- name: Quickstarts expanded: true +- name: Quickstarts items: - name: Create DB - items: - - name: Create DB - Portal - href: quickstart-create-mariadb-server-database-using-azure-portal.md - - name: Create DB - Azure CLI - href: quickstart-create-mariadb-server-database-using-azure-cli.md - - name: Create DB - Azure PowerShell - href: quickstart-create-mariadb-server-database-using-azure-powershell.md - - name: Create DB - Bicep - href: quickstart-create-mariadb-server-database-bicep.md - - name: Create DB - ARM template - href: quickstart-create-mariadb-server-database-arm-template.md - displayName: deploy azure resource manager template - name: Connect & query items: - - name: MySQL Workbench - href: connect-workbench.md - name: Connection strings - items: - - name: Connect applications - href: howto-connection-string.md - - name: Azure PowerShell - href: howto-connection-string-powershell.md - - name: Connect with redirection - href: howto-redirection.md - - name: Configure SSL - href: howto-configure-ssl.md - - name: Create users - href: howto-create-users.md - name: Configure server parameters - items: - - name: Azure portal - href: howto-server-parameters.md - - name: Azure CLI - href: howto-configure-server-parameters-cli.md - - name: Azure PowerShell - href: howto-configure-server-parameters-using-powershell.md - - name: Monitor server - href: howto-alert-metric.md + expanded: true - name: Application Development items: - name: Design a Database - items: - - name: Azure portal - href: tutorial-design-database-using-portal.md - - name: Azure CLI - href: tutorial-design-database-cli.md - - name: Azure PowerShell - href: tutorial-design-database-using-powershell.md - - name: Drivers and tools compatibility - href: concepts-compatibility.md - - name: Connection resiliency - href: concepts-connectivity.md - name: Server Management items: - - name: Server Concepts - href: concepts-servers.md - - name: Limitations - href: concepts-limits.md - - name: Server parameters - href: concepts-server-parameters.md - name: Manage a server - items: - - name: Azure portal - href: howto-create-manage-server-portal.md - name: Auto grow storage - items: - - name: Azure portal - href: howto-auto-grow-storage-portal.md - - name: Azure CLI - href: howto-auto-grow-storage-cli.md - - name: Azure PowerShell - href: howto-auto-grow-storage-powershell.md - name: Restart server - items: - - name: Azure portal - href: howto-restart-server-portal.md - - name: Azure CLI - href: howto-restart-server-cli.md - - name: Azure PowerShell - href: howto-restart-server-powershell.md - - name: Move Server between regions - href: howto-move-regions-portal.md - name: High availability - items: - - name: Business continuity intro - displayName: backup, restore, backups, restores, georestore, geo-restore, outage - href: concepts-business-continuity.md - - name: High Availability concepts - href: concepts-high-availability.md - name: Networking items: - - name: Connectivity architecture - href: concepts-connectivity-architecture.md - - name: Firewall rules Concepts - href: concepts-firewall-rules.md - - name: Configuring Firewall rules - items: - - name: Configuring Firewall rules using Azure portal - href: howto-manage-firewall-portal.md - - name: Configuring Firewall rules using Azure CLI - href: howto-manage-firewall-cli.md - - name: Virtual Network - href: concepts-data-access-security-vnet.md - - name: Configuring Virtual Network - items: - - name: Using Azure portal - href: howto-manage-vnet-portal.md - - name: Azure CLI - href: howto-manage-vnet-cli.md - - name: Private Link - href: concepts-data-access-security-private-link.md - - name: Private Link - items: - - name: Configuring Private Link using Azure portal - href: howto-configure-privatelink-portal.md - - name: Configuring Private Link using Azure CLI - href: howto-configure-privatelink-cli.md - - name: Deny Public Network Access - items: - - name: Azure portal - href: howto-deny-public-network-access.md + - name: Configuring Firewall rules + - name: Configuring Virtual Network + - name: Private Link + - name: Deny Public Network Access - name: Security items: - - name: Security overview - href: concepts-security.md - - name: Security baseline - href: /security/benchmark/azure/baselines/mariadb-security-baseline?toc=/azure/mariadb/TOC.json - - name: Security controls by Azure Policy - displayName: regulatory, compliance, standards, domains - href: ./security-controls-policy.md - - name: Configuring Network Security using SSL - href: concepts-ssl-connection-security.md - - name: Configure TLS - href: howto-tls-configurations.md - - name: Threat protection with Microsoft Defender for Cloud - href: /azure/security-center/defender-for-databases-usage?toc=/azure/mariadb/toc.json&bc=/azure/mariadb/breadcrumb/toc.json - - name: Auditing Concepts - href: concepts-audit-logs.md - - name: Configuring Audit logs - items: - - name: Azure portal - href: howto-configure-audit-logs-portal.md - - name: Azure CLI - href: howto-configure-audit-logs-cli.md + - name: Security baseline + href: /security/benchmark/azure/baselines/mariadb-security-baseline?toc=/azure/mariadb/TOC.json + - name: Threat protection with Microsoft Defender for Cloud + href: /azure/security-center/defender-for-databases-usage?toc=/azure/mariadb/toc.json&bc=/azure/mariadb/breadcrumb/toc.json + - name: Configuring Audit logs - name: Service maintenance - items: - - name: Planned maintenance - href: concepts-planned-maintenance-notification.md - - name: SSL root certificate expiring - href: concepts-certificate-rotation.md - name: Backup & restore items: - - name: Concepts - href: concepts-backup.md - name: Restore a server - items: - - name: Azure portal - href: howto-restore-server-portal.md - - name: Azure CLI - href: howto-restore-server-cli.md - - name: Azure PowerShell - href: howto-restore-server-powershell.md - - name: Restore a deleted server - href: howto-restore-dropped-server.md - displayName: restore server,dropped, deleted, recover - name: Monitor and tune items: - - name: Concepts - href: concepts-monitoring.md - - name: Slow query logs - href: concepts-server-logs.md - name: Access Slow query logs - items: - - name: Azure portal - href: howto-configure-server-logs-portal.md - - name: Azure CLI - href: howto-configure-server-logs-cli.md - - name: Query Store - href: concepts-query-store.md - - name: Query Performance Insight - href: concepts-query-performance-insight.md - - name: Azure Advisor recommendations - href: concepts-azure-advisor-recommendations.md - name: Replication items: - - name: Data-in replication - href: concepts-data-in-replication.md - - name: Configuring data-in replication - href: howto-data-in-replication.md - - name: Read replicas - href: concepts-read-replicas.md - name: Create Read replicas - items: - - name: Create read replicas Azure portal - href: howto-read-replicas-portal.md - - name: Create read replicas Azure CLI, REST API - href: howto-read-replicas-cli.md - - name: Create read replicas Azure PowerShell - href: howto-read-replicas-powershell.md - name: Migration - items: - - name: Migrate a server - href: howto-migrate-dump-restore.md - name: Troubleshooting - items: - - name: Troubleshoot connection errors - href: howto-troubleshoot-common-connection-issues.md - - name: Troubleshoot query performance - href: howto-troubleshoot-query-performance.md - name: Samples items: - name: Azure CLI Samples - items: - - name: Samples overview - href: sample-scripts-azure-cli.md - - name: Create a server with firewall rule - href: ./scripts/sample-create-server-and-firewall-rule.md - - name: Create server with vNet rule - href: ./scripts/sample-create-server-with-vnet-rule.md - - name: Scale a server - href: ./scripts/sample-scale-server.md - - name: Change server configurations - href: ./scripts/sample-change-server-configuration.md - - name: Restore a server - href: ./scripts/sample-point-in-time-restore.md - - name: Manipulate with server logs - href: ./scripts/sample-server-logs.md - name: Reference items: - name: Azure CLI @@ -252,11 +56,6 @@ href: /rest/api/mariadb - name: Resource Manager template href: /azure/templates/microsoft.dbformariadb/allversions - - name: Management stored procedures - href: reference-stored-procedures.md - - name: Azure Policy built-ins - displayName: samples, policies, definitions - href: ./policy-reference.md - name: Resources items: - name: Deployment templates diff --git a/articles/mariadb/concepts-audit-logs.md b/articles/mariadb/concepts-audit-logs.md deleted file mode 100644 index 0eb3139b02..0000000000 --- a/articles/mariadb/concepts-audit-logs.md +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: Audit logs - Azure Database for MariaDB -description: Describes the audit logs available in Azure Database for MariaDB, and the available parameters for enabling logging levels. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: conceptual -ms.date: 06/24/2022 ---- - -# Audit Logs in Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -In Azure Database for MariaDB, the audit log is available to users. The audit log can be used to track database-level activity and is commonly used for compliance. - -## Configure audit logging - ->[!IMPORTANT] -> It is recommended to only log the event types and users required for your auditing purposes to ensure your server's performance is not heavily impacted. - -By default the audit log is disabled. To enable it, set `audit_log_enabled` to ON. - -Other parameters you can adjust include: - -- `audit_log_events`: controls the events to be logged. See below table for specific audit events. -- `audit_log_include_users`: MariaDB users to be included for logging. The default value for this parameter is empty, which will include all the users for logging. This has higher priority over `audit_log_exclude_users`. Max length of the parameter is 512 characters. -- `audit_log_exclude_users`: MariaDB users to be excluded from logging. Allows for at most four users. Max length of the parameter is 256 characters. - -> [!Note] -> `audit_log_include_users` has higher priority over `audit_log_exclude_users`. For example, if `audit_log_include_users` = `demouser` and `audit_log_exclude_users` = `demouser`, the user will be included in the audit logs because `audit_log_include_users` has higher priority. - -| **Event** | **Description** | -|---|---| -| `CONNECTION` | - Connection initiation (successful or unsuccessful)
- User reauthentication with different user/password during session
- Connection termination | -| `DML_SELECT`| SELECT queries | -| `DML_NONSELECT` | INSERT/DELETE/UPDATE queries | -| `DML` | DML = DML_SELECT + DML_NONSELECT | -| `DDL` | Queries like "DROP DATABASE" | -| `DCL` | Queries like "GRANT PERMISSION" | -| `ADMIN` | Queries like "SHOW STATUS" | -| `GENERAL` | All in DML_SELECT, DML_NONSELECT, DML, DDL, DCL, and ADMIN | - -## Access audit logs - -Audit logs are integrated with Azure Monitor Diagnostic Logs. Once you've enabled audit logs on your MariaDB server, you can emit them to Azure Monitor logs, Event Hubs, or Azure Storage. To learn more about how to enable diagnostic logs in the Azure portal, see the [audit log portal article](howto-configure-audit-logs-portal.md#set-up-diagnostic-logs). - -## Diagnostic Logs Schemas - -The following sections describe what's output by MariaDB audit logs based on the event type. Depending on the output method, the fields included and the order in which they appear may vary. - -### Connection - -| **Property** | **Description** | -|---|---| -| `TenantId` | Your tenant ID | -| `SourceSystem` | `Azure` | -| `TimeGenerated [UTC]` | Time stamp when the log was recorded in UTC | -| `Type` | Type of the log. Always `AzureDiagnostics` | -| `SubscriptionId` | GUID for the subscription that the server belongs to | -| `ResourceGroup` | Name of the resource group the server belongs to | -| `ResourceProvider` | Name of the resource provider. Always `MICROSOFT.DBFORMARIADB` | -| `ResourceType` | `Servers` | -| `ResourceId` | Resource URI | -| `Resource` | Name of the server | -| `Category` | `MySqlAuditLogs` | -| `OperationName` | `LogEvent` | -| `event_class_s` | `connection_log` | -| `event_subclass_s` | `CONNECT`, `DISCONNECT` | -| `connection_id_d` | Unique connection ID generated by MariaDB | -| `host_s` | Blank | -| `ip_s` | IP address of client connecting to MariaDB | -| `user_s` | Name of user executing the query | -| `db_s` | Name of database connected to | -| `\_ResourceId` | Resource URI | - -### General - -Schema below applies to GENERAL, DML_SELECT, DML_NONSELECT, DML, DDL, DCL, and ADMIN event types. - -> [!NOTE] -> For `sql_text`, log will be truncated if it exceeds 2048 characters. - -| **Property** | **Description** | -|---|---| -| `TenantId` | Your tenant ID | -| `SourceSystem` | `Azure` | -| `TimeGenerated [UTC]` | Time stamp when the log was recorded in UTC | -| `Type` | Type of the log. Always `AzureDiagnostics` | -| `SubscriptionId` | GUID for the subscription that the server belongs to | -| `ResourceGroup` | Name of the resource group the server belongs to | -| `ResourceProvider` | Name of the resource provider. Always `MICROSOFT.DBFORMARIADB` | -| `ResourceType` | `Servers` | -| `ResourceId` | Resource URI | -| `Resource` | Name of the server | -| `Category` | `MySqlAuditLogs` | -| `OperationName` | `LogEvent` | -| `LogicalServerName_s` | Name of the server | -| `event_class_s` | `general_log` | -| `event_subclass_s` | `LOG`, `ERROR`, `RESULT` | -| `event_time` | Query start seconds in UNIX timestamp | -| `error_code_d` | Error code if query failed. `0` means no error | -| `thread_id_d` | ID of thread that executed the query | -| `host_s` | Blank | -| `ip_s` | IP address of client connecting to MariaDB | -| `user_s` | Name of user executing the query | -| `sql_text_s` | Full query text | -| `\_ResourceId` | Resource URI | - -## Analyze logs in Azure Monitor Logs - -Once your audit logs are piped to Azure Monitor Logs through Diagnostic Logs, you can perform further analysis of your audited events. Below are some sample queries to help you get started. Make sure to update the below with your server name. - -- List GENERAL events on a particular server - - ```kusto - AzureDiagnostics - | where LogicalServerName_s == '' - | where Category == 'MySqlAuditLogs' and event_class_s == "general_log" - | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s - | order by TimeGenerated asc nulls last - ``` - -- List CONNECTION events on a particular server - - ```kusto - AzureDiagnostics - | where LogicalServerName_s == '' - | where Category == 'MySqlAuditLogs' and event_class_s == "connection_log" - | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s - | order by TimeGenerated asc nulls last - ``` - -- Summarize audited events on a particular server - - ```kusto - AzureDiagnostics - | where LogicalServerName_s == '' - | where Category == 'MySqlAuditLogs' - | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s - | summarize count() by event_class_s, event_subclass_s, user_s, ip_s - ``` - -- Graph the audit event type distribution on a particular server - - ```kusto - AzureDiagnostics - | where LogicalServerName_s == '' - | where Category == 'MySqlAuditLogs' - | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s - | summarize count() by LogicalServerName_s, bin(TimeGenerated, 5m) - | render timechart - ``` - -- List audited events across all MariaDB servers with Diagnostic Logs enabled for audit logs - - ```kusto - AzureDiagnostics - | where Category == 'MySqlAuditLogs' - | project TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s , ip_s , sql_text_s - | order by TimeGenerated asc nulls last - ``` - -## Next steps - -- [How to configure audit logs in the Azure portal](howto-configure-audit-logs-portal.md) diff --git a/articles/mariadb/concepts-azure-advisor-recommendations.md b/articles/mariadb/concepts-azure-advisor-recommendations.md deleted file mode 100644 index 3c7e4a3f82..0000000000 --- a/articles/mariadb/concepts-azure-advisor-recommendations.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Azure Advisor for MariaDB -description: Learn about Azure Advisor recommendations for MariaDB. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: conceptual -ms.date: 06/24/2022 ---- - -# Azure Advisor for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -Learn about how Azure Advisor is applied to Azure Database for MariaDB and get answers to common questions. -## What is Azure Advisor for MariaDB? - -The Azure Advisor system uses telemetry to issue performance and reliability recommendations for your MariaDB database. - -Some recommendations are common to multiple product offerings, while other recommendations are based on product-specific optimizations. -## Where can I view my recommendations? - -Recommendations are available from the **Overview** navigation sidebar in the Azure portal. A preview appears as a banner notification, and details can be viewed in the **Notifications** section located just below the resource usage graphs. - -:::image type="content" source="./media/concepts-azure-advisor-recommendations/advisor-example.png" alt-text="Screenshot of the Azure portal showing an Azure Advisor recommendation."::: - -## Recommendation types - -Azure Database for MariaDB prioritizes the following types of recommendations: -* **Performance**: To improve the speed of your MariaDB server, which includes CPU usage, memory pressure, disk utilization, and product-specific server parameters. For more information, see [Advisor Performance recommendations](/azure/advisor/advisor-performance-recommendations). -* **Reliability**: To ensure and improve the continuity of your business-critical databases: storage limit and connection limit recommendations. For more information, see [Advisor Reliability recommendations](/azure/advisor/advisor-high-availability-recommendations). -* **Cost**: To optimize and reduce your overall Azure spending: server right-sizing recommendations. For more information, see [Advisor Cost recommendations](/azure/advisor/advisor-cost-recommendations). - -## Understanding your recommendations - -* **Daily schedule**: For Azure MariaDB databases, we check server telemetry and issue recommendations on a daily schedule. If you make a change to your server configuration, existing recommendations will remain visible until we re-examine telemetry on the following day. -* **Performance history**: Some of our recommendations are based on performance history. These recommendations will only appear after a server has been operating with the same configuration for seven days. This allows us to detect patterns of heavy usage (for example, high CPU activity or high connection volume) over a sustained time period. If you provision a new server or change to a new vCore configuration, these recommendations will be paused temporarily. This prevents legacy telemetry from triggering recommendations on a newly reconfigured server. However, this also means that performance history-based recommendations may not be identified immediately. - -## Next steps - -For more information, see [Azure Advisor Overview](/azure/advisor/advisor-overview). diff --git a/articles/mariadb/concepts-backup.md b/articles/mariadb/concepts-backup.md deleted file mode 100644 index d627a334c8..0000000000 --- a/articles/mariadb/concepts-backup.md +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: Backup and restore - Azure Database for MariaDB -description: Learn about automatic backups and restoring your Azure Database for MariaDB server. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: conceptual -ms.date: 06/24/2022 ---- - -# Backup and restore in Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -Azure Database for MariaDB automatically creates server backups and stores them in user configured locally redundant or geo-redundant storage. Backups can be used to restore your server to a point-in-time. Backup and restore are an essential part of any business continuity strategy because they protect your data from accidental corruption or deletion. - -## Backups - -Azure Database for MariaDB takes backups of the data files and the transaction log. These backups allow you to restore a server to any point-in-time within your configured backup retention period. The default backup retention period is seven days. You can [optionally configure it](howto-restore-server-portal.md#set-backup-configuration) up to 35 days. All backups are encrypted using AES 256-bit encryption. - -These backup files aren't user-exposed and can't be exported. These backups can only be used for restore operations in Azure Database for MariaDB. You can use [mysqldump](howto-migrate-dump-restore.md) to copy a database. - -The backup type and frequency is dependent on the backend storage for the servers. - -### Backup type and frequency - -#### Basic storage servers - -The Basic storage is the backend storage supporting [Basic tier servers](concepts-pricing-tiers.md). Backups on Basic storage servers are snapshot-based. A full database snapshot is performed daily. There are no differential backups performed for basic storage servers and all snapshot backups are full database backups only. - -Transaction log backups occur every five minutes. - -#### General purpose storage servers with up to 4-TB storage - -The General purpose storage is the backend storage supporting [General Purpose](concepts-pricing-tiers.md) and [Memory Optimized tier](concepts-pricing-tiers.md) server. For servers with general purpose storage up to 4 TB, full backups occur once every week. Differential backups occur twice a day. Transaction log backups occur every five minutes. The backups on general purpose storage up to 4-TB storage aren't snapshot-based and consumes IO bandwidth at the time of backup. For large databases (> 1 TB) on 4-TB storage, we recommend you consider - -- Provisioning more IOPs to account for backup IOs OR -- Alternatively, migrate to general purpose storage that supports up to 16-TB storage if the underlying storage infrastructure is available in your preferred [Azure regions](./concepts-pricing-tiers.md#storage). There's no additional cost for general purpose storage that supports up to 16-TB storage. For assistance with migration to 16-TB storage, open a support ticket from Azure portal. - -#### General purpose storage servers with up to 16-TB storage - -In a subset of [Azure regions](./concepts-pricing-tiers.md#storage), all newly provisioned servers can support general purpose storage up to 16-TB storage. In other words, storage up to 16-TB storage is the default general purpose storage for all the [regions](concepts-pricing-tiers.md#storage) where it's supported. Backups on these 16-TB storage servers are snapshot-based. The first full snapshot backup is scheduled immediately after a server is created. That first full snapshot backup is retained as the server's base backup. Subsequent snapshot backups are differential backups only. - -Differential snapshot backups occur at least once a day. Differential snapshot backups don't occur on a fixed schedule. Differential snapshot backups occur every 24 hours unless the transaction log (binlog in MariaDB) exceeds 50 GB since the last differential backup. In a day, a maximum of six differential snapshots are allowed. - -Transaction log backups occur every five minutes. - -### Backup retention - -Backups are retained based on the backup retention period setting on the server. You can select a retention period of 7 to 35 days. The default retention period is seven days. You can set the retention period during server creation or later by updating the backup configuration using [Azure portal](howto-restore-server-portal.md#set-backup-configuration) or [Azure CLI](howto-restore-server-cli.md#set-backup-configuration). - -The backup retention period governs how far back in time a point-in-time restore can be retrieved, since it's based on backups available. The backup retention period can also be treated as a recovery window from a restore perspective. All backups required to perform a point-in-time restore within the backup retention period are retained in backup storage. For example, if the backup retention period is set to seven days, the recovery window is considered last seven days. In this scenario, all the backups required to restore the server in last seven days are retained. With a backup retention window of seven days: - -- Servers with up to 4-TB storage will retain up to two full database backups, all the differential backups, and transaction log backups performed since the earliest full database backup. -- Servers with up to 16-TB storage will retain the full database snapshot, all the differential snapshots and transaction log backups in last eight days. - -#### Long-term retention of backups - -Long-term retention of backups beyond 35 days is currently not natively supported by the service yet. You have a option to use mysqldump to take backups and store them for long-term retention. Our support team has blogged a [step by step article](https://techcommunity.microsoft.com/t5/azure-database-for-mysql/automate-backups-of-your-azure-database-for-mysql-server-to/ba-p/1791157) to share how you can achieve it. - -### Backup redundancy options - -Azure Database for MariaDB provides the flexibility to choose between locally redundant or geo-redundant backup storage in the General Purpose and Memory Optimized tiers. When the backups are stored in geo-redundant backup storage, they aren't only stored within the region in which your server is hosted, but are also replicated to a [paired data center](/azure/availability-zones/cross-region-replication-azure). This provides better protection and ability to restore your server in a different region in the event of a disaster. The Basic tier only offers locally redundant backup storage. - -#### Moving from locally redundant to geo-redundant backup storage - -Configuring locally redundant or geo-redundant storage for backup is only allowed during server create. Once the server is provisioned, you can't change the backup storage redundancy option. In order to move your backup storage from locally redundant storage to geo-redundant storage, creating a new server and migrating the data using [dump and restore](howto-migrate-dump-restore.md) is the only supported option. - -### Backup storage cost - -Azure Database for MariaDB provides up to 100% of your provisioned server storage as backup storage at no additional cost. Any additional backup storage used is charged in GB per month. For example, if you've provisioned a server with 250 GB of storage, you have 250 GB of additional storage available for server backups at no additional charge. Storage consumed for backups more than 250 GB is charged as per the [pricing model](https://azure.microsoft.com/pricing/details/mariadb/). - -You can use the [Backup Storage used](concepts-monitoring.md) metric in Azure Monitor available via the Azure portal to monitor the backup storage consumed by a server. The Backup Storage used metric represents the sum of storage consumed by all the full database backups, differential backups, and log backups retained based on the backup retention period set for the server. The frequency of the backups is service managed and explained earlier. Heavy transactional activity on the server can cause backup storage usage to increase irrespective of the total database size. For geo-redundant storage, backup storage usage is twice that of the locally redundant storage. - -The primary means of controlling the backup storage cost is by setting the appropriate backup retention period and choosing the right backup redundancy options to meet your desired recovery goals. You can select a retention period from a range of 7 to 35 days. General Purpose and Memory Optimized servers can choose to have geo-redundant storage for backups. - -## Restore - -In Azure Database for MariaDB, performing a restore creates a new server from the original server's backups and restores all databases contained in the server. - -There are two types of restore available: - -- **Point-in-time restore** is available with either backup redundancy option and creates a new server in the same region as your original server utilizing the combination of full and transaction log backups. -- **Geo-restore** is available only if you configured your server for geo-redundant storage and it allows you to restore your server to a different region utilizing the most recent backup taken. - -The estimated time of recovery depends on several factors including the database sizes, the transaction log size, the network bandwidth, and the total number of databases recovering in the same region at the same time. The recovery time is less than 12 hours. - -> [!IMPORTANT] -> Deleted servers can be restored only within **five days** of deletion after which the backups are deleted. The database backup can be accessed and restored only from the Azure subscription hosting the server. To restore a dropped server, refer [documented steps](howto-restore-dropped-server.md). To protect server resources, post deployment, from accidental deletion or unexpected changes, administrators can leverage [management locks](/azure/azure-resource-manager/management/lock-resources). - -### Point-in-time restore - -Independent of your backup redundancy option, you can perform a restore to any point in time within your backup retention period. A new server is created in the same Azure region as the original server. It's created with the original server's configuration for the pricing tier, compute generation, number of vCores, storage size, backup retention period, and backup redundancy option. - -Point-in-time restore is useful in multiple scenarios. For example, when a user accidentally deletes data, drops an important table or database, or if an application accidentally overwrites good data with bad data due to an application defect. - -You may need to wait for the next transaction log backup to be taken before you can restore to a point in time within the last five minutes. - -### Geo-restore - -You can restore a server to another Azure region where the service is available if you've configured your server for geo-redundant backups. Servers that support up to 4 TB of storage can be restored to the geo-paired region, or to any region that supports up to 16 TB of storage. For servers that support up to 16 TB of storage, geo-backups can be restored in any region that support 16-TB servers as well. Review [Azure Database for MariaDB pricing tiers](concepts-pricing-tiers.md) for the list of supported regions. - -Geo-restore is the default recovery option when your server is unavailable because of an incident in the region where the server is hosted. If a large-scale incident in a region results in unavailability of your database application, you can restore a server from the geo-redundant backups to a server in any other region. Geo-restore utilizes the most recent backup of the server. There's a delay between when a backup is taken and when it's replicated to different region. This delay can be up to an hour, so, if a disaster occurs, there can be up to one hour data loss. - -> [!IMPORTANT] ->If a geo-restore is performed for a newly created server, the initial backup synchronization may take more than 24 hours depending on data size as the initial full snapshot backup copy time is much higher. Subsequent snapshot backups are incremental copy and hence the restores are faster after 24 hours of server creation. If you are evaluating geo-restores to define your RTO, we recommend you to wait and evaluate geo-restore **only after 24 hours** of server creation for better estimates. - -During geo-restore, the server configurations that can be changed include compute generation, vCore, backup retention period, and backup redundancy options. Changing pricing tier (Basic, General Purpose, or Memory Optimized) or storage size during geo-restore isn't supported. - -The estimated time of recovery depends on several factors including the database sizes, the transaction log size, the network bandwidth, and the total number of databases recovering in the same region at the same time. The recovery time is less than 12 hours. - -### Perform post-restore tasks - -After a restore from either recovery mechanism, you should perform the following tasks to get your users and applications back up and running: - -- If the new server is meant to replace the original server, redirect clients and client applications to the new server -- Ensure appropriate VNet rules are in place for users to connect. These rules aren't copied over from the original server. -- Ensure appropriate logins and database level permissions are in place -- Configure alerts, as appropriate - -## Next steps - -- To learn more about business continuity, see the [business continuity overview](concepts-business-continuity.md). -- To restore to a point-in-time using the Azure portal, see [restore server to a point-in-time using the Azure portal](howto-restore-server-portal.md). -- To restore to a point-in-time using Azure CLI, see [restore server to a point-in-time using CLI](howto-restore-server-cli.md). diff --git a/articles/mariadb/concepts-business-continuity.md b/articles/mariadb/concepts-business-continuity.md deleted file mode 100644 index a18ebf2c2a..0000000000 --- a/articles/mariadb/concepts-business-continuity.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Business continuity - Azure Database for MariaDB -description: Learn about business continuity (point-in-time restore, datacenter outage, geo-restore) when you're using the Azure Database for MariaDB service. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: conceptual -ms.date: 06/24/2022 ---- - -# Overview of business continuity with Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This article describes the capabilities that Azure Database for MariaDB provides for business continuity and disaster recovery. Learn about options for recovering from disruptive events that could cause data loss or cause your database and application to become unavailable. Learn what to do when a user error or application error affects data integrity, an Azure region has an outage, or your application needs maintenance. - -## Features for business continuity - -As you develop your business continuity plan, you need to understand your: - -- **Recovery time objective (RTO)**: The maximum acceptable time before the application fully recovers after a disruptive event. -- **Recovery point objective (RPO)**: The maximum amount of recent data updates (time interval) that the application can tolerate losing when it's recovering after a disruptive event. - -Azure Database for MariaDB provides business continuity and disaster recovery features that include geo-redundant backups with the ability to initiate geo-restore, and deploying read replicas in another region. Each has different characteristics for the recovery time and the potential data loss. - -With [geo-restore](concepts-backup.md), Azure Database for MariaDB creates a new server by using the backup data that's replicated from another region. The overall time to restore and recover depends on the size of the database and the amount of log data to recover. The overall time to establish the server varies from few minutes to few hours. - -With [read replicas](concepts-read-replicas.md), transaction logs from the primary database are asynchronously streamed to a replica. If there's a primary database outage due to a zone-level or a region-level fault, failing over to the replica provides a shorter RTO and reduced data loss. - -> [!NOTE] -> The lag between the primary database and the replica depends on the latency between the sites, the amount of data to be transmitted, and (most important) the write workload of the primary server. Heavy write workloads can generate a significant lag. -> -> Because of the asynchronous nature of the replication that's used for read replicas, don't consider read replicas to be a high-availability solution. The higher lags can mean higher RTO and RPO. Read replicas can act as a high-availability alternative only for workloads where the lag remains smaller through the peak and off-peak times. Otherwise, read replicas are intended for true read scale for read-heavy workloads and for disaster recovery scenarios. - -The following table compares RTO and RPO in a *typical workload* scenario: - -| Capability | Basic | General purpose | Memory optimized | -| :------------: | :-------: | :-----------------: | :------------------: | -| Point-in-time restore from backup | Any restore point within the retention period
RTO varies
RPO is less than 15 minutes| Any restore point within the retention period
RTO varies
RPO is less than 15 minutes | Any restore point within the retention period
RTO varies
RPO is less than 15 minutes | -| Geo-restore from geo-replicated backups | Not supported | RTO varies
RPO is greater than 24 hours | RTO varies
RPO is greater than 24 hours | -| Read replicas | RTO is minutes
RPO is less than 5 minutes | RTO is minutes
RPO is less than 5 minutes| RTO is minutes
RPO is less than 5 minutes| - -RTO and RPO *can be much higher* in some cases, depending on factors like latency between sites, the amount of data to be transmitted, and the primary database's write workload. - -## Recovery of a server after a user or application error - -You can use the service's backups to recover a server from various disruptive events. For example, a user might accidentally delete some data, inadvertently drop an important table, or even drop an entire database. An application might accidentally overwrite good data with bad data because of an application defect. - -You can perform a point-in-time-restore to create a copy of your server to a known good point in time. This point in time must be within the backup retention period that you configured for your server. After the data is restored to the new server, you can either replace the original server with the newly restored server or copy the needed data from the restored server to the original server. - -> [!IMPORTANT] -> You can restore deleted servers only within *five days* of deletion. After five days, the backups are deleted. You can access and restore the database backup only from the Azure subscription that hosts the server. To restore a dropped server, refer to the [documented steps](howto-restore-dropped-server.md). To help protect server resources from accidental deletion or unexpected changes after deployment, administrators can use [management locks](/azure/azure-resource-manager/management/lock-resources). - -## Recovery from an Azure regional datacenter outage - -Although it's rare, an Azure datacenter can have an outage. When an outage occurs, it causes a business disruption that might last only a few minutes but could last for hours. - -One option is to wait for your server to come back online when the datacenter outage is over. When datacenter has an outage, you don't know how long the outage might last. So this option works only for applications that can afford to have the server offline for some time (for example, a development environment). - -## Geo-restore - -The geo-restore feature restores the server by using geo-redundant backups. The backups are hosted in your server's [paired region](/azure/availability-zones/cross-region-replication-azure). These backups are accessible even when the region where your server is hosted is offline. You can restore from these backups to any other region and then bring your server back online. Learn more about geo-restore in the [article about backup and restore concepts](concepts-backup.md). - -> [!IMPORTANT] -> Geo-restore is possible only if you provisioned the server with geo-redundant backup storage. If you want to switch from locally redundant to geo-redundant backups for an existing server, you must generate a backup of your existing server by using [mysqldump](howto-migrate-dump-restore.md). Then, restore to a newly created server that's configured with geo-redundant backups. - -## Cross-region read replicas - -You can use cross-region read replicas to enhance your planning for business continuity and disaster recovery. Read replicas are updated asynchronously through MySQL's replication technology for binary logs. Learn more about read replicas, available regions, and how to fail over in the [article about read replica concepts](concepts-read-replicas.md). - -## FAQ - -### Where does Azure Database for MariaDB store customer data? - -By default, Azure Database for MariaDB doesn't move or store customer data out of the region where it's deployed. However, you can optionally choose to enable [geo-redundant backups](concepts-backup.md#backup-redundancy-options) or create [cross-region read replicas](concepts-read-replicas.md#cross-region-replication) for storing data in another region. - -## Next steps - -- Learn more about the [automated backups in Azure Database for MariaDB](concepts-backup.md). -- Learn how to restore by using [the Azure portal](howto-restore-server-portal.md) or [the Azure CLI](howto-restore-server-cli.md). -- Learn about [read replicas in Azure Database for MariaDB](concepts-read-replicas.md). diff --git a/articles/mariadb/concepts-certificate-rotation.md b/articles/mariadb/concepts-certificate-rotation.md deleted file mode 100644 index d165a6d83c..0000000000 --- a/articles/mariadb/concepts-certificate-rotation.md +++ /dev/null @@ -1,171 +0,0 @@ ---- -title: Certificate rotation for Azure Database for MariaDB -description: Learn about the upcoming changes of root certificate changes that affect Azure Database for MariaDB -ms.service: azure-database-mariadb -author: mksuni -ms.author: sumuth -ms.topic: conceptual -ms.date: 06/24/2022 ---- - -# Understanding the changes in the Root CA change for Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -Azure database for MariaDB as part of standard maintenance and security best practices complete the root certificate change starting March 2023. This article gives you more details about the changes, the resources affected, and the steps needed to ensure that your application maintains connectivity to your database server. - -> [!NOTE] -> This article contains references to the term *slave*, a term that Microsoft no longer uses. When the term is removed from the software, we'll remove it from this article. -> - -## Why root certificate update is required? - -Azure Database for MariaDB users can only use the predefined certificate to connect to their MariaDB server, which is located [here](https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem). However, [Certificate Authority (CA) Browser forum](https://cabforum.org/) recently published reports of multiple certificates issued by CA vendors to be noncompliant. - -As per the industry's compliance requirements, CA vendors began revoking CA certificates for noncompliant CAs, requiring servers to use certificates issued by compliant CAs, and signed by CA certificates from those compliant CAs. Since Azure Database for MariaDB used one of these noncompliant certificates, we needed to rotate the certificate to the compliant version to minimize the potential threat to your MySQL servers. - - -## Do I need to make any changes on my client to maintain connectivity? - -If you followed steps mentioned under [Create a combined CA certificate](#create-a-combined-ca-certificate) below, you can continue to connect as long as **BaltimoreCyberTrustRoot certificate is not removed** from the combined CA certificate. **To maintain connectivity, we recommend that you retain the BaltimoreCyberTrustRoot in your combined CA certificate until further notice.** - -### Create a combined CA certificate - -- Download **BaltimoreCyberTrustRoot** & **DigiCertGlobalRootG2** CA from links below: - - - [https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem](https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem) - - [https://cacerts.digicert.com/DigiCertGlobalRootG2.crt.pem](https://cacerts.digicert.com/DigiCertGlobalRootG2.crt.pem) - -- Generate a combined CA certificate store with both **BaltimoreCyberTrustRoot** and **DigiCertGlobalRootG2** certificates are included. - - - For Java (MariaDB Connector/J) users, execute: - - ```console - keytool -importcert -alias MariaDBServerCACert -file D:\BaltimoreCyberTrustRoot.crt.pem -keystore truststore -storepass password -noprompt - ``` - - ```console - keytool -importcert -alias MariaDBServerCACert2 -file D:\DigiCertGlobalRootG2.crt.pem -keystore truststore -storepass password -noprompt - ``` - - Then replace the original keystore file with the new generated one: - - - `System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file");` - - `System.setProperty("javax.net.ssl.trustStorePassword","password");` - - - For .NET (MariaDB Connector/NET, MariaDBConnector) users, make sure **BaltimoreCyberTrustRoot** and **DigiCertGlobalRootG2** both exist in Windows Certificate Store, Trusted Root Certification Authorities. If any certificates don't exist, import the missing certificate. - - - For .NET users on Linux using SSL_CERT_DIR, make sure **BaltimoreCyberTrustRoot** and **DigiCertGlobalRootG2** both exist in the directory indicated by SSL_CERT_DIR. If any certificates don't exist, create the missing certificate file. - - - For other (MariaDB Client/MariaDB Workbench/C/C++/Go/Python/Ruby/PHP/NodeJS/Perl/Swift) users, you can merge two CA certificate files like this format below - - ``` - -----BEGIN CERTIFICATE----- - (Root CA1: BaltimoreCyberTrustRoot.crt.pem) - -----END CERTIFICATE----- - -----BEGIN CERTIFICATE----- - (Root CA2: DigiCertGlobalRootG2.crt.pem) - -----END CERTIFICATE----- - ``` - -- Replace the original root CA pem file with the combined root CA file and restart your application/client. -- In future, after the new certificate deployed on the server side, you can change your CA pem file to DigiCertGlobalRootG2.crt.pem. - -#### If I'm not using SSL/TLS, do I still need to update the root CA? - -No actions are required if you aren't using SSL/TLS. - -## What if we removed the BaltimoreCyberTrustRoot certificate? - -You'll start to see connectivity errors while connecting to your Azure Database for MariaDB server. You'll need to [configure SSL](howto-configure-ssl.md) with [BaltimoreCyberTrustRoot](https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem) certificate again to maintain connectivity. - -## Frequently asked questions - -### 1. If I'm not using SSL/TLS, do I still need to update the root CA? - -No actions required if you aren't using SSL/TLS. - -### 2. If I'm using SSL/TLS, do I need to restart my database server to update the root CA? - -No, you don't need to restart the database server to start using the new certificate. Certificate update is a client-side change, and the incoming client connections need to use the new certificate to ensure that they can connect to the database server. - -### 3. How do I know if I'm using SSL/TLS with root certificate verification? - -You can identify whether your connections verify the root certificate by reviewing your connection string. - -- If your connection string includes `sslmode=verify-ca` or `sslmode=verify-identity`, you need to update the certificate. -- If your connection string includes `sslmode=disable`, `sslmode=allow`, `sslmode=prefer`, or `sslmode=require`, you don't need to update certificates. -- If your connection string doesn't specify sslmode, you don't need to update certificates. - -If you're using a client that abstracts the connection string away, review the client's documentation to understand whether it verifies certificates. - -### 4. What is the impact if using App Service with Azure Database for MariaDB? - -For Azure app services, connecting to Azure Database for MariaDB, there are two possible scenarios depending on how on you're using SSL with your application. - -- This new certificate has been added to App Service at platform level. If you're using the SSL certificates included on App Service platform in your application, then no action is needed. This is the most common scenario. -- If you're explicitly including the path to SSL cert file in your code, then you would need to download the new cert and update the code to use the new cert. A good example of this scenario is when you use custom containers in App Service as shared in the [App Service documentation](/azure/app-service/tutorial-multi-container-app#configure-database-variables-in-wordpress). This is an uncommon scenario but we have seen some users using this. - -### 5. What is the impact if using Azure Kubernetes Services (AKS) with Azure Database for MariaDB? - -If you're trying to connect to the Azure Database for MariaDB using Azure Kubernetes Services (AKS), it's similar to access from a dedicated customers host environment. Refer to the steps [here](/azure/aks/ingress-own-tls). - -### 6. What is the impact if using Azure Data Factory to connect to Azure Database for MariaDB? - -For connector using Azure Integration Runtime, the connector uses certificates in the Windows Certificate Store in the Azure-hosted environment. These certificates are already compatible to the newly applied certificates and so no action is needed. - -For connector using Self-hosted Integration Runtime where you explicitly include the path to SSL cert file in your connection string, you need to download the [new certificate](https://cacerts.digicert.com/DigiCertGlobalRootG2.crt.pem) and update the connection string to use it. - -### 7. Do I need to plan a database server maintenance downtime for this change? - -No. Since the change here's only on the client side to connect to the database server, there's no maintenance downtime needed for the database server for this change. - -### 8. How often does Microsoft update their certificates or what is the expiry policy? - -These certificates used by Azure Database for MariaDB are provided by trusted Certificate Authorities (CA). So the support of these certificates is tied to the support of these certificates by CA. The [BaltimoreCyberTrustRoot](https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem) certificate is scheduled to expire in 2025 so Microsoft needs to perform a certificate change before the expiry. - -### 9. If I'm using read replicas, do I need to perform this update only on source server or the read replicas? - -Since this update is a client-side change, if the client used to read data from the replica server, you need to apply the changes for those clients as well. - -### 10. If I'm using Data-in replication, do I need to perform any action? - -- If the data-replication is from a virtual machine (on-premises or Azure virtual machine) to Azure Database for MySQL, you need to check if SSL is being used to create the replica. Run **SHOW SLAVE STATUS** and check the following setting. - - ```azurecli-interactive - Master_SSL_Allowed : Yes - Master_SSL_CA_File : ~\azure_mysqlservice.pem - Master_SSL_CA_Path : - Master_SSL_Cert : ~\azure_mysqlclient_cert.pem - Master_SSL_Cipher : - Master_SSL_Key : ~\azure_mysqlclient_key.pem - ``` - -If you're using [Data-in replication](concepts-data-in-replication.md) to connect to Azure Database for MySQL, there are two things to consider: - -- If the data-replication is from a virtual machine (on-premises or Azure virtual machine) to Azure Database for MySQL, you need to check if SSL is being used to create the replica. Run **SHOW SLAVE STATUS** and check the following setting. - - ```azurecli-interactive - Master_SSL_Allowed : Yes - Master_SSL_CA_File : ~\azure_mysqlservice.pem - Master_SSL_CA_Path : - Master_SSL_Cert : ~\azure_mysqlclient_cert.pem - Master_SSL_Cipher : - Master_SSL_Key : ~\azure_mysqlclient_key.pem - ``` - - If you do see the certificate is provided for the CA_file, SSL_Cert and SSL_Key, you'll need to update the file by adding the [new certificate](https://cacerts.digicert.com/DigiCertGlobalRootG2.crt.pem) and create a combined cert file. - -- If the data-replication is between two Azure Database for MySQL, then you need to reset the replica by executing **CALL mysql.az_replication_change_master** and provide the new dual root certificate as last parameter [master_ssl_ca](howto-data-in-replication.md#link-the-source-and-replica-servers-to-start-data-in-replication). - -### 11. Do we have server-side query to verify if SSL is being used? - -To verify if you're using SSL connection to connect to the server refer [SSL verification](howto-configure-ssl.md#verify-the-ssl-connection). - -### 12. Is there an action needed if I already have the DigiCertGlobalRootG2 in my certificate file? - -No. There's no action needed if your certificate file already has the **DigiCertGlobalRootG2**. - -### 13. What if I have further questions? - -If you have questions, get answers from community experts in [Microsoft Q&A](mailto:AzureDatabaseformariadb@service.microsoft.com). If you have a support plan and you need technical help, [contact us](mailto:AzureDatabaseformariadb@service.microsoft.com). diff --git a/articles/mariadb/concepts-compatibility.md b/articles/mariadb/concepts-compatibility.md deleted file mode 100644 index ff1011979f..0000000000 --- a/articles/mariadb/concepts-compatibility.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Drivers and tools compatibility - Azure Database for MariaDB -description: This article describes the MariaDB drivers and management tools that are compatible with Azure Database for MariaDB. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: conceptual -ms.date: 06/24/2022 ---- -# MariaDB drivers and management tools compatible with Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This article describes the drivers and management tools that are compatible with Azure Database for MariaDB. - -## MariaDB Drivers - -Azure Database for MariaDB uses the community edition of MariaDB server. Therefore, it's compatible with a wide variety of programming languages and drivers. The MariaDB API and protocol are compatible with those used by MySQL. This means that connectors that work with MySQL should also work with MariaDB. - -The goal is to support the three most recent versions MariaDB drivers, and efforts with authors from the open source community to constantly improve the functionality and usability of MariaDB drivers continue. A list of drivers that have been tested and found to be compatible with Azure Database for MariaDB 10.2 is provided in the following table: - -| **Driver** | **Links** | **Compatible Versions** | **Incompatible Versions** | **Notes** | -| ---|---|---|---|--- | -| PHP | https://secure.php.net/downloads.php | 5.5, 5.6, 7.x | 5.3 | For PHP 7.0 connection with SSL MySQLi, add MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT in the connection string.
```mysqli_real_connect($conn, $host, $username, $password, $db_name, 3306, NULL, MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT);```
PDO set: ```PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT``` option to false. | -| .NET | [MySqlConnector on GitHub](https://github.com/mysql-net/MySqlConnector)
[Installation package from NuGet](https://www.nuget.org/packages/MySqlConnector/) | 0.27 and after | 0.26.5 and before | | -| MySQL Connector/NET | [MySQL Connector/NET](https://github.com/mysql/mysql-connector-net) | 8.0, 7.0, 6.10 | | An encoding bug may cause connections to fail on some non-UTF8 Windows systems. | -| Node.js | [MySQLjs on GitHub](https://github.com/mysqljs/mysql/)
Installation package from NPM:
Run `npm install mysql` from NPM | 2.15 | 2.14.1 and before | | -| Go | https://github.com/go-sql-driver/mysql/releases | 1.3, 1.4 | 1.2 and before | Use `allowNativePasswords=true` in the connection string for version 1.3. Version 1.4 contains a fix and `allowNativePasswords=true` is no longer required. | -| Python | https://pypi.python.org/pypi/mysql-connector-python | 1.2.3, 2.0, 2.1, 2.2 | 1.2.2 and before | | -| Java | https://downloads.mariadb.org/connector-java/ | 2.1, 2.0, 1.6 | 1.5.5 and before | | - -## Management Tools - -The compatibility advantage extends to database management tools as well. Your existing tools should continue to work with Azure Database for MariaDB, as long as the database manipulation operates within the confines of user permissions. Three common database management tools that have been tested and found to be compatible with Azure Database for MariaDB 10.2 are listed in the following table: - -| Action | **MySQL Workbench 6.x and up** | **Navicat 12** | **PHPMyAdmin 4.x and up** | -| ---|---|---|--- | -| Create, Update, Read, Write, Delete | X | X | X | -| SSL Connection | X | X | X | -| SQL Query Auto Completion | X | X | | -| Import and Export Data | X | X | X | -| Export to Multiple Formats | X | X | X | -| Back up and Restore | | X | | -| Display Server Parameters | X | X | X | -| Display Client Connections | X | X | X | - -## Next steps - -- [Troubleshoot connection issues to Azure Database for MariaDB](howto-troubleshoot-common-connection-issues.md) diff --git a/articles/mariadb/concepts-connectivity-architecture.md b/articles/mariadb/concepts-connectivity-architecture.md deleted file mode 100644 index 3934fb18e6..0000000000 --- a/articles/mariadb/concepts-connectivity-architecture.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -title: Connectivity architecture - Azure Database for MariaDB -description: Describes the connectivity architecture for your Azure Database for MariaDB server. -author: SudheeshGH -ms.author: sunaray -ms.service: azure-database-mariadb -ms.topic: conceptual -ms.date: 06/24/2022 ---- - -# Connectivity architecture in Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This article explains the Azure Database for MariaDB connectivity architecture and how the traffic is directed to your Azure Database for MariaDB instance from clients both within and outside Azure. - -## Connectivity architecture - -Connection to your Azure Database for MariaDB is established through a gateway that is responsible for routing incoming connections to the physical location of your server in our clusters. The following diagram illustrates the traffic flow. - -![Overview of the connectivity architecture](./media/concepts-connectivity-architecture/connectivity-architecture-overview-proxy.png) - -As client connects to the database, the connection string to the server resolves to the gateway IP address. The gateway listens on the IP address on port 3306. Inside the database cluster, traffic is forwarded to appropriate Azure Database for MariaDB. Therefore, in order to connect to your server, such as from corporate networks, it's necessary to open up the **client-side firewall to allow outbound traffic to be able to reach our gateways**. Below you can find a complete list of the IP addresses used by our gateways per region. - -## Azure Database for MariaDB gateway IP addresses - -The gateway service is hosted on group of stateless compute nodes sitting behind an IP address, which your client would reach first when trying to connect to an Azure Database for MariaDB server. - -As part of ongoing service maintenance, we'll periodically refresh compute hardware hosting the gateways to ensure we provide the most secure and performant experience. When the gateway hardware is refreshed, a new ring of the compute nodes is built out first. This new ring serves the traffic for all the newly created Azure Database for MariaDB servers and it will have a different IP address from older gateway rings in the same region to differentiate the traffic. Once the new ring is fully functional, the older gateway hardware serving existing servers are planned for decommissioning. Before decommissioning a gateway hardware, customers running their servers and connecting to older gateway rings will be notified via email and in the Azure portal, three months in advance before decommissioning. The decommissioning of gateways can impact the connectivity to your servers if - -* You hard code the gateway IP addresses in the connection string of your application. It is **not recommended**. You should use fully qualified domain name (FQDN) of your server in the format `.mariadb.database.azure.com`, in the connection string for your application. -* You don't update the newer gateway IP addresses in the client-side firewall to allow outbound traffic to be able to reach our new gateway rings. - -> [!IMPORTANT] -> If customer connectivity stack needs to connect directly to gateway instead of **recommended DNS name approach**, or allow-list gateway in the firewall rules for connections to\from customer infrastructure, we **strongly encourage** customers to use Gateway IP address **subnets** versus hardcoding static IP in order to not be impacted by this activity in a region that may cause IP to change within the subnet range. - -The following table lists the gateway IP addresses of the Azure Database for MariaDB gateway for all data regions. The most up-to-date information of the gateway IP addresses for each region is maintained in the table below. In the table below, the columns represent following: - -* **Gateway IP address subnets:** This column lists the IP address subnets of the gateway rings located in the particular region. As we retire older gateway hardware, we recommend that you open the client-side firewall to allow outbound traffic for the IP address subnets in the region you're operating. -* **Gateway IP addresses**: Periodically, individual **Gateway IP addresses** will be retired and traffic will be migrated to corresponding **Gateway IP address subnets**. - -We strongly encourage customers to move away from relying on any individual Gateway IP address (since these will be retired in the future). Instead allow network traffic to reach both the individual Gateway IP addresses and Gateway IP address subnets in a region. - - -| **Region name** |**Current Gateway IP address**| **Gateway IP address subnets** | -|:----------------|:-----------------------------|:--------------------------------| -| Australia Central | 20.36.105.32 | 20.36.105.32/29, 20.53.48.96/27 | -| Australia Central2 | 20.36.113.32 | 20.36.113.32/29, 20.53.56.32/27 | -| Australia East | 13.70.112.32 | 13.70.112.32/29, 40.79.160.32/29, 40.79.168.32/29, 40.79.160.32/29, 20.53.46.128/27 | -| Australia South East |13.77.49.33 |13.77.49.32/29, 104.46.179.160/27| -| Brazil South | 191.233.201.8, 191.233.200.16 | 191.234.153.32/27, 191.234.152.32/27, 191.234.157.136/29, 191.233.200.32/29, 191.234.144.32/29, 191.234.142.160/27| -|Brazil Southeast|191.233.48.2|191.233.48.32/29, 191.233.15.160/27| -| Canada Central | 13.71.168.32| 13.71.168.32/29, 20.38.144.32/29, 52.246.152.32/29, 20.48.196.32/27| -| Canada East |40.69.105.32 | 40.69.105.32/29, 52.139.106.192/27 | -| Central US | 52.182.136.37, 52.182.136.38 | 104.208.21.192/29, 13.89.168.192/29, 52.182.136.192/29, 20.40.228.128/27| -| China East | 52.130.112.139 | 52.130.112.136/29, 52.130.13.96/27| -| China East 2 | 40.73.82.1, 52.130.120.89 | 52.130.120.88/29, 52.130.7.0/27| -| China North | 52.130.128.89| 52.130.128.88/29, 40.72.77.128/27 | -| China North 2 |40.73.50.0 | 52.130.40.64/29, 52.130.21.160/27| -| East Asia |13.75.33.20, 13.75.33.21 | 20.205.77.176/29, 20.205.83.224/29, 20.205.77.200/29, 13.75.32.192/29, 13.75.33.192/29, 20.195.72.32/27| -| East US | 40.71.8.203, 40.71.83.113|20.42.65.64/29, 20.42.73.0/29, 52.168.116.64/29, 20.62.132.160/27| -| East US 2 |52.167.105.38, 40.70.144.38| 104.208.150.192/29, 40.70.144.192/29, 52.167.104.192/29, 20.62.58.128/27| -| France Central |40.79.129.1 | 40.79.128.32/29, 40.79.136.32/29, 40.79.144.32/29, 20.43.47.192/27 | -| France South |40.79.176.40 | 40.79.176.40/29, 40.79.177.32/29, 52.136.185.0/27| -| Germany North| 51.116.56.0| 51.116.57.32/29, 51.116.54.96/27| -| Germany West Central | 51.116.152.0 | 51.116.152.32/29, 51.116.240.32/29, 51.116.248.32/29, 51.116.149.32/27| -| Central India | 20.192.96.33 | 40.80.48.32/29, 104.211.86.32/29, 20.192.96.32/29, 20.192.43.160/27| -| South India | 40.78.192.32| 40.78.192.32/29, 40.78.193.32/29, 52.172.113.96/27| -| West India | 104.211.144.32| 104.211.144.32/29, 104.211.145.32/29, 52.136.53.160/27| -| Japan East | 40.79.184.8, 40.79.192.23| 13.78.104.32/29, 40.79.184.32/29, 40.79.192.32/29, 20.191.165.160/27 | -| Japan West |40.74.96.6| 20.18.179.192/29, 40.74.96.32/29, 20.189.225.160/27 | -| Jio India Central| 20.192.233.32|20.192.233.32/29, 20.192.48.32/27| -| Jio India West|20.193.200.32|20.193.200.32/29, 20.192.167.224/27| -| Korea Central | 52.231.17.13 | 20.194.64.32/29, 20.44.24.32/29, 52.231.16.32/29, 20.194.73.64/27| -| Korea South |52.231.145.3| 52.231.151.96/27, 52.231.151.88/29, 52.231.145.0/29, 52.147.112.160/27 | -| North Central US | 52.162.104.35, 52.162.104.36 | 52.162.105.200/29, 20.125.171.192/29, 52.162.105.192/29, 20.49.119.32/27| -| North Europe |52.138.224.6, 52.138.224.7 |13.69.233.136/29, 13.74.105.192/29, 52.138.229.72/29, 52.146.133.128/27 | -|Norway East|51.120.96.0|51.120.208.32/29, 51.120.104.32/29, 51.120.96.32/29, 51.120.232.192/27| -|Norway West|51.120.216.0|51.120.217.32/29, 51.13.136.224/27| -| South Africa North | 102.133.152.0 | 102.133.120.32/29, 102.133.152.32/29, 102.133.248.32/29, 102.133.221.224/27 | -| South Africa West |102.133.24.0 | 102.133.25.32/29, 102.37.80.96/27| -| South Central US | 20.45.120.0 |20.45.121.32/29, 20.49.88.32/29, 20.49.89.32/29, 40.124.64.136/29, 20.65.132.160/27| -| South East Asia | 23.98.80.12, 40.78.233.2|13.67.16.192/29, 23.98.80.192/29, 40.78.232.192/29, 20.195.65.32/27 | -| Sweden Central|51.12.96.32|51.12.96.32/29, 51.12.232.32/29, 51.12.224.32/29, 51.12.46.32/27| -| Sweden South|51.12.200.32|51.12.201.32/29, 51.12.200.32/29, 51.12.198.32/27| -| Switzerland North |51.107.56.0 |51.107.56.32/29, 51.103.203.192/29, 20.208.19.192/29, 51.107.242.32/27| -| Switzerland West | 51.107.152.0| 51.107.153.32/29, 51.107.250.64/27| -| UAE Central | 20.37.72.64| 20.37.72.96/29, 20.37.73.96/29, 20.37.71.64/27 | -| UAE North |65.52.248.0 |20.38.152.24/29, 40.120.72.32/29, 65.52.248.32/29, 20.38.143.64/27 | -| UK South | 51.105.64.0|51.105.64.32/29, 51.105.72.32/29, 51.140.144.32/29, 51.143.209.224/27| -| UK West |51.140.208.98 |51.140.208.96/29, 51.140.209.32/29, 20.58.66.128/27 | -| West Central US |13.71.193.34 | 13.71.193.32/29, 20.69.0.32/27 | -| West Europe | 13.69.105.208,104.40.169.187|104.40.169.32/29, 13.69.112.168/29, 52.236.184.32/29, 20.61.99.192/27| -| West US |13.86.216.212, 13.86.217.212 |20.168.163.192/29, 13.86.217.224/29, 20.66.3.64/27| -| West US 2 | 13.66.136.192 | 13.66.136.192/29, 40.78.240.192/29, 40.78.248.192/29, 20.51.9.128/27| -| West US 3 |20.150.184.2 | 20.150.168.32/29, 20.150.176.32/29, 20.150.184.32/29, 20.150.241.128/27 | - - -## Connection redirection - -Azure Database for MariaDB supports another connection policy, **redirection** that helps to reduce network latency between client applications and MariaDB servers. With this feature, after the initial TCP session is established to the Azure Database for MariaDB server, the server returns the backend address of the node hosting the MariaDB server to the client. Thereafter, all subsequent packets flow directly to the server, bypassing the gateway. As packets flow directly to the server, latency and throughput have improved performance. - -This feature is supported in Azure Database for MariaDB servers with engine versions 10.2 and 10.3. - -Support for redirection is available in the PHP [mysqlnd_azure](https://github.com/microsoft/mysqlnd_azure) extension, developed by Microsoft, and is available on [PECL](https://pecl.php.net/package/mysqlnd_azure). See the [configuring redirection](./howto-redirection.md) article for more information on how to use redirection in your applications. - -> [!IMPORTANT] -> Support for redirection in the PHP [mysqlnd_azure](https://github.com/microsoft/mysqlnd_azure) extension is currently in preview. - -## Frequently asked questions - -### What you need to know about this planned maintenance? - -This is a DNS change only, which makes it transparent to clients. While the IP address for FQDN is changed in the DNS server, the local DNS cache is refreshed within 5 minutes, and it's automatically done by the operating systems. After the local DNS refresh, all the new connections will connect to the new IP address, all existing connections will remain connected to the old IP address with no interruption until the old IP addresses are fully decommissioned. The old IP address will roughly take three to four weeks before getting decommissioned; therefore, it should have no effect on the client applications. - -### What are we decommissioning? - -Only Gateway nodes are decommissioned. When users connect to their servers, the first stop of the connection is to gateway node, before connection is forwarded to server. We're decommissioning old gateway rings (not tenant rings where the server is running) refer to the [connectivity architecture](#connectivity-architecture) for more clarification. - -### How can you validate if your connections are going to old gateway nodes or new gateway nodes? - -Ping your server's FQDN, for example ``ping xxx.mariadb.database.azure.com``. If the returned IP address is one of the IPs listed under Gateway IP addresses (decommissioning) in the document above, it means your connection is going through the old gateway. Contrarily, if the returned Ip-address is one of the IPs listed under Gateway IP addresses, it means your connection is going through the new gateway. - -You may also test by [PSPing](/sysinternals/downloads/psping) or TCPPing the database server from your client application with port 3306 and ensure that return IP address isn't one of the decommissioning IP addresses - -### How do I know when the maintenance is over and will I get another notification when old IP addresses are decommissioned? - -You receive an email to inform you when we start the maintenance work. The maintenance can take up to one month depending on the number of servers we need to migrate in al regions. Prepare your client to connect to the database server using the FQDN or using the new IP address from the table above. - -### What do I do if my client applications are still connecting to old gateway server? - -This indicates that your applications connect to server using static IP address instead of FQDN. Review connection strings and connection pooling setting, AKS setting, or even in the source code. - -### Is there any impact for my application connections? - -This maintenance is just a DNS change, so it's transparent to the client. Once the DNS cache is refreshed in the client (automatically done by operation system), all the new connections connect to the new IP address and all the existing connections will still work fine until the old IP address is fully decommissioned, which happens several weeks later. And the retry logic isn't required for this case, but it's good to see the application have retry logic configured. Use FQDN to connect to the database server in your application connection string. This maintenance operation won't drop the existing connections. It only makes the new connection requests go to new gateway ring. - -### Can I request for a specific time window for the maintenance? - -As the migration should be transparent and no impact to customer's connectivity, we expect there will be no issue for Most users. Review your application proactively and ensure that you either use FQDN to connect to the database server or enable list the new 'Gateway IP addresses' in your application connection string. - -### I'm using private link, will my connections get affected? - -No, this is a gateway hardware decommission and have no relation to private link or private IP addresses, it will only affect public IP addresses mentioned under the decommissioning IP addresses. - -## Next steps - -* [Create and manage Azure Database for MariaDB firewall rules using the Azure portal](./howto-manage-firewall-portal.md) -* [Create and manage Azure Database for MariaDB firewall rules using Azure CLI](./howto-manage-firewall-cli.md) diff --git a/articles/mariadb/concepts-connectivity.md b/articles/mariadb/concepts-connectivity.md deleted file mode 100644 index 29e171ab74..0000000000 --- a/articles/mariadb/concepts-connectivity.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Transient connectivity errors - Azure Database for MariaDB -description: Learn how to handle transient connectivity errors for Azure Database for MariaDB. -keywords: mysql connection,connection string,connectivity issues,transient error,connection error -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: conceptual -ms.date: 06/24/2022 ---- - -# Handling of transient connectivity errors for Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This article describes how to handle transient errors connecting to Azure Database for MariaDB. - -## Transient errors - -A transient error, also known as a transient fault, is an error that will resolve itself. Most typically these errors manifest as a connection to the database server being dropped. Also new connections to a server can't be opened. Transient errors can occur for example when hardware or network failure happens. Another reason could be a new version of a PaaS service that is being rolled out. Most of these events are automatically mitigated by the system in less than 60 seconds. A best practice for designing and developing applications in the cloud is to expect transient errors. Assume they can happen in any component at any time and to have the appropriate logic in place to handle these situations. - -## Handling transient errors - -Transient errors should be handled using retry logic. Situations that must be considered: - -* An error occurs when you try to open a connection -* An idle connection is dropped on the server side. When you try to issue a command it can't be executed -* An active connection that currently is executing a command is dropped. - -The first and second case are fairly straight forward to handle. Try to open the connection again. When you succeed, the transient error has been mitigated by the system. You can use your Azure Database for MariaDB again. We recommend having waits before retrying the connection. Back off if the initial retries fail. This way the system can use all resources available to overcome the error situation. A good pattern to follow is: - -* Wait for 5 seconds before your first retry. -* For each following retry, the increase the wait exponentially, up to 60 seconds. -* Set a max number of retries at which point your application considers the operation failed. - -When a connection with an active transaction fails, it is more difficult to handle the recovery correctly. There are two cases: If the transaction was read-only in nature, it is safe to reopen the connection and to retry the transaction. If however if the transaction was also writing to the database, you must determine if the transaction was rolled back, or if it succeeded before the transient error happened. In that case, you might not have received the commit acknowledgment from the database server. - -One way of doing this, is to generate a unique ID on the client that is used for all the retries. You pass this unique ID as part of the transaction to the server and to store it in a column with a unique constraint. This way you can safely retry the transaction. It will succeed if the previous transaction was rolled back and the client generated unique ID does not yet exist in the system. It will fail indicating a duplicate key violation if the unique ID was previously stored because the previous transaction completed successfully. - -When your program communicates with Azure Database for MariaDB through third-party middleware, ask the vendor whether the middleware contains retry logic for transient errors. - -Make sure to test you retry logic. For example, try to execute your code while scaling up or down the compute resources of you Azure Database for MariaDB server. Your application should handle the brief downtime that is encountered during this operation without any problems. - -## Next steps - -* [Troubleshoot connection issues to Azure Database for MariaDB](howto-troubleshoot-common-connection-issues.md) diff --git a/articles/mariadb/concepts-data-access-security-private-link.md b/articles/mariadb/concepts-data-access-security-private-link.md deleted file mode 100644 index be26a12196..0000000000 --- a/articles/mariadb/concepts-data-access-security-private-link.md +++ /dev/null @@ -1,139 +0,0 @@ ---- -title: Private Link - Azure Database for MariaDB -description: Learn how Private link works for Azure Database for MariaDB. -ms.service: azure-database-mariadb -author: mksuni -ms.author: sumuth -ms.topic: conceptual -ms.date: 06/24/2022 ---- - -# Private Link for Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -Private Link allows you to create private endpoints for Azure Database for MariaDB and so brings Azure services inside your private Virtual Network (VNet). The private endpoint exposes a private IP you can use to connect to your Azure Database for MariaDB database server just like any other resource in the VNet. - -For a list to PaaS services that support Private Link functionality, review the Private Link [documentation](/azure/private-link/). A private endpoint is a private IP address within a specific [VNet](/azure/virtual-network/virtual-networks-overview) and Subnet. - -> [!NOTE] -> The private link feature is only available for Azure Database for MariaDB servers in the General Purpose or Memory Optimized pricing tiers. Ensure the database server is in one of these pricing tiers. - -## Data exfiltration prevention - -Data ex-filtration in Azure Database for MariaDB is when an authorized user, such as a database admin, is able to extract data from one system and move it to another location or system outside the organization. For example, the user moves the data to a storage account owned by a third party. - -Consider a scenario with a user running MariaDB workbench inside an Azure VM connecting to an Azure Database for MariaDB instance. This MariaDB instance is in the West US data center. The example below shows how to limit access with public endpoints on Azure Database for MariaDB using network access controls. - -* Disable all Azure service traffic to Azure Database for MariaDB via the public endpoint by setting Allow Azure Services to OFF. Ensure no IP addresses or ranges are allowed to access the server either via [firewall rules](concepts-firewall-rules.md) or [virtual network service endpoints](concepts-data-access-security-vnet.md). - -* Only allow traffic to the Azure Database for MariaDB using the Private IP address of the VM. For more information, see the articles on [Service Endpoint](concepts-data-access-security-vnet.md) and [VNet firewall rules](howto-manage-vnet-portal.md). - -* On the Azure VM, narrow down the scope of outgoing connection by using Network Security Groups (NSGs) and Service Tags as follows: - - * Specify an NSG rule to allow traffic for Service Tag = SQL.WestUs - only allowing connection to Azure Database for MariaDB in West US - * Specify an NSG rule (with a higher priority) to deny traffic for Service Tag = SQL - denying connections to MariaDB Database in all regions

- -At the end of this setup, the Azure VM can connect only to Azure Database for MariaDB in the West US region. However, the connectivity isn't restricted to a single Azure Database for MariaDB. The VM can still connect to any Azure Database for MariaDB in the West US region, including the databases that aren't part of the subscription. While we've reduced the scope of data exfiltration in the above scenario to a specific region, we haven't eliminated it altogether.
- -With Private Link, you can now set up network access controls like NSGs to restrict access to the private endpoint. Individual Azure PaaS resources are then mapped to specific private endpoints. A malicious insider can only access the mapped PaaS resource (for example an Azure Database for MariaDB) and no other resource. - -## On-premises connectivity over private peering - -When you connect to the public endpoint from on-premises machines, your IP address needs to be added to the IP-based firewall using a server-level firewall rule. While this model works well for allowing access to individual machines for dev or test workloads, it's difficult to manage in a production environment. - -With Private Link, you can enable cross-premises access to the private endpoint using [Express Route](https://azure.microsoft.com/services/expressroute/) (ER), private peering or [VPN tunnel](/azure/vpn-gateway/). They can subsequently disable all access via public endpoint and not use the IP-based firewall. - -> [!NOTE] -> In some cases the Azure Database for MariaDB and the VNet-subnet are in different subscriptions. In these cases you must ensure the following configurations: -> - Make sure that both the subscription has the **Microsoft.DBforMariaDB** resource provider registered. For more information refer [resource-manager-registration][resource-manager-portal] - -## Configure Private Link for Azure Database for MariaDB - -### Creation Process - -Private endpoints are required to enable Private Link. This can be done using the following how-to guides. - -* [Azure portal](howto-configure-privatelink-portal.md) -* [CLI](howto-configure-privatelink-cli.md) - -### Approval Process - -Once the network admin creates the private endpoint (PE), the admin can manage the private endpoint Connection (PEC) to Azure Database for MariaDB. This separation of duties between the network admin and the DBA is helpful for management of the Azure Database for MariaDB connectivity. - -* Navigate to the Azure Database for MariaDB server resource in the Azure portal. - * Select the private endpoint connections in the left pane - * Shows a list of all private endpoint Connections (PECs) - * Corresponding private endpoint (PE) created - -![select the private endpoint portal](media/concepts-data-access-and-security-private-link/select-private-link-portal.png) - -* Select an individual PEC from the list by selecting it. - -![select the private endpoint pending approval](media/concepts-data-access-and-security-private-link/select-private-link.png) - -* The MariaDB server admin can choose to approve or reject a PEC and optionally add a short text response. - -![select the private endpoint message](media/concepts-data-access-and-security-private-link/select-private-link-message.png) - -* After approval or rejection, the list will reflect the appropriate state along with the response text - -![select the private endpoint final state](media/concepts-data-access-and-security-private-link/show-private-link-approved-connection.png) - -## Use cases of Private Link for Azure Database for MariaDB - -Clients can connect to the private endpoint from the same VNet, [peered VNet](/azure/virtual-network/virtual-network-peering-overview) in same region or across regions, or via [VNet-to-VNet connection](/azure/vpn-gateway/vpn-gateway-howto-vnet-vnet-resource-manager-portal) across regions. Additionally, clients can connect from on-premises using ExpressRoute, private peering, or VPN tunneling. Below is a simplified diagram showing the common use cases. - -![select the private endpoint overview](media/concepts-data-access-and-security-private-link/show-private-link-overview.png) - -### Connecting from an Azure VM in Peered Virtual Network (VNet) - -Configure [VNet peering](/azure/virtual-network/tutorial-connect-virtual-networks-powershell) to establish connectivity to the Azure Database for MariaDB from an Azure VM in a peered VNet. - -### Connecting from an Azure VM in VNet-to-VNet environment - -Configure [VNet-to-VNet VPN gateway connection](/azure/vpn-gateway/vpn-gateway-howto-vnet-vnet-resource-manager-portal) to establish connectivity to an Azure Database for MariaDB from an Azure VM in a different region or subscription. - -### Connecting from an on-premises environment over VPN - -To establish connectivity from an on-premises environment to the Azure Database for MariaDB, choose and implement one of the options: - -* [Point-to-Site connection](/azure/vpn-gateway/vpn-gateway-howto-point-to-site-rm-ps) -* [Site-to-Site VPN connection](/azure/vpn-gateway/vpn-gateway-create-site-to-site-rm-powershell) -* [ExpressRoute circuit](/azure/expressroute/expressroute-howto-linkvnet-portal-resource-manager) - -## Private Link combined with firewall rules - -The following situations and outcomes are possible when you use Private Link in combination with firewall rules: - -* If you don't configure any firewall rules, then by default, no traffic will be able to access the Azure Database for MariaDB. - -* If you configure public traffic or a service endpoint and you create private endpoints, then different types of incoming traffic are authorized by the corresponding type of firewall rule. - -* If you don't configure any public traffic or service endpoint and you create private endpoints, then the Azure Database for MariaDB is accessible only through the private endpoints. If you don't configure public traffic or a service endpoint, after all approved private endpoints are rejected or deleted, no traffic will be able to access the Azure Database for MariaDB. - -## Deny public access for Azure Database for MariaDB - -If you want to rely completely only on private endpoints for accessing their Azure Database for MariaDB, you can disable setting all public endpoints ([firewall rules](concepts-firewall-rules.md) and [VNet service endpoints](concepts-data-access-security-vnet.md)) by setting the **Deny Public Network Access** configuration on the database server. - -When this setting is set to *YES*, only connections via private endpoints are allowed to your Azure Database for MariaDB. When this setting is set to *NO*, clients can connect to your Azure Database for MariaDB based on your firewall or VNet service endpoint settings. Additionally, once the value of the Private network access is set, customers cannot add and/or update existing 'Firewall rules' and 'VNet service endpoint rules'. - -> [!Note] -> This feature is available in all Azure regions where Azure Database for PostgreSQL - Single server supports General Purpose and Memory Optimized pricing tiers. -> -> This setting does not have any impact on the SSL and TLS configurations for your Azure Database for MariaDB. - -To learn how to set the **Deny Public Network Access** for your Azure Database for MariaDB from Azure portal, refer to [How to configure Deny Public Network Access](howto-deny-public-network-access.md). - -## Next steps - -To learn more about Azure Database for MariaDB security features, see the following articles: - -* To configure a firewall for Azure Database for MariaDB, see [Firewall support](concepts-firewall-rules.md). - -* To learn how to configure a virtual network service endpoint for your Azure Database for MariaDB, see [Configure access from virtual networks](concepts-data-access-security-vnet.md). - -* For an overview of Azure Database for MariaDB connectivity, see [Azure Database for MariaDB Connectivity Architecture](concepts-connectivity-architecture.md) - - -[resource-manager-portal]: /azure/azure-resource-manager/management/resource-providers-and-types diff --git a/articles/mariadb/concepts-data-access-security-vnet.md b/articles/mariadb/concepts-data-access-security-vnet.md deleted file mode 100644 index 2ae54c9967..0000000000 --- a/articles/mariadb/concepts-data-access-security-vnet.md +++ /dev/null @@ -1,159 +0,0 @@ ---- -title: VNet service endpoints - Azure Database for MariaDB -description: 'Describes how VNet service endpoints work for your Azure Database for MariaDB server.' -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: conceptual -ms.date: 06/24/2022 ---- - -# Use Virtual Network service endpoints and rules for Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -*Virtual network rules* are one firewall security feature that controls whether your Azure Database for MariaDB server accepts communications that are sent from particular subnets in virtual networks. This article explains why the virtual network rule feature is sometimes your best option for securely allowing communication to your Azure Database for MariaDB server. - -To create a virtual network rule, there must first be a [virtual network][vm-virtual-network-overview] (VNet) and a [virtual network service endpoint][vm-virtual-network-service-endpoints-overview-649d] for the rule to reference. The following picture illustrates how a Virtual Network service endpoint works with Azure Database for MariaDB: - -![Example of how a VNet Service Endpoint works](media/concepts-data-access-security-vnet/vnet-concept.png) - -> [!NOTE] -> This feature is available in all regions of Azure where Azure Database for MariaDB is deployed for General Purpose and Memory Optimized servers. - -You can also consider using [Private Link](concepts-data-access-security-private-link.md) for connections. Private Link provides a private IP address in your VNet for the Azure Database for MariaDB server. - - - -## Terminology and description - -**Virtual network:** You can have virtual networks associated with your Azure subscription. - -**Subnet:** A virtual network contains **subnets**. Any Azure virtual machines (VMs) that you have are assigned to subnets. One subnet can contain multiple VMs or other compute nodes. Compute nodes that are outside of your virtual network cannot access your virtual network unless you configure your security to allow access. - -**Virtual Network service endpoint:** A [Virtual Network service endpoint][vm-virtual-network-service-endpoints-overview-649d] is a subnet whose property values include one or more formal Azure service type names. In this article we are interested in the type name of **Microsoft.Sql**, which refers to the Azure service named SQL Database. This service tag also applies to the Azure Database for MariaDB, MySQL, and PostgreSQL services. It is important to note when applying the **Microsoft.Sql** service tag to a VNet service endpoint it will configure service endpoint traffic for all Azure SQL Database, Azure Database for MariaDB, Azure Database for MySQL, and Azure Database for PostgreSQL servers on the subnet. - -**Virtual network rule:** A virtual network rule for your Azure Database for MariaDB server is a subnet that is listed in the access control list (ACL) of your Azure Database for MariaDB server. To be in the ACL for your Azure Database for MariaDB server, the subnet must contain the **Microsoft.Sql** type name. - -A virtual network rule tells your Azure Database for MariaDB server to accept communications from every node that is on the subnet. - - - - - - -## Benefits of a virtual network rule - -Until you take action, the VMs on your subnets cannot communicate with your Azure Database for MariaDB server. One action that establishes the communication is the creation of a virtual network rule. The rationale for choosing the VNet rule approach requires a compare-and-contrast discussion involving the competing security options offered by the firewall. - -### A. Allow access to Azure services - -The Connection security pane has an **ON/OFF** button that is labeled **Allow access to Azure services**. The **ON** setting allows communications from all Azure IP addresses and all Azure subnets. These Azure IPs or subnets might not be owned by you. This **ON** setting is probably more open than you want your Azure Database for MariaDB Database to be. The virtual network rule feature offers much finer granular control. - -### B. IP rules - -The Azure Database for MariaDB firewall allows you to specify IP address ranges from which communications are accepted into the Azure Database for MariaDB server. This approach is fine for stable IP addresses that are outside the Azure private network. But many nodes inside the Azure private network are configured with *dynamic* IP addresses. Dynamic IP addresses might change, such as when your VM is restarted. It would be folly to specify a dynamic IP address in a firewall rule, in a production environment. - -You can salvage the IP option by obtaining a *static* IP address for your VM. For details, see [Configure private IP addresses for a virtual machine by using the Azure portal][vm-configure-private-ip-addresses-for-a-virtual-machine-using-the-azure-portal-321w]. - -However, the static IP approach can become difficult to manage, and it is costly when done at scale. Virtual network rules are easier to establish and to manage. - - - -## Details about virtual network rules - -This section describes several details about virtual network rules. - -### Only one geographic region - -Each Virtual Network service endpoint applies to only one Azure region. The endpoint does not enable other regions to accept communication from the subnet. - -Any virtual network rule is limited to the region that its underlying endpoint applies to. - -### Server-level, not database-level - -Each virtual network rule applies to your whole Azure Database for MariaDB server, not just to one particular database on the server. In other words, virtual network rule applies at the server-level, not at the database-level. - -### Security administration roles - -There is a separation of security roles in the administration of Virtual Network service endpoints. Action is required from each of the following roles: - -- **Network Admin:**   Turn on the endpoint. -- **Database Admin:**   Update the access control list (ACL) to add the given subnet to the Azure Database for MariaDB server. - -*Azure RBAC alternative:* - -The roles of Network Admin and Database Admin have more capabilities than are needed to manage virtual network rules. Only a subset of their capabilities is needed. - -You have the option of using [Azure role-based access control (Azure RBAC)][rbac-what-is-813s] in Azure to create a single custom role that has only the necessary subset of capabilities. The custom role could be used instead of involving either the Network Admin or the Database Admin. The surface area of your security exposure is lower if you add a user to a custom role, versus adding the user to the other two major administrator roles. - -> [!NOTE] -> In some cases the Azure Database for MariaDB and the VNet-subnet are in different subscriptions. In these cases you must ensure the following configurations: -> - Both subscriptions must be in the same Microsoft Entra tenant. -> - The user has the required permissions to initiate operations, such as enabling service endpoints and adding a VNet-subnet to the given Server. -> - Make sure that both the subscription have the **Microsoft.Sql** and **Microsoft.DBforMariaDB** resource provider registered. For more information refer [resource-manager-registration][resource-manager-portal] - -## Limitations - -For Azure Database for MariaDB, the virtual network rules feature has the following limitations: - -- A Web App can be mapped to a private IP in a VNet/subnet. Even if service endpoints are turned ON from the given VNet/subnet, connections from the Web App to the server will have an Azure public IP source, not a VNet/subnet source. To enable connectivity from a Web App to a server that has VNet firewall rules, you must Allow Azure services to access server on the server. - -- In the firewall for your Azure Database for MariaDB, each virtual network rule references a subnet. All these referenced subnets must be hosted in the same geographic region that hosts the Azure Database for MariaDB. - -- Each Azure Database for MariaDB server can have up to 128 ACL entries for any given virtual network. - -- Virtual network rules apply only to Azure Resource Manager virtual networks; and not to [classic deployment model][resource-manager-deployment-model-568f] networks. - -- Turning ON virtual network service endpoints to Azure Database for MariaDB using the **Microsoft.Sql** service tag also enables the endpoints for all Azure Database services: Azure Database for MariaDB, Azure Database for MySQL, Azure Database for PostgreSQL, Azure SQL Database and Azure Synapse Analytics. - -- Support for VNet service endpoints is only for General Purpose and Memory Optimized servers. - -- If **Microsoft.Sql** is enabled in a subnet, it indicates that you only want to use VNet rules to connect. [Non-VNet firewall rules](concepts-firewall-rules.md) of resources in that subnet will not work. - -- On the firewall, IP address ranges do apply to the following networking items, but virtual network rules do not: - - [Site-to-Site (S2S) virtual private network (VPN)][vpn-gateway-indexmd-608y] - - On-premises via [ExpressRoute][expressroute-indexmd-744v] - -## ExpressRoute - -If your network is connected to the Azure network through use of [ExpressRoute][expressroute-indexmd-744v], each circuit is configured with two public IP addresses at the Microsoft Edge. The two IP addresses are used to connect to Microsoft Services, such as to Azure Storage, by using Azure Public Peering. - -To allow communication from your circuit to Azure Database for MariaDB, you must create IP network rules for the public IP addresses of your circuits. In order to find the public IP addresses of your ExpressRoute circuit, open a support ticket with ExpressRoute by using the Azure portal. - -## Adding a VNET Firewall rule to your server without turning on VNET Service Endpoints - -Merely setting a VNet firewall rule does not help secure the server to the VNet. You must also turn VNet service endpoints **On** for the security to take effect. When you turn service endpoints **On**, your VNet-subnet experiences downtime until it completes the transition from **Off** to **On**. This is especially true in the context of large VNets. You can use the **IgnoreMissingServiceEndpoint** flag to reduce or eliminate the downtime during transition. - -You can set the **IgnoreMissingServiceEndpoint** flag by using the Azure CLI or portal. - -## Related articles - -- [Azure virtual networks][vm-virtual-network-overview] -- [Azure virtual network service endpoints][vm-virtual-network-service-endpoints-overview-649d] - -## Next steps - -For articles on creating VNet rules, see: -- [Create and manage Azure Database for MariaDB VNet rules using the Azure portal](howto-manage-vnet-portal.md) - - - - -[resource-manager-deployment-model-568f]: /azure/azure-resource-manager/management/deployment-models - -[vm-virtual-network-overview]: /azure/virtual-network/virtual-networks-overview - -[vm-virtual-network-service-endpoints-overview-649d]: /azure/virtual-network/virtual-network-service-endpoints-overview - -[vm-configure-private-ip-addresses-for-a-virtual-machine-using-the-azure-portal-321w]: /azure/virtual-network/ip-services/virtual-networks-static-private-ip-arm-pportal - -[rbac-what-is-813s]: /azure/role-based-access-control/overview - -[vpn-gateway-indexmd-608y]: /azure/vpn-gateway/ - -[expressroute-indexmd-744v]: /azure/expressroute/ - -[resource-manager-portal]: /azure/azure-resource-manager/management/resource-providers-and-types diff --git a/articles/mariadb/concepts-data-in-replication.md b/articles/mariadb/concepts-data-in-replication.md deleted file mode 100644 index d0148ad8d9..0000000000 --- a/articles/mariadb/concepts-data-in-replication.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Data-in replication - Azure Database for MariaDB -description: Learn about using data-in replication to synchronize from an external server into the Azure Database for MariaDB service. -ms.service: azure-database-mariadb -author: VandhanaMehta -ms.author: vamehta -ms.topic: conceptual -ms.date: 06/24/2022 ---- - -# Replicate data into Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -Data-in Replication allows you to synchronize data from a MariaDB server running on-premises, in virtual machines, or database services hosted by other cloud providers into the Azure Database for MariaDB service. Data-in Replication is based on the binary log (binlog) file position-based replication native to MariaDB. To learn more about binlog replication, see the [binlog replication overview](https://mariadb.com/kb/en/library/replication-overview/). - -## When to use Data-in Replication - -The main scenarios to consider using Data-in Replication are: - -- **Hybrid Data Synchronization:** With Data-in Replication, you can keep data synchronized between your on-premises servers and Azure Database for MariaDB. This synchronization is useful for creating hybrid applications. This method is appealing when you have an existing local database server, but want to move the data to a region closer to end users. -- **Multi-Cloud Synchronization:** For complex cloud solutions, use Data-in Replication to synchronize data between Azure Database for MariaDB and different cloud providers, including virtual machines and database services hosted in those clouds. - -## Limitations and considerations - -### Data not replicated - -The [*mysql system database*](https://mariadb.com/kb/en/library/the-mysql-database-tables/) on the source server is not replicated. Changes to accounts and permissions on the source server are not replicated. If you create an account on the source server and this account needs to access the replica server, then manually create the same account on the replica server side. To understand what tables are contained in the system database, see the [MariaDB documentation](https://mariadb.com/kb/en/library/the-mysql-database-tables/). - -### Requirements - -- The source server version must be at least MariaDB version 10.2. -- The source and replica server versions must be the same. For example, both must be MariaDB version 10.2. -- Each table must have a primary key. -- Source server should use the InnoDB engine. -- User must have permissions to configure binary logging and create new users on the source server. -- If the source server has SSL enabled, ensure the SSL CA certificate provided for the domain has been included in the `mariadb.az_replication_change_master` stored procedure. Refer to the following [examples](howto-data-in-replication.md#link-the-source-and-replica-servers-to-start-data-in-replication) and the `master_ssl_ca` parameter. -- Ensure the source server's IP address has been added to the Azure Database for MariaDB replica server's firewall rules. Update firewall rules using the [Azure portal](howto-manage-firewall-portal.md) or [Azure CLI](howto-manage-firewall-cli.md). -- Ensure the machine hosting the source server allows both inbound and outbound traffic on port 3306. -- Ensure that the source server has a **public IP address**, the DNS is publicly accessible, or has a fully qualified domain name (FQDN). - -### Other - -- Data-in replication is only supported in General Purpose and Memory Optimized pricing tiers. - -## Next steps - -- Learn how to [set up data-in replication](howto-data-in-replication.md). diff --git a/articles/mariadb/concepts-firewall-rules.md b/articles/mariadb/concepts-firewall-rules.md deleted file mode 100644 index fb9206ca84..0000000000 --- a/articles/mariadb/concepts-firewall-rules.md +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Firewall rules - Azure Database for MariaDB -description: Learn about using firewall rules to enable connections to your Azure Database for MariaDB server. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: conceptual -ms.date: 06/24/2022 ---- - -# Azure Database for MariaDB server firewall rules - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -Firewalls prevent all access to your database server until you specify which computers have permission. The firewall grants access to the server based on the originating IP address of each request. - -To configure a firewall, create firewall rules that specify ranges of acceptable IP addresses. You can create firewall rules at the server level. - -**Firewall rules:** These rules enable clients to access your entire Azure Database for MariaDB server, that is, all the databases within the same logical server. Server-level firewall rules can be configured by using the Azure portal or Azure CLI commands. To create server-level firewall rules, you must be the subscription owner or a subscription contributor. - -## Firewall overview - -All database access to your Azure Database for MariaDB server is by default blocked by the firewall. To begin using your server from another computer, you need to specify one or more server-level firewall rules to enable access to your server. Use the firewall rules to specify which IP address ranges from the Internet to allow. Access to the Azure portal website itself is not impacted by the firewall rules. - -Connection attempts from the Internet and Azure must first pass through the firewall before they can reach your Azure Database for MariaDB database, as shown in the following diagram: - -![Example flow of how the firewall works](./media/concepts-firewall-rules/1-firewall-concept.png) - -## Connecting from the Internet - -Server-level firewall rules apply to all databases on the Azure Database for MariaDB server. - -If the IP address of the request is within one of the ranges specified in the server-level firewall rules, then the connection is granted. - -If the IP address of the request is outside the ranges specified in any of the database-level or server-level firewall rules, then the connection request fails. - -## Connecting from Azure - -It is recommended that you find the outgoing IP address of any application or service and explicitly allow access to those individual IP addresses or ranges. For example, you can find the outgoing IP address of an Azure App Service or use a public IP tied to a virtual machine or other resource (see below for info on connecting with a virtual machine's private IP over service endpoints). - -If a fixed outgoing IP address isn't available for your Azure service, you can consider enabling connections from all Azure datacenter IP addresses. This setting can be enabled from the Azure portal by setting the **Allow access to Azure services** option to **ON** from the **Connection security** pane and hitting **Save**. From the Azure CLI, a firewall rule setting with starting and ending address equal to 0.0.0.0 does the equivalent. If the connection attempt is not allowed, the request does not reach the Azure Database for MariaDB server. - -> [!IMPORTANT] -> The **Allow access to Azure services** option configures the firewall to allow all connections from Azure including connections from the subscriptions of other customers. When selecting this option, make sure your login and user permissions limit access to only authorized users. -> - -![Configure Allow access to Azure services in the portal](./media/concepts-firewall-rules/allow-azure-services.png) - -### Connecting from a VNet - -To connect securely to your Azure Database for MariaDB server from a VNet, consider using [VNet service endpoints](./concepts-data-access-security-vnet.md). - -## Programmatically managing firewall rules - -In addition to the Azure portal, firewall rules can be managed programmatically by using the Azure CLI. - -See also [Create and manage Azure Database for MariaDB firewall rules using Azure CLI](./howto-manage-firewall-cli.md). - -## Troubleshooting firewall issues - -Consider the following points when access to the Microsoft Azure Database for MariaDB server service does not behave as expected: - -* **Changes to the allow list have not taken effect yet:** There may be as much as a five-minute delay for changes to the Azure Database for MariaDB Server firewall configuration to take effect. - -* **The login is not authorized or an incorrect password was used:** If a login does not have permissions on the Azure Database for MariaDB server or the password used is incorrect, the connection to the Azure Database for MariaDB server is denied. Creating a firewall setting only provides clients with an opportunity to attempt connecting to your server; each client must provide the necessary security credentials. - -* **Dynamic IP address:** If you have an Internet connection with dynamic IP addressing and you are having trouble getting through the firewall, you can try one of the following solutions: - - * Ask your Internet Service Provider (ISP) for the IP address range assigned to your client computers that access the Azure Database for MariaDB server, and then add the IP address range as a firewall rule. - - * Get static IP addressing instead for your client computers, and then add the IP addresses as firewall rules. - -* **Server's IP appears to be public:** Connections to the Azure Database for MariaDB server are routed through a publicly accessible Azure gateway. However, the actual server IP is protected by the firewall. For more information, visit the [connectivity architecture article](concepts-connectivity-architecture.md). - -* **Cannot connect from Azure resource with allowed IP:** Check whether the **Microsoft.Sql** service endpoint is enabled for the subnet you are connecting from. If **Microsoft.Sql** is enabled, it indicates that you only want to use [VNet service endpoint rules](concepts-data-access-security-vnet.md) on that subnet. - - For example, you may see the following error if you are connecting from an Azure VM in a subnet that has **Microsoft.Sql** enabled but has no corresponding VNet rule: - `FATAL: Client from Azure Virtual Networks is not allowed to access the server` - -* **Firewall rule is not available for IPv6 format:** The firewall rules must be in IPv4 format. If you specify firewall rules in IPv6 format, it will show the validation error. - -## Next steps - -- [Create and manage Azure Database for MariaDB firewall rules using the Azure portal](./howto-manage-firewall-portal.md) -- [Create and manage Azure Database for MariaDB firewall rules using Azure CLI](./howto-manage-firewall-cli.md) -- [VNet service endpoints in Azure Database for MariaDB](./concepts-data-access-security-vnet.md) diff --git a/articles/mariadb/concepts-high-availability.md b/articles/mariadb/concepts-high-availability.md deleted file mode 100644 index 85ddd3b623..0000000000 --- a/articles/mariadb/concepts-high-availability.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: High availability - Azure Database for MariaDB -description: This article provides information on high availability in Azure Database for MariaDB. -ms.service: azure-database-mariadb -author: mksuni -ms.author: sumuth -ms.topic: conceptual -ms.date: 06/24/2022 ---- - -# High availability in Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -The Azure Database for MariaDB service is suitable for running mission-critical databases that require high uptime. It provides high availability during: - -- Planned events, such as user-initiated scale compute operations. -- Unplanned events, such as underlying hardware, software, or network failures. - -Azure Database for MariaDB provides a [financially backed service-level agreement](https://azure.microsoft.com/support/legal/sla/MariaDB) for uptime. Because the service is built on Azure architecture, you can take advantage of its capabilities for high availability, redundancy, and resiliency without configuring any additional components. - -## Components in Azure Database for MariaDB - -| Component | Description| -| ------------ | ----------- | -| MariaDB database server | Azure Database for MariaDB provides security, isolation, resource safeguards, and fast restart capability for database servers. These capabilities facilitate operations such as scaling and database server recovery (in seconds) after an outage.
Data modifications in the database server typically occur in the context of a database transaction. All database changes are recorded synchronously in the form of write-ahead logs (*ib_log* files) on Azure Storage, which is attached to the database server. During the database [checkpoint](https://mariadb.com/kb/innodb-redo-log/#checkpoints) process, data pages from the database server memory are also flushed to the storage. | -| Remote storage | All MariaDB physical data files and log files are stored on Azure Storage, which stores three copies of data within a region to provide data redundancy, availability, and reliability. The storage layer is independent of the database server. It can be detached from a failed database server and reattached to a new database server in a few seconds.
Azure Storage continuously monitors for any storage faults. If it detects a block corruption, it automatically fixes the problem by instantiating a new storage copy. | -| Gateway | The gateway acts as a database proxy by routing all client connections to the database server. | - -## Mitigation of planned downtime - -The architecture of Azure Database for MariaDB provides high availability during planned downtime operations. - -![Diagram of elastic scaling in Azure Database for MariaDB.](./media/concepts-high-availability/elastic-scaling-mariadb-server.png) - -Here are some scenarios for planned maintenance: - -| Scenario | Description| -| ------------ | ----------- | -| Compute scale-up or scale-down | When you perform a compute scale-up or scale-down operation, Azure Database for MariaDB provisions a new database server by using the scaled compute configuration. On the old database server, the service allows active checkpoints to finish, drains client connections, and cancels any uncommitted transactions. The service then shuts down the old database server. It detaches the storage from the old database server and attaches the storage to the new database server. When the client application retries the connection or tries to make a new connection, the gateway directs the connection request to the new database server.| -| Scaling up storage | Scaling up the storage is an online operation and doesn't interrupt the database server.| -| New software deployment (Azure) | Rollouts of new features or bug fixes automatically happen as part of the service's planned maintenance. For more information, see the [documentation](concepts-monitoring.md#planned-maintenance-notification) and check your [portal](https://aka.ms/servicehealthpm).| -| Minor version upgrades | Azure Database for MariaDB automatically patches database servers to the minor version that Azure determines. Automatic patching happens as part of the service's planned maintenance. It incurs a short downtime in terms of seconds, and the database server is automatically restarted with the new minor version. For more information, see the [documentation](concepts-monitoring.md#planned-maintenance-notification) and check your [portal](https://aka.ms/servicehealthpm).| - -## Mitigation of unplanned downtime - -Unplanned downtime can occur as a result of unforeseen failures, including underlying hardware faults, network problems, and software bugs. If the database server goes down unexpectedly, a new database server is automatically provisioned in seconds. The remote storage is automatically attached to the new database server. - -The MariaDB engine performs the recovery operation by using write-ahead log and database files, and it opens the database server to allow clients to connect. Uncommitted transactions are lost, and the application must retry them. - -Although you can't avoid unplanned downtime, Azure Database for MariaDB mitigates it by automatically performing recovery operations at both the database server and storage layers without requiring human intervention. - -![Diagram of high availability in Azure Database for MariaDB.](./media/concepts-high-availability/availability-mariadb-server.png) - -### Unplanned downtime: Failure scenarios and service recovery - -Here are two failure scenarios and how Azure Database for MariaDB automatically recovers: - -| Scenario | Automatic recovery | -| ---------- | ---------- | -| Database server failure | If the database server is down because of an underlying hardware fault, Azure Database for MariaDB drops active connections and cancels any inflight transactions. The service automatically deploys a new database server and attaches the remote data storage to the new database server. After the database recovery is complete, clients can connect to the new database server through the gateway.
Applications that use the MariaDB databases need to be built in a way that they detect and retry dropped connections and failed transactions. When the application retries a connection, the gateway transparently redirects the connection to the newly created database server. | -| Storage failure | Storage-related problems, such as a disk failure or a physical block corruption, don't affect applications. Because the data is stored in three copies, the surviving storage serves the copy of the data. Azure Database for MariaDB automatically corrects block corruptions. If a copy of data is lost, the service automatically creates a new copy of the data. | - -Here are failure scenarios that require user action to recover: - -| Scenario | Recovery plan | -| ---------- | ---------- | -| Region failure | Failure of a region is a rare event. However, if you need protection from a region failure, you can configure one or more read replicas in other regions for disaster recovery. For details, see [this article](howto-read-replicas-portal.md) about creating and managing read replicas. If a region-level failure happens, you can manually promote a read replica configured in another region to be your production database server. | -| Logical/user error | Recovery from user errors, such as accidentally dropped tables or incorrectly updated data, involves performing a [point-in-time recovery](concepts-backup.md). This action restores and recovers the data until the time just before the error occurred.
If you want to restore only a subset of databases or specific tables rather than all databases in the database server, you can restore the database server in a new instance, export the tables via [mysqldump](howto-migrate-dump-restore.md), and then [restore](howto-migrate-dump-restore.md#restore-your-mariadb-database) those tables in your database. | - -## Summary - -Azure Database for MariaDB has inherent high-availability capabilities to help protect your databases from common outages. It provides fast restart capability of database servers, redundant storage, and efficient routing from the gateway. For additional data protection, you can configure backups to be geo-replicated and deploy read replicas in other regions. - -## Next steps - -- Learn about [Azure regions](/azure/availability-zones/az-overview). -- Learn about [handling transient connectivity errors](concepts-connectivity.md). -- Learn how to [replicate your data with read replicas](howto-read-replicas-portal.md). diff --git a/articles/mariadb/concepts-limits.md b/articles/mariadb/concepts-limits.md deleted file mode 100644 index 98d4f956ac..0000000000 --- a/articles/mariadb/concepts-limits.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Limitations - Azure Database for MariaDB -description: This article describes limitations in Azure Database for MariaDB, such as number of connection and storage engine options. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: conceptual -ms.date: 06/24/2022 ---- -# Limitations in Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -The following sections describe capacity, storage engine support, privilege support, data manipulation statement support, and functional limits in the database service. - -## Server parameters - -> [!NOTE] -> If you are looking for min/max values for server parameters like `max_connections` and `innodb_buffer_pool_size`, this information has moved to the **[server parameters](./concepts-server-parameters.md)** article. - -Azure Database for MariaDB supports tuning the values of server parameters. The min and max value of some parameters (ex. `max_connections`, `join_buffer_size`, `query_cache_size`) is determined by the pricing tier and vCores of the server. Refer to [server parameters](./concepts-server-parameters.md) for more information about these limits. - -Upon initial deployment, an Azure for MariaDB server includes systems tables for time zone information, but these tables aren't populated. The time zone tables can be populated by calling the `mysql.az_load_timezone` stored procedure from a tool like the MySQL command line or MySQL Workbench. Refer to the [Azure portal](howto-server-parameters.md#working-with-the-time-zone-parameter) or [Azure CLI](howto-configure-server-parameters-cli.md#working-with-the-time-zone-parameter) articles for how to call the stored procedure and set the global or session-level time zones. - -Password plugins such as "validate_password" and "caching_sha2_password" aren't supported by the service. - -## Storage engine support - -### Supported - -- [InnoDB](https://mariadb.com/kb/en/library/xtradb-and-innodb/) -- [MEMORY](https://mariadb.com/kb/en/library/memory-storage-engine/) - -### Unsupported - -- [MyISAM](https://mariadb.com/kb/en/library/myisam-storage-engine/) -- [BLACKHOLE](https://mariadb.com/kb/en/library/blackhole/) -- [ARCHIVE](https://mariadb.com/kb/en/library/archive/) - -## Privileges & data manipulation support - -Many server parameters and settings can inadvertently degrade server performance or negate ACID properties of the MariaDB server. To maintain the service integrity and SLA at a product level, this service doesn't expose multiple roles. - -The MariaDB service doesn't allow direct access to the underlying file system. Some data manipulation commands aren't supported. - -## Privilege support - -### Unsupported - -The following are unsupported: -- DBA role: Restricted. Alternatively, you can use the administrator user (created during new server creation), allows you to perform most of DDL and DML statements. -- SUPER privilege: Similarly, [SUPER privilege](https://mariadb.com/kb/en/library/grant/#global-privileges) is also restricted. -- DEFINER: Requires super privileges to create and is restricted. If importing data using a backup, remove the `CREATE DEFINER` commands manually or by using the `--skip-definer` command when performing a mysqldump. -- System databases: The [mysql system database](https://mariadb.com/kb/en/the-mysql-database-tables/) is read-only and used to support various PaaS functionalities. You can't make changes to the `mysql` system database. -- `SELECT ... INTO OUTFILE`: Not supported in the service. -- Azure Database for MariaDB supports at largest, **1 TB**, in a single data file. If your database size is larger than 1 TB, you should create the table in [innodb_file_per_table](https://mariadb.com/kb/en/innodb-system-variables/#innodb_file_per_table) tablespace. If you have a single table size larger than 1 TB, you should use the partition table. - -### Supported - -- `LOAD DATA INFILE` is supported, but the `[LOCAL]` parameter must be specified and directed to a UNC path (Azure storage mounted through SMB). - -## Functional limitations - -### Scale operations - -- Dynamic scaling to and from the Basic pricing tiers is currently not supported. -- Decreasing server storage size isn't supported. - -### Server version upgrades - -- Automated migration between major database engine versions is currently not supported. - -### Point-in-time-restore - -- When using the PITR feature, the new server is created with the same configurations as the server it's based on. -- Restoring a deleted server isn't supported. - -### Subscription management - -- Dynamically moving pre-created servers across subscription and resource group is currently not supported. - -### VNet service endpoints - -- Support for VNet service endpoints is only for General Purpose and Memory Optimized servers. - -### Storage size - -- Please refer to [pricing tiers](concepts-pricing-tiers.md) for the storage size limits per pricing tier. - -## Current known issues - -- MariaDB server instance displays the incorrect server version after connection is established. To get the correct server instance engine version, use the `select version();` command. - -## Next steps - -- [What's available in each service tier](concepts-pricing-tiers.md) -- [Supported MariaDB database versions](concepts-supported-versions.md) diff --git a/articles/mariadb/concepts-monitoring.md b/articles/mariadb/concepts-monitoring.md deleted file mode 100644 index 5bec644275..0000000000 --- a/articles/mariadb/concepts-monitoring.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Monitoring - Azure Database for MariaDB -description: This article describes the metrics for monitoring and alerting for Azure Database for MariaDB, including CPU, storage, and connection statistics. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: conceptual -ms.custom: references_regions -ms.date: 06/24/2022 ---- -# Monitoring in Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -Monitoring data about your servers helps you troubleshoot and optimize for your workload. Azure Database for MariaDB provides various metrics that give insight into the behavior of your server. - -## Metrics - -All Azure metrics have a one-minute frequency, and each metric provides 30 days of history. You can configure alerts on the metrics. Other tasks include setting up automated actions, performing advanced analytics, and archiving history. For more information, see the [Azure Metrics Overview](/azure/azure-monitor/data-platform). - -For step by step guidance, see [How to set up alerts](howto-alert-metric.md). - -### List of metrics - -These metrics are available for Azure Database for MariaDB: - -|Metric|Metric Display Name|Unit|Description| -|---|---|---|---| -|cpu_percent|CPU percent|Percent|The percentage of CPU in use.| -|memory_percent|Memory percent|Percent|The percentage of memory in use.| -|io_consumption_percent|IO percent|Percent|The percentage of IO in use. (Not applicable for Basic tier servers)| -|storage_percent|Storage percentage|Percent|The percentage of storage used out of the server's maximum.| -|storage_used|Storage used|Bytes|The amount of storage in use. The storage used by the service may include the database files, transaction logs, and the server logs.| -|serverlog_storage_percent|Server Log storage percent|Percent|The percentage of server log storage used out of the server's maximum server log storage.| -|serverlog_storage_usage|Server Log storage used|Bytes|The amount of server log storage in use.| -|serverlog_storage_limit|Server Log storage limit|Bytes|The maximum server log storage for this server.| -|storage_limit|Storage limit|Bytes|The maximum storage for this server.| -|active_connections|Active Connections|Count|The number of active connections to the server.| -|connections_failed|Failed Connections|Count|The number of failed connections to the server.| -|seconds_behind_master|Replication lag in seconds|Count|The number of seconds the replica server is lagging against the source server. (Not applicable for Basic tier servers)| -|network_bytes_egress|Network Out|Bytes|Network Out across active connections.| -|network_bytes_ingress|Network In|Bytes|Network In across active connections.| -|backup_storage_used|Backup Storage Used|Bytes|The amount of backup storage used. This metric represents the sum of storage consumed by all the full database backups, differential backups, and log backups retained based on the backup retention period set for the server. The frequency of the backups is service managed and explained in the [concepts article](concepts-backup.md). For geo-redundant storage, backup storage usage is twice that of the locally redundant storage.| - -## Server logs - -You can enable slow query logging on your server. These logs are also available through Azure Diagnostic Logs in Azure Monitor logs, Event Hubs, and Storage Account. To learn more about logging, visit the [server logs](concepts-server-logs.md) page. - -## Query Store - -[Query Store](concepts-query-store.md) keeps track of query performance over time including query runtime statistics and wait events. The feature persists query runtime performance information in the **mysql** schema. You can control the collection and storage of data via various configuration knobs. - -## Query Performance Insight - -[Query Performance Insight](concepts-query-performance-insight.md) works in conjunction with Query Store to provide visualizations accessible from the Azure portal. These charts enable you to identify key queries that impact performance. Query Performance Insight is accessible in the **Intelligent Performance** section of your Azure Database for MariaDB server's portal page. - -## Planned maintenance notification - -[Planned maintenance notifications](./concepts-planned-maintenance-notification.md) allow you to receive alerts for upcoming planned maintenance to your Azure Database for MariaDB. These notifications are integrated with [Service Health's](/azure/service-health/overview) planned maintenance and allow you to view all scheduled maintenance for your subscriptions in one place. It also helps to scale the notification to the right audiences for different resource groups, as you may have different contacts responsible for different resources. You will receive the notification about the upcoming maintenance 72 hours before the event. - -Learn more about how to set up notifications in the [planned maintenance notifications](./concepts-planned-maintenance-notification.md) document. - -## Next steps - -- For more information on how to access and export metrics using the Azure portal, REST API, or CLI, see the [Azure Metrics Overview](/azure/azure-monitor/data-platform). -- See [How to set up alerts](howto-alert-metric.md) for guidance on creating an alert on a metric. -- Learn more about [planned maintenance notifications](./concepts-planned-maintenance-notification.md) in Azure Database for MariaDB. diff --git a/articles/mariadb/concepts-planned-maintenance-notification.md b/articles/mariadb/concepts-planned-maintenance-notification.md deleted file mode 100644 index 9cc5430214..0000000000 --- a/articles/mariadb/concepts-planned-maintenance-notification.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: Planned maintenance notification - Azure Database for MariaDB -description: This article describes the Planned maintenance notification feature in Azure Database for MariaDB -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: conceptual -ms.date: 06/24/2022 ---- -# Planned maintenance notification in Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -Learn how to prepare for planned maintenance events on your Azure Database for MariaDB. - -## What is a planned maintenance? - -Azure Database for MariaDB service performs automated patching of the underlying hardware, OS, and database engine. The patch includes new service features, security, and software updates. For MariaDB engine, minor version upgrades are automatic and included as part of the patching cycle. There is no user action or configuration settings required for patching. The patch is tested extensively and rolled out using safe deployment practices. - -A planned maintenance is a maintenance window when these service updates are deployed to servers in a given Azure region. During planned maintenance, a notification event is created to inform customers when the service update is deployed in the Azure region hosting their servers. Minimum duration between two planned maintenance is 30 days. You receive a notification of the next maintenance window 72 hours in advance. - -## Planned maintenance - duration and customer impact - -A planned maintenance for a given Azure region is typically expected to run 15 hrs. The window also includes buffer time to execute a rollback plan if necessary. During planned maintenance, there can be database server restarts or failovers, which might lead to brief unavailability of the database servers for end users. Azure Database for MariaDB servers are running in containers so database server restarts are typically quick, expected to complete typically in 60-120 seconds. The entire planned maintenance event including each server restarts is carefully monitored by the engineering team. The server failovers time is dependent on database recovery time, which can cause the database to come online longer if you have heavy transactional activity on the server at the time of failover. To avoid longer restart time, it is recommended to avoid any long running transactions (bulk loads) during planned maintenance events. - -In summary, while the planned maintenance event runs for 15 hours, the individual server impact generally lasts 60 seconds depending on the transactional activity on the server. A notification is sent 72 calendar hours before planned maintenance starts and another one while maintenance is in progress for a given region. - -## How can I get notified of planned maintenance? - -You can utilize the planned maintenance notifications feature to receive alerts for an upcoming planned maintenance event. You will receive the notification about the upcoming maintenance 72 calendar hours before the event and another one while maintenance is in-progress for a given region. - -### Planned maintenance notification - -> [!IMPORTANT] -> Planned maintenance notifications are currently available in preview in all regions **except** West Central US - -**Planned maintenance notifications** allow you to receive alerts for upcoming planned maintenance event to your Azure Database for MariaDB. These notifications are integrated with [Service Health's](/azure/service-health/overview) planned maintenance and allow you to view all scheduled maintenance for your subscriptions in one place. It also helps to scale the notification to the right audiences for different resource groups, as you may have different contacts responsible for different resources. You will receive the notification about the upcoming maintenance 72 calendar hours before the event. - -We will make every attempt to provide **Planned maintenance notification** 72 hours notice for all events. However, in cases of critical or security patches, notifications might be sent closer to the event or be omitted. - -You can either check the planned maintenance notification on Azure portal or configure alerts to receive notification. - -### Check planned maintenance notification from Azure portal - -1. In the [Azure portal](https://portal.azure.com), select **Service Health**. -2. Select **Planned Maintenance** tab -3. Select **Subscription**, **Region, and **Service** for which you want to check the planned maintenance notification. - -### To receive planned maintenance notification - -1. In the [portal](https://portal.azure.com), select **Service Health**. -2. In the **Alerts** section, select **Health alerts**. -3. Select **+ Add service health alert** and fill in the fields. -4. Fill out the required fields. -5. Choose the **Event type**, select **Planned maintenance** or **Select all** -6. In **Action groups** define how you would like to receive the alert (get an email, trigger a logic app etc.) -7. Ensure Enable rule upon creation is set to Yes. -8. Select **Create alert rule** to complete your alert - -For detailed steps on how to create **service health alerts**, refer to [Create activity log alerts on service notifications](/azure/service-health/alerts-activity-log-service-notifications-portal). - -## Can I cancel or postpone planned maintenance? - -Maintenance is needed to keep your server secure, stable, and up-to-date. The planned maintenance event cannot be canceled or postponed. Once the notification is sent to a given Azure region, the patching schedule changes cannot be made for any individual server in that region. The patch is rolled out for entire region at once. Azure Database for MariaDB service is designed for cloud native application that doesn't require granular control or customization of the service. - -## Are all the Azure regions patched at the same time? - -No, all the Azure regions are patched during the deployment wise window timings. The deployment wise window generally stretches from 5 PM - 8 AM local time next day, in a given Azure region. Geo-paired Azure regions are patched on different days. For high availability and business continuity of database servers, leveraging [cross region read replicas](./concepts-read-replicas.md#cross-region-replication) is recommended. - -## Retry logic - -A transient error, also known as a transient fault, is an error that will resolve itself. [Transient errors](./concepts-connectivity.md#transient-errors) can occur during maintenance. Most of these events are automatically mitigated by the system in less than 60 seconds. Transient errors should be handled using [retry logic](./concepts-connectivity.md#handling-transient-errors). - -## Next steps - -- For any questions or suggestions you might have about working with Azure Database for MariaDB, send an email to the Azure Database for MariaDB Team at AskAzureDBforMariaDB@service.microsoft.com -- See [How to set up alerts](howto-alert-metric.md) for guidance on creating an alert on a metric. -- [Troubleshoot connection issues to Azure Database for MariaDB](howto-troubleshoot-common-connection-issues.md) -- [Handle transient errors and connect efficiently to Azure Database for MariaDB](concepts-connectivity.md) diff --git a/articles/mariadb/concepts-pricing-tiers.md b/articles/mariadb/concepts-pricing-tiers.md deleted file mode 100644 index 4c9b50c643..0000000000 --- a/articles/mariadb/concepts-pricing-tiers.md +++ /dev/null @@ -1,100 +0,0 @@ ---- -title: Pricing tiers - Azure Database for MariaDB -description: Learn about the various pricing tiers for Azure Database for MariaDB including compute generations, storage types, storage size, vCores, memory, and backup retention periods. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: conceptual -ms.date: 06/24/2022 ---- - -# Azure Database for MariaDB pricing tiers - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -You can create an Azure Database for MariaDB server in one of three different pricing tiers: Basic, General Purpose, and Memory Optimized. The pricing tiers are differentiated by the amount of compute in vCores that can be provisioned, memory per vCore, and the storage technology used to store the data. All resources are provisioned at the MariaDB server level. A server can have one or many databases. - -| Resource | **Basic** | **General Purpose** | **Memory Optimized** | -|:---|:----------|:--------------------|:---------------------| -| Compute generation | Gen 5 |Gen 5 | Gen 5 | -| vCores | 1, 2 | 2, 4, 8, 16, 32, 64 |2, 4, 8, 16, 32 | -| Memory per vCore | 2 GB | 5 GB | 10 GB | -| Storage size | 5 GB to 1 TB | 5 GB to 16 TB | 5 GB to 16 TB | -| Database backup retention period | 7 to 35 days | 7 to 35 days | 7 to 35 days | - -To choose a pricing tier, use the following table as a starting point. - -| Pricing tier | Target workloads | -|:-------------|:-----------------| -| Basic | Workloads that require light compute and I/O performance. Examples include servers used for development or testing or small-scale infrequently used applications. | -| General Purpose | Most business workloads that require balanced compute and memory with scalable I/O throughput. Examples include servers for hosting web and mobile apps and other enterprise applications.| -| Memory Optimized | High-performance database workloads that require in-memory performance for faster transaction processing and higher concurrency. Examples include servers for processing real-time data and high-performance transactional or analytical apps.| - -After you create a server, the number of vCores, and pricing tier (except to and from Basic) can be changed up or down within seconds. You also can independently adjust the amount of storage up and the backup retention period up or down with no application downtime. You can't change the backup storage type after a server is created. For more information, see the [Scale resources](#scale-resources) section. - -## Compute generations and vCores - -Compute resources are provided as vCores, which represent the logical CPU of the underlying hardware. Gen 5 logical CPUs are based on Intel E5-2673 v4 (Broadwell) 2.3-GHz processors. - -## Storage - -The storage you provision is the amount of storage capacity available to your Azure Database for MariaDB server. The storage is used for the database files, temporary files, transaction logs, and the MariaDB server logs. The total amount of storage you provision also defines the I/O capacity available to your server. - -| Storage attributes | Basic | General Purpose | Memory Optimized | -|:---|:----------|:--------------------|:---------------------| -| Storage type | Basic Storage | General Purpose Storage | General Purpose Storage | -| Storage size | 5 GB to 1 TB | 5 GB to 16 TB | 5 GB to 16 TB | -| Storage increment size | 1 GB | 1 GB | 1 GB | -| IOPS | Variable |3 IOPS/GB
Min 100 IOPS
Max 6000 IOPS | 3 IOPS/GB
Min 100 IOPS
Max 6000 IOPS | - ->[!IMPORTANT] -> Storage up to 16TB and 20,000 IOPS is supported in the following regions: East US, East US 2, Central US, Brazil South, West US, North Central US, South Central US, North Europe, West Europe, UK South, UK West, Southeast Asia, East Asia, Japan East, Japan West, Korea Central, Korea South, Australia East, Australia South East, West US 2, West Central US, Canada East, and Canada Central. -> All other regions support up to 4TB of storage and up to 6000 IOPS. - -You can add additional storage capacity during and after the creation of the server, and allow the system to grow storage automatically based on the storage consumption of your workload. - ->[!NOTE] -> Storage can only be scaled up, not down. - -The Basic tier does not provide an IOPS guarantee. In the General Purpose and Memory Optimized pricing tiers, the IOPS scale with the provisioned storage size in a 3:1 ratio. - -You can monitor your I/O consumption in the Azure portal or by using Azure CLI commands. The relevant metrics to monitor are [storage limit, storage percentage, storage used, and IO percent](concepts-monitoring.md). - -### Reaching the storage limit - -Servers with less than equal to 100 GB provisioned storage are marked read-only if the free storage is less than 5% of the provisioned storage size. Servers with more than 100 GB provisioned storage are marked read only when the free storage is less than 5 GB. - -For example, if you have provisioned 110 GB of storage, and the actual utilization goes over 105 GB, the server is marked read-only. Alternatively, if you have provisioned 5 GB of storage, the server is marked read-only when the free storage reaches less than 256 MB. - -While the service attempts to make the server read-only, all new write transaction requests are blocked and existing active transactions will continue to execute. When the server is set to read-only, all subsequent write operations and transaction commits fail. Read queries will continue to work uninterrupted. After you increase the provisioned storage, the server will be ready to accept write transactions again. - -We recommend that you turn on storage auto-grow or to set up an alert to notify you when your server storage is approaching the threshold so you can avoid getting into the read-only state. For more information, see the documentation on [how to set up an alert](howto-alert-metric.md). - -### Storage auto-grow - -Storage auto-grow prevents your server from running out of storage and becoming read-only. If storage auto grow is enabled, the storage automatically grows without impacting the workload. For servers with less than equal to 100 GB provisioned storage, the provisioned storage size is increased by 5 GB when the free storage is below 10% of the provisioned storage. For servers with more than 100 GB of provisioned storage, the provisioned storage size is increased by 5% when the free storage space is below 10 GB of the provisioned storage size. Maximum storage limits as specified above apply. - -For example, if you have provisioned 1000 GB of storage, and the actual utilization goes over 990 GB, the server storage size is increased to 1050 GB. Alternatively, if you have provisioned 10 GB of storage, the storage size is increase to 15 GB when less than 1 GB of storage is free. - -Remember that storage can only be scaled up, not down. - -## Backup - -Azure Database for MariaDB provides up to 100% of your provisioned server storage as backup storage at no additional cost. Any backup storage you use in excess of this amount is charged in GB per month. For example, if you provision a server with 250 GB of storage, you’ll have 250 GB of additional storage available for server backups at no charge. Storage for backups in excess of the 250 GB is charged as per the [pricing model](https://azure.microsoft.com/pricing/details/mariadb/). To understand factors influencing backup storage usage, monitoring and controlling backup storage cost, you can refer to the [backup documentation](concepts-backup.md). - -## Scale resources - -After you create your server, you can independently change the vCores, the pricing tier (except to and from Basic), the amount of storage, and the backup retention period. You can't change the backup storage type after a server is created. The number of vCores can be scaled up or down. The backup retention period can be scaled up or down from 7 to 35 days. The storage size can only be increased. Scaling of the resources can be done either through the portal or Azure CLI. - -When you change the number of vCores, or the pricing tier, a copy of the original server is created with the new compute allocation. After the new server is up and running, connections are switched over to the new server. During the moment when the system switches over to the new server, no new connections can be established, and all uncommitted transactions are rolled back. This window varies, but in most cases, is less than a minute. - -Scaling storage and changing the backup retention period are true online operations. There is no downtime, and your application isn't affected. As IOPS scale with the size of the provisioned storage, you can increase the IOPS available to your server by scaling up storage. - -## Pricing - -For the most up-to-date pricing information, see the service [pricing page](https://azure.microsoft.com/pricing/details/mariadb/). To see the cost for the configuration you want, the [Azure portal](https://portal.azure.com/#create/Microsoft.MariaDBServer) shows the monthly cost on the **Pricing tier** tab based on the options you select. If you don't have an Azure subscription, you can use the Azure pricing calculator to get an estimated price. On the [Azure pricing calculator](https://azure.microsoft.com/pricing/calculator/) website, select **Add items**, expand the **Databases** category, and choose **Azure Database for MariaDB** to customize the options. - -## Next steps - -- Learn about the [service limitations](concepts-limits.md). -- Learn how to [create a MariaDB server in the Azure portal](quickstart-create-mariadb-server-database-using-azure-portal.md). diff --git a/articles/mariadb/concepts-query-performance-insight.md b/articles/mariadb/concepts-query-performance-insight.md deleted file mode 100644 index edec524ab5..0000000000 --- a/articles/mariadb/concepts-query-performance-insight.md +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Query Performance Insight - Azure Database for MariaDB -description: This article describes the Query Performance Insight feature in Azure Database for MariaDB -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: conceptual -ms.date: 06/24/2022 ---- -# Query Performance Insight in Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -**Applies to:** Azure Database for MariaDB 10.2 - -Query Performance Insight helps you to quickly identify what your longest running queries are, how they change over time, and what waits are affecting them. - -## Common scenarios - -### Long running queries - -- Identifying longest running queries in the past X hours -- Identifying top N queries that are waiting on resources - -### Wait statistics - -- Understanding wait nature for a query -- Understanding trends for resource waits and where resource contention exists - -## Prerequisites - -For Query Performance Insight to function, data must exist in the [Query Store](concepts-query-store.md). - -## Viewing performance insights - -The [Query Performance Insight](concepts-query-performance-insight.md) view in the Azure portal will surface visualizations on key information from Query Store. - -In the portal page of your Azure Database for MariaDB server, select **Query Performance Insight** under the **Intelligent Performance** section of the menu bar. - -### Long running queries - -The **Long running queries** tab shows the top 5 queries by average duration per execution, aggregated in 15-minute intervals. You can view more queries by selecting from the **Number of Queries** drop down. The chart colors may change for a specific Query ID when you do this. - -You can select and drag in the chart to narrow down to a specific time window. Alternatively, use the zoom in and out icons to view a smaller or larger time period respectively. - -![Query Performance Insight long running queries](./media/concepts-query-performance-insight/query-performance-insight-landing-page.png) - -### Wait statistics - -> [!NOTE] -> Wait statistics are meant for troubleshooting query performance issues. It is recommended to be turned on only for troubleshooting purposes.
If you receive the error message in the Azure portal "*The issue encountered for 'Microsoft.DBforMariaDB'; cannot fulfill the request. If this issue continues or is unexpected, please contact support with this information.*" while viewing wait statistics, use a smaller time period. - -Wait statistics provides a view of the wait events that occur during the execution of a specific query. Learn more about the wait event types in the [MySQL engine documentation](https://go.microsoft.com/fwlink/?linkid=2098206). - -Select the **Wait Statistics** tab to view the corresponding visualizations on waits in the server. - -Queries displayed in the wait statistics view are grouped by the queries that exhibit the largest waits during the specified time interval. - -![Query Performance Insight waits statistics](./media/concepts-query-performance-insight/query-performance-insight-wait-statistics.png) - -## Limitations - -* Query performance insight is not supported for version 10.3 - -## Next steps - -- Learn more about [monitoring and tuning](concepts-monitoring.md) in Azure Database for MariaDB. diff --git a/articles/mariadb/concepts-query-store.md b/articles/mariadb/concepts-query-store.md deleted file mode 100644 index 7ca887370e..0000000000 --- a/articles/mariadb/concepts-query-store.md +++ /dev/null @@ -1,180 +0,0 @@ ---- -title: Query Store - Azure Database for MariaDB -description: Learn about the Query Store feature in Azure Database for MariaDB to help you track performance over time. -author: code-sidd -ms.author: sisawant -ms.reviewer: maghan -ms.date: 04/18/2023 -ms.service: azure-database-mariadb -ms.topic: conceptual ---- - -# Monitor Azure Database for MariaDB performance with Query Store - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -**Applies to:** Azure Database for MariaDB 10.2 - -The Query Store feature in Azure Database for Mariadb provides a way to track query performance over time. Query Store simplifies performance troubleshooting by helping you quickly find the longest running and most resource-intensive queries. Query Store automatically captures a history of queries and runtime statistics, and it retains them for your review. It separates data by time windows so that you can see database usage patterns. Data for all users, databases, and queries is stored in the **mysql** schema database in the Azure Database for MariaDB instance. - -## Common scenarios for using Query Store - -Query store can be used in many scenarios, including the following: - -- Detecting regressed queries -- Determining the number of times a query was executed in a given time window -- Comparing the average execution time of a query across time windows to see large deltas - -## Enable Query Store - -Query Store is an opt-in feature, so it isn't active by default on a server. The query store is enabled or disabled globally for all the databases on a given server and cannot be turned on or off per database. - -### Enable Query Store using the Azure portal - -1. Sign in to the Azure portal and select your Azure Database for MariaDB server. -1. Select **Server Parameters** in the **Settings** section of the menu. -1. Search for the query_store_capture_mode parameter. -1. Set the value to ALL and **Save**. - -To enable wait statistics in your Query Store: - -1. Search for the query_store_wait_sampling_capture_mode parameter. -1. Set the value to ALL and **Save**. - -Allow up to 20 minutes for the first batch of data to persist in the mysql database. - -## Information in Query Store - -Query Store has two stores: - -- The runtime statistics store for persisting the query execution statistics information. -- The wait statistics store for persisting wait statistics information. - -To minimize space usage, the runtime execution statistics in the runtime statistics store are aggregated over a fixed, configurable time window. The information in these stores is visible by querying the query store views. - -The following query returns information about queries in Query Store: - -```sql -SELECT * FROM mysql.query_store; -``` - -Or this query for wait statistics: - -```sql -SELECT * FROM mysql.query_store_wait_stats; -``` - -## Find wait queries - -> [!NOTE] -> Wait statistics should not be enabled during peak workload hours or be turned on indefinitely for sensitive workloads.
For workloads running with high CPU utilization or on servers configured with lower vCores, use caution when enabling wait statistics. It should not be turned on indefinitely. - -Wait event types combine different wait events into buckets by similarity. Query Store provides the wait event type, specific wait event name, and the query in question. Being able to correlate this wait information with the query runtime statistics means you can gain a deeper understanding of what contributes to query performance characteristics. - -Here are some examples of how you can gain more insights into your workload using the wait statistics in Query Store: - -| **Observation** | **Action** | -| --- | --- | -| High Lock waits | Check the query texts for the affected queries and identify the target entities. Look in Query Store for other queries modifying the same entity, which is executed frequently and/or have high duration. After identifying these queries, consider changing the application logic to improve concurrency, or use a less restrictive isolation level. | -| High Buffer IO waits | Find the queries with a high number of physical reads in Query Store. If they match the queries with high IO waits, consider introducing an index on the underlying entity, to do seeks instead of scans. This would minimize the IO overhead of the queries. Check the **Performance Recommendations** for your server in the portal to see if there are index recommendations for this server that would optimize the queries. | -| High Memory waits | Find the top memory consuming queries in Query Store. These queries are probably delaying further progress of the affected queries. Check the **Performance Recommendations** for your server in the portal to see if there are index recommendations that would optimize these queries. | - -## Configuration options - -When Query Store is enabled it saves data in 15-minute aggregation windows, up to 500 distinct queries per window. - -The following options are available for configuring Query Store parameters. - -| **Parameter** | **Description** | **Default** | **Range** | -| --- | --- | --- | --- | -| query_store_capture_mode | Turn the query store feature ON/OFF based on the value. Note: If performance_schema is OFF, turning on query_store_capture_mode will turn on performance_schema and a subset of performance schema instruments required for this feature. | ALL | NONE, ALL | -| query_store_capture_interval | The query store capture interval in minutes. Allows specifying the interval in which the query metrics are aggregated | 15 | 5 - 60 | -| query_store_capture_utility_queries | Turning ON or OFF to capture all the utility queries that is executing in the system. | NO | YES, NO | -| query_store_retention_period_in_days | Time window in days to retain the data in the query store. | 7 | 1 - 30 | - -The following options apply specifically to wait statistics. - -| **Parameter** | **Description** | **Default** | **Range** | -| --- | --- | --- | --- | -| query_store_wait_sampling_capture_mode | Allows turning ON / OFF the wait statistics. | NONE | NONE, ALL | -| query_store_wait_sampling_frequency | Alters frequency of wait-sampling in seconds. 5 to 300 seconds. | 30 | 5-300 | - -> [!NOTE] -> Currently **query_store_capture_mode** supersedes this configuration, meaning both **query_store_capture_mode** and **query_store_wait_sampling_capture_mode** have to be enabled to ALL for wait statistics to work. If **query_store_capture_mode** is turned off, then wait statistics is turned off as well since wait statistics utilizes the performance_schema enabled, and the query_text captured by query store. - -Use the [Azure portal](howto-server-parameters.md) to get or set a different value for a parameter. - -## Views and functions - -View and manage Query Store using the following views and functions. Anyone in the [select privilege public role](howto-create-users.md#create-more-admin-users) can use these views to see the data in Query Store. These views are only available in the **mysql** database. - -Queries are normalized by looking at their structure after removing literals and constants. If two queries are identical except for literal values, they'll have the same hash. - -### mysql.query_store - -This view returns all the data in Query Store. There is one row for each distinct database ID, user ID, and query ID. - -| **Name** | **Data Type** | **IS_NULLABLE** | **Description** | -| --- | --- | --- | --- | -| `schema_name` | varchar(64) | NO | Name of the schema | -| `query_id` | bigint(20) | NO | Unique ID generated for the specific query, if the same query executes in different schema, a new ID will be generated | -| `timestamp_id` | timestamp | NO | Timestamp in which the query is executed. This is based on the query_store_interval configuration | -| `query_digest_text` | longtext | NO | The normalized query text after removing all the literals | -| `query_sample_text` | longtext | NO | First appearance of the actual query with literals | -| `query_digest_truncated` | bit | YES | Whether the query text has been truncated. Value will be Yes if the query is longer than 1 KB | -| `execution_count` | bigint(20) | NO | The number of times the query got executed for this timestamp ID / during the configured interval period | -| `warning_count` | bigint(20) | NO | Number of warnings this query generated during the internal | -| `error_count` | bigint(20) | NO | Number of errors this query generated during the interval | -| `sum_timer_wait` | double | YES | Total execution time of this query during the interval | -| `avg_timer_wait` | double | YES | Average execution time for this query during the interval | -| `min_timer_wait` | double | YES | Minimum execution time for this query | -| `max_timer_wait` | double | YES | Maximum execution time | -| `sum_lock_time` | bigint(20) | NO | Total amount of time spent for all the locks for this query execution during this time window | -| `sum_rows_affected` | bigint(20) | NO | Number of rows affected | -| `sum_rows_sent` | bigint(20) | NO | Number of rows sent to client | -| `sum_rows_examined` | bigint(20) | NO | Number of rows examined | -| `sum_select_full_join` | bigint(20) | NO | Number of full joins | -| `sum_select_scan` | bigint(20) | NO | Number of select scans | -| `sum_sort_rows` | bigint(20) | NO | Number of rows sorted | -| `sum_no_index_used` | bigint(20) | NO | Number of times when the query didn't use any indexes | -| `sum_no_good_index_used` | bigint(20) | NO | Number of times when the query execution engine didn't use any good indexes | -| `sum_created_tmp_tables` | bigint(20) | NO | Total number of temp tables created | -| `sum_created_tmp_disk_tables` | bigint(20) | NO | Total number of temp tables created in disk (generates I/O) | -| `first_seen` | timestamp | NO | The first occurrence (UTC) of the query during the aggregation window | -| `last_seen` | timestamp | NO | The last occurrence (UTC) of the query during this aggregation window | - -### mysql.query_store_wait_stats - -This view returns wait events data in Query Store. There's one row for each distinct database ID, user ID, query ID, and event. - -| **Name** | **Data Type** | **IS_NULLABLE** | **Description** | -| --- | --- | --- | --- | -| `interval_start` | timestamp | NO | Start of the interval (15-minute increment) | -| `interval_end` | timestamp | NO | End of the interval (15-minute increment) | -| `query_id` | bigint(20) | NO | Generated unique ID on the normalized query (from query store) | -| `query_digest_id` | varchar(32) | NO | The normalized query text after removing all the literals (from query store) | -| `query_digest_text` | longtext | NO | First appearance of the actual query with literals (from query store) | -| `event_type` | varchar(32) | NO | Category of the wait event | -| `event_name` | varchar(128) | NO | Name of the wait event | -| `count_star` | bigint(20) | NO | Number of wait events sampled during the interval for the query | -| `sum_timer_wait_ms` | double | NO | Total wait time (in milliseconds) of this query during the interval | - -### Functions - -| **Name** | **Description** | -| --- | --- | -| `mysql.az_purge_querystore_data(TIMESTAMP)` | Purges all query store data before the given time stamp | -| `mysql.az_procedure_purge_querystore_event(TIMESTAMP)` | Purges all wait event data before the given time stamp | -| `mysql.az_procedure_purge_recommendation(TIMESTAMP)` | Purges recommendations whose expiration is before the given time stamp | - -## Limitations and known issues - -- If a MariaDB server has the parameter `default_transaction_read_only` on, Query Store can't capture data. -- Query Store functionality can be interrupted if it encounters long Unicode queries (\>= 6000 bytes). -- The retention period for wait statistics is 24 hours. -- Wait statistics uses sample ti capture a fraction of events. The frequency can be modified using the parameter `query_store_wait_sampling_frequency`. -- Query store is not supported for version 10.3. - -## Next steps - -- Learn more about [Query Performance Insights](concepts-query-performance-insight.md) diff --git a/articles/mariadb/concepts-read-replicas.md b/articles/mariadb/concepts-read-replicas.md deleted file mode 100644 index b693b164b6..0000000000 --- a/articles/mariadb/concepts-read-replicas.md +++ /dev/null @@ -1,191 +0,0 @@ ---- -title: Read replicas - Azure Database for MariaDB -description: 'Learn about read replicas in Azure Database for MariaDB: choosing regions, creating replicas, connecting to replicas, monitoring replication, and stopping replication.' -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: conceptual -ms.date: 06/24/2022 -ms.custom: references_regions ---- - -# Read replicas in Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -The read replica feature allows you to replicate data from an Azure Database for MariaDB server to a read-only server. You can replicate from the source server to up to five replicas. Replicas are updated asynchronously using the MariaDB engine's binary log (binlog) file position-based replication technology with global transaction ID (GTID). To learn more about binlog replication, see the [binlog replication overview](https://mariadb.com/kb/en/library/replication-overview/). - -Replicas are new servers that you manage similar to regular Azure Database for MariaDB servers. For each read replica, you're billed for the provisioned compute in vCores and storage in GB/ month. - -To learn more about GTID replication, see the [MariaDB replication documentation](https://mariadb.com/kb/en/library/gtid/). - -> [!NOTE] -> This article contains references to the term *slave*, a term that Microsoft no longer uses. When the term is removed from the software, we'll remove it from this article. - -## When to use a read replica - -The read replica feature helps to improve the performance and scale of read-intensive workloads. Read workloads can be isolated to the replicas, while write workloads can be directed to the primary. - -A common scenario is to have BI and analytical workloads use the read replica as the data source for reporting. - -Because replicas are read-only, they don't directly reduce write-capacity burdens on the primary. This feature isn't targeted at write-intensive workloads. - -The read replica feature uses asynchronous replication. The feature isn't meant for synchronous replication scenarios. There will be a measurable delay between the source and the replica. The data on the replica eventually becomes consistent with the data on the primary. Use this feature for workloads that can accommodate this delay. - -## Cross-region replication - -You can create a read replica in a different region from your source server. Cross-region replication can be helpful for scenarios like disaster recovery planning or bringing data closer to your users. - -You can have a source server in any [Azure Database for MariaDB region](https://azure.microsoft.com/global-infrastructure/services/?products=mariadb). A source server can have a replica in its paired region or the universal replica regions. The picture below shows which replica regions are available depending on your source region. - -[![Read replica regions](media/concepts-read-replica/read-replica-regions.png)](media/concepts-read-replica/read-replica-regions.png#lightbox) - -### Universal replica regions - -You can create a read replica in any of the following regions, regardless of where your source server is located. The supported universal replica regions include: - -Australia East, Australia Southeast, Brazil South, Canada Central, Canada East, Central US, East Asia, East US, East US 2, Japan East, Japan West, Korea Central, Korea South, North Central US, North Europe, South Central US, Southeast Asia, UK South, UK West, West Europe, West US, West US 2, West Central US. - -### Paired regions - -In addition to the universal replica regions, you can create a read replica in the Azure paired region of your source server. If you don't know your region's pair, you can learn more from the [Azure Paired Regions article](/azure/availability-zones/cross-region-replication-azure). - -If you are using cross-region replicas for disaster recovery planning, we recommend you create the replica in the paired region instead of one of the other regions. Paired regions avoid simultaneous updates and prioritize physical isolation and data residency. - -However, there are limitations to consider: - -* Regional availability: Azure Database for MariaDB is available in France Central, UAE North, and Germany Central. However, their paired regions are not available. - -* Uni-directional pairs: Some Azure regions are paired in one direction only. These regions include West India, Brazil South, and US Gov Virginia. - This means that a source server in West India can create a replica in South India. However, a source server in South India cannot create a replica in West India. This is because West India's secondary region is South India, but South India's secondary region is not West India. - -## Create a replica - -> [!IMPORTANT] -> The read replica feature is only available for Azure Database for MariaDB servers in the General Purpose or Memory Optimized pricing tiers. Ensure the source server is in one of these pricing tiers. - -If a source server has no existing replica servers, the source will first restart to prepare itself for replication. - -When you start the create replica workflow, a blank Azure Database for MariaDB server is created. The new server is filled with the data that was on the source server. The creation time depends on the amount of data on the source and the time since the last weekly full backup. The time can range from a few minutes to several hours. - -> [!NOTE] -> If you don't have a storage alert set up on your servers, we recommend that you do so. The alert informs you when a server is approaching its storage limit, which will affect the replication. - -Learn how to [create a read replica in the Azure portal](howto-read-replicas-portal.md). - -## Connect to a replica - -At creation, a replica inherits the firewall rules of the source server. Afterwards, these rules are independent from the source server. - -The replica inherits the admin account from the source server. All user accounts on the source server are replicated to the read replicas. You can only connect to a read replica by using the user accounts that are available on the source server. - -You can connect to the replica by using its hostname and a valid user account, as you would on a regular Azure Database for MariaDB server. For a server named **myreplica** with the admin username **myadmin**, you can connect to the replica by using the mysql CLI: - -```bash -mysql -h myreplica.mariadb.database.azure.com -u myadmin@myreplica -p -``` - -At the prompt, enter the password for the user account. - -## Monitor replication - -Azure Database for MariaDB provides the **Replication lag in seconds** metric in Azure Monitor. This metric is available for replicas only. - -This metric is calculated using the `seconds_behind_master` metric available in MariaDB's `SHOW SLAVE STATUS` command. - -Set an alert to inform you when the replication lag reaches a value that isn't acceptable for your workload. - -## Stop replication - -You can stop replication between a source and a replica. After replication is stopped between a source server and a read replica, the replica becomes a standalone server. The data in the standalone server is the data that was available on the replica at the time the stop replication command was started. The standalone server doesn't catch up with the source server. - -When you choose to stop replication to a replica, it loses all links to its previous source and other replicas. There is no automated failover between a source and its replica. - -> [!IMPORTANT] -> The standalone server can't be made into a replica again. -> Before you stop replication on a read replica, ensure the replica has all the data that you require. - -Learn how to [stop replication to a replica](howto-read-replicas-portal.md). - -## Failover - -There is no automated failover between source and replica servers. - -Since replication is asynchronous, there is lag between the source and the replica. The amount of lag can be influenced by a number of factors like how heavy the workload running on the source server is and the latency between data centers. In most cases, replica lag ranges between a few seconds to a couple minutes. You can track your actual replication lag using the metric *Replica Lag*, which is available for each replica. This metric shows the time since the last replayed transaction. We recommend that you identify what your average lag is by observing your replica lag over a period of time. You can set an alert on replica lag, so that if it goes outside your expected range, you can take action. - -> [!Tip] -> If you failover to the replica, the lag at the time you delink the replica from the source will indicate how much data is lost. - -After you have decided you want to failover to a replica, - -1. Stop replication to the replica. - - This step is necessary to make the replica server able to accept writes. As part of this process, the replica server will be delinked from the primary. After you initiate stop replication, the backend process typically takes about 2 minutes to complete. See the [stop replication](#stop-replication) section of this article to understand the implications of this action. - -2. Point your application to the (former) replica. - - Each server has a unique connection string. Update your application to point to the (former) replica instead of the primary. - -After your application is successfully processing reads and writes, you have completed the failover. The amount of downtime your application experiences will depend on when you detect an issue and complete steps 1 and 2 above. - -## Considerations and limitations - -### Pricing tiers - -Read replicas are currently only available in the General Purpose and Memory Optimized pricing tiers. - -> [!NOTE] -> The cost of running the replica server is based on the region where the replica server is running. - -### Source server restart - -When you create a replica for a source that has no existing replicas, the source will first restart to prepare itself for replication. Take this into consideration and perform these operations during an off-peak period. - -### New replicas - -A read replica is created as a new Azure Database for MariaDB server. An existing server can't be made into a replica. You can't create a replica of another read replica. - -### Replica configuration - -A replica is created by using the same server configuration as the primary. After a replica is created, several settings can be changed independently from the source server: compute generation, vCores, storage, backup retention period, and MariaDB engine version. The pricing tier can also be changed independently, except to or from the Basic tier. - -> [!IMPORTANT] -> Before a source server configuration is updated to new values, update the replica configuration to equal or greater values. This action ensures the replica can keep up with any changes made to the primary. - -Firewall rules and parameter settings are inherited from the source server to the replica when the replica is created. Afterwards, the replica's rules are independent. - -### Stopped replicas - -If you stop replication between a source server and a read replica, the stopped replica becomes a standalone server that accepts both reads and writes. The standalone server can't be made into a replica again. - -### Deleted source and standalone servers - -When a source server is deleted, replication is stopped to all read replicas. These replicas automatically become standalone servers and can accept both reads and writes. The source server itself is deleted. - -### User accounts - -Users on the source server are replicated to the read replicas. You can only connect to a read replica using the user accounts available on the source server. - -### Server parameters - -To prevent data from becoming out of sync and to avoid potential data loss or corruption, some server parameters are locked from being updated when using read replicas. - -The following server parameters are locked on both the source and replica servers: - -* [`innodb_file_per_table`](https://mariadb.com/kb/en/library/innodb-system-variables/#innodb_file_per_table) -* [`log_bin_trust_function_creators`](https://mariadb.com/kb/en/library/replication-and-binary-log-system-variables/#log_bin_trust_function_creators) - -The [`event_scheduler`](https://mariadb.com/kb/en/library/server-system-variables/#event_scheduler) parameter is locked on the replica servers. - -To update one of the above parameters on the source server, please delete replica servers, update the parameter value on the primary, and recreate replicas. - -### Other - -* Creating a replica of a replica is not supported. -* In-memory tables may cause replicas to become out of sync. This is a limitation of the MariaDB replication technology. -* Ensure the source server tables have primary keys. Lack of primary keys may result in replication latency between the source and replicas. - -## Next steps - -* Learn how to [create and manage read replicas using the Azure portal](howto-read-replicas-portal.md) -* Learn how to [create and manage read replicas using the Azure CLI and REST API](howto-read-replicas-cli.md) diff --git a/articles/mariadb/concepts-security.md b/articles/mariadb/concepts-security.md deleted file mode 100644 index 89ae7d2a17..0000000000 --- a/articles/mariadb/concepts-security.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Security - Azure Database for MariaDB -description: An overview of the security features in Azure Database for MariaDB. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: conceptual -ms.date: 06/24/2022 ---- - -# Security in Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -There are multiple layers of security that are available to protect the data on your Azure Database for MariaDB server. This article outlines those security options. - -## Information protection and encryption - -### In-transit - -Azure Database for MariaDB secures your data by encrypting data in-transit with Transport Layer Security. Encryption (SSL/TLS) is enforced by default. - -### At-rest - -The Azure Database for MariaDB service uses the FIPS 140-2 validated cryptographic module for storage encryption of data at-rest. Data, including backups, are encrypted on disk, with the exception of temporary files created while running queries. The service uses the AES 256-bit cipher included in Azure storage encryption, and the keys are system managed. Storage encryption is always on and can't be disabled. - -## Network security - -Connections to an Azure Database for MariaDB server are first routed through a regional gateway. The gateway has a publicly accessible IP, while the server IP addresses are protected. For more information about the gateway, visit the [connectivity architecture article](concepts-connectivity-architecture.md). - -A newly created Azure Database for MariaDB server has a firewall that blocks all external connections. Though they reach the gateway, they are not allowed to connect to the server. - -### IP firewall rules - -IP firewall rules grant access to servers based on the originating IP address of each request. See the [firewall rules overview](concepts-firewall-rules.md) for more information. - -### Virtual network firewall rules - -Virtual network service endpoints extend your virtual network connectivity over the Azure backbone. Using virtual network rules you can enable your Azure Database for MariaDB server to allow connections from selected subnets in a virtual network. For more information, see the [virtual network service endpoint overview](concepts-data-access-security-vnet.md). - -## Access management - -While creating the Azure Database for MariaDB server, you provide credentials for an administrator user. This administrator can be used to create additional MariaDB users. - -## Threat protection - -You can opt in to [Advanced Threat Protection](/azure/security-center/defender-for-databases-introduction) which detects anomalous activities indicating unusual and potentially harmful attempts to access or exploit servers. - -[Audit logging](concepts-audit-logs.md) is available to track activity in your databases. - -## Next steps - -- Enable firewall rules for [IPs](concepts-firewall-rules.md) or [virtual networks](concepts-data-access-security-vnet.md) diff --git a/articles/mariadb/concepts-server-logs.md b/articles/mariadb/concepts-server-logs.md deleted file mode 100644 index 117f6a16ad..0000000000 --- a/articles/mariadb/concepts-server-logs.md +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: Slow query logs - Azure Database for MariaDB -description: Describes the logs available in Azure Database for MariaDB, and the available parameters for enabling different logging levels. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: conceptual -ms.date: 06/24/2022 ---- -# Slow query logs in Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -In Azure Database for MariaDB, the slow query log is available to users. Access to the transaction log is not supported. The slow query log can be used to identify performance bottlenecks for troubleshooting. - -For more information about the slow query log, see the MariaDB documentation for [slow query log](https://mariadb.com/kb/en/library/slow-query-log-overview/). - -When [Query Store](concepts-query-store.md) is enabled on your server, you may see the queries like "`CALL mysql.az_procedure_collect_wait_stats (900, 30);`" logged in your slow query logs. This behavior is expected as the Query Store feature collects statistics about your queries. - -## Configure slow query logging - -By default the slow query log is disabled. To enable it, set `slow_query_log` to ON. This can be enabled using the Azure portal or Azure CLI. - -Other parameters you can adjust include: - -- **long_query_time**: if a query takes longer than long_query_time (in seconds) that query is logged. The default is 10 seconds. -- **log_slow_admin_statements**: if ON includes administrative statements like ALTER_TABLE and ANALYZE_TABLE in the statements written to the slow_query_log. -- **log_queries_not_using_indexes**: determines whether queries that do not use indexes are logged to the slow_query_log -- **log_throttle_queries_not_using_indexes**: This parameter limits the number of non-index queries that can be written to the slow query log. This parameter takes effect when log_queries_not_using_indexes is set to ON. -- **log_output**: if "File", allows the slow query log to be written to both the local server storage and to Azure Monitor Diagnostic Logs. If "None", the slow query log will only be written to Azure Monitor Diagnostics Logs. - -> [!IMPORTANT] -> If your tables are not indexed, setting the `log_queries_not_using_indexes` and `log_throttle_queries_not_using_indexes` parameters to ON may affect MariaDB performance since all queries running against these non-indexed tables will be written to the slow query log.

-> If you plan on logging slow queries for an extended period of time, it is recommended to set `log_output` to "None". If set to "File", these logs are written to the local server storage and can affect MariaDB performance. - -See the MariaDB [slow query log documentation](https://mariadb.com/kb/en/library/slow-query-log-overview/) for full descriptions of the slow query log parameters. - -## Access slow query logs - -There are two options for accessing slow query logs in Azure Database for MariaDB: local server storage or Azure Monitor Diagnostic Logs. This is set using the `log_output` parameter. - -For local server storage, you can list and download slow query logs using the Azure portal or the Azure CLI. In the Azure portal, navigate to your server in the Azure portal. Under the **Monitoring** heading, select the **Server Logs** page. For more information on Azure CLI, see [Configure and access server logs using Azure CLI](howto-configure-server-logs-cli.md). - -Azure Monitor Diagnostic Logs allows you to pipe slow query logs to Azure Monitor Logs (Log Analytics), Azure Storage, or Event Hubs. See [below](concepts-server-logs.md#diagnostic-logs) for more information. - -## Local server storage log retention - -When logging to the server's local storage, logs are available for up to seven days from their creation. If the total size of the available logs exceeds 7 GB, then the oldest files are deleted until space is available. The 7 GB storage limit for the server logs is available free of cost and cannot be extended. - -Logs are rotated every 24 hours or 7 GB, whichever comes first. - -> [!Note] -> The above log retention does not apply to logs that are piped using Azure Monitor Diagnostic Logs. You can change the retention period for the data sinks being emitted to (ex. Azure Storage). - -## Diagnostic logs - -Azure Database for MariaDB is integrated with Azure Monitor Diagnostic Logs. Once you have enabled slow query logs on your MariaDB server, you can choose to have them emitted to Azure Monitor logs, Event Hubs, or Azure Storage. To learn more about how to enable diagnostic logs, see the how to section of the [diagnostic logs documentation](/azure/azure-monitor/essentials/platform-logs-overview). - -The following table describes what's in each log. Depending on the output method, the fields included and the order in which they appear may vary. - -| **Property** | **Description** | -|---|---| -| `TenantId` | Your tenant ID | -| `SourceSystem` | `Azure` | -| `TimeGenerated` [UTC] | Time stamp when the log was recorded in UTC | -| `Type` | Type of the log. Always `AzureDiagnostics` | -| `SubscriptionId` | GUID for the subscription that the server belongs to | -| `ResourceGroup` | Name of the resource group the server belongs to | -| `ResourceProvider` | Name of the resource provider. Always `MICROSOFT.DBFORMARIADB` | -| `ResourceType` | `Servers` | -| `ResourceId` | Resource URI | -| `Resource` | Name of the server | -| `Category` | `MySqlSlowLogs` | -| `OperationName` | `LogEvent` | -| `Logical_server_name_s` | Name of the server | -| `start_time_t` [UTC] | Time the query began | -| `query_time_s` | Total time the query took to execute | -| `lock_time_s` | Total time the query was locked | -| `user_host_s` | Username | -| `rows_sent_s` | Number of rows sent | -| `rows_examined_s` | Number of rows examined | -| `last_insert_id_s` | [last_insert_id](https://mariadb.com/kb/en/library/last_insert_id/) | -| `insert_id_s` | Insert ID | -| `sql_text_s` | Full query | -| `server_id_s` | Server ID | -| `thread_id_s` | Thread ID | -| `\_ResourceId` | Resource URI | - -> [!Note] -> For `sql_text`, log will be truncated if it exceeds 2048 characters. - -## Analyze logs in Azure Monitor Logs - -Once your slow query logs are piped to Azure Monitor Logs through Diagnostic Logs, you can perform further analysis of your slow queries. Below are some sample queries to help you get started. Make sure to update the below with your server name. - -- Queries longer than 10 seconds on a particular server - - ```Kusto - AzureDiagnostics - | where LogicalServerName_s == '' - | where Category == 'MySqlSlowLogs' - | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s - | where query_time_d > 10 - ``` - -- List top 5 longest queries on a particular server - - ```Kusto - AzureDiagnostics - | where LogicalServerName_s == '' - | where Category == 'MySqlSlowLogs' - | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s - | order by query_time_d desc - | take 5 - ``` - -- Summarize slow queries by minimum, maximum, average, and standard deviation query time on a particular server - - ```Kusto - AzureDiagnostics - | where LogicalServerName_s == '' - | where Category == 'MySqlSlowLogs' - | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s - | summarize count(), min(query_time_d), max(query_time_d), avg(query_time_d), stdev(query_time_d), percentile(query_time_d, 95) by LogicalServerName_s - ``` - -- Graph the slow query distribution on a particular server - - ```Kusto - AzureDiagnostics - | where LogicalServerName_s == '' - | where Category == 'MySqlSlowLogs' - | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s - | summarize count() by LogicalServerName_s, bin(TimeGenerated, 5m) - | render timechart - ``` - -- Display queries longer than 10 seconds across all MariaDB servers with Diagnostic Logs enabled - - ```Kusto - AzureDiagnostics - | where Category == 'MySqlSlowLogs' - | project TimeGenerated, LogicalServerName_s, event_class_s, start_time_t , query_time_d, sql_text_s - | where query_time_d > 10 - ``` - -## Next Steps - -- [How to configure slow query logs from the Azure portal](howto-configure-server-logs-portal.md) -- [How to configure slow query logs from the Azure CLI](howto-configure-server-logs-cli.md) diff --git a/articles/mariadb/concepts-server-parameters.md b/articles/mariadb/concepts-server-parameters.md deleted file mode 100644 index 7aadacdfa7..0000000000 --- a/articles/mariadb/concepts-server-parameters.md +++ /dev/null @@ -1,236 +0,0 @@ ---- -title: Server parameters - Azure Database for MariaDB -description: This topic provides guidelines for configuring server parameters in Azure Database for MariaDB. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: conceptual -ms.date: 06/24/2022 ---- -# Server parameters in Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This article provides considerations and guidelines for configuring server parameters in Azure Database for MariaDB. - -## What are server parameters? - -The MariaDB engine provides many different server variables/parameters that can be used to configure and tune engine behavior. Some parameters can be set dynamically during runtime while others are "static", requiring a server restart in order to apply. - -Azure Database for MariaDB exposes the ability to change the value of various MariaDB server parameters using the [Azure portal](./howto-server-parameters.md), [Azure CLI](./howto-configure-server-parameters-cli.md), and [PowerShell](./howto-configure-server-parameters-using-powershell.md) to match your workload's needs. - -## Configurable server parameters - -The list of supported server parameters is constantly growing. Use the server parameters tab in the Azure portal to view the full list and configure server parameters values. - -Refer to the following sections below to learn more about the limits of the several commonly updated server parameters. The limits are determined by the pricing tier and vCores of the server. - -### log_bin_trust_function_creators - -In Azure Database for MariaDB, binary logs are always enabled (i.e. `log_bin` is set to ON). In case you want to use triggers you will get error similar to *you do not have the SUPER privilege and binary logging is enabled (you might want to use the less safe `log_bin_trust_function_creators` variable)*. - -The binary logging format is always **ROW** and all connections to the server **ALWAYS** use row-based binary logging. With row-based binary logging, security issues do not exist and binary logging cannot break, so you can safely set [`log_bin_trust_function_creators`](https://mariadb.com/docs/reference/mdb/system-variables/log_bin_trust_function_creators/) to **TRUE**. - -### innodb_buffer_pool_size - -Review the [MariaDB documentation](https://mariadb.com/kb/en/innodb-system-variables/#innodb_buffer_pool_size) to learn more about this parameter. - -#### Servers supporting up to 4 TB storage - -|**Pricing Tier**|**vCore(s)**|**Default value (bytes)**|**Min value (bytes)**|**Max value (bytes)**| -|---|---|---|---|---| -|Basic|1|872415232|134217728|872415232| -|Basic|2|2684354560|134217728|2684354560| -|General Purpose|2|3758096384|134217728|3758096384| -|General Purpose|4|8053063680|134217728|8053063680| -|General Purpose|8|16106127360|134217728|16106127360| -|General Purpose|16|32749125632|134217728|32749125632| -|General Purpose|32|66035122176|134217728|66035122176| -|General Purpose|64|132070244352|134217728|132070244352| -|Memory Optimized|2|7516192768|134217728|7516192768| -|Memory Optimized|4|16106127360|134217728|16106127360| -|Memory Optimized|8|32212254720|134217728|32212254720| -|Memory Optimized|16|65498251264|134217728|65498251264| -|Memory Optimized|32|132070244352|134217728|132070244352| - -#### Servers support up to 16 TB storage - -|**Pricing Tier**|**vCore(s)**|**Default value (bytes)**|**Min value (bytes)**|**Max value (bytes)**| -|---|---|---|---|---| -|Basic|1|872415232|134217728|872415232| -|Basic|2|2684354560|134217728|2684354560| -|General Purpose|2|7516192768|134217728|7516192768| -|General Purpose|4|16106127360|134217728|16106127360| -|General Purpose|8|32212254720|134217728|32212254720| -|General Purpose|16|65498251264|134217728|65498251264| -|General Purpose|32|132070244352|134217728|132070244352| -|General Purpose|64|264140488704|134217728|264140488704| -|Memory Optimized|2|15032385536|134217728|15032385536| -|Memory Optimized|4|32212254720|134217728|32212254720| -|Memory Optimized|8|64424509440|134217728|64424509440| -|Memory Optimized|16|130996502528|134217728|130996502528| -|Memory Optimized|32|264140488704|134217728|264140488704| - -### innodb_file_per_table - -> [!NOTE] -> `innodb_file_per_table` can only be updated in the General Purpose and Memory Optimized pricing tiers. - -MariaDB stores the InnoDB table in different tablespaces based on the configuration you provided during the table creation. The [system tablespace](https://mariadb.com/kb/en/innodb-system-tablespaces/) is the storage area for the InnoDB data dictionary. A [file-per-table tablespace](https://mariadb.com/kb/en/innodb-file-per-table-tablespaces/) contains data and indexes for a single InnoDB table, and is stored in the file system in its own data file. This behavior is controlled by the `innodb_file_per_table` server parameter. Setting `innodb_file_per_table` to `OFF` causes InnoDB to create tables in the system tablespace. Otherwise, InnoDB creates tables in file-per-table tablespaces. - -Azure Database for MariaDB supports at largest, **1 TB**, in a single data file. If your database size is larger than 1 TB, you should create the table in [innodb_file_per_table](https://mariadb.com/kb/en/innodb-system-variables/#innodb_file_per_table) tablespace. If you have a single table size larger than 1 TB, you should use the partition table. - -### join_buffer_size - -Review the [MariaDB documentation](https://mariadb.com/kb/en/server-system-variables/#join_buffer_size) to learn more about this parameter. - -|**Pricing Tier**|**vCore(s)**|**Default value (bytes)**|**Min value (bytes)**|**Max value (bytes)**| -|---|---|---|---|---| -|Basic|1|Not configurable in Basic tier|N/A|N/A| -|Basic|2|Not configurable in Basic tier|N/A|N/A| -|General Purpose|2|262144|128|268435455| -|General Purpose|4|262144|128|536870912| -|General Purpose|8|262144|128|1073741824| -|General Purpose|16|262144|128|2147483648| -|General Purpose|32|262144|128|4294967295| -|General Purpose|64|262144|128|4294967295| -|Memory Optimized|2|262144|128|536870912| -|Memory Optimized|4|262144|128|1073741824| -|Memory Optimized|8|262144|128|2147483648| -|Memory Optimized|16|262144|128|4294967295| -|Memory Optimized|32|262144|128|4294967295| - -### max_connections - -|**Pricing Tier**|**vCore(s)**|**Default value**|**Min value**|**Max value**| -|---|---|---|---|---| -|Basic|1|50|10|50| -|Basic|2|100|10|100| -|General Purpose|2|300|10|600| -|General Purpose|4|625|10|1250| -|General Purpose|8|1250|10|2500| -|General Purpose|16|2500|10|5000| -|General Purpose|32|5000|10|10000| -|General Purpose|64|10000|10|20000| -|Memory Optimized|2|625|10|1250| -|Memory Optimized|4|1250|10|2500| -|Memory Optimized|8|2500|10|5000| -|Memory Optimized|16|5000|10|10000| -|Memory Optimized|32|10000|10|20000| - -When connections exceed the limit, you may receive the following error: -> ERROR 1040 (08004): Too many connections - -> [!IMPORTANT] -> For best experience, we recommend that you use a connection pooler like ProxySQL to efficiently manage connections. - -Creating new client connections to MariaDB takes time and once established, these connections occupy database resources, even when idle. Most applications request many short-lived connections, which compounds this situation. The result is fewer resources available for your actual workload leading to decreased performance. A connection pooler that decreases idle connections and reuses existing connections will help avoid this. To learn about setting up ProxySQL, visit our [blog post](https://techcommunity.microsoft.com/t5/azure-database-for-mysql/load-balance-read-replicas-using-proxysql-in-azure-database-for/ba-p/880042). - ->[!Note] ->ProxySQL is an open source community tool. It is supported by Microsoft on a best effort basis. In order to get production support with authoritative guidance, you can evaluate and reach out to [ProxySQL Product support](https://proxysql.com/services/support/). - -### max_heap_table_size - -Review the [MariaDB documentation](https://mariadb.com/kb/en/server-system-variables/#max_heap_table_size) to learn more about this parameter. - -|**Pricing Tier**|**vCore(s)**|**Default value (bytes)**|**Min value (bytes)**|**Max value (bytes)**| -|---|---|---|---|---| -|Basic|1|Not configurable in Basic tier|N/A|N/A| -|Basic|2|Not configurable in Basic tier|N/A|N/A| -|General Purpose|2|16777216|16384|268435455| -|General Purpose|4|16777216|16384|536870912| -|General Purpose|8|16777216|16384|1073741824| -|General Purpose|16|16777216|16384|2147483648| -|General Purpose|32|16777216|16384|4294967295| -|General Purpose|64|16777216|16384|4294967295| -|Memory Optimized|2|16777216|16384|536870912| -|Memory Optimized|4|16777216|16384|1073741824| -|Memory Optimized|8|16777216|16384|2147483648| -|Memory Optimized|16|16777216|16384|4294967295| -|Memory Optimized|32|16777216|16384|4294967295| - -### query_cache_size - -The query cache is enabled by default in MariaDB with the `have_query_cache` parameter. - -Review the [MariaDB documentation](https://mariadb.com/kb/en/server-system-variables/#query_cache_size) to learn more about this parameter. - -|**Pricing Tier**|**vCore(s)**|**Default value (bytes)**|**Min value (bytes)**|**Max value (bytes)**| -|---|---|---|---|---| -|Basic|1|Not configurable in Basic tier|N/A|N/A| -|Basic|2|Not configurable in Basic tier|N/A|N/A| -|General Purpose|2|0|0|16777216| -|General Purpose|4|0|0|33554432| -|General Purpose|8|0|0|67108864| -|General Purpose|16|0|0|134217728| -|General Purpose|32|0|0|134217728| -|General Purpose|64|0|0|134217728| -|Memory Optimized|2|0|0|33554432| -|Memory Optimized|4|0|0|67108864| -|Memory Optimized|8|0|0|134217728| -|Memory Optimized|16|0|0|134217728| -|Memory Optimized|32|0|0|134217728| - -### sort_buffer_size - -Review the [MariaDB documentation](https://mariadb.com/kb/en/server-system-variables/#sort_buffer_size) to learn more about this parameter. - -|**Pricing Tier**|**vCore(s)**|**Default value (bytes)**|**Min value (bytes)**|**Max value (bytes)**| -|---|---|---|---|---| -|Basic|1|Not configurable in Basic tier|N/A|N/A| -|Basic|2|Not configurable in Basic tier|N/A|N/A| -|General Purpose|2|524288|32768|4194304| -|General Purpose|4|524288|32768|8388608| -|General Purpose|8|524288|32768|16777216| -|General Purpose|16|524288|32768|33554432| -|General Purpose|32|524288|32768|33554432| -|General Purpose|64|524288|32768|33554432| -|Memory Optimized|2|524288|32768|8388608| -|Memory Optimized|4|524288|32768|16777216| -|Memory Optimized|8|524288|32768|33554432| -|Memory Optimized|16|524288|32768|33554432| -|Memory Optimized|32|524288|32768|33554432| - -### tmp_table_size - -Review the [MariaDB documentation](https://mariadb.com/kb/en/server-system-variables/#tmp_table_size) to learn more about this parameter. - -|**Pricing Tier**|**vCore(s)**|**Default value (bytes)**|**Min value (bytes)**|**Max value (bytes)**| -|---|---|---|---|---| -|Basic|1|Not configurable in Basic tier|N/A|N/A| -|Basic|2|Not configurable in Basic tier|N/A|N/A| -|General Purpose|2|16777216|1024|67108864| -|General Purpose|4|16777216|1024|134217728| -|General Purpose|8|16777216|1024|268435456| -|General Purpose|16|16777216|1024|536870912| -|General Purpose|32|16777216|1024|1073741824| -|General Purpose|64|16777216|1024|1073741824| -|Memory Optimized|2|16777216|1024|134217728| -|Memory Optimized|4|16777216|1024|268435456| -|Memory Optimized|8|16777216|1024|536870912| -|Memory Optimized|16|16777216|1024|1073741824| -|Memory Optimized|32|16777216|1024|1073741824| - -### time_zone - -Upon initial deployment, an Azure for MariaDB server includes systems tables for time zone information, but these tables are not populated. The time zone tables can be populated by calling the `mysql.az_load_timezone` stored procedure from a tool like the MySQL command line or MySQL Workbench. Refer to the [Azure portal](howto-server-parameters.md#working-with-the-time-zone-parameter) or [Azure CLI](howto-configure-server-parameters-cli.md#working-with-the-time-zone-parameter) articles for how to call the stored procedure and set the global or session-level time zones. - -## Non-configurable server parameters - -The below server parameters are not configurable in the service: - -|**Parameter**|**Fixed value**| -| :------------------------ | :-------- | -|innodb_file_per_table in Basic tier|OFF| -|innodb_flush_log_at_trx_commit|1| -|sync_binlog|1| -|innodb_log_file_size|256MB| -|innodb_log_files_in_group|2| - -Other server parameters that are not listed here are set to their MariaDB out-of-box default values for [MariaDB](https://mariadb.com/kb/en/server-system-variables/). - -## Next steps - -- Learn how to [configure sever parameters using the Azure portal](./howto-server-parameters.md) -- Learn how to [configure sever parameters using the Azure CLI](./howto-configure-server-parameters-cli.md) -- Learn how to [configure sever parameters using PowerShell](./howto-configure-server-parameters-using-powershell.md) diff --git a/articles/mariadb/concepts-servers.md b/articles/mariadb/concepts-servers.md deleted file mode 100644 index 53bbaab52d..0000000000 --- a/articles/mariadb/concepts-servers.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: Servers - Azure Database for MariaDB -description: This topic provides considerations and guidelines for working with Azure Database for MariaDB servers. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: conceptual -ms.date: 06/24/2022 ---- -# Server concepts in Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This article provides considerations and guidelines for working with Azure Database for MariaDB servers. - -## What is an Azure Database for MariaDB server? - -An Azure Database for MariaDB server is a central administrative point for multiple databases. It is the same MariaDB server construct that you may be familiar with in the on-premises world. Specifically, the Azure Database for MariaDB service is managed, provides performance guarantees, and exposes access and features at server-level. - -An Azure Database for MariaDB server: - -- Is created within an Azure subscription. -- Is the parent resource for databases. -- Provides a namespace for databases. -- Is a container with strong lifetime semantics - delete a server and it deletes the contained databases. -- Collocates resources in a region. -- Provides a connection endpoint for server and database access. -- Provides the scope for management policies that apply to its databases: login, firewall, users, roles, configurations, etc. -- Is available in MariaDB engine version 10.2. For more information, see [Supported Azure Database for MariaDB database versions](./concepts-supported-versions.md). - -Within an Azure Database for MariaDB server, you can create one or multiple databases. You can opt to create a single database per server to use all the resources or to create multiple databases to share the resources. The pricing is structured per-server, based on the configuration of pricing tier, vCores, and storage (GB). For more information, see [Pricing tiers](./concepts-pricing-tiers.md). - -## How do I secure an Azure Database for MariaDB server? - -The following elements help ensure safe access to your database. - -| Security concept | Description | -| :-- | :-- | -| **Authentication and authorization** | Azure Database for MariaDB server supports native MySQL authentication. You can connect and authenticate to a server with the server's admin login. | -| **Protocol** | The service supports a message-based protocol used by MySQL. | -| **TCP/IP** | The protocol is supported over TCP/IP and over Unix-domain sockets. | -| **Firewall** | To help protect your data, a firewall rule prevents all access to your database server, until you specify which computers have permission. See [Azure Database for MariaDB Server firewall rules](./concepts-firewall-rules.md). | -| **SSL** | The service supports enforcing SSL connections between your applications and your database server. See [Configure SSL connectivity in your application to securely connect to Azure Database for MariaDB](./howto-configure-ssl.md). | - -## Stop/Start an Azure Database for MariaDB (Preview) - -Azure Database for MariaDB gives you the ability to **Stop** the server when not in use and **Start** the server when you resume activity. This is essentially done to save costs on the database servers and only pay for the resource when in use. This becomes even more important for dev-test workloads and when you are only using the server for part of the day. When you stop the server, all active connections will be dropped. Later, when you want to bring the server back online, you can either use the [Azure portal](../mysql/how-to-stop-start-server.md) or [CLI](../mysql/how-to-stop-start-server.md). - -When the server is in the **Stopped** state, the server's compute is not billed. However, storage continues to be billed as the server's storage remains to ensure that data files are available when the server is started again. - -> [!IMPORTANT] -> When you **Stop** the server it remains in that state for the next 7 days in a stretch. If you do not manually **Start** it during this time, the server will automatically be started at the end of 7 days. You can chose to **Stop** it again if you are not using the server. - -During the time server is stopped, no management operations can be performed on the server. In order to change any configuration settings on the server, you will need to [start the server](../mysql/how-to-stop-start-server.md). - -### Limitations of Stop/start operation - -- Not supported with read replica configurations (both source and replicas). - -## How do I manage a server? - -You can manage Azure Database for MariaDB servers by using the Azure portal or the Azure CLI. - -## Next steps - -- For an overview of the service, see [Azure Database for MariaDB Overview](./overview.md) -- For information about specific resource quotas and limitations based on your **service tier**, see [Service tiers](./concepts-pricing-tiers.md) - - diff --git a/articles/mariadb/concepts-ssl-connection-security.md b/articles/mariadb/concepts-ssl-connection-security.md deleted file mode 100644 index 8a27201eaa..0000000000 --- a/articles/mariadb/concepts-ssl-connection-security.md +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: SSL/TLS connectivity - Azure Database for MariaDB -description: Information for configuring Azure Database for MariaDB and associated applications to properly use SSL connections -author: shreyaaithal -ms.author: shaithal -ms.reviewer: maghan -ms.date: 04/18/2023 -ms.service: azure-database-mariadb -ms.topic: conceptual ---- - -# SSL/TLS connectivity in Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -Azure Database for MariaDB supports connecting your database server to client applications using Secure Sockets Layer (SSL). Enforcing SSL connections between your database server and your client applications helps protect against "man in the middle" attacks by encrypting the data stream between the server and your application. - -> [!NOTE] -> Based on the feedback from customers we have extended the root certificate deprecation for our existing Baltimore Root CA till February 15, 2021 (02/15/2021). - -> [!IMPORTANT] -> SSL root certificate is set to expire starting February 15, 2021 (02/15/2021). Please update your application to use the [new certificate](https://cacerts.digicert.com/DigiCertGlobalRootG2.crt.pem). To learn more , see [planned certificate updates](concepts-certificate-rotation.md) - -## Default settings - -By default, the database service should be configured to require SSL connections when connecting to MariaDB. We recommend to avoid disabling the SSL option whenever possible. - -When provisioning a new Azure Database for MariaDB server through the Azure portal and CLI, enforcement of SSL connections is enabled by default. - -In some cases, applications require a local certificate file generated from a trusted Certificate Authority (CA) certificate file to connect securely. Currently customers can **only use** the predefined certificate to connect to an Azure Database for MariaDB server which is located at https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem. - -Similarly, the following links point to the certificates for servers in sovereign clouds: [Azure Government](https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem), [Microsoft Azure operated by 21Vianet](https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem), and [Azure Germany](https://www.d-trust.net/cgi-bin/D-TRUST_Root_Class_3_CA_2_2009.crt). - -Connection strings for various programming languages are shown in the Azure portal. Those connection strings include the required SSL parameters to connect to your database. In the Azure portal, select your server. Under the **Settings** heading, select the **Connection strings**. The SSL parameter varies based on the connector, for example "ssl=true" or "sslmode=require" or "sslmode=required" and other variations. - -To learn how to enable or disable SSL connection when developing application, refer to [How to configure SSL](howto-configure-ssl.md). - -## TLS enforcement in Azure Database for MariaDB - -Azure Database for MariaDB supports encryption for clients connecting to your database server using Transport Layer Security (TLS). TLS is an industry standard protocol that ensures secure network connections between your database server and client applications, allowing you to adhere to compliance requirements. - -### TLS settings - -Azure Database for MariaDB provides the ability to enforce the TLS version for the client connections. To enforce the TLS version, use the **Minimum TLS version** option setting. The following values are allowed for this option setting: - -| Minimum TLS setting | Client TLS version supported | -| :--- | ---: | -| TLSEnforcementDisabled (default) | No TLS required | -| TLS1_0 | TLS 1.0, TLS 1.1, TLS 1.2 and higher | -| TLS1_1 | TLS 1.1, TLS 1.2 and higher | -| TLS1_2 | TLS version 1.2 and higher | - -For example, setting the value of Minimum TLS setting version to TLS 1.0 means your server will allow connections from clients using TLS 1.0, 1.1, and 1.2+. Alternatively, setting this to 1.2 means that you only allow connections from clients using TLS 1.2+ and all connections with TLS 1.0 and TLS 1.1 will be rejected. - -> [!NOTE] -> By default, Azure Database for MariaDB does not enforce a minimum TLS version (the setting `TLSEnforcementDisabled`). -> -> Once you enforce a minimum TLS version, you cannot later disable minimum version enforcement. - -To learn how to set the TLS setting for your Azure Database for MariaDB, refer to [How to configure TLS setting](howto-tls-configurations.md). - -## Cipher support by Azure Database for MariaDB - -As part of the SSL/TLS communication, the cipher suites are validated and only support cipher suits are allowed to communicate to the database server. The cipher suite validation is controlled in the [gateway layer](concepts-connectivity-architecture.md#connectivity-architecture) and not explicitly on the node itself. If the cipher suites doesn't match one of suites listed below, incoming client connections will be rejected. - -### Cipher suite supported - -* TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 -* TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 -* TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 -* TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - -## Next steps - -- Learn more about [server firewall rules](concepts-firewall-rules.md) -- Learn how to [configure SSL](howto-configure-ssl.md) -- Learn how to [configure TLS](howto-tls-configurations.md) diff --git a/articles/mariadb/concepts-supported-versions.md b/articles/mariadb/concepts-supported-versions.md deleted file mode 100644 index c9d645238a..0000000000 --- a/articles/mariadb/concepts-supported-versions.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Supported versions - Azure Database for MariaDB -description: Learn which versions of the MariaDB server are supported in the Azure Database for MariaDB service. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: conceptual -ms.date: 06/24/2022 ---- -# Supported Azure Database for MariaDB server versions - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -Azure Database for MariaDB has been developed from the open-source [MariaDB Server](https://downloads.mariadb.org/), using the InnoDB engine. - -MariaDB uses the X.Y.Z naming scheme. X is the major version, Y is the minor version, and Z is the patch version. - -> [!NOTE] -> In the service, a gateway is used to redirect the connections to server instances. After the connection is established, the MySQL client displays the version of MariaDB set in the gateway, not the actual version running on your MariaDB server instance. To determine the version of your MariaDB server instance, use the `SELECT VERSION();` command. - -Azure Database for MariaDB currently supports the following version: - -## MariaDB Version 10.2 - -Patch version: 10.2.32 - -Refer to the [MariaDB documentation](https://mariadb.com/kb/en/mariadb-10232-release-notes/) to learn more about improvements and fixes in this version. - -## MariaDB Version 10.3 - -Patch version: 10.3.23 - -Refer to the [MariaDB documentation](https://mariadb.com/kb/en/mariadb-10323-release-notes/) to learn more about improvements and fixes in this version. - -The community support for MariaDB version 10.3 is ending on 25 May 2023. To avoid any disruption, we're **extending the support for MariaDB version 10.3 on Azure Database for MariaDB until September 2025** to ensure business continuity. The extended support for MariaDB v10.3 includes: - -* Monthly updates and fixes to address underlying infrastructure, OS, and service level issues on version 10.3 for Azure Database for MariaDB. -* Any critical fixes for the MariaDB engine or service required to maintain the availability, reliability, and security of the service. -* You are able to create new MariaDB servers with version 10.3 until further notice. -* You are able to perform point-in-time restores and create read replicas for your existing MariaDB servers until September 2025. - -There won't be any new minor version releases, new engine features, or fixes in Azure Database for MariaDB that don't pertain to the server availability or security, after 25 May 2023. - -## Managing updates and upgrades - -The service automatically manages upgrades for patch updates. For example, 10.2.21 to 10.2.23. - -Currently, minor and major version upgrades aren't supported. For example, upgrading from MariaDB 10.2 to MariaDB 10.3 isn't supported. If you'd like to upgrade from 10.2 to 10.3, take a [dump and restore](./howto-migrate-dump-restore.md) it to a server that was created with the new engine version. - -## Next steps - -- For information about specific resource quotas and limitations based on your **service tier**, see [Service tiers](./concepts-pricing-tiers.md). diff --git a/articles/mariadb/connect-workbench.md b/articles/mariadb/connect-workbench.md deleted file mode 100644 index 1a0c9f3001..0000000000 --- a/articles/mariadb/connect-workbench.md +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: 'Quickstart: Connect MySQL Workbench - Azure Database for MariaDB' -description: This quickstart provides the steps to use MySQL Workbench to connect to and query data from Azure Database for MariaDB. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.custom: mvc, mode-other -ms.topic: quickstart -ms.date: 06/24/2022 ---- - -# Quickstart: Azure Database for MariaDB: Use MySQL Workbench to connect and query data - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This quickstart demonstrates how to connect to an Azure Database for MariaDB instance by using MySQL Workbench. - -## Prerequisites - -This quickstart uses the resources that are created in either of the following guides as a starting point: - -- [Create an Azure Database for MariaDB server by using the Azure portal](./quickstart-create-mariadb-server-database-using-azure-portal.md) -- [Create an Azure Database for MariaDB server by using the Azure CLI](./quickstart-create-mariadb-server-database-using-azure-cli.md) - -## Install MySQL Workbench - -[Download MySQL Workbench](https://dev.mysql.com/downloads/workbench/) and install it on your computer. - -## Get connection information - -Get the connection information that's required to connect to the Azure Database for MariaDB instance. You need the fully qualified server name and sign-in credentials. - -1. Sign in to the [Azure portal](https://portal.azure.com/). - -2. In the left menu in the Azure portal, select **All resources**. Search for the server you created (such as **mydemoserver**). - -3. Select the server name. - -4. On the server's **Overview** page, make a note of the values for **Server name** and **Server admin login name**. If you forgot your password, you can also reset the password on this page. - - ![Azure Database for MariaDB server name and server admin login name](./media/connect-workbench/1_server-overview-name-login.png) - -## Connect to the server by using MySQL Workbench - -To connect to an Azure Database for MariaDB server by using MySQL Workbench: - -1. Open MySQL Workbench on your computer. - -2. In the **Setup New Connection** dialog box, on the **Parameters** tab, enter the following information: - - | Setting | Suggested value | Field description | - |---|---|---| - | Connection Name | **Demo connection** | Specify a label for this connection. | - | Connection Method | **Standard (TCP/IP)** | Standard (TCP/IP) is sufficient. | - | Hostname | *server name* | Specify the server name value that you used to create the Azure Database for MariaDB instance. Our example server is **mydemoserver.mariadb.database.azure.com**. Use the fully qualified domain name (\*.mariadb.database.azure.com) as shown in the example. If you don't remember your server name, complete the steps in the preceding section to get the connection information. | - | Port | **3306** | Always use port 3306 when you connect to Azure Database for MariaDB. | - | Username | *server admin login name* | Enter the server admin login user name you used to create the Azure Database for MariaDB instance. Our example user name is **myadmin\@mydemoserver**. If you don't remember the server admin login name, complete the steps in the preceding section to get the connection information. The format is *username\@servername*. - | Password | *your password* | To save the password, select **Store in Vault**. | - - ![Set up a new connection](./media/connect-workbench/2-setup-new-connection.png) - -3. To check that all parameters are configured correctly, select **Test Connection**. - -4. Select **OK** to save the connection. - -5. Under **MySQL Connections**, select the tile that corresponds to your server. Wait for the connection to be established. - - A new SQL tab opens with a blank editor where you can type your queries. - - > [!NOTE] - > By default, SSL connection security is required and is enforced on your Azure Database for MariaDB server. Although typically no additional configuration for SSL certificates is required for MySQL Workbench to connect to your server, we recommend binding the SSL CA certification with MySQL Workbench. If you need to disable SSL, on the server overview page in the Azure portal, select **Connection security** from the menu. For **Enforce SSL connection**, select **Disabled**. - -## Create table and insert, read, update, and delete data - -1. Copy and paste the following sample SQL code into the page of a blank SQL tab to illustrate some sample data. - - This code creates an empty database named **quickstartdb**. Then, it creates a sample table named **inventory**. The code inserts some rows, and then reads the rows. It changes the data with an update statement, and then reads the rows again. Finally, the code deletes a row, and then reads the rows again. - - ```sql - -- Create a database - -- DROP DATABASE IF EXISTS quickstartdb; - CREATE DATABASE quickstartdb; - USE quickstartdb; - - -- Create a table and insert rows - DROP TABLE IF EXISTS inventory; - CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER); - INSERT INTO inventory (name, quantity) VALUES ('banana', 150); - INSERT INTO inventory (name, quantity) VALUES ('orange', 154); - INSERT INTO inventory (name, quantity) VALUES ('apple', 100); - - -- Read - SELECT * FROM inventory; - - -- Update - UPDATE inventory SET quantity = 200 WHERE id = 1; - SELECT * FROM inventory; - - -- Delete - DELETE FROM inventory WHERE id = 2; - SELECT * FROM inventory; - ``` - - The screenshot shows an example of the SQL code in MySQL Workbench and the output after it runs: - - ![Select the MySQL Workbench SQL tab to run sample SQL code](media/connect-workbench/3-workbench-sql-tab.png) - -2. To run the sample SQL code, on the **SQL File** tab, select the lightening bolt icon on the toolbar. -3. Note the three tabbed results in the **Result Grid** section in the middle of the page. -4. Note the **Output** list at the bottom of the page. The status of each command is shown. - -In this quickstart, you connected to Azure Database for MariaDB by using MySQL Workbench, and you queried data by using the SQL language. - - diff --git a/articles/mariadb/howto-alert-metric.md b/articles/mariadb/howto-alert-metric.md deleted file mode 100644 index 99cce1a7e0..0000000000 --- a/articles/mariadb/howto-alert-metric.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -title: Configure metric alerts - Azure portal - Azure Database for MariaDB -description: This article describes how to configure and access metric alerts for Azure Database for MariaDB from the Azure portal. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.date: 06/24/2022 ---- - -# Use the Azure portal to set up alerts on metrics for Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This article shows you how to set up Azure Database for MariaDB alerts using the Azure portal. You can receive an alert based on monitoring metrics for your Azure services. - -The alert triggers when the value of a specified metric crosses a threshold you assign. The alert triggers both when the condition is first met, and then afterwards when that condition is no longer being met. - -You can configure an alert to do the following actions when it triggers: -* Send email notifications to the service administrator and co-administrators -* Send email to additional emails that you specify. -* Call a webhook - -You can configure and get information about alert rules using: -* [Azure portal](/azure/azure-monitor/alerts/alerts-metric#create-with-azure-portal) -* [Azure CLI](/azure/azure-monitor/alerts/alerts-metric#with-azure-cli) -* [Azure Monitor REST API](/rest/api/monitor/metricalerts) - -## Create an alert rule on a metric - -1. In the [Azure portal](https://portal.azure.com/), select the Azure Database for MariaDB server you want to monitor. - -2. Under the **Monitoring** section of the sidebar, select **Alerts** as shown: - - ![Select Alert Rules](./media/howto-alert-metric/2-alert-rules.png) - -3. Select **Add metric alert** (+ icon). - -4. The **Create rule** page opens as shown below. Fill in the required information: - - ![Add metric alert form](./media/howto-alert-metric/4-add-rule-form.png) - -5. Within the **Condition** section, select **Add condition**. - -6. Select a metric from the list of signals to be alerted on. In this example, select "Storage percent". - - ![Select metric](./media/howto-alert-metric/6-configure-signal-logic.png) - -7. Configure the alert logic including the **Condition** (ex. "Greater than"), **Threshold** (ex. 85 percent), **Time Aggregation**, **Period** of time the metric rule must be satisfied before the alert triggers (ex. "Over the last 30 minutes"), and **Frequency**. - - Select **Done** when complete. - - ![Select metric 2](./media/howto-alert-metric/7-set-threshold-time.png) - -8. Within the **Action Groups** section, select **Create New** to create a new group to receive notifications on the alert. - -9. Fill out the "Add action group" form with a name, short name, subscription, and resource group. - -10. Configure an **Email/SMS/Push/Voice** action type. - - Choose "Email Azure Resource Manager Role" to select subscription Owners, Contributors, and Readers to receive notifications. - - Optionally, provide a valid URI in the **Webhook** field if you want it called when the alert fires. - - Select **OK** when completed. - - ![Action group](./media/howto-alert-metric/10-action-group-type.png) - -11. Specify an Alert rule name, Description, and Severity. - - ![Action group 2](./media/howto-alert-metric/11-name-description-severity.png) - -12. Select **Create alert rule** to create the alert. - - Within a few minutes, the alert is active and triggers as previously described. - -## Manage your alerts - -Once you have created an alert, you can select it and do the following actions: - -* View a graph showing the metric threshold and the actual values from the previous day relevant to this alert. -* **Edit** or **Delete** the alert rule. -* **Disable** or **Enable** the alert, if you want to temporarily stop or resume receiving notifications. - -## Next steps - -* Learn more about [configuring webhooks in alerts](/azure/azure-monitor/alerts/alerts-webhooks). -* Get an [overview of metrics collection](/azure/azure-monitor/data-platform) to make sure your service is available and responsive. diff --git a/articles/mariadb/howto-auto-grow-storage-cli.md b/articles/mariadb/howto-auto-grow-storage-cli.md deleted file mode 100644 index 53a99e6a24..0000000000 --- a/articles/mariadb/howto-auto-grow-storage-cli.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Auto grow storage - Azure CLI - Azure Database for MariaDB -description: This article describes how you can enable auto grow storage using the Azure CLI in Azure Database for MariaDB. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.custom: devx-track-azurecli -ms.date: 06/24/2022 ---- -# Auto-grow Azure Database for MariaDB storage using the Azure CLI - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This article describes how you can configure an Azure Database for MariaDB server storage to grow without impacting the workload. - -The server [reaching the storage limit](concepts-pricing-tiers.md#reaching-the-storage-limit), is set to read-only. If storage auto grow is enabled then for servers with less than 100 GB provisioned storage, the provisioned storage size is increased by 5 GB as soon as the free storage is below the greater of 1 GB or 10% of the provisioned storage. For servers with more than 100 GB of provisioned storage, the provisioned storage size is increased by 5% when the free storage space is below 10GB of the provisioned storage size. Maximum storage limits as specified [here](concepts-pricing-tiers.md#storage) apply. - -## Prerequisites - -To complete this guide: - -- You need an [Azure Database for MariaDB server](quickstart-create-mariadb-server-database-using-azure-cli.md). - -[!INCLUDE [azure-cli-prepare-your-environment-no-header.md](~/reusable-content/azure-cli/azure-cli-prepare-your-environment-no-header.md)] - -- This article requires version 2.0 or later of the Azure CLI. If using Azure Cloud Shell, the latest version is already installed. - -## Enable MariaDB server storage auto-grow - -Enable server auto-grow storage on an existing server with the following command: - -```azurecli-interactive -az mariadb server update --name mydemoserver --resource-group myresourcegroup --auto-grow Enabled -``` - -Enable server auto-grow storage while creating a new server with the following command: - -```azurecli-interactive -az mariadb server create --resource-group myresourcegroup --name mydemoserver --auto-grow Enabled --location westus --admin-user myadmin --admin-password --sku-name GP_Gen5_2 --version 10.3 -``` - -## Next steps - -Learn about [how to create alerts on metrics](howto-alert-metric.md). diff --git a/articles/mariadb/howto-auto-grow-storage-portal.md b/articles/mariadb/howto-auto-grow-storage-portal.md deleted file mode 100644 index fc69c260c0..0000000000 --- a/articles/mariadb/howto-auto-grow-storage-portal.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Auto grow storage - Azure portal - Azure Database for MariaDB -description: This article describes how you can enable auto grow storage for Azure Database for MariaDB using Azure portal -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.date: 06/24/2022 ---- -# Auto grow storage in Azure Database for MariaDB using the Azure portal - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This article describes how you can configure an Azure Database for MariaDB server storage to grow without impacting the workload. - -When a server reaches the allocated storage limit, the server is marked as read-only. However, if you enable storage auto grow, the server storage increases to accommodate the growing data. For servers with less than 100 GB provisioned storage, the provisioned storage size is increased by 5 GB as soon as the free storage is below the greater of 1 GB or 10% of the provisioned storage. For servers with more than 100 GB of provisioned storage, the provisioned storage size is increased by 5% when the free storage space is below 10GB of the provisioned storage size. Maximum storage limits as specified [here](concepts-pricing-tiers.md#storage) apply. - -## Prerequisites - -To complete this how-to guide, you need: -- An [Azure Database for MariaDB server](./quickstart-create-mariadb-server-database-using-azure-portal.md) - -## Enable storage auto grow - -Follow these steps to set MariaDB server storage auto grow: - -1. In the [Azure portal](https://portal.azure.com/), select your existing Azure Database for MariaDB server. - -2. On the MariaDB server page, under **Settings** heading, select **Pricing tier** to open the pricing tier page. - -3. In the Auto-growth section, select **Yes** to enable storage auto grow. - - ![Azure Database for MariaDB - Settings_Pricing_tier - Auto-growth](./media/howto-auto-grow-storage-portal/3-auto-grow.png) - -4. Select **OK** to save the changes. - -5. A notification will confirm that auto grow was successfully enabled. - - ![Azure Database for MariaDB - auto-growth success](./media/howto-auto-grow-storage-portal/5-auto-grow-successful.png) - -## Next steps - -Learn about [how to create alerts on metrics](howto-alert-metric.md). diff --git a/articles/mariadb/howto-auto-grow-storage-powershell.md b/articles/mariadb/howto-auto-grow-storage-powershell.md deleted file mode 100644 index 68897dcaea..0000000000 --- a/articles/mariadb/howto-auto-grow-storage-powershell.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: Auto grow storage - Azure PowerShell - Azure Database for MariaDB -description: This article describes how you can enable auto grow storage using PowerShell in Azure Database for MariaDB. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.date: 06/24/2022 -ms.custom: devx-track-azurepowershell ---- -# Auto grow storage in Azure Database for MariaDB server using PowerShell - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This article describes how you can configure an Azure Database for MariaDB server storage to grow -without impacting the workload. - -Storage auto grow prevents your server from -[reaching the storage limit](concepts-pricing-tiers.md#reaching-the-storage-limit) and -becoming read-only. For servers with 100 GB or less of provisioned storage, the size is increased by -5 GB when the free space is below 10%. For servers with more than 100 GB of provisioned storage, the -size is increased by 5% when the free space is below 10 GB. Maximum storage limits apply as -specified in the storage section of the -[Azure Database for MariaDB pricing tiers](concepts-pricing-tiers.md#storage). - -> [!IMPORTANT] -> Remember that storage can only be scaled up, not down. - -## Prerequisites - -To complete this how-to guide, you need: - -- The [Az PowerShell module](/powershell/azure/install-azure-powershell) installed locally or - [Azure Cloud Shell](https://shell.azure.com/) in the browser -- An [Azure Database for MariaDB server](quickstart-create-mariadb-server-database-using-azure-powershell.md) - -> [!IMPORTANT] -> While the Az.MariaDb PowerShell module is in preview, you must install it separately from the Az -> PowerShell module using the following command: `Install-Module -Name Az.MariaDb -AllowPrerelease`. -> Once the Az.MariaDb PowerShell module is generally available, it becomes part of future Az -> PowerShell module releases and available natively from within Azure Cloud Shell. - -If you choose to use PowerShell locally, connect to your Azure account using the -[Connect-AzAccount](/powershell/module/az.accounts/connect-azaccount) cmdlet. - -## Enable MariaDB server storage auto grow - -Enable server auto grow storage on an existing server with the following command: - -```azurepowershell-interactive -Update-AzMariaDbServer -Name mydemoserver -ResourceGroupName myresourcegroup -StorageAutogrow Enabled -``` - -Enable server auto grow storage while creating a new server with the following command: - -```azurepowershell-interactive -$Password = Read-Host -Prompt 'Please enter your password' -AsSecureString -New-AzMariaDbServer -Name mydemoserver -ResourceGroupName myresourcegroup -Sku GP_Gen5_2 -StorageAutogrow Enabled -Location westus -AdministratorUsername myadmin -AdministratorLoginPassword $Password -``` - -## Next steps - -> [!div class="nextstepaction"] -> [How to create and manage read replicas in Azure Database for MariaDB using PowerShell](howto-read-replicas-powershell.md). diff --git a/articles/mariadb/howto-configure-audit-logs-cli.md b/articles/mariadb/howto-configure-audit-logs-cli.md deleted file mode 100644 index 9dab7bd3dc..0000000000 --- a/articles/mariadb/howto-configure-audit-logs-cli.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Access audit logs - Azure CLI - Azure Database for MariaDB -description: This article describes how to configure and access the audit logs in Azure Database for MariaDB from the Azure CLI. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.date: 06/24/2022 -ms.custom: -- devx-track-azurecli -- kr2b-contr-experiment ---- - -# Configure and access Azure Database for MariaDB audit logs in the Azure CLI - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -You can configure the [Azure Database for MariaDB audit logs](concepts-audit-logs.md) from the Azure CLI. - -[!INCLUDE [quickstarts-free-trial-note](~/reusable-content/ce-skilling/azure/includes/quickstarts-free-trial-note.md)] - -## Prerequisites - -To complete this guide: - -- You need an [Azure Database for MariaDB server](quickstart-create-mariadb-server-database-using-azure-portal.md). - -[!INCLUDE [azure-cli-prepare-your-environment-no-header.md](~/reusable-content/azure-cli/azure-cli-prepare-your-environment-no-header.md)] - -- This article requires version 2.0 or later of the Azure CLI. If using Azure Cloud Shell, the latest version is already installed. - -## Configure audit logging - ->[!IMPORTANT] -> It is recommended to only log the event types and users required for your auditing purposes to ensure your server's performance is not heavily impacted. - -Enable and configure audit logging using the following steps: - -1. Turn on audit logs by setting the **audit_logs_enabled** parameter to "ON". - - ```azurecli-interactive - az mariadb server configuration set --name audit_log_enabled --resource-group myresourcegroup --server mydemoserver --value ON - ``` - -1. Select the [event types](concepts-audit-logs.md#configure-audit-logging) to be logged by updating the **audit_log_events** parameter. - - ```azurecli-interactive - az mariadb server configuration set --name audit_log_events --resource-group myresourcegroup --server mydemoserver --value "ADMIN,CONNECTION" - ``` - -1. Add any MariaDB users to be excluded from logging by updating the **audit_log_exclude_users** parameter. Specify users by providing their MariaDB user name. - - ```azurecli-interactive - az mariadb server configuration set --name audit_log_exclude_users --resource-group myresourcegroup --server mydemoserver --value "azure_superuser" - ``` - -1. Add any specific MariaDB users to be included for logging by updating the **audit_log_include_users** parameter. Specify users by providing their MariaDB user name. - - ```azurecli-interactive - az mariadb server configuration set --name audit_log_include_users --resource-group myresourcegroup --server mydemoserver --value "sampleuser" - ``` - -## Next steps - -- Learn more about [audit logs](concepts-audit-logs.md) in Azure Database for MariaDB -- Learn how to configure audit logs in the [Azure portal](howto-configure-audit-logs-portal.md) diff --git a/articles/mariadb/howto-configure-audit-logs-portal.md b/articles/mariadb/howto-configure-audit-logs-portal.md deleted file mode 100644 index ec6c4fd020..0000000000 --- a/articles/mariadb/howto-configure-audit-logs-portal.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Access audit logs - Azure portal - Azure Database for MariaDB -description: This article describes how to configure and access the audit logs in Azure Database for MariaDB from the Azure portal. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.date: 06/24/2022 ---- - -# Configure and access audit logs in the Azure portal - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -You can configure the [Azure Database for MariaDB audit logs](concepts-audit-logs.md) and diagnostic settings from the Azure portal. - -## Prerequisites - -To step through this how-to guide, you need: - -- [Azure Database for MariaDB server](quickstart-create-mariadb-server-database-using-azure-portal.md) - -## Configure audit logging - ->[!IMPORTANT] -> It is recommended to only log the event types and users required for your auditing purposes to ensure your server's performance is not heavily impacted. - -Enable and configure audit logging. - -1. Sign in to the [Azure portal](https://portal.azure.com/). - -1. Select your Azure Database for MariaDB server. - -1. Under the **Settings** section in the sidebar, select **Server parameters**. - ![Server parameters](./media/howto-configure-audit-logs-portal/server-parameters.png) - -1. Update the **audit_log_enabled** parameter to ON. - ![Enable audit logs](./media/howto-configure-audit-logs-portal/audit-log-enabled.png) - -1. Select the [event types](concepts-audit-logs.md#configure-audit-logging) to be logged by updating the **audit_log_events** parameter. - ![Audit log events](./media/howto-configure-audit-logs-portal/audit-log-events.png) - -1. Add any MariaDB users to be excluded from logging by updating the **audit_log_exclude_users** parameter. Specify users by providing their MariaDB user name. - ![Audit log exclude users](./media/howto-configure-audit-logs-portal/audit-log-exclude-users.png) - -1. Once you have changed the parameters, you can select **Save**. Or you can **Discard** your changes. - ![Save](./media/howto-configure-audit-logs-portal/save-parameters.png) - -## Set up diagnostic logs - -1. Under the **Monitoring** section in the sidebar, select **Diagnostic settings**. - -1. Select on "+ Add diagnostic setting" -![Add diagnostic setting](./media/howto-configure-audit-logs-portal/add-diagnostic-setting.png) - -1. Provide a diagnostic setting name. - -1. Specify which data sinks to send the audit logs (storage account, event hub, and/or Log Analytics workspace). - -1. Select "MySqlAuditLogs" as the log type. -![Configure diagnostic setting](./media/howto-configure-audit-logs-portal/configure-diagnostic-setting.png) - -1. Once you've configured the data sinks to pipe the audit logs to, you can select **Save**. -![Save diagnostic setting](./media/howto-configure-audit-logs-portal/save-diagnostic-setting.png) - -1. Access the audit logs by exploring them in the data sinks you configured. It may take up to 10 minutes for the logs to appear. - -## Next steps - -- Learn more about [audit logs](concepts-audit-logs.md) in Azure Database for MariaDB -- Learn how to configure audit logs in the [Azure CLI](howto-configure-audit-logs-cli.md) diff --git a/articles/mariadb/howto-configure-privatelink-cli.md b/articles/mariadb/howto-configure-privatelink-cli.md deleted file mode 100644 index ba4bcf8990..0000000000 --- a/articles/mariadb/howto-configure-privatelink-cli.md +++ /dev/null @@ -1,206 +0,0 @@ ---- -title: Private Link - Azure CLI - Azure Database for MariaDB -description: Learn how to configure private link for Azure Database for MariaDB from Azure CLI -ms.service: azure-database-mariadb -author: mksuni -ms.author: sumuth -ms.topic: how-to -ms.custom: devx-track-azurecli -ms.date: 06/24/2022 ---- - -# Create and manage Private Link for Azure Database for MariaDB using CLI - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -A Private Endpoint is the fundamental building block for private link in Azure. It enables Azure resources, like Virtual Machines (VMs), to communicate privately with private link resources. In this article, you will learn how to use the Azure CLI to create a VM in an Azure Virtual Network and an Azure Database for MariaDB server with an Azure private endpoint. - -> [!NOTE] -> The private link feature is only available for Azure Database for MariaDB servers in the General Purpose or Memory Optimized pricing tiers. Ensure the database server is in one of these pricing tiers. - -[!INCLUDE [quickstarts-free-trial-note](~/reusable-content/ce-skilling/azure/includes/quickstarts-free-trial-note.md)] - -## Prerequisites - -- You need an [Azure Database for MariaDB server](quickstart-create-mariadb-server-database-using-azure-cli.md). - -[!INCLUDE [azure-cli-prepare-your-environment-no-header.md](~/reusable-content/azure-cli/azure-cli-prepare-your-environment-no-header.md)] - -- This article requires version 2.0.28 or later of the Azure CLI. If using Azure Cloud Shell, the latest version is already installed. - -## Create a resource group - -Before you can create any resource, you have to create a resource group to host the Virtual Network. Create a resource group with [az group create](/cli/azure/group). This example creates a resource group named *myResourceGroup* in the *westeurope* location: - -```azurecli-interactive -az group create --name myResourceGroup --location westeurope -``` - -## Create a Virtual Network - -Create a Virtual Network with [az network vnet create](/cli/azure/network/vnet). This example creates a default Virtual Network named *myVirtualNetwork* with one subnet named *mySubnet*: - -```azurecli-interactive -az network vnet create \ ---name myVirtualNetwork \ ---resource-group myResourceGroup \ ---subnet-name mySubnet -``` - -## Disable subnet private endpoint policies - -Azure deploys resources to a subnet within a virtual network, so you need to create or update the subnet to disable private endpoint [network policies](/azure/private-link/disable-private-endpoint-network-policy). Update a subnet configuration named *mySubnet* with [az network vnet subnet update](/cli/azure/network/vnet/subnet#az-network-vnet-subnet-update): - -```azurecli-interactive -az network vnet subnet update \ ---name mySubnet \ ---resource-group myResourceGroup \ ---vnet-name myVirtualNetwork \ ---disable-private-endpoint-network-policies true -``` -## Create the VM - -Create a VM with az vm create. When prompted, provide a password to be used as the sign-in credentials for the VM. This example creates a VM named *myVm*: -```azurecli-interactive -az vm create \ - --resource-group myResourceGroup \ - --name myVm \ - --image Win2019Datacenter -``` -Note the public IP address of the VM. You will use this address to connect to the VM from the internet in the next step. - -## Create an Azure Database for MariaDB server - -Create an Azure Database for MariaDB with the az mariadb server create command. Remember that the name of your MariaDB Server must be unique across Azure, so replace the placeholder value in brackets with your own unique value: - -```azurecli-interactive -# Create a server in the resource group - -az mariadb server create \ ---name mydemoserver \ ---resource-group myResourcegroup \ ---location westeurope \ ---admin-user mylogin \ ---admin-password \ ---sku-name GP_Gen5_2 -``` - -> [!NOTE] -> In some cases the Azure Database for MariaDB and the VNet-subnet are in different subscriptions. In these cases you must ensure the following configurations: -> - Make sure that both the subscription has the **Microsoft.DBforMariaDB** resource provider registered. For more information refer [resource-manager-registration][resource-manager-portal] - -## Create the Private Endpoint - -Create a private endpoint for the MariaDB server in your Virtual Network: - -```azurecli-interactive -az network private-endpoint create \ - --name myPrivateEndpoint \ - --resource-group myResourceGroup \ - --vnet-name myVirtualNetwork \ - --subnet mySubnet \ - --private-connection-resource-id $(az resource show -g myResourcegroup -n mydemoserver --resource-type "Microsoft.DBforMariaDB/servers" --query "id" -o tsv) \ - --group-id mariadbServer \ - --connection-name myConnection -``` - -## Configure the Private DNS Zone - -Create a Private DNS Zone for MariDB server domain and create an association link with the Virtual Network. - -```azurecli-interactive -az network private-dns zone create --resource-group myResourceGroup \ - --name "privatelink.mariadb.database.azure.com" -az network private-dns link vnet create --resource-group myResourceGroup \ - --zone-name "privatelink.mariadb.database.azure.com"\ - --name MyDNSLink \ - --virtual-network myVirtualNetwork \ - --registration-enabled false - -#Query for the network interface ID - -networkInterfaceId=$(az network private-endpoint show --name myPrivateEndpoint --resource-group myResourceGroup --query 'networkInterfaces[0].id' -o tsv) - -az resource show --ids $networkInterfaceId --api-version 2019-04-01 -o json -# Copy the content for privateIPAddress and FQDN matching the Azure database for MariaDB name - -#Create DNS records - -az network private-dns record-set a create --name mydemoserver --zone-name privatelink.mariadb.database.azure.com --resource-group myResourceGroup -az network private-dns record-set a add-record --record-set-name mydemoserver --zone-name privatelink.mariadb.database.azure.com --resource-group myResourceGroup -a -``` - -> [!NOTE] -> The FQDN in the customer DNS setting does not resolve to the private IP configured. You will have to setup a DNS zone for the configured FQDN as shown [here](/azure/dns/dns-operations-recordsets-portal). - -## Connect to a VM from the internet - -Connect to the VM *myVm* from the internet as follows: - -1. In the portal's search bar, enter *myVm*. - -1. Select the **Connect** button. After selecting the **Connect** button, **Connect to virtual machine** opens. - -1. Select **Download RDP File**. Azure creates a Remote Desktop Protocol (*.rdp*) file and downloads it to your computer. - -1. Open the *downloaded.rdp* file. - - 1. If prompted, select **Connect**. - - 1. Enter the username and password you specified when creating the VM. - - > [!NOTE] - > You may need to select **More choices** > **Use a different account**, to specify the credentials you entered when you created the VM. - -1. Select **OK**. - -1. You may receive a certificate warning during the sign-in process. If you receive a certificate warning, select **Yes** or **Continue**. - -1. Once the VM desktop appears, minimize it to go back to your local desktop. - -## Access the MariaDB server privately from the VM - -1. In the Remote Desktop of *myVM*, open PowerShell. - -2. Enter  `nslookup mydemoserver.privatelink.mariadb.database.azure.com`. - - You'll receive a message similar to this: - ```azurepowershell - Server: UnKnown - Address: 168.63.129.16 - Non-authoritative answer: - Name: mydemoserver.privatelink.mariadb.database.azure.com - Address: 10.1.3.4 - ``` - -3. Test the private link connection for the MariaDB server using any available client. In the example below I have used [MySQL Workbench](https://dev.mysql.com/doc/workbench/en/wb-installing-windows.html) to do the operation. - -4. In **New connection**, enter or select this information: - - | Setting | Value | - | ------- | ----- | - | Connection Name| Select the connection name of your choice.| - | Hostname | Select *mydemoserver.privatelink.mariadb.database.azure.com* | - | Username | Enter username as *username@servername* which is provided during the MariaDB server creation. | - | Password | Enter a password provided during the MariaDB server creation. | - -5. Select **Test Connection** or **OK**. - -6. (Optionally) Browse databases from left menu and Create or query information from the MariaDB database - -8. Close the remote desktop connection to myVm. - -## Clean up resources - -When no longer needed, you can use az group delete to remove the resource group and all the resources it has: - -```azurecli-interactive -az group delete --name myResourceGroup --yes -``` - -## Next steps - -Learn more about [What is Azure private endpoint](/azure/private-link/private-endpoint-overview) - - -[resource-manager-portal]: /azure/azure-resource-manager/management/resource-providers-and-types diff --git a/articles/mariadb/howto-configure-privatelink-portal.md b/articles/mariadb/howto-configure-privatelink-portal.md deleted file mode 100644 index 4d0cfa02ee..0000000000 --- a/articles/mariadb/howto-configure-privatelink-portal.md +++ /dev/null @@ -1,252 +0,0 @@ ---- -title: Private Link - Azure portal - Azure Database for MariaDB -description: Learn how to configure private link for Azure Database for MariaDB from Azure portal -ms.service: azure-database-mariadb -author: mksuni -ms.author: sumuth -ms.topic: how-to -ms.date: 06/24/2022 ---- - -# Create and manage Private Link for Azure Database for MariaDB using Portal - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -A Private Endpoint is the fundamental building block for private link in Azure. It enables Azure resources, like Virtual Machines (VMs), to communicate privately with private link resources. In this article, you will learn how to use the Azure portal to create a VM in an Azure Virtual Network and an Azure Database for MariaDB server with an Azure private endpoint. - -If you don't have an Azure subscription, create a [free account](https://azure.microsoft.com/free/?WT.mc_id=A261C142F) before you begin. - -> [!NOTE] -> The private link feature is only available for Azure Database for MariaDB servers in the General Purpose or Memory Optimized pricing tiers. Ensure the database server is in one of these pricing tiers. - -## Sign in to Azure - -Sign in to the [Azure portal](https://portal.azure.com). - -## Create an Azure VM - -In this section, you will create virtual network and the subnet to host the VM that is used to access your Private Link resource (a MariaDB server in Azure). - -### Create the virtual network - -In this section, you will create a Virtual Network and the subnet to host the VM that is used to access your Private Link resource. - -1. On the upper-left side of the screen, select **Create a resource** > **Networking** > **Virtual network**. -2. In **Create virtual network**, enter or select this information: - - | Setting | Value | - | ------- | ----- | - | Name | Enter *MyVirtualNetwork*. | - | Address space | Enter *10.1.0.0/16*. | - | Subscription | Select your subscription.| - | Resource group | Select **Create new**, enter *myResourceGroup*, then select **OK**. | - | Location | Select **West Europe**.| - | Subnet - Name | Enter *mySubnet*. | - | Subnet - Address range | Enter *10.1.0.0/24*. | - ||| -3. Leave the rest as default and select **Create**. - -### Create Virtual Machine - -1. On the upper-left side of the screen in the Azure portal, select **Create a resource** > **Compute** > **Virtual Machine**. - -2. In **Create a virtual machine - Basics**, enter or select this information: - - | Setting | Value | - | ------- | ----- | - | **PROJECT DETAILS** | | - | Subscription | Select your subscription. | - | Resource group | Select **myResourceGroup**. You created this in the previous section. | - | **INSTANCE DETAILS** | | - | Virtual machine name | Enter *myVm*. | - | Region | Select **West Europe**. | - | Availability options | Leave the default **No infrastructure redundancy required**. | - | Image | Select **Windows Server 2019 Datacenter**. | - | Size | Leave the default **Standard DS1 v2**. | - | **ADMINISTRATOR ACCOUNT** | | - | Username | Enter a username of your choosing. | - | Password | Enter a password of your choosing. The password must be at least 12 characters long and meet the [defined complexity requirements](/azure/virtual-machines/windows/faq?toc=%2fazure%2fvirtual-network%2ftoc.json#what-are-the-password-requirements-when-creating-a-vm-).| - | Confirm Password | Reenter password. | - | **INBOUND PORT RULES** | | - | Public inbound ports | Leave the default **None**. | - | **SAVE MONEY** | | - | Already have a Windows license? | Leave the default **No**. | - -1. Select **Next: Disks**. - -1. In **Create a virtual machine - Disks**, leave the defaults and select **Next: Networking**. - -1. In **Create a virtual machine - Networking**, select this information: - - | Setting | Value | - | ------- | ----- | - | Virtual network | Leave the default **MyVirtualNetwork**. | - | Address space | Leave the default **10.1.0.0/24**.| - | Subnet | Leave the default **mySubnet (10.1.0.0/24)**.| - | Public IP | Leave the default **(new) myVm-ip**. | - | Public inbound ports | Select **Allow selected ports**. | - | Select inbound ports | Select **HTTP** and **RDP**.| - -1. Select **Review + create**. You're taken to the **Review + create** page where Azure validates your configuration. - -1. When you see the **Validation passed** message, select **Create**. - -## Create an Azure Database for MariaDB - -In this section, you will create an Azure Database for MariaDB server in Azure. - -1. On the upper-left side of the screen in the Azure portal, select **Create a resource** > **Databases** > **Azure Database for MariaDB**. - -1. In **Azure Database for MariaDB** provide these information: - - | Setting | Value | - | ------- | ----- | - | **Project details** | | - | Subscription | Select your subscription. | - | Resource group | Select **myResourceGroup**. You created this in the previous section.| - | **Server details** | | - |Server name | Enter *myserver*. If this name is taken, create a unique name.| - | Admin username| Enter an administrator name of your choosing. | - | Password | Enter a password of your choosing. The password must be at least 8 characters long and meet the defined requirements. | - | Location | Select an Azure region where you want to want your MariaDB Server to reside. | - |Version | Select the database version of the MariaDB server that is required.| - | Compute + Storage| Select the pricing tier that is needed for the server based on the workload. | - -7. Select **OK**. -8. Select **Review + create**. You're taken to the **Review + create** page where Azure validates your configuration. -9. When you see the Validation passed message, select **Create**. -10. When you see the Validation passed message, select Create. - -> [!NOTE] -> In some cases the Azure Database for MariaDB and the VNet-subnet are in different subscriptions. In these cases you must ensure the following configurations: -> - Make sure that both the subscription has the **Microsoft.DBforMariaDB** resource provider registered. For more information refer [resource-manager-registration][resource-manager-portal] - -## Create a private endpoint - -In this section, you will create a private endpoint to the MariaDB server to it. - -1. On the upper-left side of the screen in the Azure portal, select **Create a resource** > **Networking** > **Private Link**. -2. In **Private Link Center - Overview**, on the option to **Build a private connection to a service**, select **Start**. - - ![Private Link overview](media/concepts-data-access-and-security-private-link/privatelink-overview.png) - -1. In **Create a private endpoint - Basics**, enter or select this information: - - | Setting | Value | - | ------- | ----- | - | **Project details** | | - | Subscription | Select your subscription. | - | Resource group | Select **myResourceGroup**. You created this in the previous section.| - | **Instance Details** | | - | Name | Enter *myPrivateEndpoint*. If this name is taken, create a unique name. | - |Region|Select **West Europe**.| - ||| -5. Select **Next: Resource**. -6. In **Create a private endpoint - Resource**, enter or select this information: - - | Setting | Value | - | ------- | ----- | - |Connection method | Select connect to an Azure resource in my directory.| - | Subscription| Select your subscription. | - | Resource type | Select **Microsoft.DBforMariaDB/servers**. | - | Resource |Select *myServer*| - |Target sub-resource |Select *mariadbServer*| - ||| -7. Select **Next: Configuration**. - > [!Note] - > To enable virtual network service endpoints, you need a subscription with Network contributor role -If your virtual network and Azure database for MariaDB account are in different subscriptions, make sure that the subscription that has virtual network also has Microsoft.DBforMariaDB resource provider registered. To register a resource provider, see [Azure resource providers and types article](/azure/azure-resource-manager/management/resource-providers-and-types). -8. In **Create a private endpoint - Configuration**, enter or select this information: - - | Setting | Value | - | ------- | ----- | - |**NETWORKING**| | - | Virtual network| Select *MyVirtualNetwork*. | - | Subnet | Select *mySubnet*. | - |**PRIVATE DNS INTEGRATION**|| - |Integrate with private DNS zone |Select **Yes**. | - |Private DNS Zone |Select *(New)privatelink.mariadb.database.azure.com* | - - > [!Note] - > Use the predefined private DNS zone for your service or provide your preferred DNS zone name. Refer to the [Azure services DNS zone configuration](/azure/private-link/private-endpoint-dns) for details. - -1. Select **Review + create**. You're taken to the **Review + create** page where Azure validates your configuration. -2. When you see the **Validation passed** message, select **Create**. - - ![Private Link created](media/concepts-data-access-and-security-private-link/show-mariadb-private-link.png) - - > [!NOTE] - > The FQDN in the customer DNS setting does not resolve to the private IP configured. You will have to setup a DNS zone for the configured FQDN as shown [here](/azure/dns/dns-operations-recordsets-portal). - -## Connect to a VM using Remote Desktop (RDP) - -After you've created **myVm**, connect to it from the internet as follows: - -1. In the portal's search bar, enter *myVm*. - -1. Select the **Connect** button. After selecting the **Connect** button, **Connect to virtual machine** opens. - -1. Select **Download RDP File**. Azure creates a Remote Desktop Protocol (*.rdp*) file and downloads it to your computer. - -1. Open the *downloaded.rdp* file. - - 1. If prompted, select **Connect**. - - 1. Enter the username and password you specified when creating the VM. - - > [!NOTE] - > You may need to select **More choices** > **Use a different account**, to specify the credentials you entered when you created the VM. - -1. Select **OK**. - -1. You may receive a certificate warning during the sign-in process. If you receive a certificate warning, select **Yes** or **Continue**. - -1. Once the VM desktop appears, minimize it to go back to your local desktop. - -## Access the MariaDB server privately from the VM - -1. In the Remote Desktop of *myVM*, open PowerShell. - -2. Enter `nslookup mydemomserver.privatelink.mariadb.database.azure.com`. - - You'll receive a message similar to this: - ```azurepowershell - Server: UnKnown - Address: 168.63.129.16 - Non-authoritative answer: - Name: mydemoMariaDBserver.privatelink.mariadb.database.azure.com - Address: 10.1.3.4 - ``` - -3. Test the private link connection for the MariaDB server using any available client. In the example below I have used [MySQL Workbench](https://dev.mysql.com/doc/workbench/en/wb-installing-windows.html) to do the operation. - -4. In **New connection**, enter or select this information: - - | Setting | Value | - | ------- | ----- | - | Server type| Select **MariaDB**.| - | Server name| Select *mydemoserver.privatelink.mariadb.database.azure.com* | - | User name | Enter username as username@servername which is provided during the MariaDB server creation. | - |Password |Enter a password provided during the MariaDB server creation. | - |SSL|Select **Required**.| - -5. Select **Test Connection** or **OK**. - -6. (Optionally) Browse databases from left menu and Create or query information from the MariaDB database - -7. Close the remote desktop connection to myVm. - -## Clean up resources - -When you're done using the private endpoint, MariaDB server, and the VM, delete the resource group and all of the resources it contains: - -1. Enter *myResourceGroup* in the **Search** box at the top of the portal and select *myResourceGroup* from the search results. -2. Select **Delete resource group**. -3. Enter myResourceGroup for **TYPE THE RESOURCE GROUP NAME** and select **Delete**. - -## Next steps - -In this how-to, you created a VM on a virtual network, an Azure Database for MariaDB, and a private endpoint for private access. You connected to one VM from the internet and securely communicated to the MariaDB server using Private Link. To learn more about private endpoints, see [What is Azure private endpoint](/azure/private-link/private-endpoint-overview). - - -[resource-manager-portal]: /azure/azure-resource-manager/management/resource-providers-and-types diff --git a/articles/mariadb/howto-configure-server-logs-cli.md b/articles/mariadb/howto-configure-server-logs-cli.md deleted file mode 100644 index af0fc5dfda..0000000000 --- a/articles/mariadb/howto-configure-server-logs-cli.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: Access slow query logs - Azure CLI - Azure Database for MariaDB -description: This article describes how to access the slow logs in Azure Database for MariaDB by using the Azure CLI command-line utility. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.devlang: azurecli -ms.topic: how-to -ms.custom: devx-track-azurecli -ms.date: 06/24/2022 ---- -# Configure and access Azure Database for MariaDB slow query logs by using Azure CLI - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -You can download the Azure Database for MariaDB slow query logs by using Azure CLI, the Azure command-line utility. - -## Prerequisites - -To step through this how-to guide, you need: -- [Azure Database for MariaDB server](quickstart-create-mariadb-server-database-using-azure-cli.md) -- The [Azure CLI](/cli/azure/install-azure-cli) or Azure Cloud Shell in the browser - -## Configure logging - -You can configure the server to access the MySQL slow query log by taking the following steps: -1. Turn on slow query logging by setting the **slow\_query\_log** parameter to ON. -2. Select where to output the logs to using **log\_output**. To send logs to both local storage and Azure Monitor Diagnostic Logs, select **File**. To send logs only to Azure Monitor Logs, select **None** -3. Adjust other parameters, such as **long\_query\_time** and **log\_slow\_admin\_statements**. - -To learn how to set the value of these parameters through Azure CLI, see [How to configure server parameters](howto-configure-server-parameters-cli.md). - -For example, the following CLI command turns on the slow query log, sets the long query time to 10 seconds, and then turns off the logging of the slow admin statement. Finally, it lists the configuration options for your review. -```azurecli-interactive -az mariadb server configuration set --name slow_query_log --resource-group myresourcegroup --server mydemoserver --value ON -az mariadb server configuration set --name log_output --resource-group myresourcegroup --server mydemoserver --value FILE -az mariadb server configuration set --name long_query_time --resource-group myresourcegroup --server mydemoserver --value 10 -az mariadb server configuration set --name log_slow_admin_statements --resource-group myresourcegroup --server mydemoserver --value OFF -az mariadb server configuration list --resource-group myresourcegroup --server mydemoserver -``` - -## List logs for Azure Database for MariaDB server - -If **log_output** is configured to "File", you can access logs directly from the server's local storage. To list the available slow query log files for your server, run the [az mariadb server-logs list](/cli/azure/mariadb/server-logs#az-mariadb-server-logs-list) command. - -You can list the log files for server **mydemoserver.mariadb.database.azure.com** under the resource group **myresourcegroup**. Then direct the list of log files to a text file called **log\_files\_list.txt**. -```azurecli-interactive -az mariadb server-logs list --resource-group myresourcegroup --server mydemoserver > log_files_list.txt -``` -## Download logs from the server - -If **log_output** is configured to "File", you can download individual log files from your server with the [az mariadb server-logs download](/cli/azure/mariadb/server-logs#az-mariadb-server-logs-download) command. - -Use the following example to download the specific log file for the server **mydemoserver.mariadb.database.azure.com** under the resource group **myresourcegroup** to your local environment. -```azurecli-interactive -az mariadb server-logs download --name mysql-slow-mydemoserver-2018110800.log --resource-group myresourcegroup --server mydemoserver -``` - -## Next steps - -- Learn about [slow query logs in Azure Database for MariaDB](concepts-server-logs.md). diff --git a/articles/mariadb/howto-configure-server-logs-portal.md b/articles/mariadb/howto-configure-server-logs-portal.md deleted file mode 100644 index 653a2aae82..0000000000 --- a/articles/mariadb/howto-configure-server-logs-portal.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: Access slow query logs - Azure portal - Azure Database for MariaDB -description: This article describes how to configure and access the slow query logs in Azure Database for MariaDB from the Azure portal. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.date: 06/24/2022 ---- - -# Configure and access Azure Database for MariaDB slow query logs from the Azure portal - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -You can configure, list, and download the [Azure Database for MariaDB slow query logs](concepts-server-logs.md) from the Azure portal. - -## Prerequisites - -The steps in this article require that you have [Azure Database for MariaDB server](quickstart-create-mariadb-server-database-using-azure-portal.md). - -## Configure logging - -Configure access to the slow query log. - -1. Sign in to the [Azure portal](https://portal.azure.com/). - -2. Select your Azure Database for MariaDB server. - -3. Under the **Monitoring** section in the sidebar, select **Server logs**. - ![Screenshot of Server logs options](./media/howto-configure-server-logs-portal/1-select-server-logs-configure.png) - -4. To see the server parameters, select **Select here to enable logs and configure log parameters**. - -5. Turn **slow_query_log** to **ON**. - -6. Select where to output the logs to using **log_output**. To send logs to both local storage and Azure Monitor Diagnostic Logs, select **File**. - -7. Change any other parameters needed. - -8. Select **Save**. - - :::image type="content" source="./media/howto-configure-server-logs-portal/3-save-discard.png" alt-text="Screenshot of slow query log parameters and save."::: - -From the **Server Parameters** page, you can return to the list of logs by closing the page. - -## View list and download logs - -After logging begins, you can view a list of available slow query logs, and download individual log files. - -1. Open the Azure portal. - -2. Select your Azure Database for MariaDB server. - -3. Under the **Monitoring** section in the sidebar, select **Server logs**. The page shows a list of your log files. - - ![Screenshot of Server logs page, with list of logs highlighted](./media/howto-configure-server-logs-portal/4-server-logs-list.png) - - > [!TIP] - > The naming convention of the log is **mysql-slow-< your server name>-yyyymmddhh.log**. The date and time used in the file name is the time when the log was issued. Log files are rotated every 24 hours or 7.5 GB, whichever comes first. - -4. If needed, use the search box to quickly narrow down to a specific log, based on date and time. The search is on the name of the log. - -5. To download individual log files, select the down-arrow icon next to each log file in the table row. - - ![Screenshot of Server logs page, with down-arrow icon highlighted](./media/howto-configure-server-logs-portal/5-download.png) - -## Set up diagnostic logs - -1. Under the **Monitoring** section in the sidebar, select **Diagnostic settings** > **Add diagnostic setting**. - - ![Screenshot of Diagnostic settings options](./media/howto-configure-server-logs-portal/add-diagnostic-setting.png) - -1. Provide a diagnostic setting name. - -1. Specify which data sinks to send the slow query logs (storage account, event hub, or Log Analytics workspace). - -1. Select **MySqlSlowLogs** as the log type. -![Screenshot of Diagnostic settings configuration options](./media/howto-configure-server-logs-portal/configure-diagnostic-setting.png) - -1. After you've configured the data sinks to pipe the slow query logs to, select **Save**. -![Screenshot of Diagnostic settings configuration options, with Save highlighted](./media/howto-configure-server-logs-portal/save-diagnostic-setting.png) - -1. Access the slow query logs by exploring them in the data sinks you configured. It can take up to 10 minutes for the logs to appear. - -## Next steps - -- See [Access slow query logs in CLI](howto-configure-server-logs-cli.md) to learn how to download slow query logs programmatically. -- Learn more about [slow query logs](concepts-server-logs.md) in Azure Database for MariaDB. -- For more information about the parameter definitions and logging, see the MariaDB documentation on [logs](https://mariadb.com/kb/en/library/slow-query-log-overview/). diff --git a/articles/mariadb/howto-configure-server-parameters-cli.md b/articles/mariadb/howto-configure-server-parameters-cli.md deleted file mode 100644 index f0b4def32c..0000000000 --- a/articles/mariadb/howto-configure-server-parameters-cli.md +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: Configure server parameters - Azure CLI - Azure Database for MariaDB -description: This article describes how to configure the service parameters in Azure Database for MariaDB using the Azure CLI command line utility. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.devlang: azurecli -ms.topic: how-to -ms.custom: devx-track-azurecli -ms.date: 06/24/2022 ---- -# Configure server parameters in Azure Database for MariaDB using the Azure CLI - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -You can list, show, and update configuration parameters for an Azure Database for MariaDB server by using Azure CLI, the Azure command-line utility. A subset of engine configurations is exposed at the server-level and can be modified. - ->[!Note] -> Server parameters can be updated globally at the server-level, use the [Azure CLI](./howto-configure-server-parameters-cli.md), [PowerShell](./howto-configure-server-parameters-using-powershell.md), or [Azure portal](./howto-server-parameters.md). - -## Prerequisites - -To step through this how-to guide, you need: -- [An Azure Database for MariaDB server](quickstart-create-mariadb-server-database-using-azure-cli.md) -- [Azure CLI](/cli/azure/install-azure-cli) command-line utility or use the Azure Cloud Shell in the browser. - -## List server configuration parameters for Azure Database for MariaDB server - -To list all modifiable parameters in a server and their values, run the [az mariadb server configuration list](/cli/azure/mariadb/server/configuration#az-mariadb-server-configuration-list) command. - -You can list the server configuration parameters for the server **mydemoserver.mariadb.database.azure.com** under resource group **myresourcegroup**. -```azurecli-interactive -az mariadb server configuration list --resource-group myresourcegroup --server mydemoserver -``` - -For the definition of each of the listed parameters, see the MariaDB reference section on [Server System Variables](https://mariadb.com/kb/en/library/server-system-variables/). - -## Show server configuration parameter details - -To show details about a particular configuration parameter for a server, run the [az mariadb server configuration show](/cli/azure/mariadb/server/configuration#az-mariadb-server-configuration-show) command. - -This example shows details of the **slow\_query\_log** server configuration parameter for server **mydemoserver.mariadb.database.azure.com** under resource group **myresourcegroup.** -```azurecli-interactive -az mariadb server configuration show --name slow_query_log --resource-group myresourcegroup --server mydemoserver -``` - -## Modify a server configuration parameter value - -You can also modify the value of a certain server configuration parameter, which updates the underlying configuration value for the MariaDB server engine. To update the configuration, use the [az mariadb server configuration set](/cli/azure/mariadb/server/configuration#az-mariadb-server-configuration-set) command. - -To update the **slow\_query\_log** server configuration parameter of server **mydemoserver.mariadb.database.azure.com** under resource group **myresourcegroup.** -```azurecli-interactive -az mariadb server configuration set --name slow_query_log --resource-group myresourcegroup --server mydemoserver --value ON -``` - -If you want to reset the value of a configuration parameter, omit the optional `--value` parameter, and the service applies the default value. For the example above, it would look like: -```azurecli-interactive -az mariadb server configuration set --name slow_query_log --resource-group myresourcegroup --server mydemoserver -``` - -This code resets the **slow\_query\_log** configuration to the default value **OFF**. - -## Setting parameters not listed - -If the server parameter you want to update is not listed in the Azure portal, you can optionally set the parameter at the connection level using `init_connect`. This sets the server parameters for each client connecting to the server. - -Update the **init\_connect** server configuration parameter of server **mydemoserver.mariadb.database.azure.com** under resource group **myresourcegroup** to set values such as character set. -```azurecli-interactive -az mariadb server configuration set --name init_connect --resource-group myresourcegroup --server mydemoserver --value "SET character_set_client=utf8;SET character_set_database=utf8mb4;SET character_set_connection=latin1;SET character_set_results=latin1;" -``` - -## Working with the time zone parameter - -### Populating the time zone tables - -The time zone tables on your server can be populated by calling the `mysql.az_load_timezone` stored procedure from a tool like the MariaDB command line or MariaDB Workbench. - -> [!NOTE] -> If you are running the `mysql.az_load_timezone` command from MariaDB Workbench, you may need to turn off safe update mode first using `SET SQL_SAFE_UPDATES=0;`. - -```sql -CALL mysql.az_load_timezone(); -``` - -> [!IMPORTANT] -> You should restart the server to ensure the time zone tables are properly populated. To restart the server, use the [Azure portal](howto-restart-server-portal.md) or [CLI](howto-restart-server-cli.md). - -To view available time zone values, run the following command: - -```sql -SELECT name FROM mysql.time_zone_name; -``` - -### Setting the global level time zone - -The global level time zone can be set using the [az mariadb server configuration set](/cli/azure/mariadb/server/configuration#az-mariadb-server-configuration-set) command. - -The following command updates the **time\_zone** server configuration parameter of server **mydemoserver.mariadb.database.azure.com** under resource group **myresourcegroup** to **US/Pacific**. - -```azurecli-interactive -az mariadb server configuration set --name time_zone --resource-group myresourcegroup --server mydemoserver --value "US/Pacific" -``` - -### Setting the session level time zone - -The session level time zone can be set by running the `SET time_zone` command from a tool like the MariaDB command line or MariaDB Workbench. The example below sets the time zone to the **US/Pacific** time zone. - -```sql -SET time_zone = 'US/Pacific'; -``` - -Refer to the MariaDB documentation for [Date and Time Functions](https://mariadb.com/kb/en/library/date-time-functions/). - -## Next steps - -- How to configure [server parameters in Azure portal](howto-server-parameters.md) diff --git a/articles/mariadb/howto-configure-server-parameters-using-powershell.md b/articles/mariadb/howto-configure-server-parameters-using-powershell.md deleted file mode 100644 index 4fe696278f..0000000000 --- a/articles/mariadb/howto-configure-server-parameters-using-powershell.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Configure Azure Database for MariaDB - Azure PowerShell -description: This article describes how to configure the service parameters in Azure Database for MariaDB using PowerShell. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.devlang: azurepowershell -ms.topic: how-to -ms.date: 06/24/2022 -ms.custom: -- devx-track-azurepowershell -- kr2b-contr-experiment ---- - -# Configure server parameters in Azure Database for MariaDB using PowerShell - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -You can list, show, and update configuration parameters for an Azure Database for MariaDB server using -PowerShell. A subset of engine configurations is exposed at the server-level and can be modified. - ->[!Note] -> Server parameters can be updated globally at the server-level, use the [Azure CLI](./howto-configure-server-parameters-cli.md), [PowerShell](./howto-configure-server-parameters-using-powershell.md), or [Azure portal](./howto-server-parameters.md). - -## Prerequisites - -To complete this how-to guide, you need: - -- The [Az PowerShell module](/powershell/azure/install-azure-powershell) installed locally or - [Azure Cloud Shell](https://shell.azure.com/) in the browser -- An [Azure Database for MariaDB server](quickstart-create-mariadb-server-database-using-azure-powershell.md) - -> [!IMPORTANT] -> While the Az.MariaDb PowerShell module is in preview, you must install it separately from the Az -> PowerShell module using the following command: `Install-Module -Name Az.MariaDb -AllowPrerelease`. -> Once the Az.MariaDb PowerShell module is generally available, it becomes part of future Az -> PowerShell module releases and available natively from within Azure Cloud Shell. - -If you choose to use PowerShell locally, connect to your Azure account using the -[Connect-AzAccount](/powershell/module/az.accounts/connect-azaccount) cmdlet. - -[!INCLUDE [cloud-shell-try-it.md](~/reusable-content/ce-skilling/azure/includes/cloud-shell-try-it.md)] - -## List server configuration parameters for Azure Database for MariaDB server - -To list all modifiable parameters in a server and their values, run the `Get-AzMariaDbConfiguration` -cmdlet. - -The following example lists the server configuration parameters for the server **mydemoserver** in -resource group **myresourcegroup**. - -```azurepowershell-interactive -Get-AzMariaDbConfiguration -ResourceGroupName myresourcegroup -ServerName mydemoserver -``` - -For the definition of each of the listed parameters, see the MariaDB reference section on -[Server System Variables](https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html). - -## Show server configuration parameter details - -To show details about a particular configuration parameter for a server, run the -`Get-AzMariaDbConfiguration` cmdlet and specify the **Name** parameter. - -This example shows details of the **slow\_query\_log** server configuration parameter for server -**mydemoserver** under resource group **myresourcegroup**. - -```azurepowershell-interactive -Get-AzMariaDbConfiguration -Name slow_query_log -ResourceGroupName myresourcegroup -ServerName mydemoserver -``` - -## Modify a server configuration parameter value - -You can also modify the value of a certain server configuration parameter, which updates the -underlying configuration value for the MariaDB server engine. To update the configuration, use the -`Update-AzMariaDbConfiguration` cmdlet. - -To update the **slow\_query\_log** server configuration parameter of server -**mydemoserver** under resource group **myresourcegroup**. - -```azurepowershell-interactive -Update-AzMariaDbConfiguration -Name slow_query_log -ResourceGroupName myresourcegroup -ServerName mydemoserver -Value On -``` - -## Next steps - -> [!div class="nextstepaction"] -> [Auto grow storage in Azure Database for MariaDB server using PowerShell](howto-auto-grow-storage-powershell.md). diff --git a/articles/mariadb/howto-configure-ssl.md b/articles/mariadb/howto-configure-ssl.md deleted file mode 100644 index 09fc4550f1..0000000000 --- a/articles/mariadb/howto-configure-ssl.md +++ /dev/null @@ -1,237 +0,0 @@ ---- -title: Configure SSL - Azure Database for MariaDB -description: Instructions for how to properly configure Azure Database for MariaDB and associated applications to correctly use SSL connections -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.date: 04/19/2023 -ms.devlang: csharp -# ms.devlang: csharp, golang, java, php, python, ruby -ms.custom: devx-track-csharp ---- -# Configure SSL connectivity in your application to securely connect to Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -Azure Database for MariaDB supports connecting your Azure Database for MariaDB server to client applications using Secure Sockets Layer (SSL). Enforcing SSL connections between your database server and your client applications helps protect against "man in the middle" attacks by encrypting the data stream between the server and your application. - -## Obtain SSL certificate - -Download the certificate needed to communicate over SSL with your Azure Database for MariaDB server from [https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem](https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem) and save the certificate file to your local drive (this tutorial uses c:\ssl for example). -**For Microsoft Internet Explorer and Microsoft Edge:** After the download has completed, rename the certificate to BaltimoreCyberTrustRoot.crt.pem. - -See the following links for certificates for servers in sovereign clouds: [Azure Government](https://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem), [Microsoft Azure operated by 21Vianet](https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem), and [Azure Germany](https://www.d-trust.net/cgi-bin/D-TRUST_Root_Class_3_CA_2_2009.crt). - -## Bind SSL - -### Connecting to server using MySQL Workbench over SSL - -Configure MySQL Workbench to connect securely over SSL. - -1. From the Setup New Connection dialogue, navigate to the **SSL** tab. - -1. Update the **Use SSL** field to "Require". - -1. In the **SSL CA File:** field, enter the file location of the **BaltimoreCyberTrustRoot.crt.pem**. - - ![Save SSL configuration](./media/howto-configure-ssl/mysql-workbench-ssl.png) - -For existing connections, you can bind SSL by right-clicking on the connection icon and choose edit. Then navigate to the **SSL** tab and bind the cert file. - -### Connecting to server using the MySQL CLI over SSL - -Another way to bind the SSL certificate is to use the MySQL command-line interface by executing the following commands. - -```terminal -mysql.exe -h mydemoserver.mariadb.database.azure.com -u Username@mydemoserver -p --ssl-mode=REQUIRED --ssl-ca=c:\ssl\BaltimoreCyberTrustRoot.crt.pem -``` - -> [!NOTE] -> When using the MySQL command-line interface on Windows, you may receive an error `SSL connection error: Certificate signature check failed`. If this occurs, replace the `--ssl-mode=REQUIRED --ssl-ca={filepath}` parameters with `--ssl`. - -## Enforcing SSL connections in Azure - -### Using the Azure portal - -Using the Azure portal, visit your Azure Database for MariaDB server, and then select **Connection security**. Use the toggle button to enable or disable the **Enforce SSL connection** setting, and then select **Save**. Microsoft recommends to always enable the **Enforce SSL connection** setting for enhanced security. -![enable-ssl for MariaDB server](./media/howto-configure-ssl/enable-ssl.png) - -### Using Azure CLI - -You can enable or disable the **ssl-enforcement** parameter by using Enabled or Disabled values respectively in Azure CLI. - -```azurecli-interactive -az mariadb server update --resource-group myresource --name mydemoserver --ssl-enforcement Enabled -``` - -## Verify the SSL connection - -Execute the mysql **status** command to verify that you have connected to your MariaDB server using SSL: - -```sql -status -``` - -Confirm the connection is encrypted by reviewing the output, which should show: **SSL: Cipher in use is AES256-SHA** - -## Sample code - -To establish a secure connection to Azure Database for MariaDB over SSL from your application, refer to the following code samples: - -### PHP - -```php -$conn = mysqli_init(); -mysqli_ssl_set($conn,NULL,NULL, "/var/www/html/BaltimoreCyberTrustRoot.crt.pem", NULL, NULL) ; -mysqli_real_connect($conn, 'mydemoserver.mariadb.database.azure.com', 'myadmin@mydemoserver', 'yourpassword', 'quickstartdb', 3306, MYSQLI_CLIENT_SSL, MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT); -if (mysqli_connect_errno($conn)) { -die('Failed to connect to MySQL: '.mysqli_connect_error()); -} -``` - -### Python (MySQLConnector Python) - -```python -try: - conn = mysql.connector.connect(user='myadmin@mydemoserver', - password='yourpassword', - database='quickstartdb', - host='mydemoserver.mariadb.database.azure.com', - ssl_ca='/var/www/html/BaltimoreCyberTrustRoot.crt.pem') -except mysql.connector.Error as err: - print(err) -``` - -### Python (PyMySQL) - -```python -conn = pymysql.connect(user='myadmin@mydemoserver', - password='yourpassword', - database='quickstartdb', - host='mydemoserver.mariadb.database.azure.com', - ssl={'ca': '/var/www/html/BaltimoreCyberTrustRoot.crt.pem'}) -``` - -### Ruby - -```ruby -client = Mysql2::Client.new( - :host => 'mydemoserver.mariadb.database.azure.com', - :username => 'myadmin@mydemoserver', - :password => 'yourpassword', - :database => 'quickstartdb', - :sslca => '/var/www/html/BaltimoreCyberTrustRoot.crt.pem' - :ssl_mode => 'required' - ) -``` - -#### Ruby on Rails - -```ruby -default: &default - adapter: mysql2 - username: username@mydemoserver - password: yourpassword - host: mydemoserver.mariadb.database.azure.com - sslca: BaltimoreCyberTrustRoot.crt.pem - sslverify: true -``` - -### Golang - -```go -rootCertPool := x509.NewCertPool() -pem, _ := ioutil.ReadFile("/var/www/html/BaltimoreCyberTrustRoot.crt.pem") -if ok := rootCertPool.AppendCertsFromPEM(pem); !ok { - log.Fatal("Failed to append PEM.") -} -mysql.RegisterTLSConfig("custom", &tls.Config{RootCAs: rootCertPool}) -var connectionString string -connectionString = fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?allowNativePasswords=true&tls=custom",'myadmin@mydemoserver' , 'yourpassword', 'mydemoserver.mariadb.database.azure.com', 'quickstartdb') -db, _ := sql.Open("mysql", connectionString) -``` - -### Java (JDBC) - -```java -# generate truststore and keystore in code - -String importCert = " -import "+ - " -alias mysqlServerCACert "+ - " -file " + ssl_ca + - " -keystore truststore "+ - " -trustcacerts " + - " -storepass password -noprompt "; -String genKey = " -genkey -keyalg rsa " + - " -alias mysqlClientCertificate -keystore keystore " + - " -storepass password123 -keypass password " + - " -dname CN=MS "; -sun.security.tools.keytool.Main.main(importCert.trim().split("\\s+")); -sun.security.tools.keytool.Main.main(genKey.trim().split("\\s+")); - -# use the generated keystore and truststore - -System.setProperty("javax.net.ssl.keyStore","path_to_keystore_file"); -System.setProperty("javax.net.ssl.keyStorePassword","password"); -System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file"); -System.setProperty("javax.net.ssl.trustStorePassword","password"); - -url = String.format("jdbc:mysql://%s/%s?serverTimezone=UTC&useSSL=true", 'mydemoserver.mariadb.database.azure.com', 'quickstartdb'); -properties.setProperty("user", 'myadmin@mydemoserver'); -properties.setProperty("password", 'yourpassword'); -conn = DriverManager.getConnection(url, properties); -``` - -### Java (MariaDB) - -```java -# generate truststore and keystore in code - -String importCert = " -import "+ - " -alias mysqlServerCACert "+ - " -file " + ssl_ca + - " -keystore truststore "+ - " -trustcacerts " + - " -storepass password -noprompt "; -String genKey = " -genkey -keyalg rsa " + - " -alias mysqlClientCertificate -keystore keystore " + - " -storepass password123 -keypass password " + - " -dname CN=MS "; -sun.security.tools.keytool.Main.main(importCert.trim().split("\\s+")); -sun.security.tools.keytool.Main.main(genKey.trim().split("\\s+")); - -# use the generated keystore and truststore - -System.setProperty("javax.net.ssl.keyStore","path_to_keystore_file"); -System.setProperty("javax.net.ssl.keyStorePassword","password"); -System.setProperty("javax.net.ssl.trustStore","path_to_truststore_file"); -System.setProperty("javax.net.ssl.trustStorePassword","password"); - -url = String.format("jdbc:mariadb://%s/%s?useSSL=true&trustServerCertificate=true", 'mydemoserver.mariadb.database.azure.com', 'quickstartdb'); -properties.setProperty("user", 'myadmin@mydemoserver'); -properties.setProperty("password", 'yourpassword'); -conn = DriverManager.getConnection(url, properties); -``` - -### .NET (MySqlConnector) - -```csharp -var builder = new MySqlConnectionStringBuilder -{ - Server = "mydemoserver.mysql.database.azure.com", - UserID = "myadmin@mydemoserver", - Password = "yourpassword", - Database = "quickstartdb", - SslMode = MySqlSslMode.VerifyCA, - CACertificateFile = "BaltimoreCyberTrustRoot.crt.pem", -}; -using (var connection = new MySqlConnection(builder.ConnectionString)) -{ - connection.Open(); -} -``` - -## Next steps - -To learn about certificate expiry and rotation, refer [certificate rotation documentation](concepts-certificate-rotation.md) diff --git a/articles/mariadb/howto-connection-string-powershell.md b/articles/mariadb/howto-connection-string-powershell.md deleted file mode 100644 index 924081e334..0000000000 --- a/articles/mariadb/howto-connection-string-powershell.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: Generate a connection string with PowerShell - Azure Database for MariaDB -description: This article provides an Azure PowerShell example to generate a connection string for connecting to Azure Database for MariaDB. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.custom: mvc, devx-track-azurepowershell -ms.topic: how-to -ms.date: 06/24/2022 ---- - -# How to generate an Azure Database for MariaDB connection string with PowerShell - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This article demonstrates how to generate a connection string for an Azure Database for MariaDB -server. You can use a connection string to connect to an Azure Database for MariaDB from many -different applications. - -## Requirements - -This article uses the resources created in the following guide as a starting point: - -* [Quickstart: Create an Azure Database for MariaDB server using PowerShell](quickstart-create-mariadb-server-database-using-azure-powershell.md) - -## Get the connection string - -The `Get-AzMariaDbConnectionString` cmdlet is used to generate a connection string for connecting -applications to Azure Database for MariaDB. The following example returns the connection string for a -PHP client from **mydemoserver**. - -```azurepowershell-interactive -Get-AzMariaDbConnectionString -Client PHP -Name mydemoserver -ResourceGroupName myresourcegroup -``` - -```Output -$con=mysqli_init();mysqli_ssl_set($con, NULL, NULL, {ca-cert filename}, NULL, NULL); mysqli_real_connect($con, "mydemoserver.mariadb.database.azure.com", "myadmin@mydemoserver", {your_password}, {your_database}, 3306); -``` - -Valid values for the `Client` parameter include: - -* ADO.NET -* JDBC -* Node.js -* PHP -* Python -* Ruby -* WebApp - -## Next steps - -> [!div class="nextstepaction"] -> [Customize Azure Database for MariaDB server parameters using PowerShell](howto-configure-server-parameters-using-powershell.md) diff --git a/articles/mariadb/howto-connection-string.md b/articles/mariadb/howto-connection-string.md deleted file mode 100644 index e3682aa662..0000000000 --- a/articles/mariadb/howto-connection-string.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Connection strings - Azure Database for MariaDB -description: This document lists the currently supported connection strings for applications to connect with Azure Database for MariaDB, including ADO.NET (C#), JDBC, Node.js, ODBC, PHP, Python, and Ruby. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.date: 06/24/2022 -ms.custom: "devx-track-python, devx-track-js, devx-track-csharp" ---- - -# How to connect applications to Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This topic lists the connection string types that are supported by Azure Database for MariaDB, together with templates and examples. You might have different parameters and settings in your connection string. - -- To obtain the certificate, see [How to configure SSL](./howto-configure-ssl.md). -- {your_host} = [servername].mariadb.database.azure.com -- {your_user}@{servername} = userID format for authentication correctly. If you only use the userID, the authentication will fail. - -## ADO.NET - -```csharp -Server={your_host}; Port=3306; Database={your_database}; Uid={username@servername}; Pwd={your_password}; SslMode=Preferred; -``` - -In this example, the server name is `mydemoserver`, the database name is `wpdb`, the user name is `WPAdmin`, and the password is `mypassword!2`. As a result, the connection string should be: - -```csharp -Server= "mydemoserver.mariadb.database.azure.com"; Port=3306; Database= "wpdb"; Uid= "WPAdmin@mydemoserver"; Pwd="mypassword!2"; SslMode=Required; -``` - -## JDBC - -```java -String url ="jdbc:mariadb://{your_host}:3306/{your_database}?useSSL=true&trustServerCertificate=true"; myDbConn = DriverManager.getConnection(url, "{username@servername}", {your_password}); -``` - -## Node.js - -```javascript -var conn = mysql.createConnection({host: "{your_host}", user: "{your_username}", password: {your_password}, database: {your_database}, port: 3306, ssl:{ca:fs.readFileSync({ca-cert filename})}}); -``` - -## ODBC - -```cpp -DRIVER={MARIADB ODBC 3.0 Driver}; Server="{your_host}"; Port=3306; Database={your_database}; Uid="{username@servername}"; Pwd={your_password}; sslca={ca-cert filename}; sslverify=1; -``` - -## PHP - -```php -$con=mysqli_init(); mysqli_ssl_set($con, NULL, NULL, {ca-cert filename}, NULL, NULL); mysqli_real_connect($con, "{your_host}", "{username@servername}", {your_password}, {your_database}, 3306); -``` - -## Python - -```python -cnx = mysql.connector.connect(user="{username@servername}", password={your_password}, host="{your_host}", port=3306, database={your_database}, ssl_ca={ca-cert filename}, ssl_verify_cert=true) -``` - -## Ruby - -```ruby -client = Mysql2::Client.new(username: "{username@servername}", password: {your_password}, database: {your_database}, host: "{your_host}", port: 3306, sslca:{ca-cert filename}, sslverify:false, sslcipher:'AES256-SHA') -``` - -## Get the connection string details from the Azure portal - -In the [Azure portal](https://portal.azure.com), go to your Azure Database for MariaDB server, and then select **Connection strings** to get the string list for your instance: -![The Connection strings pane in the Azure portal](./media/howto-connection-strings/connection-strings-on-portal.png) - -The string provides details such as the driver, server, and other database connection parameters. Modify these examples to use your own parameters, such as database name, password, and so on. You can then use this string to connect to the server from your code and applications. - - diff --git a/articles/mariadb/howto-create-manage-server-portal.md b/articles/mariadb/howto-create-manage-server-portal.md deleted file mode 100644 index 52de75566c..0000000000 --- a/articles/mariadb/howto-create-manage-server-portal.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: Manage server - Azure portal - Azure Database for MariaDB -description: Learn how to manage an Azure Database for MariaDB server from the Azure portal. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.date: 06/24/2022 ---- - -# Manage an Azure Database for MariaDB server using the Azure portal - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This article shows you how to manage your Azure Database for MariaDB servers. Management tasks include compute and storage scaling, admin password reset, and viewing server details. - -## Sign in - -Sign in to the [Azure portal](https://portal.azure.com). - -## Create a server - -Visit the [quickstart](quickstart-create-mariadb-server-database-using-azure-portal.md) to learn how to create and get started with an Azure Database for MariaDB server. - -## Scale compute and storage - -After server creation you can scale between the General Purpose and Memory Optimized tiers as your needs change. You can also scale compute and memory by increasing or decreasing vCores. Storage can be scaled up (however, you cannot scale storage down). - -### Scale between General Purpose and Memory Optimized tiers - -You can scale from General Purpose to Memory Optimized and vice-versa. Changing to and from the Basic tier after server creation is not supported. - -1. Select your server in the Azure portal. Select **Pricing tier**, located in the **Settings** section. - -2. Select **General Purpose** or **Memory Optimized**, depending on what you are scaling to. - - ![Screenshot shows the Azure portal with Pricing tier selected and a value of Memory Optimized selected.](./media/howto-create-manage-server-portal/change-pricing-tier.png) - - > [!NOTE] - > Changing tiers causes a server restart. - -4. Select **OK** to save changes. - -### Scale vCores up or down - -1. Select your server in the Azure portal. Select **Pricing tier**, located in the **Settings** section. - -2. Change the **vCore** setting by moving the slider to your desired value. - - ![scale-compute](./media/howto-create-manage-server-portal/scaling-compute.png) - - > [!NOTE] - > Scaling vCores causes a server restart. - -3. Select **OK** to save changes. - -### Scale storage up - -1. Select your server in the Azure portal. Select **Pricing tier**, located in the **Settings** section. - -2. Change the **Storage** setting by moving the slider up to your desired value. - - ![scale-storage](./media/howto-create-manage-server-portal/scaling-storage.png) - - > [!NOTE] - > Storage cannot be scaled down. - -3. Select **OK** to save changes. - -## Update admin password - -You can change the administrator role's password using the Azure portal. - -1. Select your server in the Azure portal. In the **Overview** window select **Reset password**. - - ![overview](./media/howto-create-manage-server-portal/overview-reset-password.png) - -2. Enter a new password and confirm the password. The textbox will prompt you about password complexity requirements. - - ![Screenshot shows the Reset the password dialog box with Password and Confirm password.](./media/howto-create-manage-server-portal/reset-password.png) - -3. Select **OK** to save the new password. - -## Delete a server - -You can delete your server if you no longer need it. - -1. Select your server in the Azure portal. In the **Overview** window select **Delete**. - - ![delete](./media/howto-create-manage-server-portal/overview-delete.png) - -2. Type the name of the server into the input box to confirm that this is the server you want to delete. - - ![Screenshot shows a dialog that verifies whether you want to delete a database, which is irreversible.](./media/howto-create-manage-server-portal/confirm-delete.png) - - > [!NOTE] - > Deleting a server is irreversible. - -3. Select **Delete**. - -## Next steps - -- Learn about [backups and server restore](howto-restore-server-portal.md) -- Learn about [tuning and monitoring options in Azure Database for MariaDB](concepts-monitoring.md) diff --git a/articles/mariadb/howto-create-users.md b/articles/mariadb/howto-create-users.md deleted file mode 100644 index 5bacad01d0..0000000000 --- a/articles/mariadb/howto-create-users.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: Create users - Azure Database for MariaDB -description: This article describes how you can create new user accounts to interact with an Azure Database for MariaDB server. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.date: 06/24/2022 ---- - -# Create users in Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This article describes how you can create users in Azure Database for MariaDB. - -When you first created your Azure Database for MariaDB, you provided a server admin login user name and password. For more information, you can follow the [Quickstart](quickstart-create-mariadb-server-database-using-azure-portal.md). You can locate your server admin login user name from the Azure portal. - -> [!NOTE] -> This article contains references to the term *slave*, a term that Microsoft no longer uses. When the term is removed from the software, we'll remove it from this article. - -The server admin user gets certain privileges for your server as listed: -SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER - -After the Azure Database for MariaDB server is created, you can use the first server admin user account to create more users and grant admin access to them. Also, the server admin account can be used to create less privileged users that have access to individual database schemas. - -> [!NOTE] -> The SUPER privilege and DBA role are not supported. Review the [privileges](concepts-limits.md#privileges--data-manipulation-support) in the limitations article to understand what's not supported in the service.

-> Password plugins such as "validate_password" and "caching_sha2_password" are not supported by the service. - -## Create more admin users - -1. Get the connection information and admin user name. - To connect to your database server, you need the full server name and admin sign-in credentials. You can easily find the server name and sign-in information from the server **Overview** page or the **Properties** page in the Azure portal. - -2. Use the admin account and password to connect to your database server. Use your preferred client tool, such as MySQL Workbench, mysql.exe, HeidiSQL, or others. - If you're unsure of how to connect, see [Use MySQL Workbench to connect and query data](./connect-workbench.md) - -3. Edit and run the following SQL code. Replace your new user name for the placeholder value `new_master_user`. This syntax grants the listed privileges on all the database schemas (*.*) to the user name (new_master_user in this example). - - ```sql - CREATE USER 'new_master_user'@'%' IDENTIFIED BY 'StrongPassword!'; - - GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'new_master_user'@'%' WITH GRANT OPTION; - - FLUSH PRIVILEGES; - ``` - -4. Verify the grants. - - ```sql - USE sys; - - SHOW GRANTS FOR 'new_master_user'@'%'; - ``` - -## Create database users - -1. Get the connection information and admin user name. - To connect to your database server, you need the full server name and admin sign-in credentials. You can easily find the server name and sign-in information from the server **Overview** page or the **Properties** page in the Azure portal. - -2. Use the admin account and password to connect to your database server. Use your preferred client tool, such as MySQL Workbench, mysql.exe, HeidiSQL, or others. - If you are unsure of how to connect, see [Use MySQL Workbench to connect and query data](./connect-workbench.md) - -3. Edit and run the following SQL code. Replace the placeholder value `db_user` with your intended new user name, and placeholder value `testdb` with your own database name. - - This sql code syntax creates a new database named testdb for example purposes. Then it creates a new user in the Azure Database for MariaDB service, and grants all privileges to the new database schema (testdb.\*) for that user. - - ```sql - CREATE DATABASE testdb; - - CREATE USER 'db_user'@'%' IDENTIFIED BY 'StrongPassword!'; - - GRANT ALL PRIVILEGES ON testdb . * TO 'db_user'@'%'; - - FLUSH PRIVILEGES; - ``` - -4. Verify the grants within the database. - - ```sql - USE testdb; - - SHOW GRANTS FOR 'db_user'@'%'; - ``` - -5. Log in to the server, specifying the designated database using the new user name and password. This example shows the mysql command line. With this command, you're prompted for the password for the user name. Replace your own server name, database name, and user name. - - ```bash - mysql --host mydemoserver.mariadb.database.azure.com --database testdb --user db_user@mydemoserver -p - ``` - - For more information about user account management, see MariaDB documentation for [User account management](https://mariadb.com/kb/en/library/user-account-management/), [GRANT Syntax](https://mariadb.com/kb/en/library/grant/), and [Privileges](https://mariadb.com/kb/en/library/grant/#privilege-levels). - -## azure_superuser - -All Azure Database for MySQL servers are created with a user called "azure_superuser". This is a system account created by Microsoft to manage the server to conduct monitoring, backups, and other regular maintenance. On-call engineers may also use this account to access the server during an incident with certificate authentication and must request access using just-in-time (JIT) processes. - -## Next steps - -Open the firewall for the IP addresses of the new users' machines to enable them to connect: -[Create and manage Azure Database for MariaDB firewall rules by using the Azure portal](howto-manage-firewall-portal.md) - - diff --git a/articles/mariadb/howto-data-in-replication.md b/articles/mariadb/howto-data-in-replication.md deleted file mode 100644 index a3d412fdc1..0000000000 --- a/articles/mariadb/howto-data-in-replication.md +++ /dev/null @@ -1,317 +0,0 @@ ---- -title: Configure data-in Replication - Azure Database for MariaDB -description: This article describes how to set up Data-in Replication in Azure Database for MariaDB. -ms.service: azure-database-mariadb -ms.custom: -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.date: 04/19/2023 ---- - -# Configure Data-in Replication in Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This article describes how to set up [Data-in Replication](concepts-data-in-replication.md) in Azure Database for MariaDB by configuring the source and replica servers. This article assumes that you have some prior experience with MariaDB servers and databases. - -To create a replica in the Azure Database for MariaDB service, [Data-in Replication](concepts-data-in-replication.md) synchronizes data from a source MariaDB server on-premises, in virtual machines (VMs), or in cloud database services. Data-in Replication is based on the binary log (binlog) file position-based replication native to MariaDB. To learn more about binlog replication, see the [binlog replication overview](https://mariadb.com/kb/en/library/replication-overview/). - -Review the [limitations and requirements](concepts-data-in-replication.md#limitations-and-considerations) of Data-in replication before performing the steps in this article. - -> [!NOTE] -> If your source server is version 10.2 or newer, we recommend that you set up Data-in Replication by using [Global Transaction ID](https://mariadb.com/kb/en/library/gtid/). - -> [!NOTE] -> This article contains references to the term *slave*, a term that Microsoft no longer uses. When the term is removed from the software, we'll remove it from this article. - -## Create a MariaDB server to use as a replica - -1. Create a new Azure Database for MariaDB server (for example, replica.mariadb.database.azure.com). The server is the replica server in Data-in Replication. - - To learn about server creation, see [Create an Azure Database for MariaDB server by using the Azure portal](quickstart-create-mariadb-server-database-using-azure-portal.md). - - > [!IMPORTANT] - > You must create the Azure Database for MariaDB server in the General Purpose or Memory Optimized pricing tiers. - -2. Create identical user accounts and corresponding privileges. - - User accounts aren't replicated from the source server to the replica server. To provide user access to the replica server, you must manually create all accounts and corresponding privileges on the newly created Azure Database for MariaDB server. - -3. Add the source server's IP address to the replica's firewall rules. - - Update firewall rules using the [Azure portal](howto-manage-firewall-portal.md) or [Azure CLI](howto-manage-firewall-cli.md). - -## Configure the source server - -The following steps prepare and configure the MariaDB server hosted on-premises, in a VM, or in a cloud database service for Data-in Replication. The MariaDB server is the source in Data-in Replication. - -1. Review the [primary server requirements](concepts-data-in-replication.md#requirements) before proceeding. - -2. Ensure the source server allows both inbound and outbound traffic on port 3306 and that the source server has a **public IP address**, the DNS is publicly accessible, or has a fully qualified domain name (FQDN). - - Test connectivity to the source server by attempting to connect from a tool such as the MySQL command line hosted on another machine or from the [Azure Cloud Shell](/azure/cloud-shell/overview) available in the Azure portal. - - If your organization has strict security policies and won't allow all IP addresses on the source server to enable communication from Azure to your source server, you can potentially use the below command to determine the IP address of your Azure Database for MariaDB server. - - 1. Sign in to your Azure Database for MariaDB using a tool like MySQL command line. - 2. Execute the below query. - - ```sql - SELECT @@global.redirect_server_host; - ``` - - Below is some sample output: - - ```output - +-----------------------------------------------------------+ - | @@global.redirect_server_host | - +-----------------------------------------------------------+ - | e299ae56f000.tr1830.westus1-a.worker.database.windows.net | - +-----------------------------------------------------------+ - ``` - - 3. Exit from the MySQL command line. - 4. Execute the below in the ping utility to get the IP address. - - ```terminal - ping - ``` - - For example: - - ```terminal - C:\Users\testuser> ping e299ae56f000.tr1830.westus1-a.worker.database.windows.net - Pinging tr1830.westus1-a.worker.database.windows.net (**11.11.111.111**) 56(84) bytes of data. - ``` - - 5. Configure your source server's firewall rules to include the previous step's outputted IP address on port 3306. - - > [!NOTE] - > This IP address may change due to maintenance/deployment operations. This method of connectivity is only for customers who cannot afford to allow all IP address on 3306 port. - -3. Turn on binary logging. - - To see if binary logging is enabled on the primary, enter the following command: - - ```sql - SHOW VARIABLES LIKE 'log_bin'; - ``` - - If the variable [`log_bin`](https://mariadb.com/kb/en/library/replication-and-binary-log-server-system-variables/#log_bin) returns the value `ON`, binary logging is enabled on your server. - - If `log_bin` returns the value `OFF`, edit the **my.cnf** file so that `log_bin=ON` turns on binary logging. Restart the server to make the change take effect. - -4. Configure source server settings. - - Data-in Replication requires the parameter `lower_case_table_names` to be consistent between the source and replica servers. The `lower_case_table_names` parameter is set to `1` by default in Azure Database for MariaDB. - - ```sql - SET GLOBAL lower_case_table_names = 1; - ``` - -5. Create a new replication role and set up permissions. - - Create a user account on the source server that's configured with replication privileges. You can create an account by using SQL commands or MySQL Workbench. If you plan to replicate with SSL, you must specify this when you create the user account. - - To learn how to add user accounts on your source server, see the [MariaDB documentation](https://mariadb.com/kb/en/library/create-user/). - - By using the following commands, the new replication role can access the source from any machine, not just the machine that hosts the source itself. For this access, specify **syncuser\@'%'** in the command to create a user. - - To learn more about MariaDB documentation, see [specifying account names](https://mariadb.com/kb/en/library/create-user/#account-names). - - **SQL command** - - - Replication with SSL - - To require SSL for all user connections, enter the following command to create a user: - - ```sql - CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword'; - GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%' REQUIRE SSL; - ``` - - - Replication without SSL - - If SSL isn't required for all connections, enter the following command to create a user: - - ```sql - CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword'; - GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%'; - ``` - - **MySQL Workbench** - - To create the replication role in MySQL Workbench, in the **Management** pane, select **Users and Privileges**. Then select **Add Account**. - - ![Users and Privileges](./media/howto-data-in-replication/users_privileges.png) - - Enter a username in the **Login Name** field. - - ![Sync user](./media/howto-data-in-replication/syncuser.png) - - Select the **Administrative Roles** panel, and then in the list of **Global Privileges**, select **Replication Slave**. Select **Apply** to create the replication role. - - ![Replication Slave](./media/howto-data-in-replication/replicationslave.png) - -6. Set the source server to read-only mode. - - Before you dump a database, the server must be placed in read-only mode. While in read-only mode, the source can't process any write transactions. To help avoid business impact, schedule the read-only window during an off-peak time. - - ```sql - FLUSH TABLES WITH READ LOCK; - SET GLOBAL read_only = ON; - ``` - -7. Get the current binary log file name and offset. - - To determine the current binary log file name and offset, run the command [`show master status`](https://mariadb.com/kb/en/library/show-master-status/). - - ```sql - show master status; - ``` - - The results should be similar to the following table: - - ![Master Status Results](./media/howto-data-in-replication/masterstatus.png) - - Note the binary file name, because it will be used in later steps. - -8. Get the GTID position (optional, needed for replication with GTID). - - Run the function [`BINLOG_GTID_POS`](https://mariadb.com/kb/en/library/binlog_gtid_pos/) to get the GTID position for the corresponding binlog file name and offset. - - ```sql - select BINLOG_GTID_POS('', ); - ``` - -## Dump and restore the source server - -1. Dump all the databases from the source server. - - Use mysqldump to dump all the databases from the source server. It isn't necessary to dump the MySQL library and test library. - - For more information, see [Dump and restore](howto-migrate-dump-restore.md). - -2. Set the source server to read/write mode. - - After the database has been dumped, change the source MariaDB server back to read/write mode. - - ```sql - SET GLOBAL read_only = OFF; - UNLOCK TABLES; - ``` - -3. Restore the dump file to the new server. - - Restore the dump file to the server created in the Azure Database for MariaDB service. See [Dump & Restore](howto-migrate-dump-restore.md) for how to restore a dump file to a MariaDB server. - - If the dump file is large, upload it to a VM in Azure within the same region as your replica server. Restore it to the Azure Database for MariaDB server from the VM. - -## Link the source and replica servers to start Data-in Replication - -1. Set the source server. - - All Data-in Replication functions are done by stored procedures. You can find all procedures at [Data-in Replication Stored Procedures](reference-stored-procedures.md). Stored procedures can be run in the MySQL shell or MySQL Workbench. - - To link two servers and start replication, sign in to the target replica server in the Azure DB for MariaDB service. Next, set the external instance as the source server by using the `mysql.az_replication_change_master` or `mysql.az_replication_change_master_with_gtid` stored procedure on the Azure DB for MariaDB server. - - ```sql - CALL mysql.az_replication_change_master('', '', '', 3306, '', , ''); - ``` - - or - - ```sql - CALL mysql.az_replication_change_master_with_gtid('', '', '', 3306, '', ''); - ``` - - - master_host: hostname of the source server - - master_user: username for the source server - - master_password: password for the source server - - master_log_file: binary log file name from running `show master status` - - master_log_pos: binary log position from running `show master status` - - master_gtid_pos: GTID position from running `select BINLOG_GTID_POS('', );` - - master_ssl_ca: CA certificate's context. If you're not using SSL, pass in an empty string.* - - *We recommend passing in the master_ssl_ca parameter as a variable. For more information, see the following examples. - - **Examples** - - - Replication with SSL - - Create the variable `@cert` by running the following commands: - - ```sql - SET @cert = '-----BEGIN CERTIFICATE----- - PLACE YOUR PUBLIC KEY CERTIFICATE\'S CONTEXT HERE - -----END CERTIFICATE-----' - ``` - - Replication with SSL is set up between a source server hosted in the domain companya.com, and a replica server hosted in Azure Database for MariaDB. This stored procedure is run on the replica. - - ```sql - CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mariadb-bin.000016', 475, @cert); - ``` - - - Replication without SSL - - Replication without SSL is set up between a source server hosted in the domain companya.com, and a replica server hosted in Azure Database for MariaDB. This stored procedure is run on the replica. - - ```sql - CALL mysql.az_replication_change_master('master.companya.com', 'syncuser', 'P@ssword!', 3306, 'mariadb-bin.000016', 475, ''); - ``` - -2. Start replication. - - Call the `mysql.az_replication_start` stored procedure to start replication. - - ```sql - CALL mysql.az_replication_start; - ``` - -3. Check replication status. - - Call the [`show slave status`](https://mariadb.com/kb/en/library/show-slave-status/) command on the replica server to view the replication status. - - ```sql - show slave status; - ``` - - If `Slave_IO_Running` and `Slave_SQL_Running` are in the state `yes`, and the value of `Seconds_Behind_Master` is `0`, replication is working. `Seconds_Behind_Master` indicates how late the replica is. If the value isn't `0`, then the replica is processing updates. - -4. Update the corresponding server variables to make data-in replication safer (required only for replication without GTID). - - Because of a native replication limitation in MariaDB, you must set [`sync_master_info`](https://mariadb.com/kb/en/library/replication-and-binary-log-system-variables/#sync_master_info) and [`sync_relay_log_info`](https://mariadb.com/kb/en/library/replication-and-binary-log-system-variables/#sync_relay_log_info) variables on replication without the GTID scenario. - - Check your replica server's `sync_master_info` and `sync_relay_log_info` variables to make sure the data-in replication is stable, and set the variables to `1`. - -## Other stored procedures - -### Stop replication - -To stop replication between the source and replica server, use the following stored procedure: - -```sql -CALL mysql.az_replication_stop; -``` - -### Remove the replication relationship - -To remove the relationship between the source and replica server, use the following stored procedure: - -```sql -CALL mysql.az_replication_remove_master; -``` - -### Skip the replication error - -To skip a replication error and allow replication, use the following stored procedure: - -```sql -CALL mysql.az_replication_skip_counter; -``` - -## Next steps - -Learn more about [Data-in Replication](concepts-data-in-replication.md) for Azure Database for MariaDB. diff --git a/articles/mariadb/howto-deny-public-network-access.md b/articles/mariadb/howto-deny-public-network-access.md deleted file mode 100644 index fcaffcb117..0000000000 --- a/articles/mariadb/howto-deny-public-network-access.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Deny Public Network Access - Azure portal - Azure Database for MariaDB -description: Learn how to configure Deny Public Network Access using Azure portal for your Azure Database for MariaDB -ms.service: azure-database-mariadb -author: mksuni -ms.author: sumuth -ms.topic: how-to -ms.date: 06/24/2022 ---- - -# Deny Public Network Access in Azure Database for MariaDB using Azure portal - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This article describes how you can configure an Azure Database for MariaDB server to deny all public configurations and allow only connections through private endpoints to further enhance the network security. - -## Prerequisites - -To complete this how-to guide, you need: - -* An [Azure Database for MariaDB](quickstart-create-MariaDB-server-database-using-azure-portal.md) - -## Set Deny Public Network Access - -Follow these steps to set MariaDB server Deny Public Network Access: - -1. In the [Azure portal](https://portal.azure.com/), select your existing Azure Database for MariaDB server. - -1. On the MariaDB server page, under **Settings**, select **Connection security** to open the connection security configuration page. - -1. In Deny Public Network Access, select **Yes** to enable deny public access for your MariaDB server. - - ![Azure Database for MariaDB Deny network access](./media/howto-deny-public-network-access/deny-public-network-access.PNG) - -1. Select **Save** to save the changes. - -1. A notification will confirm that connection security setting was successfully enabled. - - ![Azure Database for MariaDB Deny network access success](./media/howto-deny-public-network-access/deny-public-network-access-success.png) - -## Next steps - -Learn about [how to create alerts on metrics](howto-alert-metric.md). diff --git a/articles/mariadb/howto-manage-firewall-cli.md b/articles/mariadb/howto-manage-firewall-cli.md deleted file mode 100644 index d27a83f1a0..0000000000 --- a/articles/mariadb/howto-manage-firewall-cli.md +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: Manage firewall rules - Azure CLI - Azure Database for MariaDB -description: This article describes how to create and manage Azure Database for MariaDB firewall rules using Azure CLI command-line. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.devlang: azurecli -ms.topic: how-to -ms.custom: devx-track-azurecli -ms.date: 06/24/2022 ---- - -# Create and manage Azure Database for MariaDB firewall rules by using the Azure CLI - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -Server-level firewall rules can be used to manage access to an Azure Database for MariaDB Server from a specific IP address or a range of IP addresses. Using convenient Azure CLI commands, you can create, update, delete, list, and show firewall rules to manage your server. For an overview of Azure Database for MariaDB firewalls, see [Azure Database for MariaDB server firewall rules](./concepts-firewall-rules.md). - -Virtual Network (VNet) rules can also be used to secure access to your server. Learn more about [creating and managing Virtual Network service endpoints and rules using the Azure CLI](howto-manage-vnet-cli.md). - -## Prerequisites - -* [Install Azure CLI](/cli/azure/install-azure-cli). -* An [Azure Database for MariaDB server and database](quickstart-create-mariadb-server-database-using-azure-cli.md). - -## Firewall rule commands: - -The **az mariadb server firewall-rule** command is used from the Azure CLI to create, delete, list, show, and update firewall rules. - -Commands: -- **create**: Create an Azure MariaDB server firewall rule. -- **delete**: Delete an Azure MariaDB server firewall rule. -- **list**: List the Azure MariaDB server firewall rules. -- **show**: Show the details of an Azure MariaDB server firewall rule. -- **update**: Update an Azure MariaDB server firewall rule. - -## Sign in to Azure and list your Azure Database for MariaDB Servers - -Securely connect Azure CLI with your Azure account by using the **az login** command. - -1. From the command-line, run the following command: - ```azurecli - az login - ``` - This command outputs a code to use in the next step. - -2. Use a web browser to open the page [https://aka.ms/devicelogin](https://aka.ms/devicelogin), and then enter the code. - -3. At the prompt, sign in using your Azure credentials. - -4. After your login is authorized, a list of subscriptions is printed in the console. Copy the ID of the desired subscription to set the current subscription to use. Use the [az account set](/cli/azure/account#az-account-set) command. - ```azurecli-interactive - az account set --subscription - ``` - -5. List the Azure Databases for MariaDB servers for your subscription and resource group if you are unsure of the names. Use the [az mariadb server list](/cli/azure/mariadb/server#az-mariadb-server-list) command. - - ```azurecli-interactive - az mariadb server list --resource-group myresourcegroup - ``` - - Note the name attribute in the listing, which you need to specify the MariaDB server to work on. If needed, confirm the details for that server and using the name attribute to ensure it is correct. Use the [az mariadb server show](/cli/azure/mariadb/server#az-mariadb-server-show) command. - - ```azurecli-interactive - az mariadb server show --resource-group myresourcegroup --name mydemoserver - ``` - -## List firewall rules on Azure Database for MariaDB Server - -Using the server name and the resource group name, list the existing server firewall rules on the server. Use the [az mariadb server firewall list](/cli/azure/mariadb/server/firewall-rule#az-mariadb-server-firewall-rule-list) command. Notice that the server name attribute is specified in the **--server** switch and not in the **--name** switch. -```azurecli-interactive -az mariadb server firewall-rule list --resource-group myresourcegroup --server-name mydemoserver -``` -The output lists the rules, if any, in JSON format (by default). You can use the **--output table** switch to output the results in a more readable table format. -```azurecli-interactive -az mariadb server firewall-rule list --resource-group myresourcegroup --server-name mydemoserver --output table -``` -## Create a firewall rule on Azure Database for MariaDB Server - -Using the Azure MariaDB server name and the resource group name, create a new firewall rule on the server. Use the [az mariadb server firewall create](/cli/azure/mariadb/server/firewall-rule#az-mariadb-server-firewall-rule-create) command. Provide a name for the rule, as well as the start IP and end IP (to provide access to a range of IP addresses) for the rule. -```azurecli-interactive -az mariadb server firewall-rule create --resource-group myresourcegroup --server-name mydemoserver --name FirewallRule1 --start-ip-address 13.83.152.0 --end-ip-address 13.83.152.15 -``` - -To allow access for a single IP address, provide the same IP address as the Start IP and End IP, as in this example. -```azurecli-interactive -az mariadb server firewall-rule create --resource-group myresourcegroup --server-name mydemoserver --name FirewallRule1 --start-ip-address 1.1.1.1 --end-ip-address 1.1.1.1 -``` - -To allow applications from Azure IP addresses to connect to your Azure Database for MariaDB server, provide the IP address 0.0.0.0 as the Start IP and End IP, as in this example. -```azurecli-interactive -az mariadb server firewall-rule create --resource-group myresourcegroup --server mariadb --name "AllowAllWindowsAzureIps" --start-ip-address 0.0.0.0 --end-ip-address 0.0.0.0 -``` - -> [!IMPORTANT] -> This option configures the firewall to allow all connections from Azure including connections from the subscriptions of other customers. When selecting this option, make sure your login and user permissions limit access to only authorized users. -> - -Upon success, each create command output lists the details of the firewall rule you have created, in JSON format (by default). If there is a failure, the output shows error message text instead. - -## Update a firewall rule on Azure Database for MariaDB server - -Using the Azure MariaDB server name and the resource group name, update an existing firewall rule on the server. Use the [az mariadb server firewall update](/cli/azure/mariadb/server/firewall-rule#az-mariadb-server-firewall-rule-update) command. Provide the name of the existing firewall rule as input, as well as the start IP and end IP attributes to update. -```azurecli-interactive -az mariadb server firewall-rule update --resource-group myresourcegroup --server-name mydemoserver --name FirewallRule1 --start-ip-address 13.83.152.0 --end-ip-address 13.83.152.1 -``` -Upon success, the command output lists the details of the firewall rule you have updated, in JSON format (by default). If there is a failure, the output shows error message text instead. - -> [!NOTE] -> If the firewall rule does not exist, the rule is created by the update command. - -## Show firewall rule details on Azure Database for MariaDB Server - -Using the Azure MariaDB server name and the resource group name, show the existing firewall rule details from the server. Use the [az mariadb server firewall show](/cli/azure/mariadb/server/firewall-rule#az-mariadb-server-firewall-rule-show) command. Provide the name of the existing firewall rule as input. -```azurecli-interactive -az mariadb server firewall-rule show --resource-group myresourcegroup --server-name mydemoserver --name FirewallRule1 -``` -Upon success, the command output lists the details of the firewall rule you have specified, in JSON format (by default). If there is a failure, the output shows error message text instead. - -## Delete a firewall rule on Azure Database for MariaDB Server - -Using the Azure MariaDB server name and the resource group name, remove an existing firewall rule from the server. Use the [az mariadb server firewall delete](/cli/azure/mariadb/server/firewall-rule#az-mariadb-server-firewall-rule-delete) command. Provide the name of the existing firewall rule. -```azurecli-interactive -az mariadb server firewall-rule delete --resource-group myresourcegroup --server-name mydemoserver --name FirewallRule1 -``` -Upon success, there is no output. Upon failure, error message text displays. - -## Next steps - -- Understand more about [Azure Database for MariaDB Server firewall rules](./concepts-firewall-rules.md). -- [Create and manage Azure Database for MariaDB firewall rules using the Azure portal](./howto-manage-firewall-portal.md). -- Further secure access to your server by [creating and managing Virtual Network service endpoints and rules using the Azure CLI](howto-manage-vnet-cli.md). diff --git a/articles/mariadb/howto-manage-firewall-portal.md b/articles/mariadb/howto-manage-firewall-portal.md deleted file mode 100644 index 6985863be7..0000000000 --- a/articles/mariadb/howto-manage-firewall-portal.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Manage firewall rules - Azure portal - Azure Database for MariaDB -description: Create and manage Azure Database for MariaDB firewall rules using the Azure portal -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.date: 06/24/2022 ---- -# Create and manage Azure Database for MariaDB firewall rules by using the Azure portal - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -Server-level firewall rules can be used to manage access to an Azure Database for MariaDB Server from a specified IP address or a range of IP addresses. - -Virtual Network (VNet) rules can also be used to secure access to your server. Learn more about [creating and managing Virtual Network service endpoints and rules using the Azure portal](howto-manage-vnet-portal.md). - -## Create a server-level firewall rule in the Azure portal - -1. On the MariaDB server page, under Settings heading, select **Connection Security** to open the Connection Security page for the Azure Database for MariaDB. - - ![Azure portal - click Connection security](./media/howto-manage-firewall-portal/1-connection-security.png) - -2. Select **Add My IP** on the toolbar. This automatically creates a firewall rule with the public IP address of your computer, as perceived by the Azure system. - - ![Azure portal - click Add My IP](./media/howto-manage-firewall-portal/2-add-my-ip.png) - -3. Verify your IP address before saving the configuration. In some situations, the IP address observed by Azure portal differs from the IP address used when accessing the internet and Azure servers. Therefore, you may need to change the Start IP and End IP to make the rule function as expected. - - Use a search engine or other online tool to check your own IP address. For example, search "what is my IP address". - -4. Add additional address ranges. In the firewall rules for the Azure Database for MariaDB, you can specify a single IP address or a range of addresses. If you want to limit the rule to a single IP address, type the same address in the Start IP and End IP fields. Opening the firewall enables administrators, users, and application to access any database on the MariaDB server to which they have valid credentials. - - ![Azure portal - firewall rules](./media/howto-manage-firewall-portal/4-specify-addresses.png) - -5. Select **Save** on the toolbar to save this server-level firewall rule. Wait for the confirmation that the update to the firewall rules is successful. - - ![Azure portal - click Save](./media/howto-manage-firewall-portal/5-save-firewall-rule.png) - -## Connecting from Azure - -To allow applications from Azure to connect to your Azure Database for MariaDB server, Azure connections must be enabled. For example, to host an Azure Web Apps application, or an application that runs in an Azure VM, or to connect from an Azure Data Factory data management gateway. The resources do not need to be in the same Virtual Network (VNet) or Resource Group for the firewall rule to enable those connections. When an application from Azure attempts to connect to your database server, the firewall verifies that Azure connections are allowed. There are a couple of methods to enable these types of connections. A firewall setting with starting and ending address equal to 0.0.0.0 indicates these connections are allowed. Alternatively, you can set the **Allow access to Azure services** option to **ON** in the portal from the **Connection security** pane and select **Save**. If the connection attempt is not allowed, the request does not reach the Azure Database for MariaDB server. - -> [!IMPORTANT] -> This option configures the firewall to allow all connections from Azure including connections from the subscriptions of other customers. When selecting this option, make sure your login and user permissions limit access to only authorized users. -> - -## Manage existing firewall rules in the Azure portal - -Repeat the steps to manage the firewall rules. -* To add the current computer, select **+ Add My IP**. Select **Save** to save the changes. -* To add additional IP addresses, type in the **RULE NAME**, **START IP**, and **END IP**. Select **Save** to save the changes. -* To modify an existing rule, select any of the fields in the rule, and then modify. Select **Save** to save the changes. -* To delete an existing rule, select the ellipsis […], and then select **Delete**. Select **Save** to save the changes. - -## Next steps - -- Similarly, you can script to [Create and manage Azure Database for MariaDB firewall rules using Azure CLI](howto-manage-firewall-cli.md). - - Further secure access to your server by [creating and managing Virtual Network service endpoints and rules using the Azure portal](howto-manage-vnet-portal.md). diff --git a/articles/mariadb/howto-manage-vnet-cli.md b/articles/mariadb/howto-manage-vnet-cli.md deleted file mode 100644 index 201b1a3bab..0000000000 --- a/articles/mariadb/howto-manage-vnet-cli.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: Manage VNet endpoints - Azure CLI - Azure Database for MariaDB -description: This article describes how to create and manage Azure Database for MariaDB VNet service endpoints and rules using Azure CLI command line. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.devlang: azurecli -ms.topic: how-to -ms.custom: devx-track-azurecli -ms.date: 06/24/2022 ---- -# Create and manage Azure Database for MariaDB VNet service endpoints using Azure CLI - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -Virtual Network (VNet) services endpoints and rules extend the private address space of a Virtual Network to your Azure Database for MariaDB server. Using convenient Azure CLI commands, you can create, update, delete, list, and show VNet service endpoints and rules to manage your server. For an overview of Azure Database for MariaDB VNet service endpoints, including limitations, see [Azure Database for MariaDB Server VNet service endpoints](concepts-data-access-security-vnet.md). VNet service endpoints are available in all supported regions for Azure Database for MariaDB. - -[!INCLUDE [quickstarts-free-trial-note](~/reusable-content/ce-skilling/azure/includes/quickstarts-free-trial-note.md)] - -[!INCLUDE [azure-cli-prepare-your-environment.md](~/reusable-content/azure-cli/azure-cli-prepare-your-environment.md)] - -- You need an [Azure Database for MariaDB server and database](quickstart-create-mariadb-server-database-using-azure-cli.md). - -> [!NOTE] -> Support for VNet service endpoints is only for General Purpose and Memory Optimized servers. - -## Configure VNet service endpoints - -The [az network vnet](/cli/azure/network/vnet) commands are used to configure Virtual Networks. Service endpoints can be configured on virtual networks independently, by a user with write access to the virtual network. - -To secure Azure service resources to a VNet, the user must have permission to "Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/" for the subnets being added. This permission is included in the built-in service administrator roles, by default and can be modified by creating custom roles. - -Learn more about [built-in roles](/azure/role-based-access-control/built-in-roles) and assigning specific permissions to [custom roles](/azure/role-based-access-control/custom-roles). - -VNets and Azure service resources can be in the same or different subscriptions. If the VNet and Azure service resources are in different subscriptions, the resources should be under the same Active Directory (AD) tenant. Ensure that both the subscriptions have the **Microsoft.Sql** resource provider registered. For more information refer [resource-manager-registration][resource-manager-portal] - -> [!IMPORTANT] -> It is highly recommended to read this article about service endpoint configurations and considerations before configuring service endpoints. **Virtual Network service endpoint:** A [Virtual Network service endpoint](/azure/virtual-network/virtual-network-service-endpoints-overview) is a subnet whose property values include one or more formal Azure service type names. VNet services endpoints use the service type name **Microsoft.Sql**, which refers to the Azure service named SQL Database. This service tag also applies to the Azure SQL Database, Azure Database for MariaDB, PostgreSQL, and MySQL services. It is important to note when applying the **Microsoft.Sql** service tag to a VNet service endpoint it configures service endpoint traffic for all Azure Database services, including Azure SQL Database, Azure Database for PostgreSQL, Azure Database for MariaDB, and Azure Database for MySQL servers on the subnet. - -## Sample script - -[!INCLUDE [cli-launch-cloud-shell-sign-in.md](~/reusable-content/ce-skilling/azure/includes/cli-launch-cloud-shell-sign-in.md)] - -### Run the script - -:::code language="azurecli" source="~/azure_cli_scripts/mariadb/create-mariadb-server-vnet/create-mariadb-server.sh" id="FullScript"::: - -## Clean up deployment - -[!INCLUDE [cli-clean-up-resources.md](~/reusable-content/ce-skilling/azure/includes/cli-clean-up-resources.md)] - - ```azurecli - echo "Cleaning up resources by removing the resource group..." - az group delete --name $resourceGroup -y - - ``` - - -[resource-manager-portal]: /azure/azure-resource-manager/management/resource-providers-and-types diff --git a/articles/mariadb/howto-manage-vnet-portal.md b/articles/mariadb/howto-manage-vnet-portal.md deleted file mode 100644 index 6930bc2a0c..0000000000 --- a/articles/mariadb/howto-manage-vnet-portal.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Manage VNet endpoints - Azure portal - Azure Database for MariaDB -description: Create and manage Azure Database for MariaDB VNet service endpoints and rules using the Azure portal -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.date: 06/24/2022 ---- -# Create and manage Azure Database for MariaDB VNet service endpoints and VNet rules by using the Azure portal - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -Virtual Network (VNet) services endpoints and rules extend the private address space of a Virtual Network to your Azure Database for MariaDB server. For an overview of Azure Database for MariaDB VNet service endpoints, including limitations, see [Azure Database for MariaDB Server VNet service endpoints](concepts-data-access-security-vnet.md). VNet service endpoints are available in all supported regions for Azure Database for MariaDB. - -> [!NOTE] -> Support for VNet service endpoints is only for General Purpose and Memory Optimized servers. - -## Create a VNet rule and enable service endpoints - -1. On the MariaDB server page, under the Settings heading, select **Connection Security** to open the Connection Security pane for Azure Database for MariaDB. - -2. Ensure that the Allow access to Azure services control is set to **OFF**. - -> [!Important] -> If you set it to ON, your Azure MariaDB Database server accepts communication from any subnet. Leaving the control set to ON might be excessive access from a security point of view. The Microsoft Azure Virtual Network service endpoint feature, in coordination with the virtual network rule feature of Azure Database for MariaDB, together can reduce your security surface area. - -3. Next, select on **+ Adding existing virtual network**. If you do not have an existing VNet you can select **+ Create new virtual network** to create one. See [Quickstart: Create a virtual network using the Azure portal](/azure/virtual-network/quick-create-portal) - - ![Azure portal - click Connection security](./media/howto-manage-vnet-portal/1-connection-security.png) - -4. Enter a VNet rule name, select the subscription, Virtual network and Subnet name and then select **Enable**. This automatically enables VNet service endpoints on the subnet using the **Microsoft.SQL** service tag. - - ![Azure portal - configure VNet](./media/howto-manage-vnet-portal/2-configure-vnet.png) - - The account must have the necessary permissions to create a virtual network and service endpoint. - - Service endpoints can be configured on virtual networks independently, by a user with write access to the virtual network. - - To secure Azure service resources to a VNet, the user must have permission to "Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/" for the subnets being added. This permission is included in the built-in service administrator roles, by default and can be modified by creating custom roles. - - Learn more about [built-in roles](/azure/role-based-access-control/built-in-roles) and assigning specific permissions to [custom roles](/azure/role-based-access-control/custom-roles). - - VNets and Azure service resources can be in the same or different subscriptions. If the VNet and Azure service resources are in different subscriptions, the resources should be under the same Active Directory (AD) tenant. Ensure that both the subscriptions have the **Microsoft.Sql** resource provider registered. For more information refer [resource-manager-registration][resource-manager-portal] - - > [!IMPORTANT] - > It is highly recommended to read this article about service endpoint configurations and considerations before configuring service endpoints. **Virtual Network service endpoint:** A [Virtual Network service endpoint](/azure/virtual-network/virtual-network-service-endpoints-overview) is a subnet whose property values include one or more formal Azure service type names. VNet services endpoints use the service type name **Microsoft.Sql**, which refers to the Azure service named SQL Database. This service tag also applies to the Azure SQL Database, Azure Database for MariaDB, PostgreSQL, and MySQL services. It is important to note when applying the **Microsoft.Sql** service tag to a VNet service endpoint it configures service endpoint traffic for all Azure Database services, including Azure SQL Database, Azure Database for PostgreSQL, Azure Database for MariaDB, and Azure Database for MySQL servers on the subnet. - > - -5. Once enabled, select **OK** and you will see that VNet service endpoints are enabled along with a VNet rule. - - ![VNet service endpoints enabled and VNet rule created](./media/howto-manage-vnet-portal/3-vnet-service-endpoints-enabled-vnet-rule-created.png) - -## Next steps - -- Learn more about [configuring SSL on Azure Database for MariaDB](howto-configure-ssl.md) -- Similarly, you can script to [Enable VNet service endpoints and create a VNET rule for Azure Database for MariaDB using Azure CLI](howto-manage-vnet-cli.md). - - -[resource-manager-portal]: /azure/azure-resource-manager/management/resource-providers-and-types diff --git a/articles/mariadb/howto-migrate-dump-restore.md b/articles/mariadb/howto-migrate-dump-restore.md deleted file mode 100644 index 3abca66d8a..0000000000 --- a/articles/mariadb/howto-migrate-dump-restore.md +++ /dev/null @@ -1,147 +0,0 @@ ---- -title: Migrate with dump and restore - Azure Database for MariaDB -description: This article explains two common ways to back up and restore databases in your Azure database for MariaDB by using tools such as mysqldump, MySQL Workbench, and phpMyAdmin. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.subservice: migration-guide -ms.custom: -ms.topic: how-to -ms.date: 04/19/2023 ---- - -# Migrate your MariaDB database to an Azure database for MariaDB by using dump and restore - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This article explains two common ways to back up and restore databases in your Azure database for MariaDB: - -- Dump and restore by using a command-line tool (using mysqldump). -- Dump and restore using phpMyAdmin. - -## Prerequisites - -Before you begin migrating your database, do the following: - -- Create an [Azure Database for MariaDB server - Azure portal](quickstart-create-mariadb-server-database-using-azure-portal.md). -- Install the [mysqldump](https://mariadb.com/kb/en/library/mysqldump/) command-line utility. -- Download and install [MySQL Workbench](https://dev.mysql.com/downloads/workbench/) or another third-party MySQL tool for running dump and restore commands. - -## Use common tools - -Use common utilities and tools such as MySQL Workbench or mysqldump to remotely connect and restore data into your Azure database for MariaDB. Use these tools on your client machine with an internet connection to connect to the Azure database for MariaDB. Use an SSL-encrypted connection as a best security practice. For more information, see [Configure SSL connectivity in Azure Database for MariaDB](concepts-ssl-connection-security.md). You don't need to move the dump files to any special cloud location when you migrate data to your Azure database for MariaDB. - -## Common uses for dump and restore - -You can use MySQL utilities such as mysqldump and mysqlpump to dump and load databases into an Azure database for MariaDB server in several common scenarios. - -- Use database dumps when you're migrating an entire database. This recommendation holds when you're moving a large amount of data, or when you want to minimize service interruption for live sites or applications. -- Make sure that all tables in the database use the InnoDB storage engine when you're loading data into your Azure database for MariaDB. Azure Database for MariaDB supports only the InnoDB storage engine, and no other storage engines. If your tables are configured with other storage engines, convert them into the InnoDB engine format before you migrate them to your Azure database for MariaDB. - - For example, if you have a WordPress app or a web app that uses MyISAM tables, first convert those tables by migrating them into InnoDB format before you restore them to your Azure database for MariaDB. Use the clause `ENGINE=InnoDB` to set the engine to use for creating a new table, and then transfer the data into the compatible table before you restore it. - - ```sql - INSERT INTO innodb_table SELECT * FROM myisam_table ORDER BY primary_key_columns - ``` - -- To avoid any compatibility issues when you're dumping databases, ensure that you're using the same version of MariaDB on the source and destination systems. For example, if your existing MariaDB server is version 10.2, you should migrate to your Azure database for MariaDB that's configured to run version 10.2. The `mysql_upgrade` command doesn't function in an Azure Database for MariaDB server, and it isn't supported. If you need to upgrade across MariaDB versions, first dump or export your earlier-version database into a later version of MariaDB in your own environment. You can then run `mysql_upgrade` before you try migrating into your Azure database for MariaDB. - -## Performance considerations - -To optimize performance when you're dumping large databases, keep in mind the following considerations: - -- Use the `exclude-triggers` option in mysqldump. Exclude triggers from dump files to avoid having the trigger commands fire during the data restore. -- Use the `single-transaction` option to set the transaction isolation mode to REPEATABLE READ and send a START TRANSACTION SQL statement to the server before dumping data. Dumping many tables within a single transaction causes some extra storage to be consumed during the restore. The `single-transaction` option and the `lock-tables` option are mutually exclusive. This is because LOCK TABLES causes any pending transactions to be committed implicitly. To dump large tables, combine the `single-transaction` option with the `quick` option. -- Use the `extended-insert` multiple-row syntax that includes several VALUE lists. This approach results in a smaller dump file and speeds up inserts when the file is reloaded. -- Use the `order-by-primary` option in mysqldump when you're dumping databases, so that the data is scripted in primary key order. -- Use the `disable-keys` option in mysqldump when you're dumping data, to disable foreign key constraints before the load. Disabling foreign key checks helps improve performance. Enable the constraints and verify the data after the load to ensure referential integrity. -- Use partitioned tables when appropriate. -- Load data in parallel. Avoid too much parallelism, which could cause you to hit a resource limit, and monitor resources by using the metrics available in the Azure portal. -- Use the `defer-table-indexes` option in mysqlpump when you're dumping databases, so that index creation happens after table data is loaded. -- Copy the backup files to an Azure blob store and perform the restore from there. This approach should be a lot faster than performing the restore across the internet. - -## Create a backup file - -To back up an existing MariaDB database on the local on-premises server or in a virtual machine, run the following command by using mysqldump: - -```bash -mysqldump --opt -u -p > -``` - -The parameters to provide are: - -- *\*: Your database user name -- *\*: The password for your database (note that there is no space between -p and the password) -- *\*: The name of your database -- *\*: The file name for your database backup -- *\<--opt>*: The mysqldump option - -For example, to back up a database named *testdb* on your MariaDB server with the user name *testuser* and with no password to a file testdb_backup.sql, use the following command. The command backs up the `testdb` database into a file called `testdb_backup.sql`, which contains all the SQL statements needed to re-create the database. - -```bash -mysqldump -u root -p testdb > testdb_backup.sql -``` - -To select specific tables to back up in your database, list the table names, separated by spaces. For example, to back up only table1 and table2 tables from the *testdb*, follow this example: - -```bash -mysqldump -u root -p testdb table1 table2 > testdb_tables_backup.sql -``` - -To back up more than one database at once, use the --database switch and list the database names, separated by spaces. - -```bash -mysqldump -u root -p --databases testdb1 testdb3 testdb5 > testdb135_backup.sql -``` - -## Create a database on the target server - -Create an empty database on the target Azure Database for MariaDB server where you want to migrate the data. Use a tool such as MySQL Workbench to create the database. The database can have the same name as the database that contains the dumped data, or you can create a database with a different name. - -To get connected, locate the connection information on the **Overview** pane of your Azure database for MariaDB. - -![Screenshot of the Overview pane for an Azure database for MariaDB server in the Azure portal.](./media/howto-migrate-dump-restore/1_server-overview-name-login.png) - -In MySQL Workbench, add the connection information. - -![Screenshot of the MySQL Connections pane in MySQL Workbench.](./media/howto-migrate-dump-restore/2_setup-new-connection.png) - -## Restore your MariaDB database - -After you've created the target database, you can use the mysql command or MySQL Workbench to restore the data into the newly created database from the dump file. - -```bash -mysql -h -u -p < -``` - -In this example, you restore the data into the newly created database on the target Azure Database for MariaDB server. - -```bash -mysql -h mydemoserver.mariadb.database.azure.com -u myadmin@mydemoserver -p testdb < testdb_backup.sql -``` - -## Export your MariaDB database by using phpMyAdmin - -To export, you can use the common tool phpMyAdmin, which might already be installed locally in your environment. To export your MariaDB database, do the following: - -1. Open phpMyAdmin. -1. On the left pane, select your database, and then select the **Export** link. A new page appears to view the dump of database. -1. In the **Export** area, select the **Select All** link to choose the tables in your database. -1. In the **SQL options** area, select the appropriate options. -1. Select the **Save as file** option and the corresponding compression option, and then select **Go**. At the prompt, save the file locally. - -## Import your database by using phpMyAdmin - -The importing process is similar to the exporting process. Do the following: - -1. Open phpMyAdmin. -1. On the phpMyAdmin setup page, select **Add** to add your Azure Database for MariaDB server. -1. Enter the connection details and login information. -1. Create an appropriately named database, and then select it on the left pane. To rewrite the existing database, select the database name, select all the check boxes beside the table names, and select **Drop** to delete the existing tables. -1. Select the **SQL** link to show the page where you can enter SQL commands or upload your SQL file. -1. Select the **browse** button to find the database file. -1. Select the **Go** button to export the backup, execute the SQL commands, and re-create your database. - -## Next steps - -- [Connect applications to your Azure database for MariaDB](./howto-connection-string.md). diff --git a/articles/mariadb/howto-move-regions-portal.md b/articles/mariadb/howto-move-regions-portal.md deleted file mode 100644 index 02719cb9b4..0000000000 --- a/articles/mariadb/howto-move-regions-portal.md +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: Move Azure regions - Azure portal - Azure Database for MariaDB -description: Move an Azure Database for MariaDB server from one Azure region to another using a read replica and the Azure portal. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.custom: subject-moving-resources -ms.date: 06/24/2022 -#Customer intent: As an Azure service administrator, I want to move my service resources to another Azure region. ---- - -# Move an Azure Database for MariaDB server to another region by using the Azure portal - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -There are various scenarios for moving an existing Azure Database for MariaDB server 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 an Azure Database for MariaDB [cross-region read replica](concepts-read-replicas.md#cross-region-replication) to complete the move to another region. To do so, first create a read replica in the target region. Next, stop replication to the read replica server to make it a standalone server that accepts both read and write traffic. - -> [!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. - -## Prerequisites - -- The read replica feature is only available for Azure Database for MariaDB servers in the General Purpose or Memory Optimized pricing tiers. Ensure the source server is in one of these pricing tiers. - -- Make sure that your Azure Database for MariaDB source server is in the Azure region that you want to move from. - -## Prepare to move - -To create a cross-region read replica server in the target region using the Azure portal, use the following steps: - -1. Sign in to the [Azure portal](https://portal.azure.com). -1. Select the existing Azure Database for MariaDB server that you want to use as the source server. This action opens the **Overview** page. -1. Select **Replication** from the menu, under **SETTINGS**. -1. Select **Add Replica**. -1. Enter a name for the replica server. -1. Select the location for the replica server. The default location is the same as the source server's. Verify that you've selected the target location where you want the replica to be deployed. -1. Select **OK** to confirm creation of the replica. During replica creation, data is copied from the source server to the replica. Create time may last several minutes or more, in proportion to the size of the source server. - ->[!NOTE] -> When you create a replica, it doesn't inherit the VNet service endpoints of the source server. These rules must be set up independently for the replica. - -## Move - -> [!IMPORTANT] -> The standalone server can't be made into a replica again. -> Before you stop replication on a read replica, ensure the replica has all the data that you require. - -Stopping replication to the replica server, causes it to become a standalone server. To stop replication to the replica from the Azure portal, use the following steps: - -1. Once the replica has been created, locate and select your Azure Database for MariaDB source server. -1. Select **Replication** from the menu, under **SETTINGS**. -1. Select the replica server. -1. Select **Stop replication**. -1. Confirm you want to stop replication by selecting **OK**. - -## Clean up source server - -You may want to delete the source Azure Database for MariaDB server. To do so, use the following steps: - -1. Once the replica has been created, locate and select your Azure Database for MariaDB source server. -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 MariaDB server from one region to another by using the Azure portal and then cleaned up the unneeded source resources. - -- Learn more about [read replicas](concepts-read-replicas.md) -- Learn more about [managing read replicas in the Azure portal](howto-read-replicas-portal.md) -- Learn more about [business continuity](concepts-business-continuity.md) options diff --git a/articles/mariadb/howto-read-replicas-cli.md b/articles/mariadb/howto-read-replicas-cli.md deleted file mode 100644 index 4075c1215f..0000000000 --- a/articles/mariadb/howto-read-replicas-cli.md +++ /dev/null @@ -1,185 +0,0 @@ ---- -title: Manage read replicas - Azure CLI, REST API - Azure Database for MariaDB -description: This article describes how to set up and manage read replicas in Azure Database for MariaDB using the Azure CLI and REST API. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.custom: devx-track-azurecli -ms.date: 06/24/2022 ---- - -# How to create and manage read replicas in Azure Database for MariaDB using the Azure CLI and REST API - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -In this article, you will learn how to create and manage read replicas in the Azure Database for MariaDB service using the Azure CLI and REST API. - -## Azure CLI - -You can create and manage read replicas using the Azure CLI. - -### Prerequisites - -- [Install Azure CLI 2.0](/cli/azure/install-azure-cli) -- An [Azure Database for MariaDB server](quickstart-create-mariadb-server-database-using-azure-portal.md) that will be used as the source server. - -> [!IMPORTANT] -> The read replica feature is only available for Azure Database for MariaDB servers in the General Purpose or Memory Optimized pricing tiers. Ensure the source server is in one of these pricing tiers. - -### Create a read replica - -> [!IMPORTANT] -> When you create a replica for a source that has no existing replicas, the source will first restart to prepare itself for replication. Take this into consideration and perform these operations during an off-peak period. - -A read replica server can be created using the following command: - -```azurecli-interactive -az mariadb server replica create --name mydemoreplicaserver --source-server mydemoserver --resource-group myresourcegroup -``` - -The `az mariadb server replica create` command requires the following parameters: - -| Setting | Example value | Description  | -| --- | --- | --- | -| resource-group |  myresourcegroup |  The resource group where the replica server will be created to.  | -| name | mydemoreplicaserver | The name of the new replica server that is created. | -| source-server | mydemoserver | The name or ID of the existing source server to replicate from. | - -To create a cross region read replica, use the `--location` parameter. - -The CLI example below creates the replica in West US. - -```azurecli-interactive -az mariadb server replica create --name mydemoreplicaserver --source-server mydemoserver --resource-group myresourcegroup --location westus -``` - -> [!NOTE] -> To learn more about which regions you can create a replica in, visit the [read replica concepts article](concepts-read-replicas.md). - -> [!NOTE] -> Read replicas are created with the same server configuration as the master. The replica server configuration can be changed after it has been created. It is recommended that the replica server's configuration should be kept at equal or greater values than the source to ensure the replica is able to keep up with the master. - -### List replicas for a source server - -To view all replicas for a given source server, run the following command: - -```azurecli-interactive -az mariadb server replica list --server-name mydemoserver --resource-group myresourcegroup -``` - -The `az mariadb server replica list` command requires the following parameters: - -| Setting | Example value | Description  | -| --- | --- | --- | -| resource-group |  myresourcegroup |  The resource group where the replica server will be created to.  | -| server-name | mydemoserver | The name or ID of the source server. | - -### Stop replication to a replica server - -> [!IMPORTANT] -> Stopping replication to a server is irreversible. Once replication has stopped between a source and replica, it cannot be undone. The replica server then becomes a standalone server and now supports both read and writes. This server cannot be made into a replica again. - -Replication to a read replica server can be stopped using the following command: - -```azurecli-interactive -az mariadb server replica stop --name mydemoreplicaserver --resource-group myresourcegroup -``` - -The `az mariadb server replica stop` command requires the following parameters: - -| Setting | Example value | Description  | -| --- | --- | --- | -| resource-group |  myresourcegroup |  The resource group where the replica server exists.  | -| name | mydemoreplicaserver | The name of the replica server to stop replication on. | - -### Delete a replica server - -Deleting a read replica server can be done by running the **[az mariadb server delete](/cli/azure/mariadb/server)** command. - -```azurecli-interactive -az mariadb server delete --resource-group myresourcegroup --name mydemoreplicaserver -``` - -### Delete a source server - -> [!IMPORTANT] -> Deleting a source server stops replication to all replica servers and deletes the source server itself. Replica servers become standalone servers that now support both read and writes. - -To delete a source server, you can run the **[az mariadb server delete](/cli/azure/mariadb/server)** command. - -```azurecli-interactive -az mariadb server delete --resource-group myresourcegroup --name mydemoserver -``` - -## REST API - -You can create and manage read replicas using the [Azure REST API](/rest/api/azure/). - -### Create a read replica - -You can create a read replica by using the [create API](/rest/api/mariadb/servers/create): - -```http -PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMariaDB/servers/{replicaName}?api-version=2017-12-01 -``` - -```json -{ - "location": "southeastasia", - "properties": { - "createMode": "Replica", - "sourceServerId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMariaDB/servers/{masterServerName}" - } -} -``` - -> [!NOTE] -> To learn more about which regions you can create a replica in, visit the [read replica concepts article](concepts-read-replicas.md). - -If you haven't set the `azure.replication_support` parameter to **REPLICA** on a General Purpose or Memory Optimized source server and restarted the server, you receive an error. Complete those two steps before you create a replica. - -A replica is created by using the same compute and storage settings as the master. After a replica is created, several settings can be changed independently from the source server: compute generation, vCores, storage, and back-up retention period. The pricing tier can also be changed independently, except to or from the Basic tier. - -> [!IMPORTANT] -> Before a source server setting is updated to a new value, update the replica setting to an equal or greater value. This action helps the replica keep up with any changes made to the master. - -### List replicas - -You can view the list of replicas of a source server using the [replica list API](/rest/api/mariadb/replicas/listbyserver): - -```http -GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMariaDB/servers/{masterServerName}/Replicas?api-version=2017-12-01 -``` - -### Stop replication to a replica server - -You can stop replication between a source server and a read replica by using the [update API](/rest/api/mariadb/servers/update). - -After you stop replication to a source server and a read replica, it can't be undone. The read replica becomes a standalone server that supports both reads and writes. The standalone server can't be made into a replica again. - -```http -PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMariaDB/servers/{masterServerName}?api-version=2017-12-01 -``` - -```json -{ - "properties": { - "replicationRole":"None" - } -} -``` - -### Delete a source or replica server - -To delete a source or replica server, you use the [delete API](/rest/api/mariadb/servers/delete): - -When you delete a source server, replication to all read replicas is stopped. The read replicas become standalone servers that now support both reads and writes. - -```http -DELETE https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforMariaDB/servers/{serverName}?api-version=2017-12-01 -``` - -## Next steps - -- Learn more about [read replicas](concepts-read-replicas.md) diff --git a/articles/mariadb/howto-read-replicas-portal.md b/articles/mariadb/howto-read-replicas-portal.md deleted file mode 100644 index 1a1e92722b..0000000000 --- a/articles/mariadb/howto-read-replicas-portal.md +++ /dev/null @@ -1,138 +0,0 @@ ---- -title: Manage read replicas - Azure portal - Azure Database for MariaDB -description: This article describes how to set up and manage read replicas in Azure Database for MariaDB using the portal -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.date: 06/24/2022 ---- - -# How to create and manage read replicas in Azure Database for MariaDB using the Azure portal - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -In this article, you will learn how to create and manage read replicas in the Azure Database for MariaDB service using the Azure portal. - -## Prerequisites - -- An [Azure Database for MariaDB server](quickstart-create-mariadb-server-database-using-azure-portal.md) that will be used as the source server. - -> [!IMPORTANT] -> The read replica feature is only available for Azure Database for MariaDB servers in the General Purpose or Memory Optimized pricing tiers. Ensure the source server is in one of these pricing tiers. - -## Create a read replica - -> [!IMPORTANT] -> When you create a replica for a source that has no existing replicas, the source will first restart to prepare itself for replication. Take this into consideration and perform these operations during an off-peak period. - -A read replica server can be created using the following steps: - -1. Sign in to the [Azure portal](https://portal.azure.com). - -2. Select the existing Azure Database for MariaDB server that you want to use as a master. This action opens the **Overview** page. - -3. Select **Replication** from the menu, under **SETTINGS**. - -4. Select **Add Replica**. - - ![Azure Database for MariaDB - Replication](./media/howto-read-replica-portal/add-replica.png) - -5. Enter a name for the replica server. - - ![Azure Database for MariaDB - Replica name](./media/howto-read-replica-portal/replica-name.png) - -6. Select the location for the replica server. The default location is the same as the source server's. - - ![Azure Database for MariaDB - Replica location](./media/howto-read-replica-portal/replica-location.png) - -7. Select **OK** to confirm creation of the replica. - -> [!NOTE] -> Read replicas are created with the same server configuration as the master. The replica server configuration can be changed after it has been created. It is recommended that the replica server's configuration should be kept at equal or greater values than the source to ensure the replica is able to keep up with the master. - -Once the replica server has been created, it can be viewed from the **Replication** blade. - - ![Azure Database for MariaDB - List replicas](./media/howto-read-replica-portal/list-replica.png) - -## Stop replication to a replica server - -> [!IMPORTANT] -> Stopping replication to a server is irreversible. Once replication has stopped between a source and replica, it cannot be undone. The replica server then becomes a standalone server and now supports both read and writes. This server cannot be made into a replica again. - -To stop replication between a source and a replica server from the Azure portal, use the following steps: - -1. In the Azure portal, select your source Azure Database for MariaDB server. - -2. Select **Replication** from the menu, under **SETTINGS**. - -3. Select the replica server you wish to stop replication for. - - ![Azure Database for MariaDB - Stop replication select server](./media/howto-read-replica-portal/stop-replication-select.png) - -4. Select **Stop replication**. - - ![Azure Database for MariaDB - Stop replication](./media/howto-read-replica-portal/stop-replication.png) - -5. Confirm you want to stop replication by selecting **OK**. - - ![Azure Database for MariaDB - Stop replication confirm](./media/howto-read-replica-portal/stop-replication-confirm.png) - -## Delete a replica server - -To delete a read replica server from the Azure portal, use the following steps: - -1. In the Azure portal, select your source Azure Database for MariaDB server. - -2. Select **Replication** from the menu, under **SETTINGS**. - -3. Select the replica server you wish to delete. - - ![Azure Database for MariaDB - Delete replica select server](./media/howto-read-replica-portal/delete-replica-select.png) - -4. Select **Delete replica** - - ![Azure Database for MariaDB - Delete replica](./media/howto-read-replica-portal/delete-replica.png) - -5. Type the name of the replica and select **Delete** to confirm deletion of the replica. - - ![Azure Database for MariaDB - Delete replica confirm](./media/howto-read-replica-portal/delete-replica-confirm.png) - -## Delete a source server - -> [!IMPORTANT] -> Deleting a source server stops replication to all replica servers and deletes the source server itself. Replica servers become standalone servers that now support both read and writes. - -To delete a source server from the Azure portal, use the following steps: - -1. In the Azure portal, select your source Azure Database for MariaDB server. - -2. From the **Overview**, select **Delete**. - - ![Azure Database for MariaDB - Delete master](./media/howto-read-replica-portal/delete-master-overview.png) - -3. Type the name of the source server and select **Delete** to confirm deletion of the source server. - - ![Azure Database for MariaDB - Delete master confirm](./media/howto-read-replica-portal/delete-master-confirm.png) - -## Monitor replication - -1. In the [Azure portal](https://portal.azure.com), select the replica Azure Database for MariaDB server you want to monitor. - -2. Under the **Monitoring** section of the sidebar, select **Metrics**: - -3. Select **Replication lag in seconds** from the dropdown list of available metrics. - - ![Select Replication lag](./media/howto-read-replica-portal/monitor-select-replication-lag.png) - -4. Select the time range you wish to view. The image below selects a 30 minute time range. - - ![Select time range](./media/howto-read-replica-portal/monitor-replication-lag-time-range.png) - -5. View the replication lag for the selected time range. The image below displays the last 30 minutes for a large workload. - - ![Select time range 30 minutes](./media/howto-read-replica-portal/monitor-replication-lag-time-range-thirty-mins.png) - -## Next steps - -- Learn more about [read replicas](concepts-read-replicas.md) diff --git a/articles/mariadb/howto-read-replicas-powershell.md b/articles/mariadb/howto-read-replicas-powershell.md deleted file mode 100644 index f5f9988135..0000000000 --- a/articles/mariadb/howto-read-replicas-powershell.md +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: Manage Azure Database for MariaDB read replicas -description: Learn how to set up and manage read replicas in Azure Database for MariaDB using PowerShell in the General Purpose or Memory Optimized pricing tiers. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.date: 06/24/2022 -ms.custom: kr2b-contr-experiment ---- - -# How to create and manage read replicas in Azure Database for MariaDB using PowerShell - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -In this article, you learn how to create and manage read replicas in the Azure Database for MariaDB service using PowerShell. To learn more about read replicas, see the [overview](concepts-read-replicas.md). - -You can create and manage read replicas using PowerShell. - -## Prerequisites - -To complete this how-to guide, you need: - -- The [Az PowerShell module](/powershell/azure/install-azure-powershell) installed - locally or [Azure Cloud Shell](https://shell.azure.com/) in the browser -- An [Azure Database for MariaDB server](quickstart-create-mariadb-server-database-using-azure-powershell.md) - -> [!IMPORTANT] -> While the Az.MariaDb PowerShell module is in preview, you must install it separately from the Az -> PowerShell module using the following command: `Install-Module -Name Az.MariaDb -AllowPrerelease`. -> Once the Az.MariaDb PowerShell module is generally available, it becomes part of future Az -> PowerShell module releases and available natively from within Azure Cloud Shell. - -If you choose to use PowerShell locally, connect to your Azure account using the -[Connect-AzAccount](/powershell/module/az.accounts/connect-azaccount) cmdlet. - -[!INCLUDE [cloud-shell-try-it.md](~/reusable-content/ce-skilling/azure/includes/cloud-shell-try-it.md)] - -> [!IMPORTANT] -> The read replica feature is only available for Azure Database for MariaDB servers in the General -> Purpose or Memory Optimized pricing tiers. Ensure the source server is in one of these pricing -> tiers. - -### Create a read replica - -> [!IMPORTANT] -> When you create a replica for a source that has no existing replicas, the source will first restart to prepare itself for replication. Take this into consideration and perform these operations during an off-peak period. - -A read replica server can be created using the following command: - -```azurepowershell-interactive -Get-AzMariaDbServer -Name mydemoserver -ResourceGroupName myresourcegroup | - New-AzMariaDbServerReplica -Name mydemoreplicaserver -ResourceGroupName myresourcegroup -``` - -The `New-AzMariaDbServerReplica` command requires the following parameters: - -| Setting | Example value | Description  | -| --- | --- | --- | -| ResourceGroupName |  myresourcegroup |  The resource group where the replica server is created.  | -| Name | mydemoreplicaserver | The name of the new replica server that is created. | - -To create a cross region read replica, use the **Location** parameter. The following example creates -a replica in the **West US** region. - -```azurepowershell-interactive -Get-AzMariaDbServer -Name mrdemoserver -ResourceGroupName myresourcegroup | - New-AzMariaDServerReplica -Name mydemoreplicaserver -ResourceGroupName myresourcegroup -Location westus -``` - -To learn more about which regions you can create a replica in, visit the -[read replica concepts article](concepts-read-replicas.md). - -By default, read replicas are created with the same server configuration as the source unless the -**Sku** parameter is specified. - -> [!NOTE] -> It is recommended that the replica server's configuration should be kept at equal or greater -> values than the source to ensure the replica is able to keep up with the master. - -### List replicas for a source server - -To view all replicas for a given source server, run the following command: - -```azurepowershell-interactive -Get-AzMariaDReplica -ResourceGroupName myresourcegroup -ServerName mydemoserver -``` - -The `Get-AzMariaDReplica` command requires the following parameters: - -| Setting | Example value | Description  | -| --- | --- | --- | -| ResourceGroupName |  myresourcegroup |  The resource group where the replica server will be created to.  | -| ServerName | mydemoserver | The name or ID of the source server. | - -### Delete a replica server - -Deleting a read replica server can be done by running the `Remove-AzMariaDbServer` cmdlet. - -```azurepowershell-interactive -Remove-AzMariaDbServer -Name mydemoreplicaserver -ResourceGroupName myresourcegroup -``` - -### Delete a source server - -> [!IMPORTANT] -> Deleting a source server stops replication to all replica servers and deletes the source server -> itself. Replica servers become standalone servers that now support both read and writes. - -To delete a source server, you can run the `Remove-AzMariaDbServer` cmdlet. - -```azurepowershell-interactive -Remove-AzMariaDbServer -Name mydemoserver -ResourceGroupName myresourcegroup -``` - -## Next steps - -> [!div class="nextstepaction"] -> [Restart Azure Database for MariaDB server using PowerShell](howto-restart-server-powershell.md) diff --git a/articles/mariadb/howto-redirection.md b/articles/mariadb/howto-redirection.md deleted file mode 100644 index 837dc79369..0000000000 --- a/articles/mariadb/howto-redirection.md +++ /dev/null @@ -1,174 +0,0 @@ ---- -title: Connect with redirection - Azure Database for MariaDB -description: This article describes how you can configure your application to connect to Azure Database for MariaDB with redirection. -ms.service: azure-database-mariadb -ms.custom: -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.date: 04/19/2023 ---- - -# Connect to Azure Database for MariaDB with redirection - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This topic explains how to connect an application your Azure Database for MariaDB server with redirection mode. Redirection aims to reduce network latency between client applications and MariaDB servers by allowing applications to connect directly to backend server nodes. - -## Before you begin - -Sign in to the [Azure portal](https://portal.azure.com). Create an Azure Database for MariaDB server with engine version 10.2 or 10.3. - -For details, refer to how to create an Azure Database for MariaDB server using the [Azure portal](quickstart-create-mariadb-server-database-using-azure-portal.md) or [Azure CLI](quickstart-create-mariadb-server-database-using-azure-cli.md). - -> [!IMPORTANT] -> Redirection is currently not supported with [Private Link for Azure Database for MariaDB](concepts-data-access-security-private-link.md). - -## Enable redirection - -On your Azure Database for MariaDB server, configure the `redirect_enabled` parameter to `ON` to allow connections with redirection mode. To update this server parameter, use the [Azure portal](howto-server-parameters.md) or [Azure CLI](howto-configure-server-parameters-cli.md). - -## PHP - -Support for redirection in PHP applications is available through the [mysqlnd_azure](https://github.com/microsoft/mysqlnd_azure) extension, developed by Microsoft. - -The mysqlnd_azure extension is available to add to PHP applications through PECL and it's highly recommended to install and configure the extension through the officially published [PECL package](https://pecl.php.net/package/mysqlnd_azure). - -> [!IMPORTANT] -> Support for redirection in the PHP [mysqlnd_azure](https://github.com/microsoft/mysqlnd_azure) extension is currently in preview. - -### Redirection logic - ->[!IMPORTANT] -> Redirection logic/behavior beginning version 1.1.0 was updated and **it's recommended to use version 1.1.0+**. - -The redirection behavior is determined by the value of `mysqlnd_azure.enableRedirect`. The table below outlines the behavior of redirection based on the value of this parameter beginning in **version 1.1.0+**. - -If you're using an older version of the mysqlnd_azure extension (version 1.0.0-1.0.3), the redirection behavior is determined by the value of `mysqlnd_azure.enabled`. The valid values are `off` (acts similarly as the behavior outlined in the table below) and `on` (acts like `preferred` in the table below). - -|**mysqlnd_azure.enableRedirect value**| **Behavior**| -|----------------------------------------|-------------| -|`off` or `0`|Redirection isn't be used. | -|`on` or `1`|- If the connection doesn't use SSL on the driver side, no connection is made. The following error is returned: *"mysqlnd_azure.enableRedirect is on, but SSL option isn't set in connection string. Redirection is only possible with SSL."*
- If SSL is used on the driver side, but redirection isn't supported on the server, the first connection gets aborted. The following error is returned: *"Connection aborted because redirection isn't enabled on the MariaDB server or the network package doesn't meet redirection protocol."*
- If the MariaDB server supports redirection, but the redirected connection failed for any reason, also abort the first proxy connection. Return the error of the redirected connection.| -|`preferred` or `2`
(default value)|- mysqlnd_azure uses redirection if possible.
- If the connection doesn't use SSL on the driver side, the server doesn't support redirection, or the redirected connection fails to connect for any nonfatal reason while the proxy connection is still a valid one, it falls back to the first proxy connection.| - -The subsequent sections of the document outline how to install the `mysqlnd_azure` extension using PECL and set the value of this parameter. - -### [Ubuntu Linux](#tab/linux) - -**Prerequisites** - -- PHP versions 7.2.15+ and 7.3.2+ -- PHP PEAR -- php-mysql -- Azure Database for MariaDB server - -1. Install [mysqlnd_azure](https://github.com/microsoft/mysqlnd_azure) with [PECL](https://pecl.php.net/package/mysqlnd_azure). It's recommended to use version 1.1.0+. - - ```bash - sudo pecl install mysqlnd_azure - ``` - -2. Locate the extension directory (`extension_dir`) by running the below: - - ```bash - sudo php -i | grep "extension_dir" - ``` - -3. Change directories to the returned folder and ensure `mysqlnd_azure.so` is located in this folder. - -4. Locate the folder for .ini files by running the below: - - ```bash - sudo hp -i | grep "dir for additional .ini files" - ``` - -5. Change directories to this returned folder. - -6. Create a new `.ini` file for `mysqlnd_azure`. Make sure the alphabet order of the name is after the `mysqnld` one, since the modules are loaded according to the name order of the ini files. For example, if `mysqlnd` .ini is named `10-mysqlnd.ini`, name the mysqlnd ini as `20-mysqlnd-azure.ini`. - -7. Within the new `.ini` file, add the following lines to enable redirection. - - ```config - extension=mysqlnd_azure - mysqlnd_azure.enableRedirect = on/off/preferred - ``` - -### [Windows](#tab/windows) - -**Prerequisites** - -- PHP versions 7.2.15+ and 7.3.2+ -- php-mysql -- Azure Database for MariaDB server - -1. Determine if you're running a x64 or x86 version of PHP by running the following command: - - ```cmd - php -i | findstr "Thread" - ``` - -2. Download the corresponding x64 or x86 version of the [mysqlnd_azure](https://github.com/microsoft/mysqlnd_azure) DLL from [PECL](https://pecl.php.net/package/mysqlnd_azure) that matches your version of PHP. It's recommended to use version 1.1.0+. - -3. Extract the zip file and find the DLL named `php_mysqlnd_azure.dll`. - -4. Locate the extension directory (`extension_dir`) by running the below command: - - ```cmd - php -i | find "extension_dir" - ``` - -5. Copy the `php_mysqlnd_azure.dll` file into the directory returned in step 4. - -6. Locate the PHP folder containing the `php.ini` file using the following command: - - ```cmd - php -i | find "Loaded Configuration File" - ``` - -7. Modify the `php.ini` file and add the following extra lines to enable redirection. - - Under the Dynamic Extensions section: - - ```config - extension=mysqlnd_azure - ``` - - Under the Module Settings section: - - ```cpnfig - [mysqlnd_azure] - mysqlnd_azure.enableRedirect = on/off/preferred - ``` - ---- - -### Confirm redirection - -You can also confirm redirection is configured with the below sample PHP code. Create a PHP file called `mysqlConnect.php` and paste the below code. Update the server name, username, and password with your own. - -```php -.mariadb.database.azure.com'; -$username = '@'; -$password = ''; -$db_name = 'testdb'; - echo "mysqlnd_azure.enableRedirect: ", ini_get("mysqlnd_azure.enableRedirect"), "\n"; - $db = mysqli_init(); - //The connection must be configured with SSL for redirection test - $link = mysqli_real_connect ($db, $host, $username, $password, $db_name, 3306, NULL, MYSQLI_CLIENT_SSL); - if (!$link) { - die ('Connect error (' . mysqli_connect_errno() . '): ' . mysqli_connect_error() . "\n"); - } - else { - echo $db->host_info, "\n"; //if redirection succeeds, the host_info differs from the hostname you used to connect - $res = $db->query('SHOW TABLES;'); //test query with the connection - print_r ($res); - $db->close(); - } -?> -``` - -## Next steps - -For more information about connection strings, see [Connection Strings](howto-connection-string.md). diff --git a/articles/mariadb/howto-restart-server-cli.md b/articles/mariadb/howto-restart-server-cli.md deleted file mode 100644 index 73c3333eee..0000000000 --- a/articles/mariadb/howto-restart-server-cli.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Restart server - Azure CLI - Azure Database for MariaDB -description: This article describes how you can restart an Azure Database for MariaDB server using the Azure CLI. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.custom: devx-track-azurecli -ms.date: 06/24/2022 ---- - -# Restart Azure Database for MariaDB server using the Azure CLI - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This topic describes how you can restart an Azure Database for MariaDB server. You may need to restart your server for maintenance reasons, which causes a short outage as the server performs the operation. - -The server restart will be blocked if the service is busy. For example, the service may be processing a previously requested operation such as scaling vCores. - -The time required to complete a restart depends on the MariaDB recovery process. To decrease the restart time, we recommend you minimize the amount of activity occurring on the server prior to the restart. - -[!INCLUDE [quickstarts-free-trial-note](~/reusable-content/ce-skilling/azure/includes/quickstarts-free-trial-note.md)] - -## Prerequisites - -To complete this how-to guide: - -- You need an [Azure Database for MariaDB server](quickstart-create-mariadb-server-database-using-azure-cli.md). - -[!INCLUDE [azure-cli-prepare-your-environment-no-header.md](~/reusable-content/azure-cli/azure-cli-prepare-your-environment-no-header.md)] - -- This article requires version 2.0 or later of the Azure CLI. If using Azure Cloud Shell, the latest version is already installed. - -## Restart the server - -Restart the server with the following command: - -```azurecli-interactive -az mariadb server restart --name mydemoserver --resource-group myresourcegroup -``` - -## Next steps - -Learn about [how to set parameters in Azure Database for MariaDB](howto-configure-server-parameters-cli.md) diff --git a/articles/mariadb/howto-restart-server-portal.md b/articles/mariadb/howto-restart-server-portal.md deleted file mode 100644 index 7fb80e68f3..0000000000 --- a/articles/mariadb/howto-restart-server-portal.md +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Restart server - Azure portal - Azure Database for MariaDB -description: This article describes how you can restart an Azure Database for MariaDB server using the Azure Portal. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.date: 06/24/2022 ---- - -# Restart Azure Database for MariaDB server using Azure portal - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This topic describes how you can restart an Azure Database for MariaDB server. You may need to restart your server for maintenance reasons, which causes a short outage as the server performs the operation. - -The server restart will be blocked if the service is busy. For example, the service may be processing a previously requested operation such as scaling vCores. - -The time required to complete a restart depends on the MariaDB recovery process. To decrease the restart time, we recommend you minimize the amount of activity occurring on the server prior to the restart. - -## Prerequisites - -To complete this how-to guide, you need: -- An [Azure Database for MariaDB server](./quickstart-create-mariadb-server-database-using-azure-portal.md) - -## Perform server restart - -The following steps restart the MariaDB server: - -1. In the Azure portal, select your Azure Database for MariaDB server. - -2. In the toolbar of the server's **Overview** page, select **Restart**. - - ![Azure Database for MariaDB - Overview - Restart button](./media/howto-restart-server-portal/2-server.png) - -3. Select **Yes** to confirm restarting the server. - - ![Azure Database for MariaDB - Restart confirm](./media/howto-restart-server-portal/3-restart-confirm.png) - -4. Observe that the server status changes to "Restarting". - - ![Azure Database for MariaDB - Restart status](./media/howto-restart-server-portal/4-restarting-status.png) - -5. Confirm server restart is successful. - - ![Azure Database for MariaDB - Restart success](./media/howto-restart-server-portal/5-restart-success.png) - -## Next steps - -[Quickstart: Create Azure Database for MariaDB server using Azure portal](./quickstart-create-mariadb-server-database-using-azure-portal.md) diff --git a/articles/mariadb/howto-restart-server-powershell.md b/articles/mariadb/howto-restart-server-powershell.md deleted file mode 100644 index 43c944e0b9..0000000000 --- a/articles/mariadb/howto-restart-server-powershell.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Restart Azure Database for MariaDB server - Azure PowerShell -description: Learn how you can restart an Azure Database for MariaDB server using PowerShell. The time required for a restart depends on the MariaDB recovery process. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.date: 06/24/2022 -ms.custom: -- devx-track-azurepowershell -- kr2b-contr-experiment ---- - -# Restart Azure Database for MariaDB server using PowerShell - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This article describes how you can restart an Azure Database for MariaDB server. You may need to restart -your server for maintenance reasons, which causes a short outage during the operation. - -The server restart is blocked if the service is busy. For example, the service may be processing a -previously requested operation such as scaling vCores. - -The amount of time required to complete a restart depends on the MariaDB recovery process. To reduce -the restart time, we recommend you minimize the amount of activity occurring on the server before -the restart. - -## Prerequisites - -To complete this how-to guide, you need: - -- The [Az PowerShell module](/powershell/azure/install-azure-powershell) installed locally or - [Azure Cloud Shell](https://shell.azure.com/) in the browser -- An [Azure Database for MariaDB server](quickstart-create-mariadb-server-database-using-azure-powershell.md) - -> [!IMPORTANT] -> While the Az.MariaDb PowerShell module is in preview, you must install it separately from the Az -> PowerShell module using the following command: `Install-Module -Name Az.MariaDb -AllowPrerelease`. -> Once the Az.MariaDb PowerShell module is generally available, it becomes part of future Az -> PowerShell module releases and available natively from within Azure Cloud Shell. - -If you choose to use PowerShell locally, connect to your Azure account using the -[Connect-AzAccount](/powershell/module/az.accounts/connect-azaccount) cmdlet. - -[!INCLUDE [cloud-shell-try-it.md](~/reusable-content/ce-skilling/azure/includes/cloud-shell-try-it.md)] - -## Restart the server - -Restart the server with the following command: - -```azurepowershell-interactive -Restart-AzMariaDbServer -Name mydemoserver -ResourceGroupName myresourcegroup -``` - -## Next steps - -> [!div class="nextstepaction"] -> [Create an Azure Database for MariaDB server using PowerShell](quickstart-create-mariadb-server-database-using-azure-powershell.md) diff --git a/articles/mariadb/howto-restore-dropped-server.md b/articles/mariadb/howto-restore-dropped-server.md deleted file mode 100644 index 4c8df49cca..0000000000 --- a/articles/mariadb/howto-restore-dropped-server.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -title: Restore a deleted Azure Database for MariaDB server -description: This article describes how to restore a deleted server in Azure Database for MariaDB using the Azure portal. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.date: 06/24/2022 ---- - -# Restore a deleted Azure Database for MariaDB server - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -When a server is deleted, the database server backup can be retained up to five days in the service. The database backup can be accessed and restored only from the Azure subscription where the server originally resided. The following recommended steps can be followed to recover a deleted MariaDB server resource within 5 days from the time of server deletion. The recommended steps will work only if the backup for the server is still available and not deleted from the system. - -## Pre-requisites - -To restore a deleted Azure Database for MariaDB server, you need following: -- Azure Subscription name hosting the original server -- Location where the server was created - -## Steps to restore - -1. Go to the [Activity Log](https://portal.azure.com/#blade/Microsoft_Azure_ActivityLog/ActivityLogBlade) from Monitor blade in Azure portal. - -2. In Activity Log, select on **Add filter** as shown and set following filters for the - - - **Subscription** = Your Subscription hosting the deleted server - - **Resource Type** = Azure Database for MariaDB servers (Microsoft.DBForMariaDB/servers) - - **Operation** = Delete MariaDB Server (Microsoft.DBForMariaDB/servers/delete) - - [![Activity log filtered for delete MariaDB server operation](./media/howto-restore-dropped-server/activity-log.png)](./media/howto-restore-dropped-server/activity-log.png#lightbox) - -3. Double Select on the Delete MariaDB Server event and select on the JSON tab and note the "resourceId" and "submissionTimestamp" attributes in JSON output. The resourceId is in the following format: /subscriptions/ffffffff-ffff-ffff-ffff-ffffffffffff/resourceGroups/TargetResourceGroup/providers/Microsoft.DBForMariaDB/servers/deletedserver. - -4. Go to [Create Server REST API Page](/rest/api/mariadb/servers/create) and select on "Try It" tab highlighted in green and login in with your Azure account. - -5. Provide the resourceGroupName, serverName (deleted server name), subscriptionId, derived from resourceId attribute captured in Step 3, while api-version is pre-populated as shown in image. - - [![Create server using REST API](./media/howto-restore-dropped-server/create-server-from-rest-api.png)](./media/howto-restore-dropped-server/create-server-from-rest-api.png#lightbox) - -6. Scroll below on Request Body section and paste the following: - - ```json - { - "location": "Dropped Server Location", - "properties": - { - "restorePointInTime": "submissionTimestamp - 15 minutes", - "createMode": "PointInTimeRestore", - "sourceServerId": "resourceId" - } - } - ``` - -7. Replace the following values in the above request body: - * "Dropped server Location" with the Azure region where the deleted server was originally created - * "submissionTimestamp", and "resourceId" with the values captured in Step 3. - * For "restorePointInTime", specify a value of "submissionTimestamp" minus **15 minutes** to ensure the command does not error out. - -8. If you see Response Code 201 or 202, the restore request is successfully submitted. - -9. The server creation can take time depending on the database size and compute resources provisioned on the original server. The restore status can be monitored from Activity log by filtering for - - **Subscription** = Your Subscription - - **Resource Type** = Azure Database for MariaDB servers (Microsoft.DBForMariaDB/servers) - - **Operation** = Update MariaDB Server Create - -## Next steps - -- If you are trying to restore a server within five days, and still receive an error after accurately following the steps discussed earlier, open a support incident for assistance. If you are trying to restore a deleted server after five days, an error is expected since the backup file cannot be found. Do not open a support ticket in this scenario. The support team cannot provide any assistance if the backup is deleted from the system. -- To prevent accidental deletion of servers, we highly recommend using [Resource Locks](https://techcommunity.microsoft.com/t5/azure-database-for-mysql/preventing-the-disaster-of-accidental-deletion-for-your-mysql/ba-p/825222). diff --git a/articles/mariadb/howto-restore-server-cli.md b/articles/mariadb/howto-restore-server-cli.md deleted file mode 100644 index 7c22cb9bc5..0000000000 --- a/articles/mariadb/howto-restore-server-cli.md +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: Backup and restore - Azure CLI - Azure Database for MariaDB -description: Learn how to backup and restore a server in Azure Database for MariaDB by using the Azure CLI. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.devlang: azurecli -ms.topic: how-to -ms.custom: devx-track-azurecli -ms.date: 06/24/2022 ---- -# How to back up and restore a server in Azure Database for MariaDB using the Azure CLI - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -Azure Database for MariaDB servers are backed up periodically to enable Restore features. Using this feature you may restore the server and all its databases to an earlier point-in-time, on a new server. - -[!INCLUDE [quickstarts-free-trial-note](~/reusable-content/ce-skilling/azure/includes/quickstarts-free-trial-note.md)] - -## Prerequisites - -- You need an [Azure Database for MariaDB server and database](quickstart-create-mariadb-server-database-using-azure-cli.md). - -[!INCLUDE [azure-cli-prepare-your-environment-no-header.md](~/reusable-content/azure-cli/azure-cli-prepare-your-environment-no-header.md)] - -- This how-to guide requires version 2.0 or later of the Azure CLI. If using Azure Cloud Shell, the latest version is already installed. - -## Set backup configuration - -You make the choice between configuring your server for either locally redundant backups or geographically redundant backups at server creation. - -> [!NOTE] -> After a server is created, the kind of redundancy it has, geographically redundant vs locally redundant, can't be switched. -> - -While creating a server via the `az mariadb server create` command, the `--geo-redundant-backup` parameter decides your Backup Redundancy Option. If `Enabled`, geo redundant backups are taken. Or if `Disabled` locally redundant backups are taken. - -The backup retention period is set by the parameter `--backup-retention`. - -For more information about setting these values during create, see the [Azure Database for MariaDB server CLI Quickstart](quickstart-create-mariadb-server-database-using-azure-cli.md). - -The backup retention period of a server can be changed as follows: - -```azurecli-interactive -az mariadb server update --name mydemoserver --resource-group myresourcegroup --backup-retention 10 -``` - -The preceding example changes the backup retention period of mydemoserver to 10 days. - -The backup retention period governs how far back in time a point-in-time restore can be retrieved, since it's based on backups available. Point-in-time restore is described further in the next section. - -## Server point-in-time restore - -You can restore the server to a previous point in time. The restored data is copied to a new server, and the existing server is left as is. For example, if a table is accidentally dropped at noon today, you can restore to the time just before noon. Then, you can retrieve the missing table and data from the restored copy of the server. - -To restore the server, use the Azure CLI [az mariadb server restore](/cli/azure/mariadb/server#az-mariadb-server-restore) command. - -### Run the restore command - -To restore the server, at the Azure CLI command prompt, enter the following command: - -```azurecli-interactive -az mariadb server restore --resource-group myresourcegroup --name mydemoserver-restored --restore-point-in-time 2018-03-13T13:59:00Z --source-server mydemoserver -``` - -The `az mariadb server restore` command requires the following parameters: - -| Setting | Suggested value | Description  | -| --- | --- | --- | -| resource-group |  myresourcegroup |  The resource group where the source server exists.  | -| name | mydemoserver-restored | The name of the new server that is created by the restore command. | -| restore-point-in-time | 2018-03-13T13:59:00Z | Select a point in time to restore to. This date and time must be within the source server's backup retention period. Use the ISO8601 date and time format. For example, you can use your own local time zone, such as `2018-03-13T05:59:00-08:00`. You can also use the UTC Zulu format, for example, `2018-03-13T13:59:00Z`. | -| source-server | mydemoserver | The name or ID of the source server to restore from. | - -WWhen you restore a server to an earlier point in time, a new server is created. The original server and its databases from the specified point in time are copied to the new server. - -The location and pricing tier values for the restored server remain the same as the original server. - -After the restore process finishes, locate the new server and verify that the data is restored as expected. The new server has the same server admin login name and password that was valid for the existing server at the time the restore was initiated. The password can be changed from the new server's **Overview** page. - -The new server created during a restore does not have the VNet service endpoints that existed on the original server. These rules need to be set up separately for this new server. Firewall rules from the original server are restored. - -## Geo restore - -If you configured your server for geographically redundant backups, a new server can be created from the backup of that existing server. This new server can be created in any region that Azure Database for MariaDB is available. - -To create a server using a geo redundant backup, use the Azure CLI `az mariadb server georestore` command. - -> [!NOTE] -> When a server is first created it may not be immediately available for geo restore. It may take a few hours for the necessary metadata to be populated. -> - -To geo restore the server, at the Azure CLI command prompt, enter the following command: - -```azurecli-interactive -az mariadb server georestore --resource-group myresourcegroup --name mydemoserver-georestored --source-server mydemoserver --location eastus --sku-name GP_Gen5_8 -``` - -This command creates a new server called *mydemoserver-georestored* in East US that will belong to *myresourcegroup*. It is a General Purpose, Gen 5 server with 8 vCores. The server is created from the geo-redundant backup of *mydemoserver*, which is also in the resource group *myresourcegroup* - -If you want to create the new server in a different resource group from the existing server, then in the `--source-server` parameter you would qualify the server name as in the following example: - -```azurecli-interactive -az mariadb server georestore --resource-group newresourcegroup --name mydemoserver-georestored --source-server "/subscriptions/$/resourceGroups/$/providers/Microsoft.DBforMariaDB/servers/mydemoserver" --location eastus --sku-name GP_Gen5_8 - -``` - -The `az mariadb server georestore` command requires the following parameters: - -| Setting | Suggested value | Description  | -| --- | --- | --- | -|resource-group| myresourcegroup | The name of the resource group the new server will belong to.| -|name | mydemoserver-georestored | The name of the new server. | -|source-server | mydemoserver | The name of the existing server whose geo redundant backups are used. | -|location | eastus | The location of the new server. | -|sku-name| GP_Gen5_8 | This parameter sets the pricing tier, compute generation, and number of vCores of the new server. GP_Gen5_8 maps to a General Purpose, Gen 5 server with 8 vCores.| - -When creating a new server by a geo restore, it inherits the same storage size and pricing tier as the source server. These values cannot be changed during creation. After the new server is created, its storage size can be scaled up. - -After the restore process finishes, locate the new server and verify that the data is restored as expected. The new server has the same server admin login name and password that was valid for the existing server at the time the restore was initiated. The password can be changed from the new server's **Overview** page. - -The new server created during a restore does not have the VNet service endpoints that existed on the original server. These rules need to be set up separately for this new server. Firewall rules from the original server are restored. - -## Next steps - -- Learn more about the service's [backups](concepts-backup.md) -- Learn about [replicas](concepts-read-replicas.md) -- Learn more about [business continuity](concepts-business-continuity.md) options diff --git a/articles/mariadb/howto-restore-server-portal.md b/articles/mariadb/howto-restore-server-portal.md deleted file mode 100644 index b340932f49..0000000000 --- a/articles/mariadb/howto-restore-server-portal.md +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: Backup and restore - Azure portal - Azure Database for MariaDB -description: This article describes how to restore a server in Azure Database for MariaDB using the Azure portal. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.date: 06/24/2022 ---- - -# How to backup and restore a server in Azure Database for MariaDB using the Azure portal - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -## Backup happens automatically - -Azure Database for MariaDB servers are backed up periodically to enable Restore features. Using this feature you may restore the server and all its databases to an earlier point-in-time, on a new server. - -## Prerequisites - -To complete this how-to guide, you need: -- An [Azure Database for MariaDB server and database](quickstart-create-mariadb-server-database-using-azure-portal.md) - -## Set backup configuration - -You make the choice between configuring your server for either locally redundant backups or geographically redundant backups at server creation, in the **Pricing Tier** window. - -> [!NOTE] -> After a server is created, the kind of redundancy it has, geographically redundant vs locally redundant, can't be switched. -> - -While creating a server through the Azure portal, the **Pricing Tier** window is where you select either **Locally Redundant** or **Geographically Redundant** backups for your server. This window is also where you select the **Backup Retention Period** - how long (in number of days) you want the server backups stored for. - - ![Pricing Tier - Choose Backup Redundancy](./media/howto-restore-server-portal/pricing-tier.png) - -For more information about setting these values during create, see the [Azure Database for MariaDB server quickstart](quickstart-create-mariadb-server-database-using-azure-portal.md). - -The backup retention period can be changed on a server through the following steps: -1. Sign in to the [Azure portal](https://portal.azure.com). - -2. Select your Azure Database for MariaDB server. This action opens the **Overview** page. - -3. Select **Pricing Tier** from the menu, under **SETTINGS**. Using the slider you can change the **Backup Retention Period** to your preference between 7 and 35 days. -In the screenshot below it has been increased to 35 days. -![Backup retention period increased](./media/howto-restore-server-portal/3-increase-backup-days.png) - -4. Select **OK** to confirm the change. - -The backup retention period governs how far back in time a point-in-time restore can be retrieved, since it's based on backups available. Point-in-time restore is described further in the following section. - -## Point-in-time restore - -Azure Database for MariaDB allows you to restore the server back to a point-in-time and into to a new copy of the server. You can use this new server to recover your data, or have your client applications point to this new server. - -For example, if a table was accidentally dropped at noon today, you could restore to the time just before noon and retrieve the missing table and data from that new copy of the server. Point-in-time restore is at the server level, not at the database level. - -The following steps restore the sample server to a point-in-time: -1. In the Azure portal, select your Azure Database for MariaDB server. - -2. In the toolbar of the server's **Overview** page, select **Restore**. - - ![Azure Database for MariaDB - Overview - Restore button](./media/howto-restore-server-portal/2-server.png) - -3. Fill out the Restore form with the required information: - - ![Azure Database for MariaDB - Restore information](./media/howto-restore-server-portal/3-restore.png) - - **Restore point**: Select the point-in-time you want to restore to. - - **Target server**: Provide a name for the new server. - - **Location**: You cannot select the region. By default it is same as the source server. - - **Pricing tier**: You cannot change these parameters when doing a point-in-time restore. It is same as the source server. - -4. Select **OK** to restore the server to restore to a point-in-time. - -5. Once the restore finishes, locate the new server that is created to verify the data was restored as expected. - -The new server created by point-in-time restore has the same server admin login name and password that was valid for the existing server at the point-in-time chose. You can change the password from the new server's **Overview** page. - -The new server created during a restore does not have the VNet service endpoints that existed on the original server. These rules need to be set up separately for this new server. Firewall rules from the original server are restored. - -## Geo restore - -If you configured your server for geographically redundant backups, a new server can be created from the backup of that existing server. This new server can be created in any region that Azure Database for MariaDB is available. - -1. Select the **Create a resource** button (+) in the upper-left corner of the portal. Select **Databases** > **Azure Database for MariaDB**. - - :::image type="content" source="./media/howto-restore-server-portal/2_navigate-to-mariadb.png" alt-text="Navigate to Azure Database for MariaDB."::: - -2. Provide the subscription, resource group, and name of the new server. - -3. Select **Backup** as the **Data source**. This action loads a dropdown that provides a list of servers that have geo redundant backups enabled. - - :::image type="content" source="./media/howto-restore-server-portal/3-geo-restore.png" alt-text="Select data source."::: - - > [!NOTE] - > When a server is first created it may not be immediately available for geo restore. It may take a few hours for the necessary metadata to be populated. - > - -4. Select the **Backup** dropdown. - - :::image type="content" source="./media/howto-restore-server-portal/4-geo-restore-backup.png" alt-text="Select backup dropdown."::: - -5. Select the source server to restore from. - - :::image type="content" source="./media/howto-restore-server-portal/5-select-backup.png" alt-text="Select backup."::: - -6. The server will default to values for number of **vCores**, **Backup Retention Period**, **Backup Redundancy Option**, **Engine version**, and **Admin credentials**. Select **Continue**. - - :::image type="content" source="./media/howto-restore-server-portal/6-accept-backup.png" alt-text="Continue with backup."::: - -7. Fill out the rest of the form with your preferences. You can select any **Location**. - - After selecting the location, you can select **Configure server** to update the **Compute Generation** (if available in the region you have chosen), number of **vCores**, **Backup Retention Period**, and **Backup Redundancy Option**. Changing **Pricing Tier** (Basic, General Purpose, or Memory Optimized) or **Storage** size during restore is not supported. - - :::image type="content" source="./media/howto-restore-server-portal/7-create.png" alt-text="Fill form."::: - -8. Select **Review + create** to review your selections. - -9. Select **Create** to provision the server. This operation may take a few minutes. - -The new server created by geo restore has the same server admin login name and password that was valid for the existing server at the time the restore was initiated. The password can be changed from the new server's **Overview** page. - -The new server created during a restore does not have the VNet service endpoints that existed on the original server. These rules need to be set up separately for this new server. Firewall rules from the original server are restored. - -## Next steps - -- Learn more about the service's [backups](concepts-backup.md) -- Learn about [replicas](concepts-read-replicas.md) -- Learn more about [business continuity](concepts-business-continuity.md) options diff --git a/articles/mariadb/howto-restore-server-powershell.md b/articles/mariadb/howto-restore-server-powershell.md deleted file mode 100644 index 05d5b517c8..0000000000 --- a/articles/mariadb/howto-restore-server-powershell.md +++ /dev/null @@ -1,169 +0,0 @@ ---- -title: Backup and restore - Azure PowerShell - Azure Database for MariaDB -description: Learn how to backup and restore a server in Azure Database for MariaDB by using Azure PowerShell. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.devlang: azurepowershell -ms.topic: how-to -ms.date: 06/24/2022 -ms.custom: devx-track-azurepowershell ---- -# How to back up and restore an Azure Database for MariaDB server using PowerShell - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -Azure Database for MariaDB servers is backed up periodically to enable restore features. Using this -feature you may restore the server and all its databases to an earlier point-in-time, on a new -server. - -## Prerequisites - -To complete this how-to guide, you need: - -- The [Az PowerShell module](/powershell/azure/install-azure-powershell) installed locally or - [Azure Cloud Shell](https://shell.azure.com/) in the browser -- An [Azure Database for MariaDB server](quickstart-create-mariadb-server-database-using-azure-powershell.md) - -> [!IMPORTANT] -> While the Az.MariaDb PowerShell module is in preview, you must install it separately from the Az -> PowerShell module using the following command: `Install-Module -Name Az.MariaDb -AllowPrerelease`. -> Once the Az.MariaDb PowerShell module is generally available, it becomes part of future Az -> PowerShell module releases and available natively from within Azure Cloud Shell. - -If you choose to use PowerShell locally, connect to your Azure account using the -[Connect-AzAccount](/powershell/module/az.accounts/connect-azaccount) cmdlet. - -[!INCLUDE [cloud-shell-try-it.md](~/reusable-content/ce-skilling/azure/includes/cloud-shell-try-it.md)] - -## Set backup configuration - -At server creation, you make the choice between configuring your server for either locally redundant -or geographically redundant backups. - -> [!NOTE] -> After a server is created, the kind of redundancy it has, geographically redundant vs locally -> redundant, can't be changed. - -While creating a server via the `New-AzMariaDbServer` command, the **GeoRedundantBackup** -parameter decides your backup redundancy option. If **Enabled**, geo redundant backups are taken. Or -if **Disabled**, locally redundant backups are taken. - -The backup retention period is set by the **BackupRetentionDay** parameter. - -For more information about setting these values during server creation, see -[Create an Azure Database for MariaDB server using PowerShell](quickstart-create-mariadb-server-database-using-azure-powershell.md). - -The backup retention period of a server can be changed as follows: - -```azurepowershell-interactive -Update-AzMariaDbServer -Name mydemoserver -ResourceGroupName myresourcegroup -BackupRetentionDay 10 -``` - -The preceding example changes the backup retention period of mydemoserver to 10 days. - -The backup retention period governs how far back a point-in-time restore can be retrieved, since -it's based on available backups. Point-in-time restore is described further in the next section. - -## Server point-in-time restore - -You can restore the server to a previous point-in-time. The restored data is copied to a new server, -and the existing server is left unchanged. For example, if a table is accidentally dropped, you can -restore to the time just the drop occurred. Then, you can retrieve the missing table and data from -the restored copy of the server. - -To restore the server, use the `Restore-AzMariaDbServer` PowerShell cmdlet. - -### Run the restore command - -To restore the server, run the following example from PowerShell. - -```azurepowershell-interactive -$restorePointInTime = (Get-Date).AddMinutes(-10) -Get-AzMariaDbServer -Name mydemoserver -ResourceGroupName myresourcegroup | - Restore-AzMariaDbServer -Name mydemoserver-restored -ResourceGroupName myresourcegroup -RestorePointInTime $restorePointInTime -UsePointInTimeRestore -``` - -The **PointInTimeRestore** parameter set of the `Restore-AzMariaDbServer` cmdlet requires the -following parameters: - -| Setting | Suggested value | Description  | -| --- | --- | --- | -| ResourceGroupName |  myresourcegroup |  The resource group where the source server exists.  | -| Name | mydemoserver-restored | The name of the new server that is created by the restore command. | -| RestorePointInTime | 2020-03-13T13:59:00Z | Select a point in time to restore. This date and time must be within the source server's backup retention period. Use the ISO8601 date and time format. For example, you can use your own local time zone, such as **2020-03-13T05:59:00-08:00**. You can also use the UTC Zulu format, for example, **2018-03-13T13:59:00Z**. | -| UsePointInTimeRestore | `` | Use point-in-time mode to restore. | - -When you restore a server to an earlier point-in-time, a new server is created. The original server -and its databases from the specified point-in-time are copied to the new server. - -The location and pricing tier values for the restored server remain the same as the original server. - -After the restore process finishes, locate the new server and verify that the data is restored as -expected. The new server has the same server admin login name and password that was valid for the -existing server at the time the restore was started. The password can be changed from the new -server's **Overview** page. - -The new server created during a restore does not have the VNet service endpoints that existed on the -original server. These rules must be set up separately for the new server. Firewall rules from the -original server are restored. - -## Geo restore - -If you configured your server for geographically redundant backups, a new server can be created from -the backup of the existing server. This new server can be created in any region that Azure Database -for MariaDB is available. - -To create a server using a geo redundant backup, use the `Restore-AzMariaDbServer` command with the -**UseGeoRestore** parameter. - -> [!NOTE] -> When a server is first created it may not be immediately available for geo restore. It may take a -> few hours for the necessary metadata to be populated. - -To geo restore the server, run the following example from PowerShell: - -```azurepowershell-interactive -Get-AzMariaDbServer -Name mydemoserver -ResourceGroupName myresourcegroup | - Restore-AzMariaDbServer -Name mydemoserver-georestored -ResourceGroupName myresourcegroup -Location eastus -Sku GP_Gen5_8 -UseGeoRestore -``` - -This example creates a new server called **mydemoserver-georestored** in the East US region that -belongs to **myresourcegroup**. It is a General Purpose, Gen 5 server with 8 vCores. The server is -created from the geo-redundant backup of **mydemoserver**, also in the resource group -**myresourcegroup**. - -To create the new server in a different resource group from the existing server, specify the new -resource group name using the **ResourceGroupName** parameter as shown in the following example: - -```azurepowershell-interactive -Get-AzMariaDbServer -Name mydemoserver -ResourceGroupName myresourcegroup | - Restore-AzMariaDbServer -Name mydemoserver-georestored -ResourceGroupName newresourcegroup -Location eastus -Sku GP_Gen5_8 -UseGeoRestore -``` - -The **GeoRestore** parameter set of the `Restore-AzMariaDbServer` cmdlet requires the following -parameters: - -| Setting | Suggested value | Description  | -| --- | --- | --- | -|ResourceGroupName | myresourcegroup | The name of the resource group the new server belongs to.| -|Name | mydemoserver-georestored | The name of the new server. | -|Location | eastus | The location of the new server. | -|UseGeoRestore | `` | Use geo mode to restore. | - -When creating a new server using geo restore, it inherits the same storage size and pricing tier as -the source server unless the **Sku** parameter is specified. - -After the restore process finishes, locate the new server and verify that the data is restored as -expected. The new server has the same server admin login name and password that was valid for the -existing server at the time the restore was started. The password can be changed from the new -server's **Overview** page. - -The new server created during a restore does not have the VNet service endpoints that existed on the -original server. These rules must be set up separately for this new server. Firewall rules from the -original server are restored. - -## Next steps - -> [!div class="nextstepaction"] -> [How to generate an Azure Database for MariaDB connection string with PowerShell](howto-connection-string-powershell.md) diff --git a/articles/mariadb/howto-server-parameters.md b/articles/mariadb/howto-server-parameters.md deleted file mode 100644 index b4c391636f..0000000000 --- a/articles/mariadb/howto-server-parameters.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Configure server parameters - Azure portal - Azure Database for MariaDB -description: This article describes how to configure MariaDB server parameters in Azure Database for MariaDB using the Azure portal. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: how-to -ms.date: 06/24/2022 ---- - -# Configure server parameters in Azure Database for MariaDB using the Azure portal - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -Azure Database for MariaDB supports configuration of some server parameters. This article describes how to configure these parameters by using the Azure portal. Not all server parameters can be adjusted. - ->[!Note] -> Server parameters can be updated globally at the server-level, use the [Azure CLI](./howto-configure-server-parameters-cli.md), [PowerShell](./howto-configure-server-parameters-using-powershell.md), or the [Azure portal](./howto-server-parameters.md). - -## Configure server parameters - -1. Sign in to the Azure portal, then locate your Azure Database for MariaDB server. -2. Under the **SETTINGS** section, select **Server parameters** to open the server parameters page for the Azure Database for MariaDB server. -![Azure portal server parameters page](./media/howto-server-parameters/azure-portal-server-parameters.png) -3. Locate any settings you need to adjust. Review the **Description** column to understand the purpose and allowed values. -![Enumerate drop down](./media/howto-server-parameters/3-toggle_parameter.png) -4. Select **Save** to save your changes. -![Save or Discard changes](./media/howto-server-parameters/4-save_parameters.png) -5. If you have saved new values for the parameters, you can always revert everything back to the default values by selecting **Reset all to default**. -![Reset all to default](./media/howto-server-parameters/5-reset_parameters.png) - -## Setting parameters not listed - -If the server parameter you want to update is not listed in the Azure portal, you can optionally set the parameter at the connection level using `init_connect`. This sets the server parameters for each client connecting to the server. - -1. Under the **SETTINGS** section, select **Server parameters** to open the server parameters page for the Azure Database for MariaDB server. -2. Search for `init_connect` -3. Add the server parameters in the format: `SET parameter_name=YOUR_DESIRED_VALUE` in value the value column. - - For example, you can change the character set of your server by setting of `init_connect` to `SET character_set_client=utf8;SET character_set_database=utf8mb4;SET character_set_connection=latin1;SET character_set_results=latin1;` -4. Select **Save** to save your changes. - -## Working with the time zone parameter - -### Populating the time zone tables - -The time zone tables on your server can be populated by calling the `mysql.az_load_timezone` stored procedure from a tool like the MySQL command line or MySQL Workbench. - -> [!NOTE] -> If you are running the `mysql.az_load_timezone` command from MySQL Workbench, you may need to turn off safe update mode first using `SET SQL_SAFE_UPDATES=0;`. - -```sql -CALL mysql.az_load_timezone(); -``` - -> [!IMPORTANT] -> You should restart the server to ensure the time zone tables are properly populated. To restart the server, use the [Azure portal](howto-restart-server-portal.md) or [CLI](howto-restart-server-cli.md). -To view available time zone values, run the following command: - -```sql -SELECT name FROM mysql.time_zone_name; -``` - -### Setting the global level time zone - -The global level time zone can be set from the **Server parameters** page in the Azure portal. The below sets the global time zone to the value "US/Pacific". - -![Set time zone parameter](./media/howto-server-parameters/timezone.png) - -### Setting the session level time zone - -The session level time zone can be set by running the `SET time_zone` command from a tool like the MySQL command line or MySQL Workbench. The example below sets the time zone to the **US/Pacific** time zone. - -```sql -SET time_zone = 'US/Pacific'; -``` - -Refer to the MariaDB documentation for [Date and Time Functions](https://mariadb.com/kb/en/library/convert_tz/). - -## Next steps - -- Learn more about [server parameters](concepts-server-parameters.md) diff --git a/articles/mariadb/howto-tls-configurations.md b/articles/mariadb/howto-tls-configurations.md deleted file mode 100644 index 8dbd3edf05..0000000000 --- a/articles/mariadb/howto-tls-configurations.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: TLS configuration - Azure portal - Azure Database for MariaDB -description: Learn how to set TLS configuration using Azure portal for your Azure Database for MariaDB -ms.service: azure-database-mariadb -author: mksuni -ms.author: sumuth -ms.topic: how-to -ms.date: 06/24/2022 ---- - -# Configuring TLS settings in Azure Database for MariaDB using Azure portal - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -This article describes how you can configure an Azure Database for MariaDB server to enforce minimum TLS version for connections to go through and deny all connections with lower TLS version than configured minimum TLS version thereby enhancing the network security. - -You can enforce TLS version for connecting to their Azure Database for MariaDB by setting the minimum TLS version for their database server. For example, setting the minimum TLS setting version to TLS 1.0 means your server will allow connections from clients using TLS 1.0, 1.1, and 1.2+. Alternatively, setting this to 1.2 means that you only allow connections from clients using TLS 1.2+ and all connections with TLS 1.0 and TLS 1.1 will be rejected. - -## Prerequisites - -To complete this how-to guide, you need: - -* An [Azure Database for MariaDB](quickstart-create-mariaDB-server-database-using-azure-portal.md) - -## Set TLS configurations for Azure Database for MariaDB - -Follow these steps to set MariaDB server minimum TLS version: - -1. In the [Azure portal](https://portal.azure.com/), select your existing Azure Database for MariaDB server. - -1. On the MariaDB server page, under **Settings**, select **Connection security** to open the connection security configuration page. - -1. In **Minimum TLS version**, select **1.2** to deny connections with TLS version less than TLS 1.2 for your MariaDB server. - - ![Azure Database for MariaDB TLS configuration](./media/howto-tls-configurations/tls-configurations.png) - -1. Select **Save** to save the changes. - -1. A notification will confirm that connection security setting was successfully enabled. - - ![Azure Database for MariaDB TLS configuration success](./media/howto-tls-configurations/tls-configurations-success.png) - -## Next steps - -Learn about [how to create alerts on metrics](howto-alert-metric.md) diff --git a/articles/mariadb/howto-troubleshoot-common-connection-issues.md b/articles/mariadb/howto-troubleshoot-common-connection-issues.md deleted file mode 100644 index 3f8ece18fe..0000000000 --- a/articles/mariadb/howto-troubleshoot-common-connection-issues.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: Troubleshoot connection issues - Azure Database for MariaDB -description: Learn how to troubleshoot connection issues to Azure Database for MariaDB, including transient errors requiring retries, firewall issues, and outages. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: troubleshooting -ms.date: 06/24/2022 ---- - -# Troubleshoot connection issues to Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -Connection problems may be caused by a variety of things, including: - -* Firewall settings -* Connection time-out -* Incorrect login information -* Maximum limit reached on some Azure Database for MariaDB resources -* Issues with the infrastructure of the service -* Maintenance being performed in the service -* The compute allocation of the server is changed by scaling the number of vCores or moving to a different service tier - -Generally, connection issues to Azure Database for MariaDB can be classified as follows: - -* Transient errors (short-lived or intermittent) -* Persistent or non-transient errors (errors that regularly recur) - -## Troubleshoot transient errors - -Transient errors occur when maintenance is performed, the system encounters an error with the hardware or software, or you change the vCores or service tier of your server. The Azure Database for MariaDB service has built-in high availability and is designed to mitigate these types of problems automatically. However, your application loses its connection to the server for a short period of time of typically less than 60 seconds at most. Some events can occasionally take longer to mitigate, such as when a large transaction causes a long-running recovery. - -### Steps to resolve transient connectivity issues - -1. Check the [Microsoft Azure Service Dashboard](https://azure.microsoft.com/status) for any known outages that occurred during the time in which the errors were reported by the application. -2. Applications that connect to a cloud service such as Azure Database for MariaDB should expect transient errors and implement retry logic to handle these errors instead of surfacing these as application errors to users. Review [Handling of transient connectivity errors for Azure Database for MariaDB](concepts-connectivity.md) for best practices and design guidelines for handling transient errors. -3. As a server approaches its resource limits, errors can seem to be transient connectivity issue. See [Limitations in Azure Database for MariaDB](concepts-limits.md). -4. If connectivity problems continue, or if the duration for which your application encounters the error exceeds 60 seconds or if you see multiple occurrences of the error in a given day, file an Azure support request by selecting **Get Support** on the [Azure Support](https://azure.microsoft.com/support/options) site. - -## Troubleshoot persistent errors - -If the application persistently fails to connect to Azure Database for MariaDB, it usually indicates an issue with one of the following: - -* Firewall configuration: The Azure Database for MariaDB server or client-side firewall is blocking connections. -* Network reconfiguration on the client side: A new IP address or a proxy server was added. -* User error: For example, you may have mistyped connection parameters, such as the server name in the connection string or a missing *\@servername* suffix in the user name. - -### Steps to resolve persistent connectivity issues - -1. Set up [firewall rules](howto-manage-firewall-portal.md) to allow the client IP address. For temporary testing purposes only, set up a firewall rule using 0.0.0.0 as the starting IP address and using 255.255.255.255 as the ending IP address. This will open the server to all IP addresses. If this resolves your connectivity issue, remove this rule and create a firewall rule for an appropriately limited IP address or address range. -2. On all firewalls between the client and the internet, make sure that port 3306 is open for outbound connections. -3. Verify your connection string and other connection settings. Review [How to connect applications to Azure Database for MariaDB](howto-connection-string.md). -4. Check the service health in the dashboard. If you think there's a regional outage, see [Overview of business continuity with Azure Database for MariaDB](concepts-business-continuity.md) for steps to recover to a new region. - -## Next steps - -* [Handling of transient connectivity errors for Azure Database for MariaDB](concepts-connectivity.md) diff --git a/articles/mariadb/howto-troubleshoot-query-performance.md b/articles/mariadb/howto-troubleshoot-query-performance.md deleted file mode 100644 index 574ac065b5..0000000000 --- a/articles/mariadb/howto-troubleshoot-query-performance.md +++ /dev/null @@ -1,170 +0,0 @@ ---- -title: Troubleshoot query performance - Azure Database for MariaDB -description: Learn how to use EXPLAIN to troubleshoot query performance in Azure Database for MariaDB. -ms.service: azure-database-mariadb -author: SudheeshGH -ms.author: sunaray -ms.topic: troubleshooting -ms.date: 06/24/2022 ---- - -# How to use EXPLAIN to profile query performance in Azure Database for MariaDB - -[!INCLUDE [azure-database-for-mariadb-deprecation](includes/azure-database-for-mariadb-deprecation.md)] - -**EXPLAIN** is a handy tool to optimize queries. EXPLAIN statement can be used to get information about how SQL statements are executed. The following output shows an example of the execution of an EXPLAIN statement. - -```sql -mysql> EXPLAIN SELECT * FROM tb1 WHERE id=100\G -*************************** 1. row *************************** - id: 1 - select_type: SIMPLE - table: tb1 - partitions: NULL - type: ALL -possible_keys: NULL - key: NULL - key_len: NULL - ref: NULL - rows: 995789 - filtered: 10.00 - Extra: Using where -``` - -As can be seen from this example, the value of *key* is NULL. This output means MariaDB cannot find any indexes optimized for the query and it performs a full table scan. Let's optimize this query by adding an index on the **ID** column. - -```sql -mysql> ALTER TABLE tb1 ADD KEY (id); -mysql> EXPLAIN SELECT * FROM tb1 WHERE id=100\G -*************************** 1. row *************************** - id: 1 - select_type: SIMPLE - table: tb1 - partitions: NULL - type: ref -possible_keys: id - key: id - key_len: 4 - ref: const - rows: 1 - filtered: 100.00 - Extra: NULL -``` - -The new EXPLAIN shows that MariaDB now uses an index to limit the number of rows to 1, which in turn dramatically shortened the search time. - -## Covering index - -A covering index consists of all columns of a query in the index to reduce value retrieval from data tables. Here's an illustration in the following **GROUP BY** statement. - -```sql -mysql> EXPLAIN SELECT MAX(c1), c2 FROM tb1 WHERE c2 LIKE '%100' GROUP BY c1\G -*************************** 1. row *************************** - id: 1 - select_type: SIMPLE - table: tb1 - partitions: NULL - type: ALL -possible_keys: NULL - key: NULL - key_len: NULL - ref: NULL - rows: 995789 - filtered: 11.11 - Extra: Using where; Using temporary; Using filesort -``` - -As can be seen from the output, MariaDB does not use any indexes because no proper indexes are available. It also shows *Using temporary; Using file sort*, which means MariaDB creates a temporary table to satisfy the **GROUP BY** clause. - -Creating an index on column **c2** alone makes no difference, and MariaDB still needs to create a temporary table: - -```sql  -mysql> ALTER TABLE tb1 ADD KEY (c2); -mysql> EXPLAIN SELECT MAX(c1), c2 FROM tb1 WHERE c2 LIKE '%100' GROUP BY c1\G -*************************** 1. row *************************** - id: 1 - select_type: SIMPLE - table: tb1 - partitions: NULL - type: ALL -possible_keys: NULL - key: NULL - key_len: NULL - ref: NULL - rows: 995789 - filtered: 11.11 - Extra: Using where; Using temporary; Using filesort -``` - -In this case, a **covered index** on both **c1** and **c2** can be created, whereby adding the value of **c2**" directly in the index to eliminate further data lookup. - -```sql  -mysql> ALTER TABLE tb1 ADD KEY covered(c1,c2); -mysql> EXPLAIN SELECT MAX(c1), c2 FROM tb1 WHERE c2 LIKE '%100' GROUP BY c1\G -*************************** 1. row *************************** - id: 1 - select_type: SIMPLE - table: tb1 - partitions: NULL - type: index -possible_keys: covered - key: covered - key_len: 108 - ref: NULL - rows: 995789 - filtered: 11.11 - Extra: Using where; Using index -``` - -As the above EXPLAIN shows, MariaDB now uses the covered index and avoid creating a temporary table. - -## Combined index - -A combined index consists values from multiple columns and can be considered an array of rows that are sorted by concatenating values of the indexed columns. This method can be useful in a **GROUP BY** statement. - -```sql -mysql> EXPLAIN SELECT c1, c2 from tb1 WHERE c2 LIKE '%100' ORDER BY c1 DESC LIMIT 10\G -*************************** 1. row *************************** - id: 1 - select_type: SIMPLE - table: tb1 - partitions: NULL - type: ALL -possible_keys: NULL - key: NULL - key_len: NULL - ref: NULL - rows: 995789 - filtered: 11.11 - Extra: Using where; Using filesort -``` - -MariaDB performs a *file sort* operation that is fairly slow, especially when it has to sort many rows. To optimize this query, a combined index can be created on both columns that are being sorted. - -```sql  -mysql> ALTER TABLE tb1 ADD KEY my_sort2 (c1, c2); -mysql> EXPLAIN SELECT c1, c2 from tb1 WHERE c2 LIKE '%100' ORDER BY c1 DESC LIMIT 10\G -*************************** 1. row *************************** - id: 1 - select_type: SIMPLE - table: tb1 - partitions: NULL - type: index -possible_keys: NULL - key: my_sort2 - key_len: 108 - ref: NULL - rows: 10 - filtered: 11.11 - Extra: Using where; Using index -``` - -The EXPLAIN now shows that MariaDB is able to use combined index to avoid additional sorting since the index is already sorted. - -## Conclusion - -Using EXPLAIN and different type of Indexes can increase performance significantly. Having an index on the table does not necessarily mean MariaDB would be able to use it for your queries. Always validate your assumptions using EXPLAIN and optimize your queries using indexes. - -## Next steps - -- To find peer answers to your most concerned questions or post a new question/answer, visit [Microsoft Q&A question page](/answers/topics/azure-database-mariadb.html) or [Stack Overflow](https://stackoverflow.com/questions/tagged/azure-database-mariadb). diff --git a/articles/mariadb/includes/azure-database-for-mariadb-deprecation.md b/articles/mariadb/includes/azure-database-for-mariadb-deprecation.md deleted file mode 100644 index d4118b0548..0000000000 --- a/articles/mariadb/includes/azure-database-for-mariadb-deprecation.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Deprecate Azure Database for MariaDB - Single Server -author: markingmyname -ms.author: maghan -ms.date: 09/19/2023 -ms.service: azure-database-mariadb -ms.topic: include ---- - -> [!IMPORTANT] -> Azure Database for MariaDB is on the retirement path. We strongly recommend that you migrate to Azure Database for MySQL. For more information about migrating to Azure Database for MySQL, see [What's happening to Azure Database for MariaDB?](https://aka.ms/WhatsHappeningToMariaDB). diff --git a/articles/mariadb/index.yml b/articles/mariadb/index.yml deleted file mode 100644 index 94a255edcd..0000000000 --- a/articles/mariadb/index.yml +++ /dev/null @@ -1,124 +0,0 @@ -### YamlMime:Landing -title: Azure Database for MariaDB documentation -summary: "Azure Database for MariaDB is a relational database service based on the open-source MariaDB Server engine. It's a fully managed database as a service offering that can handle mission-critical workloads with predictable performance and dynamic scalability. Develop applications with Azure Database for MariaDB leveraging the open-source tools and platform of your choice. Learn how to use Azure Database for MariaDB with our quickstarts, tutorials, and samples." -metadata: - description: "Azure Database for MariaDB is a relational database service in the Microsoft cloud built for developers based on the open-source MariaDB database engine." - author: SudheeshGH - ms.author: sunaray - ms.date: 09/05/2019 - ms.service: azure-database-mariadb - ms.topic: landing-page - -# linkListType: architecture | concept | deploy | download | get-started | how-to-guide | learn | overview | quickstart | reference | tutorial | whats-new - -landingContent: - # Card 1 - - title: About Azure Database for MariaDB - linkLists: - - linkListType: overview - links: - - text: What is Azure Database for MariaDB? - url: overview.md - - linkListType: whats-new - links: - - text: Check out our blog - url: https://techcommunity.microsoft.com/t5/Azure-Database-for-MariaDB/bg-p/ADforMariaDB - # Card 2 - - title: Create a server - linkLists: - - linkListType: quickstart - links: - - text: Create a server using the Azure Portal - url: quickstart-create-mariadb-server-database-using-azure-portal.md - - text: Create a server using Azure CLI - url: quickstart-create-mariadb-server-database-using-azure-cli.md - - linkListType: concept - links: - - text: Understand pricing tiers - url: concepts-pricing-tiers.md - - text: Understand limits - url: concepts-limits.md - - text: Understand supported MariaDB versions - url: concepts-supported-versions.md - - text: Configure server parameters - url: howto-server-parameters.md - - text: Plan for high availability - url: concepts-high-availability.md - - linkListType: tutorial - links: - - text: Design a Database using the Azure portal - url: tutorial-design-database-using-portal.md - - text: Design a Database using Azure CLI - url: tutorial-design-database-cli.md -# Card 3 - - title: Back up and restore data - linkLists: - - linkListType: concept - links: - - text: Back up and restore - url: concepts-backup.md - - linkListType: how-to-guide - links: - - text: Restore a server using the Azure portal - url: howto-restore-server-portal.md - - text: Restore a server using Azure CLI - url: howto-restore-server-cli.md -# Card 4 - - title: Connect to Azure Database for MariaDB - linkLists: - - linkListType: concept - links: - - text: Understand the firewall - url: concepts-firewall-rules.md - - text: Understand SSL - url: concepts-ssl-connection-security.md - - text: Understand Virtual Networks - url: concepts-data-access-security-vnet.md - - linkListType: how-to-guide - links: - - text: Create firewall rules - url: howto-manage-firewall-portal.md - - text: Configure SSL connectivity - url: howto-configure-ssl.md - - text: Create users - url: howto-create-users.md - - text: Manage Virtual Networks - url: howto-manage-vnet-portal.md - - text: Troubleshoot connection issues - url: howto-troubleshoot-common-connection-issues.md - - linkListType: get-started - links: - - text: Connect using MySQL Workbench - url: connect-workbench.md - - text: Connection strings - url: howto-connection-string.md -# Card 5 - - title: Replicate data - linkLists: - - linkListType: concept - links: - - text: Understand data-in replication - url: concepts-data-in-replication.md - - text: Understand read replicas - url: concepts-read-replicas.md - - linkListType: how-to-guide - links: - - text: Configure data-in replication - url: howto-data-in-replication.md - - text: Create a read replica using the Azure portal - url: howto-read-replicas-portal.md -# Card 6 - - title: Code with programming APIs - linkLists: - - linkListType: get-started - links: - - text: Azure CLI scripts for common tasks - url: ./sample-scripts-azure-cli.md - - linkListType: reference - links: - - text: Azure CLI developer reference - url: /cli/azure/mariadb/ - - text: REST API developer reference - url: /rest/api/mariadb/ - - text: Azure Resource Manager templates - url: /azure/templates/microsoft.dbformariadb/allversions diff --git a/articles/mariadb/media/concepts-azure-advisor-recommendations/advisor-example.png b/articles/mariadb/media/concepts-azure-advisor-recommendations/advisor-example.png deleted file mode 100644 index 5e8e0a6ec6f72c51107c3b689ecaa9fb5891360d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67991 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�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�NX?xlKQbK>c_8bZz=mm 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 g@0%v(QTw3^lXREgTS=<5W8lv<{9 diff --git a/articles/mariadb/media/concepts-data-access-and-security-private-link/select-private-link-message.png b/articles/mariadb/media/concepts-data-access-and-security-private-link/select-private-link-message.png deleted file mode 100644 index 82170bad92d918abc1097673e1218bafd9b3815e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9749 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 diff --git a/articles/mariadb/media/concepts-data-access-and-security-private-link/select-private-link-portal.png b/articles/mariadb/media/concepts-data-access-and-security-private-link/select-private-link-portal.png deleted file mode 100644 index 740d10c1987296b52b076226065b0db8508a32e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97178 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 diff --git a/articles/mariadb/media/concepts-data-access-and-security-private-link/select-private-link.png b/articles/mariadb/media/concepts-data-access-and-security-private-link/select-private-link.png deleted file mode 100644 index ae01769672386d26a714adb13f0f1ca8374eb352..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17633 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 V+Xm(HGmuq>*+EOw9Fvom{tI#kolF1# diff --git a/articles/mariadb/media/concepts-data-access-and-security-private-link/show-private-link-approved-connection.png b/articles/mariadb/media/concepts-data-access-and-security-private-link/show-private-link-approved-connection.png deleted file mode 100644 index 681ff3909885935da14b440468ea62fe142d998f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58894 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%0At>chKv-;p}|xkq+S# zXG(bMc9No8lIxT#MCpX}WAv+#37NSRDr(Ku+KE@% z_{2^reExECL{n^$<1mq&=8IE1mhyc1(XPd8{7I0Khq9AsXPYkW832-OBI3oIli%@4 z&DLo(ecaLgU;}?|{)+wF2WBM9)os*Lz-qT~Q#m1%vanXvy7K{C%c4&hLDylV7EdlS_SzO&|Aqqy(3Gb17yTkGj3GFox z(-qb#T>Hv~{;r%4Jom|iJNz~o^RDu*(_Jq}4f+8nM+%kUCuh+B5Rnb6i`vi>+~rlj z#l1(V^fDCovn2YFi!uc&@_NWH<9d9#3=jRl&Fh%LYM`}-2OlMjeiou#l%dqC<=p;@ zc)F?w?wlu(f4R1Y?@R9bH8}Le?#CGQqbhpyM#aG%&qophS@#gVa2rCYF+FAUGIAu) zo@cCpGx%60T1z+1E^;KJIZw8@9BX-;rZQgdJ`Hu?LQaakT6sYW_6%lUb`fo!YbzJW z0wK9z357#5Z$gUfhcN9rE$a4Ftjw)6aXe*R0;V6VU;-KvHoWHU4k_lt-gN)m^QKSJ zeTo<$<-55RT_qY`=d_cNb2od1J#@Z{zw;`^v|{~10?3O;vgfYYmvbFr`r)M*woaTg zUWYcr_IGv9@d#DnAv<9C*>|_Ci=`ogh4f3{)k?R_Zb&XOe zqFTv4Q{%^>nf=~}-|Ib%V(OKk*n-X(u+i;0G>`B}i4aHA#9-FNQhbohW20&$l>&e} zhSQA9==D*0u&U+-&&li4^M|>ra`zam2b-Avn3$0HuCXUxq?f_BGJUsTVsi5+9#TQdrkJr{}zR+3BS!aX=mp|VsYKDyDsVf-`P&B-X}SzqgVBYG;ps}C;!$FHdohXT#bVUm~e zdnGw3suU(Y5^;S0iM?#e5(^;5Rf7@6F)Biqw)*ZombOtpiH*G;=<;?}p`PrnnzX+3 z*jc1-6fnNwQ9vRP=h~;QA`7z0$kUk1ng=V}+V*6dUdMrD-cV;!%s)& zy^{yUn8(At@N(^=Y#!-$T_;)5s6EWi4NP$Mos1M~2)+?ZN7z_(q z<&zOnC#-K(V$*(W``Z9Bt8*Nes6(ABQ>J%DnNK3ayrF@iF&1|%*Efu@wv*^?{c+ANgM514gf9L>~RvCVi_!~{vSFccej+h*-3=(dF-#n^( zY(@#lAfr=UBGw0<(buB`%xG=3B;`;-j}J^D=Yxy&+t#cIx6G26$fNMqS5w20cYG$L zN=m21me!!jVQz{XCrZK|)5z{5d8D}=SCP=T(70G`8*k%vM@)hie(ARwi3J46_a4A@ z)(_gWnObB(&j7&pJ`5?laxFd*s}=Tk>Nt6*APfPsOG}||Xq9=Ag1cZhs&d{c?Fi(P zpl-02PILnM;pl@~4Sp5-EF*fEqB(>`-14w8E$(H7hqCM#rpwQ^%*3Zf*Yel-NXvm* ztd>^&Ji!Fq6_eKTsWiE}`aR62?!1r_1y|GTO^&P6>VNq!@M!z}XXU|@JdRT{&H_xoI@NzQL zru^!spNGEaoz;}BAPf?ZFhWOAw5#bEs+2qG90SUyZx$w3%}0F`oOt-er)1@k{45`^ z+=?!xT6oGJ*IL0c3h#AJJ3fV$_W{PLsl21&Z^v)q8e^kT7sFF0gBjRnb~Bv~Pn1}Z z>Ln_JB&+f_wa(=UY!9SHTyT!$KM>8I96wK2Pi6l+$N%xVS1$DD+a0RU&Q#hQ_(|b3Wus&0t2Q}otq8|9Ca6X*ZA#ixb)+W z--HS}22w*kc!b3#$zy{IA-(-t7Bl+e()pZ0lUT6TX_qdhyw!~ zoWDvU#3KApXVTvlU=aA06+fWlUj-`5|E)l#07yXSuhu`sK7q7WlW>BMOdPXE3APot=`bo)O<{;X5d(~GEzuFfWX0&xonebfEf zEP=B!3f~T?D0|_5)o{6E_!RfIPX7`AnEZcL?5B$|NX#{Y75niw)1xK+Aa^uC@tQzT z_r+HS_Tc}%TtJNJ^E-fR3hVHjbSSy_zcccD#Q6U>C0s7bY;;QeaY5ne3wOT*j=Q%_ KZdK_y#{3&;{!I!1 diff --git a/articles/mariadb/media/concepts-data-access-and-security-private-link/show-private-link-overview.PNG b/articles/mariadb/media/concepts-data-access-and-security-private-link/show-private-link-overview.PNG deleted file mode 100644 index deed9fb712a42f96c7b6a5466c76209b29ca2398..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54170 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 alQYkFFXG(ZlzQ-Q$o+ddDkXOwJ^x?9zn`lB diff --git a/articles/mariadb/media/concepts-data-access-security-vnet/vnet-concept.png b/articles/mariadb/media/concepts-data-access-security-vnet/vnet-concept.png deleted file mode 100644 index 726153763dac49f36110b3522d808638f9a2e9ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74658 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 L`njxgN@xNAG(+rA diff --git a/articles/mariadb/media/concepts-firewall-rules/1-firewall-concept.png b/articles/mariadb/media/concepts-firewall-rules/1-firewall-concept.png deleted file mode 100644 index ea8ec344bd1b809b1e8f63368205f2ed280a4c9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53968 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 diff --git a/articles/mariadb/media/concepts-firewall-rules/allow-azure-services.png b/articles/mariadb/media/concepts-firewall-rules/allow-azure-services.png deleted file mode 100644 index 85a7f0291fad47819386c8a61dd69495eea8bd05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69499 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