{"id":156880,"date":"2025-01-16T08:28:48","date_gmt":"2025-01-16T16:28:48","guid":{"rendered":"https:\/\/blog.everpuredata.com\/?p=156880"},"modified":"2025-02-16T01:00:27","modified_gmt":"2025-02-16T09:00:27","slug":"sql-server-distributed-availability-groups-and-kubernetes","status":"publish","type":"post","link":"https:\/\/blog.everpuredata.com\/le\/purely-technical\/sql-server-distributed-availability-groups-and-kubernetes\/","title":{"rendered":"Grupos de disponibilidad distribuida de SQL Server y Kubernetes"},"content":{"rendered":"\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-7387b849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column has-medium-font-size is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:70%\">\n<div class=\"wp-block-group has-border-color has-pure-orange-100-border-color has-primary-background-color has-background is-layout-flow wp-block-group-is-layout-flow\" style=\"border-width:2px;border-top-left-radius:16px;border-top-right-radius:16px;border-bottom-left-radius:16px;border-bottom-right-radius:16px;padding-top:30px;padding-right:30px;padding-bottom:30px;padding-left:30px\">\n<h3 class=\"wp-block-heading\" id=\"h-summary\">Resumen<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This article shows how to seed a database from a SQL instance that is in a Windows availability group into a SQL instance running in a pod in a Kubernetes cluster using a distributed availability group.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group pdf-print-hide is-content-justification-right is-nowrap is-layout-flex wp-container-core-group-is-layout-f726d978 wp-block-group-is-layout-flex\"><div class=\"pdfprnt-buttons\"><a href=\"https:\/\/blog.everpuredata.com\/le\/wp-json\/wp\/v2\/posts\/156880?print=pdf\" class=\"pdfprnt-button pdfprnt-button-pdf\" target=\"_blank\" ><img decoding=\"async\" src=\"https:\/\/blog.everpuredata.com\/wp-content\/plugins\/pdf-print-pro\/images\/pdf.png?1953174090\" alt=\"image_pdf\" title=\"View PDF\" \/><\/a><a href=\"https:\/\/blog.everpuredata.com\/le\/wp-json\/wp\/v2\/posts\/156880?print=print\" class=\"pdfprnt-button pdfprnt-button-print\" target=\"_blank\" ><img decoding=\"async\" src=\"https:\/\/blog.everpuredata.com\/wp-content\/plugins\/pdf-print-pro\/images\/print.png?245231721\" alt=\"image_print\" title=\"Print Content\" \/><\/a><\/div>\n<\/div>\n\n\n\n<div id=\"CONTENT\" class=\"wp-block-group is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"has-text-align-center wp-block-paragraph\"><em>Este art\u00edculo sobre los grupos de disponibilidad distribuida de SQL Server apareci\u00f3 originalmente en <\/em>el <a href=\"https:\/\/dbafromthecold.com\/\" target=\"_blank\" rel=\"noreferrer noopener\"><em>blog de Andrew Pruski<\/em><\/a><em>. Se ha vuelto a publicar con el cr\u00e9dito y consentimiento del autor.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hace un tiempo, escrib\u00ed sobre c\u00f3mo usar un <a href=\"https:\/\/dbafromthecold.com\/2024\/07\/26\/sql-server-cross-platform-availability-groups-and-kubernetes\/\" target=\"_blank\" rel=\"noreferrer noopener\">grupo de disponibilidad multiplataforma (o sin cl\u00faster)<\/a> para sembrar una base de datos de una instancia de Windows SQL en un pod en Kubernetes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Estaba hablando con un colega la semana pasada y me preguntaron: \u201c\u00bfQu\u00e9 suceder\u00eda si la instancia existente de Windows ya estuviera en un grupo de disponibilidad?\u201d.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esta es una pregunta justa, ya que es bastante raro (en mi experiencia) ejecutar una instancia de SQL independiente en producci\u00f3n&#8230; la mayor\u00eda de las instancias se encuentran en alguna forma de configuraci\u00f3n de HA, ya sea una instancia de cl\u00faster de conmutaci\u00f3n por error o un grupo de disponibilidad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las instancias de cl\u00faster de conmutaci\u00f3n por error funcionar\u00e1n con un grupo de disponibilidad sin cl\u00faster, pero es una historia diferente cuando se trata de grupos de disponibilidad existentes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No se puede agregar un nodo Linux a un grupo de disponibilidad existente de Windows (conf\u00ede en m\u00ed, intent\u00e9 m\u00e1s tiempo del que admitir\u00e9), por lo que la \u00fanica forma de hacerlo es usar un <a href=\"https:\/\/learn.microsoft.com\/en-us\/sql\/database-engine\/availability-groups\/windows\/configure-distributed-availability-groups?view=sql-server-ver16&amp;tabs=automatic%2Csql22\" target=\"_blank\" rel=\"noreferrer noopener\">grupo de disponibilidad distribuida<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a1As\u00ed que repasemos el proceso!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este es el grupo de disponibilidad existente de Windows:\u00a0<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXfG3A13oYNJlUXsGM2CeQUUuxJXKSflYtBu6qg1blcSIL0Y31qUznBW7Ap0tXVF2A8QN8D6RLDFNXVcFWdFFvJeLRMCBIx90xE6eA_Y3buKL7OE29jsDetGHq4P3z-vFozaW6ReTw?key=Cllw4N2t9SVERAcoDnITi1xj\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Solo un AG est\u00e1ndar de dos nodos con una base de datos ya sincronizada entre los nodos. Es esa base de datos que vamos a sembrar en el pod que se ejecuta en el cl\u00faster de Kubernetes usando un grupo de disponibilidad distribuida.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este es el cl\u00faster de Kubernetes:\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>nodos kubectl get<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXff7LVm7D6CB4d-w4cU2TFAqqJV5nEnpl-IpKZJTIO4W_xU3cQR-yoE4QDWIEeUvpOpOLIZ7ffzJZTS8-eqv5Gd1JLHF4T_TCPNe4V2YzEcnYzSuwC0OxVKViwsqHCDkfzYX16Nag?key=Cllw4N2t9SVERAcoDnITi1xj\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Cuatro nodos, un nodo de plano de control y tres nodos de trabajadores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bien, lo primero que debe hacer es implementar un <em>conjunto de estados<\/em> que ejecute un pod de SQL Server (usando un archivo llamado <em>sqlserver-statefulset.yaml<\/em>):\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>kubectl apply -f .\\sqlserver-statefulset.yaml<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este es el manifiesto del conjunto de estados:\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>apiVersi\u00f3n: aplicaciones\/v1kind: StatefulSetmetadata: name: mssql-statefulsetspec: serviceName: \"mssql\" replicas: 1 podManagementPol\u00edtica: Selector paralelo: matchEtiquetas: nombre: plantilla mssql-pod:metadatos: etiquetas: nombre: anotaciones de mssql-pod:stork.libopenstorage.org\/disableHyperconvergence: especificaciones \"verdaderas\": securityContext: fsGroup: 10001 hostAlias: - ip: \"10.225.115.129\" nombres de host: - contenedores \"z-ap-sql-10\": - nombre: imagen del contenedor mssql: mcr.microsoft.com\/mssql\/server:2022-CU15-ubuntu-20.04puertos: - containerPort: Nombre de 1433: mssql-port env: - nombre: MSSQL_PID\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0value: \"Desarrollador\" - nombre: ACCEPT_EULA\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0value: \"Y\" - nombre: MSSQL_AGENT_ENABLED\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0value: \"1\" - nombre: MSSQL_ENABLE_HADR\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0value: \"1\" - nombre: MSSQL_SA_PASSWORD\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0value: \"Pruebas1122\" volumeMounts: - name: sqlsystem mountPath: \/var\/opt\/mssql - name: sqldata mountPath: \/var\/opt\/sqlserver\/data volumeClaimTemplates: - metadatos: name: sqlsystem spec: accessModes: - ReadWriteOnce resources: requests: storage: 1GistorageClassName: mssql-sc - metadatos: name: sqldata spec: accessModes: - ReadWriteOnce Recursos: solicitudes: almacenamiento: 25GistorageClassName: mssql-sc<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Al igual que en mi \u00faltima publicaci\u00f3n, esto est\u00e1 bastante despojado. Sin l\u00edmites de recursos, tolerancias, etc. Tiene dos vol\u00famenes persistentes: uno para las bases de datos del sistema y otro para las bases de datos de usuarios de una clase de almacenamiento ya configurada en el cl\u00faster.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una cosa a tener en cuenta:\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>1234 hostAlias:- ip: \"10.225.115.129\" nombres de host: - \"z-ap-sql-10\"<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed, se est\u00e1 creando una entrada en el archivo hosts del pod para el oyente del grupo de disponibilidad de Windows.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lo siguiente que debe hacer es implementar dos servicios: uno para que podamos conectarnos a la instancia SQL (en el puerto 1433) y uno para el AG (puerto 5022):\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>kubectl apply -f .\\sqlserver-services.yaml<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Este es el manifiesto de los servicios:\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>12345678910111213141516171819202122232425 apiVersi\u00f3n: v1kind: Servicemetadata: name: mssql-servicespec: puertos: - name: mssql-ports port: 1433 targetPort: 1433 selector: name: mssql-pod type: LoadBalancer---apiVersi\u00f3n: v1kind: Servicemetadata: name: mssql-ha-servicespec: puertos: - name: mssql-ha-ports port: 5022 targetPort: 5022 selector: name: mssql-pod type: LoadBalancer<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Nota:<\/strong> Podr\u00edamos usar solo un servicio con varios puertos configurados, pero los mantengo separados aqu\u00ed para intentar mantener las cosas lo m\u00e1s claras posible.<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><a href=\"https:\/\/blog.everpuredata.com\/purely-technical\/using-t-sql-snapshot-backup-point-in-time-recovery\/\"><em>Uso de la copia de seguridad de snapshots T-SQL: Recuperaci\u00f3n en un momento determinado<\/em><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Verifique que todo se vea bien:\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>kubectl obtenga todo<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXefdcaPNNNGsf1z_vwCxamw2L-eipbLfDA5LyCQhwYM4WAC8UpPWKAsLhhqgZAAwdfpYWRl0r0NaTaNWAlaAB_rTTJPK9i-cNhToJQAMVVyLH6iI7ZViKYqlgs5o6NriYSd40MGZQ?key=Cllw4N2t9SVERAcoDnITi1xj\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora, debemos crear la clave maestra, el inicio de sesi\u00f3n y el usuario en todos los casos:\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>123 <strong>CREAR<\/strong> LA ENCRYPCI\u00d3N <strong>CLAVE<\/strong> MAESTRA <strong>POR<\/strong> <strong>CONTRASE\u00d1A<\/strong> = '<c0m9l3xp>';<strong>CREE<\/strong> INICIO DE SESI\u00d3N [dbm_login] <strong>CON<\/strong> <strong>CONTRASE\u00d1A<\/strong> = '<c0m9l3xp>';<strong>CREE<\/strong> USUARIO dbm_user <strong>PARA<\/strong> INICIAR SESI\u00d3N dbm_login;<\/c0m9l3xp><\/c0m9l3xp><\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Luego, cree un certificado en la instancia SQL en el pod:\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code><strong>CREAR<\/strong> CERTIFICADO dbm_certificate <strong>CON<\/strong> ASUNTO = 'Mirroring_certificate', EXPIRY_DATE = '20301031'<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Realice una copia de seguridad de ese certificado:\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>123456 CERTIFICADO DE RESPALDO dbm_certificate<strong>PARA<\/strong> ARCHIVO = '\/var\/opt\/mssql\/data\/dbm_certificate.cer'<strong>CON<\/strong> <strong>CLAVE<\/strong> PRIVADA ( ARCHIVO = '\/var\/opt\/mssql\/data\/dbm_certificate.pvk',\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ENCRYPTION <strong>POR<\/strong> <strong>CONTRASE\u00d1A<\/strong> = '<c0m9l3xp>' );<\/c0m9l3xp><\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Copie el certificado localmente:\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>12 kubectl cp mssql-statefulset-0:var\/opt\/mssql\/data\/dbm_certificate.cer .\/dbm_certificate.cer -n prodkubectl cp mssql-statefulset-0:var\/opt\/mssql\/data\/dbm_certificate.pvk .\/dbm_certificate.pvk -n prod<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y luego copie los archivos a las casillas de Windows:\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>1234 Copy-Item dbm_certificate.cer \\\\z-ap-sql-02\\E$\\SQLBackup1\\ -ForceCopy-Item dbm_certificate.pvk \\\\z-ap-sql-02\\E$\\SQLBackup1\\ -ForceCopy-Item dbm_certificate.cer \\\\z-ap-sql-03\\E$\\SQLBackup1\\ -ForceCopy-Item dbm_certificate.pvk \\\\z-ap-sql-03\\E$\\SQLBackup1\\ -Force<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez que los archivos est\u00e1n en los cuadros de Windows, podemos crear el certificado en cada instancia de Windows SQL:\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>1234567 <strong>CREAR<\/strong> CERTIFICADO DE dbm_certificate\u00a0\u00a0\u00a0\u00a0<strong>AUTORIZACI\u00d3N<\/strong> dbm_user\u00a0\u00a0\u00a0\u00a0<strong>DESDE<\/strong> EL ARCHIVO = 'E:\\SQLBackup1\\dbm_certificate.cer'\u00a0\u00a0\u00a0\u00a0<strong>CON<\/strong> <strong>CLAVE<\/strong> PRIVADA (ARCHIVO = 'E:\\SQLBackup1\\dbm_certificate.pvk',\u00a0\u00a0\u00a0\u00a0DECRYPTION <strong>POR<\/strong> <strong>CONTRASE\u00d1A<\/strong> = '')<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bien, \u00a1excelente! Ahora necesitamos crear un punto final en espejo en la instancia SQL en el pod:\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>123456789101112 <strong>CREAR<\/strong> [Hadr_endpoint]ESTADO DE PUNTO FINAL = <strong>INICIADOCOMO<\/strong> TCP (\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0LISTENER_PORT = 5022,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0LISTENER_IP = TODOS)<strong>PARA<\/strong> DATA_MIRRORING ( ROL = TODOS, AUTENTICACI\u00d3N = CERTIFICADO DE WINDOWS [dbm_certificate], CIFRADO = ALGORITMO REQUERIDO AES );<strong>ALTER<\/strong>AR [Hadr_endpoint] ESTADO DE PUNTO FINAL = INICIADO;<strong>OTORGAR<\/strong> <strong>CONEXI\u00d3N<\/strong> <strong>EN<\/strong> EL PUNTO FINAL::[Hadr_endpoint] <strong>A<\/strong> [dbm_login];<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ya hay puntos finales en las instancias de Windows, pero necesitamos actualizarlos para usar el certificado para la autenticaci\u00f3n:\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>12345678910 <strong>ALTER<\/strong> ENDPOINT [Hadr_endpoint]STATE = STARTED<strong>AS<\/strong> TCP (\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0LISTENER_PORT = 5022,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0LISTENER_IP = = ALL)<strong>PARA<\/strong> DATABASE_MIRRORING ( AUTENTICACI\u00d3N = CERTIFICADO DE WINDOWS[dbm_certificate], CIFRADO = ALGORITMO REQUERIDO AES );<strong>GRANT<\/strong> <strong>CONNECT<\/strong> <strong>ON<\/strong> ENDPOINT::[Hadr_endpoint] <strong>A<\/strong> [dbm_login];<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora, podemos crear un grupo de disponibilidad sin cl\u00faster de un nodo en la instancia de SQL en el pod:\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>12345678910111213 <strong>CREE<\/strong> <strong>UN GRUPO<\/strong> DE [AG2]<strong>DISPONIBILIDADCON<\/strong> (CLUSTER_TYPE=NONE)\u00a0\u00a0\u00a0<strong>FOR<\/strong>REPLICA <strong>ON<\/strong>'mssql-statefulset-0' <strong>WITH<\/strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0(\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0ENDPOINT_URL = 'TCP:\/\/mssql-statefulset-0.com:5022',\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0FAILOVER_MODE MANUAL\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,AVAILABILITY_MODE = SYNCHRONOUS_COMMIT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,BACKUP_PRIORITY = 50\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,SEEDING_MODE = AUTOMATIC\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,SECONDARY_ROLE(ALLOW_CONNECTIONS = = <strong>NO<\/strong>) )<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No hay oyente aqu\u00ed; vamos a usar el <em>servicio mssql-ha<\/em> como punto final para el grupo de disponibilidad distribuida.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bien, en el nodo principal del grupo de disponibilidad de Windows, podemos crear el grupo de disponibilidad distribuida:\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>1234567891011121314151617 <strong>CREE<\/strong> <strong>UN GRUPO<\/strong> DE DISPONIBILIDAD [DistributedAG]<strong>CON<\/strong> (DISTRIBUIDO) <strong>GRUPO<\/strong> DE DISPONIBILIDAD <strong>EN<\/strong> 'AG1' <strong>CON<\/strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0(\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0LISTENER_URL = 'tcp:\/\/Z-AP-SQL-10:5022', \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0FAILOVER_MODE = MANUAL,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0SEEDING_MODE = = AUTOM\u00c1TICO ), 'AG2' <strong>CON<\/strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0(\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0LISTENER_URL = 'tcp:\/\/10.225.115.131:5022',\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0AVAILABILITY_MODE ASYNCHRONOUS_COMMIT,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0FAILOVER_MODE = = MANUAL,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0SEEDING_MODE = = AUTOM\u00c1TICO );<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Podr\u00edamos usar una entrada de archivo de host para la URL en AG2 (lo hice en la publicaci\u00f3n anterior), pero aqu\u00ed solo usaremos la direcci\u00f3n IP del servicio mssql-ha.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bien, \u00a1casi all\u00ed! Ahora tenemos que unirnos al grupo de disponibilidad en la instancia SQL en el pod:\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>1234567891011121314151617 <strong>ALTER<\/strong> AVAILABILITY <strong>GROUP<\/strong> SE [DistributedAG]UNE A AVAILABILITY <strong>GROUP<\/strong> <strong>ON<\/strong>'AG1' <strong>WITH<\/strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0(\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0LISTENER_URL = 'tcp:\/\/Z-AP-SQL-10:5022', \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0FAILOVER_MODE = MANUAL,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0SEEDING_MODE = = AUTOM\u00c1TICO ), 'AG2' <strong>WITH<\/strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0(\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0LISTENER_URL = 'tcp:\/\/10.225.115.131:5022',\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0FAILOVER_MODE = MANUAL,\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0SEEDING_MODE = = AUTOM\u00c1TICO );<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a1Y eso deber\u00eda ser todo! Si ahora nos conectamos a la instancia de SQL en el pod, \u00a1la base de datos est\u00e1 all\u00ed!<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXeVnFQoHBmHIaElbeYgdM6o24JTaYgVUEX31J9OKs-nVXQkXJwRO2atp5tkDmgSsK93zA4fx8J7U8gur6M3SG1p2NQJdhNHybqd2B2euZB-weSxP0Ok-0oQF3n7L_2CKjdg5DVZSQ?key=Cllw4N2t9SVERAcoDnITi1xj\" alt=\"\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a1Ah\u00ed est\u00e1! Bien, una cosa que no he analizado aqu\u00ed es c\u00f3mo hacer que la autoseminaci\u00f3n funcione desde Windows a una instancia de Linux SQL. Repas\u00e9 c\u00f3mo funciona eso en <a href=\"https:\/\/dbafromthecold.com\/2024\/07\/26\/sql-server-cross-platform-availability-groups-and-kubernetes\/\">mi publicaci\u00f3n anterior<\/a>, pero el punto de referencia es que, siempre que los datos de la base de datos y los archivos de registro se encuentren debajo de la ruta de datos y registros predeterminada de la instancia de SQL de Windows, se colocar\u00e1n autom\u00e1ticamente en las rutas de datos y registros predeterminadas de la instancia de SQL de Linux.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As\u00ed es como se puede sembrar una base de datos desde una instancia de SQL que est\u00e1 en un grupo de disponibilidad de Windows en una instancia de SQL que se ejecuta en un pod en un cl\u00faster de Kubernetes usando un grupo de disponibilidad distribuida.<\/p>\n\n\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/pixel.welcomesoftware.com\/px.gif?key=YXJ0aWNsZT02ZDUyOGUzMmQ0MjMxMWVmYTI2YTBlY2JjZjE2MjQyMA==\" alt=\"\"\/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:30%\">\n<div class=\"wp-block-group sticky-content has-mint-green-500-background-color has-background is-layout-flow wp-block-group-is-layout-flow\" style=\"border-radius:20px;padding-top:20px;padding-right:20px;padding-bottom:20px;padding-left:20px\">\n<h2 class=\"wp-block-heading has-text-align-center has-ash-gray-500-color has-text-color has-link-color wp-elements-e03b5ed8732ebcc2a11722d5fcc4b3e7\" id=\"h-title\" style=\"font-size:px\">Stellar Storage<\/h2>\n\n\n\n<p class=\"has-text-align-center has-ash-gray-500-color has-text-color has-link-color wp-elements-9223d3748670e48fb7ad2356cd860fe8 wp-block-paragraph\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.208), 1rem);\">Boost performance for SQL Server with Pure Storage.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-f8bdad00 wp-block-buttons-is-layout-flex\" style=\"margin-top:1em;margin-bottom:1em\">\n<div class=\"wp-block-button is-style-outline button-sticky is-style-outline--2\"><a class=\"wp-block-button__link has-cloud-white-500-color has-basil-green-500-background-color has-text-color has-background has-link-color has-inter-font-family has-custom-font-size wp-element-button\" href=\"https:\/\/www.purestorage.com\/solutions\/databases-applications\/microsoft\/sql.html\" style=\"border-style:none;border-width:0px;border-radius:4px;padding-top:14px;padding-right:16px;padding-bottom:14px;padding-left:16px;font-size:clamp(14px, 0.875rem + ((1vw - 3.2px) * 0.208), 16px);\" target=\"_blank\" rel=\"noreferrer noopener\">Explore Solutions<\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>En este art\u00edculo, encontrar\u00e1 el proceso para usar un grupo de disponibilidad distribuida para sembrar una base de datos desde una instancia de SQL que est\u00e1 en un grupo de disponibilidad de Windows.<\/p>\n","protected":false},"author":720,"featured_media":154200,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[14632],"tags":[14577,15193,14381,14818,14638],"content-position":[14978,15820],"ppma_author":[14501],"class_list":["post-156880","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-purely-technical","tag-storage-administration-le","tag-database-le","tag-database","tag-kubernetes-le","tag-sql-server-le","content-position-featured-articles-kubernetes","content-position-featured-articles-kubernetes-le"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.4 (Yoast SEO v28.0) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Grupos de disponibilidad distribuida de SQL Server y Kubernetes | Everpure Blog<\/title>\n<meta name=\"description\" content=\"Descubra el proceso para usar un grupo de disponibilidad distribuida para sembrar una base de datos desde una instancia de SQL en un grupo de disponibilidad de Windows.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.everpuredata.com\/le\/purely-technical\/sql-server-distributed-availability-groups-and-kubernetes\/\" \/>\n<meta property=\"og:locale\" content=\"es_LA\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Grupos de disponibilidad distribuida de SQL Server y Kubernetes\" \/>\n<meta property=\"og:description\" content=\"Descubra el proceso para usar un grupo de disponibilidad distribuida para sembrar una base de datos desde una instancia de SQL en un grupo de disponibilidad de Windows.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.everpuredata.com\/le\/purely-technical\/sql-server-distributed-availability-groups-and-kubernetes\/\" \/>\n<meta property=\"og:site_name\" content=\"Everpure Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/PureStorage\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-16T16:28:48+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-16T09:00:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.everpuredata.com\/wp-content\/uploads\/2025\/01\/SQL-Server-Distributed-Availability-Groups.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2163\" \/>\n\t<meta property=\"og:image:height\" content=\"1414\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Andrew Pruski\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@purestorage\" \/>\n<meta name=\"twitter:site\" content=\"@purestorage\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andrew Pruski\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/purely-technical\\\/sql-server-distributed-availability-groups-and-kubernetes\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/purely-technical\\\/sql-server-distributed-availability-groups-and-kubernetes\\\/\"},\"author\":{\"name\":\"Andrew Pruski\",\"@id\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/#\\\/schema\\\/person\\\/6ea5791774ae9b840fc0bd9d07b1db0c\"},\"headline\":\"Grupos de disponibilidad distribuida de SQL Server y Kubernetes\",\"datePublished\":\"2025-01-16T16:28:48+00:00\",\"dateModified\":\"2025-02-16T09:00:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/purely-technical\\\/sql-server-distributed-availability-groups-and-kubernetes\\\/\"},\"wordCount\":889,\"publisher\":{\"@id\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/purely-technical\\\/sql-server-distributed-availability-groups-and-kubernetes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.everpuredata.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/SQL-Server-Distributed-Availability-Groups.png\",\"keywords\":[\"Administraci\u00f3n del almacenamiento\",\"Database\",\"Databases\",\"Kubernetes\",\"SQL Server\"],\"articleSection\":[\"Purely Technical\"],\"inLanguage\":\"es-LA\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/purely-technical\\\/sql-server-distributed-availability-groups-and-kubernetes\\\/\",\"url\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/purely-technical\\\/sql-server-distributed-availability-groups-and-kubernetes\\\/\",\"name\":\"Grupos de disponibilidad distribuida de SQL Server y Kubernetes | Everpure Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/purely-technical\\\/sql-server-distributed-availability-groups-and-kubernetes\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/purely-technical\\\/sql-server-distributed-availability-groups-and-kubernetes\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.everpuredata.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/SQL-Server-Distributed-Availability-Groups.png\",\"datePublished\":\"2025-01-16T16:28:48+00:00\",\"dateModified\":\"2025-02-16T09:00:27+00:00\",\"description\":\"Descubra el proceso para usar un grupo de disponibilidad distribuida para sembrar una base de datos desde una instancia de SQL en un grupo de disponibilidad de Windows.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/purely-technical\\\/sql-server-distributed-availability-groups-and-kubernetes\\\/#breadcrumb\"},\"inLanguage\":\"es-LA\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/purely-technical\\\/sql-server-distributed-availability-groups-and-kubernetes\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es-LA\",\"@id\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/purely-technical\\\/sql-server-distributed-availability-groups-and-kubernetes\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blog.everpuredata.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/SQL-Server-Distributed-Availability-Groups.png\",\"contentUrl\":\"https:\\\/\\\/blog.everpuredata.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/SQL-Server-Distributed-Availability-Groups.png\",\"width\":2163,\"height\":1414,\"caption\":\"SQL Server Distributed Availability Groups\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/purely-technical\\\/sql-server-distributed-availability-groups-and-kubernetes\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Grupos de disponibilidad distribuida de SQL Server y Kubernetes\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/#website\",\"url\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/\",\"name\":\"Everpure Blog\",\"description\":\"Unleash the power of your data with an intelligent, unified storage and data management platform built for resilience and AI.\",\"publisher\":{\"@id\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es-LA\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/#organization\",\"name\":\"Pure Storage\",\"url\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es-LA\",\"@id\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/blog.everpuredata.com\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/download-5.png\",\"contentUrl\":\"https:\\\/\\\/blog.everpuredata.com\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/download-5.png\",\"width\":302,\"height\":167,\"caption\":\"Pure Storage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/PureStorage\",\"https:\\\/\\\/x.com\\\/purestorage\",\"https:\\\/\\\/www.instagram.com\\\/purestorage\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/pure-storage\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/purestorage\",\"https:\\\/\\\/en.wikipedia.org\\\/wiki\\\/Pure_Storage\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/#\\\/schema\\\/person\\\/6ea5791774ae9b840fc0bd9d07b1db0c\",\"name\":\"Andrew Pruski\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es-LA\",\"@id\":\"https:\\\/\\\/blog.everpuredata.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/Andrew-Pruski.png6dfc675849dda73d4ddea62eabc1629a\",\"url\":\"https:\\\/\\\/blog.everpuredata.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/Andrew-Pruski.png\",\"contentUrl\":\"https:\\\/\\\/blog.everpuredata.com\\\/wp-content\\\/uploads\\\/2025\\\/01\\\/Andrew-Pruski.png\",\"caption\":\"Andrew Pruski\"},\"description\":\"Andrew is a seasoned SQL Server DBA with over 15 years of hands-on experience. Currently, he serves as a Principal Field Solutions Architect at Everpure.\",\"url\":\"https:\\\/\\\/blog.everpuredata.com\\\/le\\\/author\\\/andrew-pruski\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Grupos de disponibilidad distribuida de SQL Server y Kubernetes | Everpure Blog","description":"Descubra el proceso para usar un grupo de disponibilidad distribuida para sembrar una base de datos desde una instancia de SQL en un grupo de disponibilidad de Windows.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.everpuredata.com\/le\/purely-technical\/sql-server-distributed-availability-groups-and-kubernetes\/","og_locale":"es_LA","og_type":"article","og_title":"Grupos de disponibilidad distribuida de SQL Server y Kubernetes","og_description":"Descubra el proceso para usar un grupo de disponibilidad distribuida para sembrar una base de datos desde una instancia de SQL en un grupo de disponibilidad de Windows.","og_url":"https:\/\/blog.everpuredata.com\/le\/purely-technical\/sql-server-distributed-availability-groups-and-kubernetes\/","og_site_name":"Everpure Blog","article_publisher":"https:\/\/www.facebook.com\/PureStorage","article_published_time":"2025-01-16T16:28:48+00:00","article_modified_time":"2025-02-16T09:00:27+00:00","og_image":[{"width":2163,"height":1414,"url":"https:\/\/blog.everpuredata.com\/wp-content\/uploads\/2025\/01\/SQL-Server-Distributed-Availability-Groups.png","type":"image\/png"}],"author":"Andrew Pruski","twitter_card":"summary_large_image","twitter_creator":"@purestorage","twitter_site":"@purestorage","twitter_misc":{"Written by":"Andrew Pruski","Est. reading time":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.everpuredata.com\/le\/purely-technical\/sql-server-distributed-availability-groups-and-kubernetes\/#article","isPartOf":{"@id":"https:\/\/blog.everpuredata.com\/le\/purely-technical\/sql-server-distributed-availability-groups-and-kubernetes\/"},"author":{"name":"Andrew Pruski","@id":"https:\/\/blog.everpuredata.com\/le\/#\/schema\/person\/6ea5791774ae9b840fc0bd9d07b1db0c"},"headline":"Grupos de disponibilidad distribuida de SQL Server y Kubernetes","datePublished":"2025-01-16T16:28:48+00:00","dateModified":"2025-02-16T09:00:27+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.everpuredata.com\/le\/purely-technical\/sql-server-distributed-availability-groups-and-kubernetes\/"},"wordCount":889,"publisher":{"@id":"https:\/\/blog.everpuredata.com\/le\/#organization"},"image":{"@id":"https:\/\/blog.everpuredata.com\/le\/purely-technical\/sql-server-distributed-availability-groups-and-kubernetes\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.everpuredata.com\/wp-content\/uploads\/2025\/01\/SQL-Server-Distributed-Availability-Groups.png","keywords":["Administraci\u00f3n del almacenamiento","Database","Databases","Kubernetes","SQL Server"],"articleSection":["Purely Technical"],"inLanguage":"es-LA"},{"@type":"WebPage","@id":"https:\/\/blog.everpuredata.com\/le\/purely-technical\/sql-server-distributed-availability-groups-and-kubernetes\/","url":"https:\/\/blog.everpuredata.com\/le\/purely-technical\/sql-server-distributed-availability-groups-and-kubernetes\/","name":"Grupos de disponibilidad distribuida de SQL Server y Kubernetes | Everpure Blog","isPartOf":{"@id":"https:\/\/blog.everpuredata.com\/le\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.everpuredata.com\/le\/purely-technical\/sql-server-distributed-availability-groups-and-kubernetes\/#primaryimage"},"image":{"@id":"https:\/\/blog.everpuredata.com\/le\/purely-technical\/sql-server-distributed-availability-groups-and-kubernetes\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.everpuredata.com\/wp-content\/uploads\/2025\/01\/SQL-Server-Distributed-Availability-Groups.png","datePublished":"2025-01-16T16:28:48+00:00","dateModified":"2025-02-16T09:00:27+00:00","description":"Descubra el proceso para usar un grupo de disponibilidad distribuida para sembrar una base de datos desde una instancia de SQL en un grupo de disponibilidad de Windows.","breadcrumb":{"@id":"https:\/\/blog.everpuredata.com\/le\/purely-technical\/sql-server-distributed-availability-groups-and-kubernetes\/#breadcrumb"},"inLanguage":"es-LA","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.everpuredata.com\/le\/purely-technical\/sql-server-distributed-availability-groups-and-kubernetes\/"]}]},{"@type":"ImageObject","inLanguage":"es-LA","@id":"https:\/\/blog.everpuredata.com\/le\/purely-technical\/sql-server-distributed-availability-groups-and-kubernetes\/#primaryimage","url":"https:\/\/blog.everpuredata.com\/wp-content\/uploads\/2025\/01\/SQL-Server-Distributed-Availability-Groups.png","contentUrl":"https:\/\/blog.everpuredata.com\/wp-content\/uploads\/2025\/01\/SQL-Server-Distributed-Availability-Groups.png","width":2163,"height":1414,"caption":"SQL Server Distributed Availability Groups"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.everpuredata.com\/le\/purely-technical\/sql-server-distributed-availability-groups-and-kubernetes\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.everpuredata.com\/le\/"},{"@type":"ListItem","position":2,"name":"Grupos de disponibilidad distribuida de SQL Server y Kubernetes"}]},{"@type":"WebSite","@id":"https:\/\/blog.everpuredata.com\/le\/#website","url":"https:\/\/blog.everpuredata.com\/le\/","name":"Everpure Blog","description":"Unleash the power of your data with an intelligent, unified storage and data management platform built for resilience and AI.","publisher":{"@id":"https:\/\/blog.everpuredata.com\/le\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.everpuredata.com\/le\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es-LA"},{"@type":"Organization","@id":"https:\/\/blog.everpuredata.com\/le\/#organization","name":"Pure Storage","url":"https:\/\/blog.everpuredata.com\/le\/","logo":{"@type":"ImageObject","inLanguage":"es-LA","@id":"https:\/\/blog.everpuredata.com\/le\/#\/schema\/logo\/image\/","url":"https:\/\/blog.everpuredata.com\/wp-content\/uploads\/2019\/08\/download-5.png","contentUrl":"https:\/\/blog.everpuredata.com\/wp-content\/uploads\/2019\/08\/download-5.png","width":302,"height":167,"caption":"Pure Storage"},"image":{"@id":"https:\/\/blog.everpuredata.com\/le\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/PureStorage","https:\/\/x.com\/purestorage","https:\/\/www.instagram.com\/purestorage","https:\/\/www.linkedin.com\/company\/pure-storage","https:\/\/www.youtube.com\/user\/purestorage","https:\/\/en.wikipedia.org\/wiki\/Pure_Storage"]},{"@type":"Person","@id":"https:\/\/blog.everpuredata.com\/le\/#\/schema\/person\/6ea5791774ae9b840fc0bd9d07b1db0c","name":"Andrew Pruski","image":{"@type":"ImageObject","inLanguage":"es-LA","@id":"https:\/\/blog.everpuredata.com\/wp-content\/uploads\/2025\/01\/Andrew-Pruski.png6dfc675849dda73d4ddea62eabc1629a","url":"https:\/\/blog.everpuredata.com\/wp-content\/uploads\/2025\/01\/Andrew-Pruski.png","contentUrl":"https:\/\/blog.everpuredata.com\/wp-content\/uploads\/2025\/01\/Andrew-Pruski.png","caption":"Andrew Pruski"},"description":"Andrew is a seasoned SQL Server DBA with over 15 years of hands-on experience. Currently, he serves as a Principal Field Solutions Architect at Everpure.","url":"https:\/\/blog.everpuredata.com\/le\/author\/andrew-pruski\/"}]}},"authors":[{"term_id":14501,"user_id":720,"is_guest":0,"slug":"andrew-pruski","display_name":"Andrew Pruski","avatar_url":{"url":"https:\/\/blog.everpuredata.com\/wp-content\/uploads\/2025\/01\/Andrew-Pruski.png","url2x":"https:\/\/blog.everpuredata.com\/wp-content\/uploads\/2025\/01\/Andrew-Pruski.png"},"author_category":"","first_name":"Andrew","last_name":"Pruski","user_url":"","job_title":"","description":"Andrew is a seasoned SQL Server DBA with over 15 years of hands-on experience. Currently, he serves as a Principal Field Solutions Architect at Pure Storage."}],"_links":{"self":[{"href":"https:\/\/blog.everpuredata.com\/le\/wp-json\/wp\/v2\/posts\/156880","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.everpuredata.com\/le\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.everpuredata.com\/le\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.everpuredata.com\/le\/wp-json\/wp\/v2\/users\/720"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.everpuredata.com\/le\/wp-json\/wp\/v2\/comments?post=156880"}],"version-history":[{"count":0,"href":"https:\/\/blog.everpuredata.com\/le\/wp-json\/wp\/v2\/posts\/156880\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.everpuredata.com\/le\/wp-json\/wp\/v2\/media\/154200"}],"wp:attachment":[{"href":"https:\/\/blog.everpuredata.com\/le\/wp-json\/wp\/v2\/media?parent=156880"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.everpuredata.com\/le\/wp-json\/wp\/v2\/categories?post=156880"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.everpuredata.com\/le\/wp-json\/wp\/v2\/tags?post=156880"},{"taxonomy":"content-position","embeddable":true,"href":"https:\/\/blog.everpuredata.com\/le\/wp-json\/wp\/v2\/content-position?post=156880"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.everpuredata.com\/le\/wp-json\/wp\/v2\/ppma_author?post=156880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}