Integridad de los datos en Azure SQL Database

Se aplica a:Azure SQL Database

Microsoft es responsable de gestionar la integridad de los datos en Azure SQL Database. Aunque existen técnicas tradicionales para que los DBAs supervisen la integridad de los datos y se recuperen de corrupciones en la base de datos en SQL Server, el equipo de ingeniería SQL de Microsoft desarrolló nuevas técnicas que gestionan algunas clases de corrupción de forma automática y sin pérdida de datos. El servicio utiliza estas técnicas para evitar la pérdida de datos y los tiempos de inactividad en los casos en que pueda evitarlos.

Este artículo describe algunas de esas técnicas, cómo funcionan y cómo afectan a los clientes que se preocupan por qué pasos deben tomar para proteger sus datos en Azure SQL Database.

Cómo Microsoft gestiona la integridad de los datos

Proteger la integridad de datos en Azure SQL Database implica una combinación de técnicas y métodos en evolución:

  • Monitorización exhaustiva de alertas de error de integridad de datos. SQL Motor de base de datos emite alertas por todos los errores y excepciones no gestionadas que indican preocupaciones sobre la integridad de los datos. El equipo de ingeniería gestiona e investiga estas alertas.

  • Detección de "escritura perdida" en el sistema de entrada/salida. El motor de base de datos tiene funcionalidades adicionales para detectar la que ha sido la causa más común de problemas de corrupción física observados: "escrituras perdidas" del sistema de E/S. Esta funcionalidad realiza un seguimiento de las escrituras de páginas y de los LSN (Log Sequence Numbers) asociados. Una lectura posterior de una página de datos desde el disco se compara con el LSN esperado de la página. Si hay una discrepancia en las LSN entre lo que hay en disco y lo que se espera, la página queda obsoleta, lo que provoca una alerta inmediata al equipo de ingeniería.

  • Reparación automática de páginas. Algunos niveles de servicio proporcionan réplicas de bases de datos para fines de continuidad del negocio. El servicio después utiliza la reparación automática de páginas, que es similar a la tecnología utilizada en los grupos de disponibilidad. En caso de que una réplica no pueda leer una página debido a un problema de integridad de datos, el servicio recupera una copia limpia de la página de otra réplica, reemplazando la página ilegible sin pérdida de datos ni inactividad del cliente.

  • Integridad de datos en reposo y en tránsito. Todas las bases de datos del servicio están configuradas para verificar páginas usando la CHECKSUM configuración, que calcula la suma de comprobación de toda la página y la almacena en el encabezado de la página para su verificación durante la lectura. La Seguridad de la capa de transporte (TLS) también se utiliza para todas las comunicaciones, además de las sumas de comprobación del nivel de transporte subyacente proporcionadas por TCP/IP.

  • Comprobaciones de integridad de copia de seguridad y restauración. Azure SQL Database realiza la verificación de páginas tanto durante las copias de seguridad gestionadas por servicios como en cada operación de restauración. Cualquier problema encontrado provoca una alerta inmediata al equipo de ingeniería.

Cómo Microsoft gestiona los incidentes de integridad de datos

Microsoft trata los incidentes de resultados erróneos o corrupción con la mayor severidad. La empresa ofrece soporte 24×7 desde todos los equipos de ingeniería Azure. Al gestionar incidentes de integridad, los objetivos son minimizar la indisponibilidad y la cantidad de pérdida de datos.

Problemas de integridad de datos del sistema

Microsoft corrige problemas que no afectan a los datos de los clientes ni a la disponibilidad de bases de datos sin notificar a los clientes. Ejemplos incluyen problemas que la reparación automática de páginas puede solucionar, o corrupción de metadatos internos de bases de datos o telemetría que no afecta a los datos de los clientes ni a los resultados de consultas.

Problemas de integridad de datos de clientes

Cuando Microsoft detecta un problema de resultados incorrectos o corrupción de datos del cliente, Microsoft toma las siguientes acciones:

  1. Hace todo lo posible por contactar con el cliente lo antes posible tras la confirmación de la detección, cumpliendo con las leyes de privacidad.
  2. Si se establece contacto, trabaja directamente con el cliente para explicar el alcance de la corrupción, detallar las opciones de recuperación y permitir que el cliente elija la opción que mejor se adapte a su aplicación y escenario.
  3. Cuando sea posible, ayuda al cliente a comprender el alcance del impacto en su aplicación, por ejemplo, identificando si la corrupción de datos ha provocado que la aplicación cambie otros datos de forma inesperada.

Microsoft repara la corrupción de datos utilizando diversos métodos y pasos seguidos en coordinación con los clientes. No intenta reparar que pueda causar pérdida de datos sin la aprobación del cliente. Los clientes no pueden usar las opciones de reparación DBCC CHECKDB en Azure SQL Database porque no se puede poner una base de datos en modo SINGLE_USER. Sin embargo, el equipo de Microsoft SQL puede tomar medidas de reparación, incluyendo, pero no limitándose a:

  • Reconstruir el índice. Por ejemplo, reconstruir un índice no agrupado donde la tabla base no esté también corrompida.
  • Ejecuta DBCC CHECKDB con REPAIR_REBUILD cuando la reparación no tenga posibilidad de pérdida de datos.
  • Ejecuta DBCC CHECKDB con REPAIR_ALLOW_DATA_LOSS donde las reparaciones pueden causar cierta pérdida de datos.
  • En los casos en que DBCC CHECKDB no pueda utilizarse para reparar el problema de integridad de los datos, los ingenieros pueden usar una restauración a un punto en el tiempo hasta un momento anterior a aquel en que se produjo el problema de integridad de los datos, seguida de una reaplicación manual de las transacciones pertinentes del registro de transacciones. Un ejemplo en el que esta técnica se aplica es cuando el registro de transacciones se corrompe de una manera que impide la reproducción automática de todas las transacciones pero sin corromper los datos del cliente.

El equipo de ingeniería realiza análisis post-mortem detallados sobre problemas que conducen a resultados incorrectos o corrupción de datos. El equipo realiza un seguimiento detallado de los objetos de reparación asociados creados debido al problema. Estos análisis posteriores dieron lugar a muchas mejoras significativas, entre ellas la funcionalidad de "escrituras perdidas" descrita anteriormente.

Comprobaciones de integridad iniciadas por el cliente

Además de la monitorización y protección existentes que ofrece el servicio, puedes optar por ejecutar comprobaciones de integridad iniciadas por el usuario como una capa adicional de protección. Por ejemplo, puedes ejecutar DBCC CHECKDB manualmente en las opciones de base de datos donde este comando está disponible.

En Azure SQL Database Hyperscale, utiliza DBCC CHECKTABLE ('<TableName>') WITH TABLOCK.

Feedback de los clientes y metodologías en evolución

El equipo de ingeniería de Azure SQL revisa y mejora regularmente las capacidades de detección de problemas de integridad de datos del servicio. Aunque los errores de integridad de datos son raros, si te encuentras con un error antes de recibir la notificación de Azure Support, presenta un caso de soporte.

Si tienes comentarios que compartir sobre la estrategia de integridad de datos de Microsoft, el equipo de ingeniería querría saber de ti. Para ponerse en contacto con el equipo de ingeniería para enviar sugerencias o comentarios sobre este asunto, consulte https://aka.ms/sqlfeedback. Tus comentarios ayudan a Microsoft a mejorar y desarrollar nuevas capacidades de protección de integridad de datos.