¿Enganche de script de instantánea anterior para invitado de Windows en Proxmox?

¿Enganche de script de instantánea anterior para invitado de Windows en Proxmox?

Tengo una configuración de servidor Proxmox con un invitado de Windows 10 que ejecutará MSSQL Express. El invitado de Windows tiene el agente invitado QEMU instalado y funcionando. Para las copias de seguridad, tengo un servidor separado que ejecuta Proxmox Backup, que ya está programado para realizar copias de seguridad completas del invitado una vez por semana (modo de parada). Además, necesito realizar copias de seguridad de instantáneas más frecuentes con poca o ninguna interrupción del acceso; sin embargo, simplemente "congelar" el sistema de archivos con una base de datos activa es problemático debido a la posibilidad de inconsistencia de los datos.

Si esto fuera MySQL en un huésped de Linux, ya existe una solución en forma de agregar un script a fsfreeze-hook, hasta el punto de que hay unejemploincluido en el repositorio. Pero, por la poca información específica que pude encontrar, toda esta característica parece faltar en la versión de Windows del agente invitado QEMU.

¿Cómo puedo lograr un script de enlace de invitado similar en Windows? Lo ideal sería llamar al script justo antes de que comience la instantánea para poner la base de datos en un estado seguro para tomar una instantánea.

Respuesta1

Debería poder crear secuencias de comandos de una instantánea en una máquina con Windows usando vssadmin create shadow. Sin embargo, tenga en cuenta que:

  • Las instantáneas vss en Windows 10 tienen la reputación de ser inutilizables debido a la corrupción de los datos de las instantáneas (tuve experiencia de primera mano sobre el problema al intentar recuperar algunos archivos capturados a través de ShadowExplorer)

  • cualquier motor de base de datos moderno (léase: casi cualquier cosa esperada MyISAM) utiliza jornaling y/o WAL para sobrevivir a una pérdida de energía o una copia de seguridad consistente con fallas.

Además de realizar copias de seguridad de toda la máquina virtual, sugeriría realizar volcados de bases de datos programados periódicamente en otras ubicaciones (es decir, un recurso compartido de red) si es posible.

Respuesta2

Entiendo los requisitos aquí, pero desafortunadamente no es fácil para las plataformas de virtualización "alternativas" lidiar con las travesuras de Microsoft. Si cree que incluso Citrix abandonó las instantáneas inactivas en xenserver, comprende el desafío aquí.

Supongo que podrías intentar llamar a vssadmin para crear sombra a través de ssh o powershell, pero en realidad nunca lo he intentado.

Las únicas maneras que conozcoseguramentemantener copias de seguridad de una VM Windows a nivel empresarial con algo como Proxmox son:

  1. Dado que estamos hablando específicamente de una máquina con SQL Server, usted mantiene los datos separados porque realiza la copia de seguridad con las funcionalidades propias de SQL Server. Puede usar el sistema operativo que desee, o simplemente conservar una instalación de repuesto/clonación de SQL Server (no se infringe la licencia si se detiene). Sin embargo, está utilizando SQL Server Express, lo cual es problemático porque no puede programar tareas, por lo que necesita encontrar algo más.
  2. Usar la copia de seguridad de Windows (Servidor) desde dentro de la máquina virtual, tal vez junto con una carpeta compartida ZFS de la que se toma una instantánea después de realizar la copia de seguridad, para que realmente pueda controlar el historial que desea conservar desde el lado de la administración del almacenamiento; esto es gratis y realmente funciona bastante bien; la recuperación no es la más rápida, ya que es necesario iniciar la instalación ISO de Windows y realizar una restauración falsa "bare metal" dentro de la VM. Debe iniciar el escritor VSS de SQL Server, y eso también debería brindarle copias de seguridad consistentes de SQL Server.En teoria. Hago esto regularmente en entornos de desarrollo y prueba, pero la producción es una bestia diferente y la documentación no es la más clara (gracias Microsoft, buen trabajo como siempre).
  3. Utilice otras soluciones de copia de seguridad certificadas que funcionen mejor que la copia de seguridad de Windows, pero nuevamente desde el interior de la máquina virtual; Sigue siendo costoso si hay que comprar licencias para muchas máquinas virtuales, por lo que en este punto consideraría optar por los grandes.

De hecho, sé que estás preguntando por Proxmox, pero hay que decir que profesionalmente la mejor forma de gestionar máquinas Windows que contienen datos importantes es utilizando VMWare vSphere o Hyper-V con Veeam Backup; Es la solución más costosa, pero también la mejor para la recuperación ante desastres: puede ejecutar la máquina desde copias de seguridad, por ejemplo, y otras funciones interesantes. No estoy anunciando nada; He experimentado prácticamente todas las plataformas de virtualización que tienen sentido, y si optas por Windows, así es.

Respuesta3

Ahora, para elformas poco confiablesPara hacer copias de seguridad de SQL Server en Proxmox específicamente, estoy modificando mi respuesta anterior para cumplir exactamente con lo que usted pregunta. Solo quiero subrayar que esta no es una buena práctica en absoluto, pero lo he visto incluso con VMWare (eso es estúpido).

Lo que podrías hacer es:

  • instalar el servidor OpenSSH en Windows, que ahora Windows tiene

  • configure enlaces en la copia de seguridad de proxmox (pero necesita ejecutar copias de seguridad desde la línea de comandos, no desde la GUI web) como se describe aquí:https://pve.proxmox.com/pve-docs/pve-admin-guide.html#_hook_scripts;De esta manera, puedo ejecutar un script que ejecuta algo dentro de la máquina virtual de Windows a través de SSH.

  • ese script que ejecutaré no es VSSADMIN sino algo como:

    SqlCmd -E -S LOCALHOST -Q "BACKUP DATABASE <DATABASENAME> TO DISK ='<PATH>'" o también puede ser algo más complicado, como copias de seguridad incrementales y demás. También puedes instalar los scripts de este tipo para manejar mejor las copias de seguridad, si te gustan los scripts SQL:https://ola.hallengren.com/sql-server-backup.html.

  • En este punto, realizará una copia de seguridad con Proxmox. Se garantiza que eso será consistente, si espera a que se vacíen los buffers (esa es una de las razones por las que no puede considerarse confiable desde un punto de vista profesional).

Sin embargo, las razones por las que no me gusta esto y la sugerencia anterior de hacer instantáneas VSS son:

  • Parece demasiado complicado y todavía estás haciendo algo que no es confiable.
  • De hecho, si tengo que confiar en el servicio de escritura VSS de SQL Server (que es obligatorio, de lo contrario no hay coherencia alguna), volvería a mi sugerencia anterior de usar Windows Backup + instantáneas de almacenamiento, que es mucho mejor de administrar que simplemente llamar a VSS. con un script y haciendo una copia de seguridad de la copia de seguridad.

Para mis máquinas de base de datos bajo Proxmox, XCP-ng o lo que sea, nunca me he molestado en hacer una copia de seguridad de ellas como máquinas; solo necesita asegurarse de que solo contengan el servidor de base de datos, como debería ser en general si se trata de alguna aplicación crítica. Creo que hacer una copia de seguridad de esas máquinas es una pérdida de tiempo. Siempre hago una copia de seguridad en un almacenamiento externo (con scripts, tareas programadas, mysqldump, Agente SQL Server, sqlcmd) porque puedo volver a estar activo en minutos con un contenedor acoplable/VM que puedo preparar con anticipación si realmente necesito realizar una recuperación ante desastres. También ocupamucho menos espacio.

información relacionada