SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
REL-413
AVANZADOS: Replicación

RUBÉN GARRIGÓS
Mentor –Área Motor Relacional
MCP – MCAD – MCSD – MCTS – MCT - MCITP
rgarrigos@solidq.com
Objetivos de la sesión
α Rápido vistazo a la replicación en SQL Server
α Razones para ir más allá: La milla extra
α Replicación transaccional
 β   Agente lector del log de transacciones
 β   Agente de distribución
α Replicación de mezcla
 β   Agente de mezcla
Replicación en SQL Server
Replicación en SQL Server
Definición
α Es un conjunto de tecnologías que nos permiten
    distribuir y sincronizar información entre bases de datos
α   Modelo de publicaciones
Replicación en SQL Server
Conceptos clave
α Artículo: Un artículo es un conjunto de datos, estructuras u
  operaciones que van a ser replicados
α Publicación: Es un contenedor de un conjunto de artículos
  a replicar que están lógicamente relacionados entre sí
α Suscripción: Entidad que indica que un suscriptor desea
  recibir los datos de una publicación, de que forma y con
  que frecuencia
Replicación en SQL Server
Tipologías
α Transaccional
 β   Unidireccional «no modificable»
 β   Actualizable inmediata
 β   Actualizable con cola
 β   Doble transaccional
 β   Peer to peer (SQL 2005+)
α Mezcla
α Instantánea

α Basándonos en nuestra experiencia:
 β   ~60% Transaccional unidireccional
 β   ~30% Mezcla
 β   ~5% P2P
 β   ~5% Instantánea, transaccionales actualizables, etc.
Escala de réplicas
                                                                    Mayor autonomía
                                                                    Mayor latencia

                                                               Mezcla
                                                      Instantánea



                       Transaccional unidireccional
               Transaccional bidireccional - P2P
               Transaccional actualizable


Transacciones distribuidas
Menor autonomía
Menor latencia
La milla extra
La milla extra
Razones para recorrerla
α Un mayor conocimiento nos llevará a tomar decisiones
  más acertadas.
α Una mala decisión en una fase inicial de un proyecto tiene
  un alto coste a posteriori
α Evitar utilizar un martillo cuando lo que tenemos es un
  tornillo (o viceversa)  Ojo con los “vendemotos”
α No debemos analizar la viabilidad tecnológica de nuestra
  elección sin tener en cuenta múltiples factores
 β   Políticas internas
 β   Mantenibilidad a largo plazo
 β   Fiabilidad
 β   Extensibilidad y flexibilidad ante cambios
 β   Escalabilidad considerando las previsiones a X años vista
 β   Seguridad
La milla extra
Aplicada a la replicación
α Conocer a bajo nivel el funcionamiento de los distintos
        tipos de replicación (o al menos el que implementemos)
    β    Lógica de funcionamiento de los agentes
    β    Procedimientos almacenados utilizados
    β    Permisos necesarios
    β    Flujo de datos y almacenes de metadatos
α SQL Profiler es nuestro amigo cuando la documentación
        se queda corta
    β    La implementación interna de los agentes  Debugger
α Cuando tenemos algún error, este conocimiento de bajo
        nivel es IRREMPLAZABLE para volver a levantar la réplica
        minimizando el impacto en el negocio.
α       La replicación debe considerarse como un factor
        transversal a nuestra base de datos
    β    Mantenimiento de base de datos
Replicación Transaccional
Replicación transaccional
Agentes
α   Agente de instantáneas (opcional)
α   Agente lector del log de transacciones
α   Agente de distribución
α   Agente de lectura de cola de replicación (obsoleto)
Replicación transaccional
Agente de instantánea
α Se utiliza para inicializar los subscriptores habitualmente
 β    Inicializaciones manuales
 β    Inicializaciones con backup
 β    Parámetro @sync_type del procedimiento sp_Addsubscription
α Genera un conjunto de ficheros que contendrán los
     artículos de la publicación
 β    Copiamos metadatos + datos (BCP)
α Se ejecuta normalmente en el distribuidor
 β    Puede ser invocado como un job, desde línea de comandos,
      mediante RMO, etc.
α Soporta Database Mirroring en el publicador
α Seguridad
 β    Db_owner de la base de datos publicada y de la de distribución
 β    Escritura en la carpeta de instantáneas
