Отказоустойчивая группа Azure SQL, что означает льготный период? - PullRequest
0 голосов
/ 15 июня 2019

Я сейчас читаю это: https://docs.microsoft.com/en-us/azure/sql-database/sql-database-auto-failover-group,, и мне трудно понять политику автоматического переключения при сбое:

По умолчанию группа аварийного переключения настроена с автоматическим переключением при сбое политика. Служба базы данных SQL запускает аварийное переключение после сбоя обнаружен, и льготный период истек. Система должна проверить что сбой не может быть уменьшен встроенной высокой доступностью инфраструктура службы базы данных SQL из-за масштаба влияние. Если вы хотите контролировать рабочий процесс отработки отказа из приложения, вы можете отключить автоматический переход на другой ресурс.

При определении группы отработки отказа в шаблоне ARM:

{
  "condition": "[equals(parameters('redundancyId'), 'pri')]",
  "type": "Microsoft.Sql/servers",
  "kind": "v12.0",
  "name": "[variables('sqlServerPrimaryName')]",
  "apiVersion": "2014-04-01-preview",
  "location": "[parameters('location')]",
  "properties": {
    "administratorLogin": "[parameters('sqlServerPrimaryAdminUsername')]",
    "administratorLoginPassword": "[parameters('sqlServerPrimaryAdminPassword')]",
    "version": "12.0"
  },
  "resources": [
    {
      "condition": "[equals(parameters('redundancyId'), 'pri')]",
      "apiVersion": "2015-05-01-preview",
      "type": "failoverGroups",
      "name": "[variables('sqlFailoverGroupName')]",
      "properties": {
        "serverName": "[variables('sqlServerPrimaryName')]",
        "partnerServers": [
          {
            "id": "[resourceId('Microsoft.Sql/servers/', variables('sqlServerSecondaryName'))]"
          }
        ],
        "readWriteEndpoint": {
          "failoverPolicy": "Automatic",
          "failoverWithDataLossGracePeriodMinutes": 60
        },
        "readOnlyEndpoint": {
          "failoverPolicy": "Disabled"
        },
        "databases": [
          "[resourceId('Microsoft.Sql/servers/databases', variables('sqlServerPrimaryName'), variables('sqlDatabaseName'))]"
        ]
      },
      "dependsOn": [
        "[variables('sqlServerPrimaryName')]",
        "[resourceId('Microsoft.Sql/servers/databases', variables('sqlServerPrimaryName'), variables('sqlDatabaseName'))]",
        "[resourceId('Microsoft.Sql/servers', variables('sqlServerSecondaryName'))]"
      ]
    },
    {
      "condition": "[equals(parameters('redundancyId'), 'pri')]",
      "name": "[variables('sqlDatabaseName')]",
      "type": "databases",
      "apiVersion": "2014-04-01-preview",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[variables('sqlServerPrimaryName')]"
      ],
      "properties": {
        "edition": "[variables('sqlDatabaseEdition')]",
        "requestedServiceObjectiveName": "[variables('sqlDatabaseServiceObjective')]"
      }
    }
  ]
},
{
  "condition": "[equals(parameters('redundancyId'), 'pri')]",
  "type": "Microsoft.Sql/servers",
  "kind": "v12.0",
  "name": "[variables('sqlServerSecondaryName')]",
  "apiVersion": "2014-04-01-preview",
  "location": "[variables('sqlServerSecondaryRegion')]",
  "properties": {
    "administratorLogin": "[parameters('sqlServerSecondaryAdminUsername')]",
    "administratorLoginPassword": "[parameters('sqlServerSecondaryAdminPassword')]",
    "version": "12.0"
  }
}

Я указываю readWriteEndpoint следующим образом:

    "readWriteEndpoint": {
      "failoverPolicy": "Automatic",
      "failoverWithDataLossGracePeriodMinutes": 60
    }

При значении failoverWithDataLossGracePeriodMinutes, равном 60 минутам.

Что это значит? Я не могу найти четкий ответ нигде. Означает ли это, что:

  1. когда в моем основном регионе, где находится моя основная база данных, происходит возмущение, конечная точка чтения / записи указывает на основную базу данных, и только через 60 минут она переключается на дополнительную, которая становится новой основной. В течение 60 минут единственный способ прочитать мои данные - это использовать readOnlyEndpoint напрямую? OR
  2. Моя конечная точка чтения / записи мгновенно переключается, если они каким-то образом могут обнаружить, что не было данных для синхронизации

Я думаю, что все сводится к следующему: нужно ли мне вручную переходить на другой ресурс при сбое, если я обнаружу возмущение, если я не забочусь о потере данных, но я хочу иметь возможность записи в свою базу данных?

Дополнительный вопрос: причина наличия льготного периода заключается в том, что на первичном сервере могут быть несинхронизированные данные, которые будут перезаписаны или отброшены, если вторичный станет новым первичным (если я переключаюсь вручную) )

Извините, но я не могу оставить только один вопрос. Я много читал, и мне действительно нужно это знать.

1 Ответ

1 голос
/ 15 июня 2019

Что это значит?

Это означает, что:

"когда происходит сбой в моей основной области, где находится моя основная база данных, конечная точка чтения / записи указывает на основную базу данных, и только через 60 минут она переключается на дополнительную, которая становится новой основной."

Он не может автоматически переключаться при сбое, даже когда данные синхронизируются, потому что решение высокой доступности в основном регионе пытается сделать то же самое, и почти все время ваша основная база данных быстро возвращается в основной регион. , Выполнение автоматического межобластного аварийного переключения может помешать этому.

И

"причина, по которой присутствует льготный период, заключается в том, что на первичном сервере могут быть несинхронизированные данные, которые будут перезаписаны или отброшены, если вторичный сервер станет новым первичным"

И дать время для отработки отказа базы данных в основном регионе.

...