Replicación transaccional
Agente de instantánea
α Perfiles de agente
 β   Compartir parametrización entre instancias de un mismo tipo
 β   No todos los parámetros son configurables desde el perfil
α Parámetros interesantes
 β   BcpBatchSize
 β   MaxBcpThreads (1)
 β   DynamicFilterHostName
 β   DynamicFilterLogin
 β   OutputVerboseLevel
 β   HistoryVerboseLevel
 β   EncryptionLevel
Replicación transaccional
Agente de instantánea
α Una instantánea está
  compuesta de varios
  tipos de ficheros
α .BCP  Datos
α .SCH  Esquema
 β   Detecta dependencias
α .IDX  Índices
α .PRE  Scripts limpieza

α Destino:
 β   PATH
 β   UNC
 β   FTP
Replicación transaccional
Agente de instantánea
α Los ficheros BCP de la instantánea son ficheros BCP
     estándar por lo que podemos utilizarlos con otros fines
 β    Restaurar parte de los datos manualmente con BCP IN:
α > bcp tabla in fichero.bcp -dbasededatos -Sinstancia -T
Replicación transaccional
Agente lector del log de transacciones
α Se utiliza para extraer del log de transacciones los cambios
  marcados como pendientes de replicar
α Se ejecuta en el distribuidor
 β   Puede ser invocado como un job o desde línea de comandos
 β   Una única instancia por base de datos: 1 log  1 agente
 β   Soporta Database Mirroring en el publicador
α Seguridad
 β   Db_owner de la base de datos publicada y de la de distribución
Replicación transaccional
Agente lector del log de transacciones
α El flujo de trabajo de los agentes se obtiene con la ayuda
     de SQL Server Profiler:

1. Llama a sp_MSadd_LogReader_History para indicar que
     arrancamos el agente
2.   Obtiene datos para arrancar correctamente el agente para
     esta publicación específica (sp_MShelp_logreader_agentid )
3.   Obtiene los parámetros del perfil asociado
     (sp_MShelp_profile)
4.   Llama a sp_MSadd_logreader_history para indicar que
     estamos inicializados
5.   Obtenemos la última transacción donde nos quedamos
     leyendo del log (sp_MSget_last_transaction)
Replicación transaccional
Agente lector del log de transacciones
6. Leemos del log de transacciones (sp_replcmds)
7. Procesamos los registros insertándolos en la base de
    datos de distribución (sp_MSadd_repl_commands )
8. Marcamos la transacción como confirmada (sp_repldone)
9. Registramos los comandos entregados
    (sp_MSAdd_logreader_history): “N transactions with M
    commands were delivered”
10. Esperamos x segundos según la frecuencia configurada
11. GOTO 5 (sp_MSget_last_transaction)

Si ocurre algún error recuperable (timeout de conexión,
reinicio del publicador, etc.) la política de reintentos por
defecto del job del agente la resolverá  Monitorización
Replicación transaccional
Agente lector del log de transacciones
α Parámetros interesantes
 β   OutputVerboseLevel
 β   HistoryVerboseLevel
 β   PollingInterval (5)
 β   ReadBatchSize (500 transacciones)
 β   ReadBatchThreshold (0 comandos)
 β   Buffers (2)
 β   MaxCmdsInTran (0 o romper atomicidad)
Replicación transaccional
Agente de distribución
α Se utiliza para entregar las instantáneas iniciales y para
  aplicar los cambios pendientes de la base de datos de
  distribución al subscriptor
α Se ejecuta en el distribuidor/subscriptor (PUSH vs PULL)
 β   Puede ser invocado como un job o desde línea de comandos
 β   Una instancia por subscripción o compartido entre varias
α Seguridad
 β   Db_owner de la base de datos subscrita y de la de distribución
 β   Mienbro de la PAL (Publication Access List) correspondiente
 β   Permisos de lectura sobre la carpeta de instantáneas
Replicación transaccional
Agente de distribución

1. Indicamos que arrancamos el agente
     (sp_Msadd_distribution_history)
2.   Comprobamos el estado de la suscripción
     (sp_MSSubscription_Status). Si está expirada, no podremos
     continuar.
3.   Obtenemos la información del suscriptor
     (sp_mshelp_subscriber_info)
4.   Obtenemos los datos del agente específico de este
     suscriptor (sp_mshelp_subscription_agentid)
5.   Indicamos que estamos listos para comenzar y conectamos
     al suscriptor (sp_Msadd_distribution_history)
6.   Comprobamos los permisos necesarios en el suscriptor
     (sp_MScheck_subscribe)
Replicación transaccional
Agente de distribución

7. Actualizamos el estado de la suscripción
   (Sp_MSinit_Subscription_agent)
8. Obtenemos la última transaccion replicada de
   MSreplication_subscriptions (xact_seqno) Todos los valores
   por encima de dicho valor, están pendientes de replicar.
9. Obtenemos las transacciones y comandos pendientes de
   MSReplication_transactions y MSreplication_commands y
   los aplicamos utilizando sp_MS_get_repl_commands.
10. Actualizamos MSreplication_subscriptions con la última
   transacción entregada
11. Registramos en el log dicha entrega con
   sp_MSDistribution_history y el mensaje “n transaction(S)
   with m command(s) were delivered”
12. GOTO 8
Replicación transaccional
Agente de distribución
α Parámetros interesantes
 β   BcpBatchSize
 β   MaxBcpThreads (2xCPU, 8 MAX)
 β   CommitBatchSize (100 transacciones)
 β   CommitBatchThreshold (1000 comandos)
 β   QueryTimeOut (1800)
 β   MaxDeliveredTransactions (0)
 β   TransactionPerHistory (100)
 β   Buffers (2)
 β   PollingInterval (5)
 β   SubscriptionStreams (1)
 β   SkipErrors
Un largo viaje transaccional
Replicación de Mezcla
Replicación de mezcla
Agente de mezcla
α Se utiliza para todo el proceso de mezcla
 β   Gestión de rangos, cambios de esquema, creación de generaciones…
 β   Proceso de mezclado con resolución de conflictos (fila, columna,…)
α Se ejecuta en el distribuidor o en el subscriptor
 β   Puede ser invocado como un job, desde línea de comandos, RMO,…
 β   1 instancia por subscripción
α Seguridad
 β   Db_owner de la base de datos subscrita y de la de distribución
 β   Tener un login asociado en la base de datos publicada
 β   Mienbro de la PAL (Publication Access List) correspondiente
 β   Permisos de lectura sobre la carpeta de instantáneas
α No se respeta el orden original de los cambios
 β   Puede ser necesario NFR en triggers, constraints, etc.
α Se pueden omitir cambios intermedios
Replicación de mezcla
Detección de cambios
α Añade un ROWGUID  Lineage
α Triggers
 β   MSmerge_ins_<GUID>
 β   MSmerge_upd_<GUID>
 β   MSmerge_del_<GUID
α Algunas tablas importantes
 β   MSmerge_contents  1 fila por inserción o modificación
 β   MSmerge_tombstone  1 fila por borrado
 β   MSmerge_genhistory  1 fila por generación de cambios
 β   Msmerge_conflict_table  tabla de conflictos del artículo
α Mantenimiento
 β   Fragmentación
 β   Tamaño  periodo de retención (14 días)
Replicación de mezcla
Agente de mezcla

El flujo completo es complejo y depende de muchos factores: el
filtrado de artículos, la política de resolución de conflictos, el
particionado  la réplica de mezcla tiene un consumo de CPU
apreciable  sincronizaciones puntuales con autonomía

1. Indicamos que arrancamos el agente
     (sp_MSadd_merge_history)
2.   Comprobamos que no está el mismo agente ya ejecutando
     (sp_MSensure_single_instance)
3.   Obtenemos información de la publicación
     (sp_Msgetreplicainfo)
4.   Obtenemos cambios de esquema pendientes
     (sp_Msenumschemachange)
Replicación de mezcla
Agente de mezcla

5. Cerramos la generación (sp_Msmakegeneration)
6. Obtenemos la enumeración de cambios
   (sp_Msenumchanges)
7. Aplicamos los cambios generando el comando DML tras
   aplicar la resolución de conflictos (sp_Msgetmetadata)
8. Marcamos las últimas generaciones enviadas y recibidas
   (sp_Mssetlastsentgen, sp_Mssetlastrecgen)
9. Indicamos por donde nos quedamos sincronizando
   (sp_Msmergeupdatelastsyncinfo)
10.Indicamos que hemos acabado de sincronizar: «Merge
   completed after processing N data change(s) (N insert(s), N
   update(s), N delete(s), N conflict(s)).»
   (sp_MSadd_merge_history)
Replicación de mezcla
Agente de mezcla
α Parámetros interesantes
 β   DestThreads (4)
 β   SrcThreads (3)
 β   ParallelUploadDownload
 β   (Download/Upload)GenerationsPerBatch
 β   (Download/Upload)ReadChangesPerBatch
 β   (Download/Upload)WriteChangesPerBatch
 β   MaxDownloadChanges
 β   MaxUploadChanges
 β   MakeGenerationInterval
 β   PollingInterval (60)
 β   StartQueueTimeout
Mezclando datos
Si quieres disfrutar de las mejores sesiones de
nuestros mentores de España y Latino América,
             ésta es tu oportunidad.

      http://summit.solidq.com/madrid/

Más contenido relacionado

Similar a SQL11: Replicación

Orquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace NetflixOrquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace NetflixParadigma Digital
 
Docker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidadDocker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidadÓscar De Arriba González
 
Traducción bc360
Traducción bc360Traducción bc360
Traducción bc360yanirapm
 
02 troubleshooting essentials sql server profiler - sql pass peru
02 troubleshooting essentials   sql server profiler - sql pass peru02 troubleshooting essentials   sql server profiler - sql pass peru
02 troubleshooting essentials sql server profiler - sql pass peruGuillermo Taylor
 
Alta Disponibilidad con SQL Server 2012
Alta Disponibilidad con SQL Server 2012Alta Disponibilidad con SQL Server 2012
Alta Disponibilidad con SQL Server 2012dbLearner
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slonyJohanna Mendez
 
Personalización Data Collectors
Personalización Data CollectorsPersonalización Data Collectors
Personalización Data CollectorsSolidQ
 
37 supervisión del sistema
37  supervisión del sistema37  supervisión del sistema
37 supervisión del sistemaAprende Viendo
 
Pandora FMS: Plugin Enterprise de Exchange
Pandora FMS: Plugin Enterprise de ExchangePandora FMS: Plugin Enterprise de Exchange
Pandora FMS: Plugin Enterprise de ExchangePandora FMS
 
Optimización de motores sql server 24 horas SQL Pass
Optimización de motores sql server 24 horas SQL PassOptimización de motores sql server 24 horas SQL Pass
Optimización de motores sql server 24 horas SQL PassJulián Castiblanco
 

Similar a SQL11: Replicación (20)

Orquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace NetflixOrquestando microservicios como lo hace Netflix
Orquestando microservicios como lo hace Netflix
 
Docker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidadDocker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidad
 
Traducción bc360
Traducción bc360Traducción bc360
Traducción bc360
 
Traducción bc360
Traducción bc360Traducción bc360
Traducción bc360
 
Traducción bc360
Traducción bc360Traducción bc360
Traducción bc360
 
Overview atlas (1)
Overview atlas (1)Overview atlas (1)
Overview atlas (1)
 
Overview atlas (1)
Overview atlas (1)Overview atlas (1)
Overview atlas (1)
 
Replicación con sql server
Replicación con sql serverReplicación con sql server
Replicación con sql server
 
Replicacion sql server
Replicacion sql serverReplicacion sql server
Replicacion sql server
 
02 troubleshooting essentials sql server profiler - sql pass peru
02 troubleshooting essentials   sql server profiler - sql pass peru02 troubleshooting essentials   sql server profiler - sql pass peru
02 troubleshooting essentials sql server profiler - sql pass peru
 
Alta Disponibilidad con SQL Server 2012
Alta Disponibilidad con SQL Server 2012Alta Disponibilidad con SQL Server 2012
Alta Disponibilidad con SQL Server 2012
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
Personalización Data Collectors
Personalización Data CollectorsPersonalización Data Collectors
Personalización Data Collectors
 
37 supervisión del sistema
37  supervisión del sistema37  supervisión del sistema
37 supervisión del sistema
 
Base De Datos
Base De DatosBase De Datos
Base De Datos
 
Replicación de Bases de Datos con SQL Server 2008
Replicación de Bases de Datos con SQL Server 2008Replicación de Bases de Datos con SQL Server 2008
Replicación de Bases de Datos con SQL Server 2008
 
De Mensajería hacia Logs con Apache Kafka
De Mensajería hacia Logs con Apache KafkaDe Mensajería hacia Logs con Apache Kafka
De Mensajería hacia Logs con Apache Kafka
 
Capa de Sesion Presentacion y Aplicacion..
Capa de Sesion Presentacion y Aplicacion..Capa de Sesion Presentacion y Aplicacion..
Capa de Sesion Presentacion y Aplicacion..
 
Pandora FMS: Plugin Enterprise de Exchange
Pandora FMS: Plugin Enterprise de ExchangePandora FMS: Plugin Enterprise de Exchange
Pandora FMS: Plugin Enterprise de Exchange
 
Optimización de motores sql server 24 horas SQL Pass
Optimización de motores sql server 24 horas SQL PassOptimización de motores sql server 24 horas SQL Pass
Optimización de motores sql server 24 horas SQL Pass
 

Más de SolidQ

SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration ServicesSolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration ServicesSolidQ
 
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLSSolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLSSolidQ
 
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ
 
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...SolidQ
 
SolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantesSolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantesSolidQ
 
Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?SolidQ
 
SQL Server 2017 en Linux
SQL Server 2017 en LinuxSQL Server 2017 en Linux
SQL Server 2017 en LinuxSolidQ
 
Columnstore en la vida real
Columnstore en la vida realColumnstore en la vida real
Columnstore en la vida realSolidQ
 
PowerApprízate
PowerApprízatePowerApprízate
PowerApprízateSolidQ
 
Jugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocksJugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocksSolidQ
 
Analizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BIAnalizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BISolidQ
 
Mantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para DummiesMantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para DummiesSolidQ
 
R en relacional
R en relacionalR en relacional
R en relacionalSolidQ
 
Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!SolidQ
 
Arquitecturas lambda en Azure
Arquitecturas lambda en AzureArquitecturas lambda en Azure
Arquitecturas lambda en AzureSolidQ
 
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018SolidQ
 
BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018SolidQ
 
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018SolidQ
 
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018SolidQ
 
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...SolidQ
 

Más de SolidQ (20)

SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration ServicesSolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
SolidQ Summit 2018 - Qué necesita saber un DBA de Integration Services
 
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLSSolidQ Summit 2018 - Seguridad a nivel datos. RLS
SolidQ Summit 2018 - Seguridad a nivel datos. RLS
 
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
SolidQ Summit 2018 - Todo lo que un integrador de datos debería tener... y pa...
 
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
SolidQ Summit 2018 - ¿Dificultades gestionando relaciones muchos a muchos? De...
 
SolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantesSolidQ Summit 2018 - Report Server: Nuevos mutantes
SolidQ Summit 2018 - Report Server: Nuevos mutantes
 
Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?Cuando QueryStore no sirve, ¿qué opciones tenemos?
Cuando QueryStore no sirve, ¿qué opciones tenemos?
 
SQL Server 2017 en Linux
SQL Server 2017 en LinuxSQL Server 2017 en Linux
SQL Server 2017 en Linux
 
Columnstore en la vida real
Columnstore en la vida realColumnstore en la vida real
Columnstore en la vida real
 
PowerApprízate
PowerApprízatePowerApprízate
PowerApprízate
 
Jugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocksJugando a ser rico: Machine Learning para predicción de stocks
Jugando a ser rico: Machine Learning para predicción de stocks
 
Analizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BIAnalizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BI
 
Mantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para DummiesMantenimiento de SQL Server para Dummies
Mantenimiento de SQL Server para Dummies
 
R en relacional
R en relacionalR en relacional
R en relacional
 
Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!Cuando haces bot ya no hay stop!!
Cuando haces bot ya no hay stop!!
 
Arquitecturas lambda en Azure
Arquitecturas lambda en AzureArquitecturas lambda en Azure
Arquitecturas lambda en Azure
 
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
Bot Framework: otra manera de acceder a tus datos - SolidQ Summit 2018
 
BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018BIE2E en Azure - SolidQ Summit 2018
BIE2E en Azure - SolidQ Summit 2018
 
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
¿Qué viene GDPR? Mi SQL está preparado- SolidQ Summit 2018
 
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018Hilando fino en SSAS multidimensional - SolidQ Summit 2018
Hilando fino en SSAS multidimensional - SolidQ Summit 2018
 
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
Adaptive Query Processing: Mejoras en el motor de consulta de SQL Server 2017...
 

Último

RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscaeliseo91
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 

Último (20)

RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fisca
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 

SQL11: Replicación

  • 1. REL-413 AVANZADOS: Replicación RUBÉN GARRIGÓS Mentor –Área Motor Relacional MCP – MCAD – MCSD – MCTS – MCT - MCITP rgarrigos@solidq.com
  • 2. Objetivos de la sesión α Rápido vistazo a la replicación en SQL Server α Razones para ir más allá: La milla extra α Replicación transaccional β Agente lector del log de transacciones β Agente de distribución α Replicación de mezcla β Agente de mezcla
  • 4. Replicación en SQL Server Definición α Es un conjunto de tecnologías que nos permiten distribuir y sincronizar información entre bases de datos α Modelo de publicaciones
  • 5. Replicación en SQL Server Conceptos clave α Artículo: Un artículo es un conjunto de datos, estructuras u operaciones que van a ser replicados α Publicación: Es un contenedor de un conjunto de artículos a replicar que están lógicamente relacionados entre sí α Suscripción: Entidad que indica que un suscriptor desea recibir los datos de una publicación, de que forma y con que frecuencia
  • 6. Replicación en SQL Server Tipologías α Transaccional β Unidireccional «no modificable» β Actualizable inmediata β Actualizable con cola β Doble transaccional β Peer to peer (SQL 2005+) α Mezcla α Instantánea α Basándonos en nuestra experiencia: β ~60% Transaccional unidireccional β ~30% Mezcla β ~5% P2P β ~5% Instantánea, transaccionales actualizables, etc.
  • 7. Escala de réplicas Mayor autonomía Mayor latencia Mezcla Instantánea Transaccional unidireccional Transaccional bidireccional - P2P Transaccional actualizable Transacciones distribuidas Menor autonomía Menor latencia
  • 9. La milla extra Razones para recorrerla α Un mayor conocimiento nos llevará a tomar decisiones más acertadas. α Una mala decisión en una fase inicial de un proyecto tiene un alto coste a posteriori α Evitar utilizar un martillo cuando lo que tenemos es un tornillo (o viceversa)  Ojo con los “vendemotos” α No debemos analizar la viabilidad tecnológica de nuestra elección sin tener en cuenta múltiples factores β Políticas internas β Mantenibilidad a largo plazo β Fiabilidad β Extensibilidad y flexibilidad ante cambios β Escalabilidad considerando las previsiones a X años vista β Seguridad
  • 10. La milla extra Aplicada a la replicación α Conocer a bajo nivel el funcionamiento de los distintos tipos de replicación (o al menos el que implementemos) β Lógica de funcionamiento de los agentes β Procedimientos almacenados utilizados β Permisos necesarios β Flujo de datos y almacenes de metadatos α SQL Profiler es nuestro amigo cuando la documentación se queda corta β La implementación interna de los agentes  Debugger α Cuando tenemos algún error, este conocimiento de bajo nivel es IRREMPLAZABLE para volver a levantar la réplica minimizando el impacto en el negocio. α La replicación debe considerarse como un factor transversal a nuestra base de datos β Mantenimiento de base de datos
  • 12. Replicación transaccional Agentes α Agente de instantáneas (opcional) α Agente lector del log de transacciones α Agente de distribución α Agente de lectura de cola de replicación (obsoleto)
  • 13. Replicación transaccional Agente de instantánea α Se utiliza para inicializar los subscriptores habitualmente β Inicializaciones manuales β Inicializaciones con backup β Parámetro @sync_type del procedimiento sp_Addsubscription α Genera un conjunto de ficheros que contendrán los artículos de la publicación β Copiamos metadatos + datos (BCP) α Se ejecuta normalmente en el distribuidor β Puede ser invocado como un job, desde línea de comandos, mediante RMO, etc. α Soporta Database Mirroring en el publicador α Seguridad β Db_owner de la base de datos publicada y de la de distribución β Escritura en la carpeta de instantáneas
  • 14. Replicación transaccional Agente de instantánea α Perfiles de agente β Compartir parametrización entre instancias de un mismo tipo β No todos los parámetros son configurables desde el perfil α Parámetros interesantes β BcpBatchSize β MaxBcpThreads (1) β DynamicFilterHostName β DynamicFilterLogin β OutputVerboseLevel β HistoryVerboseLevel β EncryptionLevel
  • 15. Replicación transaccional Agente de instantánea α Una instantánea está compuesta de varios tipos de ficheros α .BCP  Datos α .SCH  Esquema β Detecta dependencias α .IDX  Índices α .PRE  Scripts limpieza α Destino: β PATH β UNC β FTP
  • 16. Replicación transaccional Agente de instantánea α Los ficheros BCP de la instantánea son ficheros BCP estándar por lo que podemos utilizarlos con otros fines β Restaurar parte de los datos manualmente con BCP IN: α > bcp tabla in fichero.bcp -dbasededatos -Sinstancia -T
  • 17. Replicación transaccional Agente lector del log de transacciones α Se utiliza para extraer del log de transacciones los cambios marcados como pendientes de replicar α Se ejecuta en el distribuidor β Puede ser invocado como un job o desde línea de comandos β Una única instancia por base de datos: 1 log  1 agente β Soporta Database Mirroring en el publicador α Seguridad β Db_owner de la base de datos publicada y de la de distribución
  • 18. Replicación transaccional Agente lector del log de transacciones α El flujo de trabajo de los agentes se obtiene con la ayuda de SQL Server Profiler: 1. Llama a sp_MSadd_LogReader_History para indicar que arrancamos el agente 2. Obtiene datos para arrancar correctamente el agente para esta publicación específica (sp_MShelp_logreader_agentid ) 3. Obtiene los parámetros del perfil asociado (sp_MShelp_profile) 4. Llama a sp_MSadd_logreader_history para indicar que estamos inicializados 5. Obtenemos la última transacción donde nos quedamos leyendo del log (sp_MSget_last_transaction)
  • 19. Replicación transaccional Agente lector del log de transacciones 6. Leemos del log de transacciones (sp_replcmds) 7. Procesamos los registros insertándolos en la base de datos de distribución (sp_MSadd_repl_commands ) 8. Marcamos la transacción como confirmada (sp_repldone) 9. Registramos los comandos entregados (sp_MSAdd_logreader_history): “N transactions with M commands were delivered” 10. Esperamos x segundos según la frecuencia configurada 11. GOTO 5 (sp_MSget_last_transaction) Si ocurre algún error recuperable (timeout de conexión, reinicio del publicador, etc.) la política de reintentos por defecto del job del agente la resolverá  Monitorización
  • 20. Replicación transaccional Agente lector del log de transacciones α Parámetros interesantes β OutputVerboseLevel β HistoryVerboseLevel β PollingInterval (5) β ReadBatchSize (500 transacciones) β ReadBatchThreshold (0 comandos) β Buffers (2) β MaxCmdsInTran (0 o romper atomicidad)
  • 21. Replicación transaccional Agente de distribución α Se utiliza para entregar las instantáneas iniciales y para aplicar los cambios pendientes de la base de datos de distribución al subscriptor α Se ejecuta en el distribuidor/subscriptor (PUSH vs PULL) β Puede ser invocado como un job o desde línea de comandos β Una instancia por subscripción o compartido entre varias α Seguridad β Db_owner de la base de datos subscrita y de la de distribución β Mienbro de la PAL (Publication Access List) correspondiente β Permisos de lectura sobre la carpeta de instantáneas
  • 22. Replicación transaccional Agente de distribución 1. Indicamos que arrancamos el agente (sp_Msadd_distribution_history) 2. Comprobamos el estado de la suscripción (sp_MSSubscription_Status). Si está expirada, no podremos continuar. 3. Obtenemos la información del suscriptor (sp_mshelp_subscriber_info) 4. Obtenemos los datos del agente específico de este suscriptor (sp_mshelp_subscription_agentid) 5. Indicamos que estamos listos para comenzar y conectamos al suscriptor (sp_Msadd_distribution_history) 6. Comprobamos los permisos necesarios en el suscriptor (sp_MScheck_subscribe)
  • 23. Replicación transaccional Agente de distribución 7. Actualizamos el estado de la suscripción (Sp_MSinit_Subscription_agent) 8. Obtenemos la última transaccion replicada de MSreplication_subscriptions (xact_seqno) Todos los valores por encima de dicho valor, están pendientes de replicar. 9. Obtenemos las transacciones y comandos pendientes de MSReplication_transactions y MSreplication_commands y los aplicamos utilizando sp_MS_get_repl_commands. 10. Actualizamos MSreplication_subscriptions con la última transacción entregada 11. Registramos en el log dicha entrega con sp_MSDistribution_history y el mensaje “n transaction(S) with m command(s) were delivered” 12. GOTO 8
  • 24. Replicación transaccional Agente de distribución α Parámetros interesantes β BcpBatchSize β MaxBcpThreads (2xCPU, 8 MAX) β CommitBatchSize (100 transacciones) β CommitBatchThreshold (1000 comandos) β QueryTimeOut (1800) β MaxDeliveredTransactions (0) β TransactionPerHistory (100) β Buffers (2) β PollingInterval (5) β SubscriptionStreams (1) β SkipErrors
  • 25. Un largo viaje transaccional
  • 27. Replicación de mezcla Agente de mezcla α Se utiliza para todo el proceso de mezcla β Gestión de rangos, cambios de esquema, creación de generaciones… β Proceso de mezclado con resolución de conflictos (fila, columna,…) α Se ejecuta en el distribuidor o en el subscriptor β Puede ser invocado como un job, desde línea de comandos, RMO,… β 1 instancia por subscripción α Seguridad β Db_owner de la base de datos subscrita y de la de distribución β Tener un login asociado en la base de datos publicada β Mienbro de la PAL (Publication Access List) correspondiente β Permisos de lectura sobre la carpeta de instantáneas α No se respeta el orden original de los cambios β Puede ser necesario NFR en triggers, constraints, etc. α Se pueden omitir cambios intermedios
  • 28. Replicación de mezcla Detección de cambios α Añade un ROWGUID  Lineage α Triggers β MSmerge_ins_<GUID> β MSmerge_upd_<GUID> β MSmerge_del_<GUID α Algunas tablas importantes β MSmerge_contents  1 fila por inserción o modificación β MSmerge_tombstone  1 fila por borrado β MSmerge_genhistory  1 fila por generación de cambios β Msmerge_conflict_table  tabla de conflictos del artículo α Mantenimiento β Fragmentación β Tamaño  periodo de retención (14 días)
  • 29. Replicación de mezcla Agente de mezcla El flujo completo es complejo y depende de muchos factores: el filtrado de artículos, la política de resolución de conflictos, el particionado  la réplica de mezcla tiene un consumo de CPU apreciable  sincronizaciones puntuales con autonomía 1. Indicamos que arrancamos el agente (sp_MSadd_merge_history) 2. Comprobamos que no está el mismo agente ya ejecutando (sp_MSensure_single_instance) 3. Obtenemos información de la publicación (sp_Msgetreplicainfo) 4. Obtenemos cambios de esquema pendientes (sp_Msenumschemachange)
  • 30. Replicación de mezcla Agente de mezcla 5. Cerramos la generación (sp_Msmakegeneration) 6. Obtenemos la enumeración de cambios (sp_Msenumchanges) 7. Aplicamos los cambios generando el comando DML tras aplicar la resolución de conflictos (sp_Msgetmetadata) 8. Marcamos las últimas generaciones enviadas y recibidas (sp_Mssetlastsentgen, sp_Mssetlastrecgen) 9. Indicamos por donde nos quedamos sincronizando (sp_Msmergeupdatelastsyncinfo) 10.Indicamos que hemos acabado de sincronizar: «Merge completed after processing N data change(s) (N insert(s), N update(s), N delete(s), N conflict(s)).» (sp_MSadd_merge_history)
  • 31. Replicación de mezcla Agente de mezcla α Parámetros interesantes β DestThreads (4) β SrcThreads (3) β ParallelUploadDownload β (Download/Upload)GenerationsPerBatch β (Download/Upload)ReadChangesPerBatch β (Download/Upload)WriteChangesPerBatch β MaxDownloadChanges β MaxUploadChanges β MakeGenerationInterval β PollingInterval (60) β StartQueueTimeout
  • 33. Si quieres disfrutar de las mejores sesiones de nuestros mentores de España y Latino América, ésta es tu oportunidad. http://summit.solidq.com/madrid/