La replicación de SQL Server es una de las características de sincronización de datos que se utiliza para copiar y distribuir los objetos y datos de la base de datos de SQL Server entre las bases de datos ubicadas en la misma instancia de SQL Server o en diferentes instancias y sincronizarlos entre estas bases de datos para mantenerlo en un estado coherente. estado.
Componentes de replicación de SQL Server
La replicación de SQL Server consta de los siguientes componentes principales:
- Artículos :La tabla de la base de datos, los procedimientos almacenados o las vistas que se consideran como la unidad básica de la replicación de SQL Server.
- Distribuidor :La instancia de SQL Server que contiene la Distribución base de datos, que almacena los metadatos y el historial de replicación. Tenga en cuenta que el publicador puede asignarse a un solo distribuidor, pero el distribuidor puede atender a varios publicadores.
- Editor :La instancia de SQL Server que contiene la base de datos de origen y hace que los datos estén disponibles para ser distribuidos a otras ubicaciones.
- Suscriptor :la instancia de SQL Server que recibe los datos de replicación de SQL de los editores y los aplica a la base de datos de destino, y pasa los cambios de datos al publicador en algunos tipos de replicación.
- Agente de instantáneas de replicación :este agente es responsable de la sincronización inicial en todos los tipos de replicación que proporciona una copia completa de los artículos de la base de datos del publicador al suscriptor.
- Agente de lectura de registros :este agente se utiliza para replicar las transacciones del publicador al suscriptor de forma continua en la replicación transaccional, leyendo el registro de transacciones de la base de datos de origen.
- Agente de distribución :este agente se utiliza para aplicar la instantánea inicial a la base de datos de destino y rastrear y aplicar los cambios de datos continuos a la base de datos de destino. Este agente se usa solo con las replicaciones transaccionales y de instantáneas.
- Agente de fusión :Este agente es responsable de copiar los cambios del Suscriptor al Publicador, luego copiar todos los cambios del Publicador al Suscriptor, en ambos sentidos. Este agente se usa solo con la replicación Merge.
Tipos de replicación de SQL Server
SQL Server nos proporciona diferentes tipos de replicación que se pueden utilizar para la distribución de datos, según los requisitos de sincronización de datos. Todos los tipos de replicación de SQL inician la sincronización inicial entre el publicador y el suscriptor copiando una instantánea de todos los datos del publicador al suscriptor. Estos tipos de replicación de SQL Server incluyen:
- Replicación transaccional :en este tipo de replicación, todos los cambios que se realizan en el lado del publicador se entregarán y aplicarán directamente en el lado del suscriptor. Un ejemplo de la replicación transaccional es el escenario de integración de datos entre diferentes sitios.
- Replicación de instantáneas :en este tipo de replicación, se toma una instantánea del publicador y se aplica al suscriptor una vez, sin distribuir los cambios continuos después de la instantánea, hasta que ocurra la siguiente sincronización, en la que se copiará una nueva instantánea y se aplicará nuevamente al suscriptor.
- Combinar replicación :en este tipo de replicación, los cambios se pueden realizar y sincronizar tanto en el lado del publicador como del suscriptor y sincronizarse cuando el suscriptor está conectado a la red. Un ejemplo del uso de Merge Replication es el intercambio de datos entre usuarios de aplicaciones de punto de venta.
- Replicación punto a punto :un tipo especial de replicación transaccional en el que el publicador distribuye los cambios de datos a varios suscriptores al mismo tiempo.
- Replicación bidireccional :Otro tipo especial de replicación transaccional en la que ambos servidores actúan como publicador y suscriptor e intercambian datos entre sí.
Requisitos de replicación de SQL Server
Antes de instalar y configurar el sitio de replicación de SQL, debemos asegurarnos de que se verifiquen los siguientes puntos:
- El componente de replicación de SQL Server se instala en todos los servidores participantes, el publicador, el suscriptor y el distribuidor. Esto debe instalarse durante la instalación de la instancia de SQL Server o agregarse a la instancia de SQL existente más adelante, utilizando el asistente de instalación de SQL Server, como se muestra a continuación:
- Hay suficiente espacio en los servidores para la creación de instantáneas, los datos de la base de datos publicada en el suscriptor y el crecimiento del registro de transacciones de la base de datos del publicador.
- El Agente SQL Server está en funcionamiento, para que los agentes de replicación del servidor SQL puedan crear los trabajos del Agente SQL relacionados y que los trabajos se ejecuten sin ningún problema.
- Hay suficiente ancho de banda de red entre las instancias de SQL Server participantes.
- Las instancias de publicador, distribuidor y suscriptor pueden conectarse entre sí, y los puertos TCP que estas instancias de SQL escuchan se abren en las reglas del firewall. En otras palabras, podemos conectarnos a cada instancia de SQL desde las otras instancias sin ningún problema de red o conectividad.
- Los artículos de la base de datos de editores que se replicarán deben tener una restricción de clave principal previamente definida, para mantener la unicidad de los datos.
- La cuenta que se usará para crear el sitio de replicación y ejecutar los agentes de replicación debe ser al menos un miembro de la función de base de datos fija db_owner en las bases de datos del publicador, el distribuidor y el suscriptor, además del permiso de lectura y escritura en la carpeta de instantáneas.
Cómo empezar
En este artículo, mostraremos cómo usar el tipo de replicación transaccional para replicar las tablas de la base de datos AdventureWorks2017 entre dos instancias de SQL Server;
La replicación transaccional de SQL Server se configurará en tres pasos:
- Configurar el distribuidor.
- Configurar el publicador.
- Configurar el Suscriptor
Discutamos estos pasos en detalle.
Configurar el Distribuidor
Para configurar el Distribuidor, conéctese al “SQL1 ” Instancia de SQL Server que actuará como distribuidor, que es la misma instancia de publicador en nuestro ejemplo aquí, busque el nodo de replicación en el Explorador de objetos de SSMS, haga clic con el botón derecho en Replicación nodo y elija Configurar distribución … opción, como se muestra a continuación:
La primera ventana que se mostrará en el asistente Configurar distribución es el asistente de inicio, que resumirá la lista de acciones que se realizarán dentro de ese asistente. Haga clic en Siguiente para proceder:
En la siguiente ventana, se le pedirá que seleccione qué instancia de SQL Server actuará como distribuidor. Le brinda la opción de seleccionar la instancia actual de SQL Server como distribuidor y crear la base de datos del sistema de distribución en esa instancia, o especificar otra instancia de SQL Server para usar como distribuidor. En este escenario, utilizaremos la instancia actual de SQL1 como distribuidor. Seleccione la opción que se ajuste a su plan de diseño y luego haga clic en Siguiente para continuar:
Dado que el servicio del Agente SQL Server juega un papel vital en el proceso de replicación de SQL Server, donde se creará un trabajo del agente SQL Server para cada agente de replicación, se recomienda cambiar el modo de inicio si el servicio del Agente SQL Server de Manual (de forma predeterminada ) para que sea Automático. Para que se ejecute automáticamente cuando se reinicie el SQL Server, sin correr el riesgo de olvidarse de iniciarlo manualmente. Este asistente le brinda la posibilidad de cambiar el modo de inicio del servicio del Agente SQL Server automáticamente, teniendo en cuenta que la cuenta del servicio SQL Server tiene privilegios de administrador en ese servidor para realizar esa acción. En nuestro caso, realizaremos ese cambio manualmente. Haga clic en Siguiente para proceder:
Después de eso, el asistente le pedirá que especifique la carpeta donde se creará la instantánea de sincronización inicial. Especifique una carpeta en la unidad de disco que tenga suficiente espacio y luego haga clic en Siguiente para continuar:
En la siguiente ventana, se le pedirá que especifique el nombre de la base de datos de distribución y la ubicación donde almacenar los datos y los archivos de registro de esa base de datos. Especifique su nombre y ubicación personalizados o mantenga la configuración predeterminada y luego haga clic en Siguiente para proceder:
Después de eso, debe seleccionar la lista de instancias de SQL Server que actuarán como publicadores y almacenarán sus metadatos en esa base de datos de distribución. Si tiene una topología predefinida, agregue todos los editores candidatos y haga clic en Siguiente. para continuar:
En la siguiente ventana, elija las acciones que realizará ese asistente, ya sea configurar la distribución directamente, generar un archivo de script para los pasos de configuración mencionados o ambos. En nuestro escenario, configuraremos la Distribución directamente. Haga clic en Siguiente para proceder:
En la ventana Completar el asistente, revise todas las selecciones que realizó anteriormente y asegúrese de que no se deba realizar ningún cambio en estas selecciones, luego haga clic en Finalizar para iniciar el proceso de configuración:
Cuando el proceso de configuración de Distribución se complete con éxito, el asistente le notificará con una marca verde al lado de cada acción. Si se enfrenta algún problema, se mostrará un mensaje de error significativo para solucionarlo y repetir la configuración nuevamente. Como tenemos todas las acciones completadas con éxito, Cerrar el asistente de configuración:
Si expande el nodo Bases de datos del sistema, en el Explorador de objetos de SSMS, verá que se crea una nueva base de datos del sistema de distribución que se usará para almacenar los metadatos de replicación de SQL Server, como se muestra a continuación:
Configurar el publicador
Después de configurar el Distribuidor, el siguiente paso es configurar el Publicador que actúa como fuente de datos para los otros sitios.
Para configurar el Publicador, conéctese a la instancia de SQL Server que contiene la base de datos que se publicará, explore el nodo de replicación de SQL Server en el Explorador de objetos, luego haga clic con el botón derecho en el nodo Publicaciones locales y seleccione Nueva publicación... opción, como se muestra a continuación:
La primera ventana del Asistente para nueva publicación es la página de inicio, que muestra la lista de acciones que se realizarán con ese asistente. Después de leer cómo este asistente lo ayudará a hacer clic en Siguiente para continuar:
En la página siguiente, se le pedirá que seleccione la base de datos que se publicará para los Suscriptores, que es la base de datos AdventureWorks2017 en nuestra demostración aquí. Haga clic en Siguiente para proceder:
Después de eso, se le pedirá que seleccione el tipo de publicación que logra usar. Discutimos anteriormente en este artículo la lista de tipos de replicación de SQL Server que se proporcionan en SQL Server. En esta demostración, utilizaremos la Publicación transaccional tipo. Haga clic en Siguiente para continuar:
En la página Artículos, puede seleccionar la lista de objetos de la base de datos que planea replicar a los Suscriptores. Tiene la opción de elegir todos los objetos disponibles en cada tipo o expandir el tipo de objeto y seleccionar la lista de objetos que se replicarán. En esta demostración, replicaremos todas las tablas de la base de datos para los suscriptores. Después de revisar la selección del objeto, haga clic en Siguiente para proceder:
SQL Server también le permite agregar filtros para los objetos de base de datos seleccionados y replicar solo los datos que cumplen con los criterios de filtros agregados. Si planea replicar todas las filas de la tabla, omita esta página haciendo clic en Siguiente botón:
En la página Agente de instantáneas, especifique si planea crear la instantánea de sincronización inicial inmediatamente, programarla para que se ejecute más tarde o ejecutarla manualmente cuando complete la configuración de la replicación. En esta demostración, crearé una instantánea después de completar la configuración de la replicación de SQL Server. Haga clic en Siguiente para continuar:
Después de eso, se le pedirá que configure la cuenta que se usará para ejecutar el Agente de instantáneas y los Agentes de lectura del registro. Este usuario debe tener al menos el permiso db_owner en la base de datos del publicador, el distribuidor y el suscriptor, además de los permisos de lectura y escritura en la carpeta de instantáneas. También puede usar la cuenta del Servicio del Agente SQL para ejecutar estos agentes de replicación de SQL Server, lo cual no se recomienda desde el punto de vista de la seguridad. Proporcione la cuenta autorizada y haga clic en Siguiente para continuar:
En la página Acciones del asistente, seleccione las acciones que se realizarán después de completar este asistente, que incluye la creación de la publicación y la generación de un archivo de secuencia de comandos para crear la publicación más tarde o utilizar esta secuencia de comandos como plantilla para otros servidores. En esta demostración, elegiremos Crear la publicación y luego haz clic en Siguiente para proceder:
La última página es Complete the Wizard, en la que debe proporcionar el nombre de la publicación y revisar sus opciones dentro de este asistente, luego haga clic en Finalizar para continuar con la creación de la Publicación:
Una vez que se complete el asistente de creación de publicaciones, mostrará el resultado del proceso de creación de publicaciones y si el proceso se completó correctamente con marcas verdes o falló en un paso específico con un mensaje de error significativo. En esta demostración, la publicación se crea correctamente sin problemas, como se muestra a continuación:
Para verificar si la publicación se creó correctamente, expanda el nodo Publicaciones locales en el nodo de replicación de SQL Server del Explorador de objetos de SSMS y verifique la publicación recién creada. También puede revisar y modificar la configuración de la publicación desde esa página de propiedades de la publicación. La publicación será como:
Configurar el Suscriptor
Por ahora, tenemos el Publicador y el Distribuidor configurados correctamente, es el momento de configurar el Suscriptor, que actúa como destino de datos y recibe los datos del Suscriptor.
Para configurar el suscriptor, desde la misma instancia del publicador, expanda el nodo de replicación de SQL Server en el Explorador de objetos de SSMS, haga clic con el botón derecho en el nodo Suscripciones locales y seleccione Nuevas suscripciones. … opción, como se muestra a continuación:
La primera ventana que se muestra en el Asistente para nueva suscripción es la página de inicio, que muestra cómo este asistente lo ayudará a configurar el Suscriptor. Haga clic en Siguiente para proceder:
El primer paso para configurar el suscriptor es seleccionar el publicador para el que se creará el suscriptor y la base de datos de publicación que actuará como fuente de datos para ese suscriptor. Seleccione la base de datos de publicaciones de las bases de datos enumeradas y luego haga clic en Siguiente para continuar:
Después de eso, se le pedirá que especifique si desea ejecutar todos los agentes en el lado del distribuidor y enviar los cambios al suscriptor, proporcionando una administración centralizada para el proceso de sincronización de replicación o ejecutar cada agente en su propio suscriptor que extraerá los cambios del publicador. , lo que reduce la sobrecarga de procesamiento en el lado del distribuidor y permite que la sincronización de cada suscriptor se administre por separado. En esta demostración, elegiremos la suscripción automática y haremos clic en Siguiente para continuar:
En la siguiente ventana, debe agregar la instancia del servidor SQL del suscriptor y la base de datos de destino de la suscripción, con la capacidad de crear esa base de datos si no existe, como se muestra a continuación:
En la página Seguridad del Agente de distribución, especifique la cuenta con la que se ejecutará el Agente de distribución para realizar el proceso de sincronización y la cuenta que se usará para conectarse a las instancias de SQL Server del distribuidor y del suscriptor. Se recomienda proporcionar una cuenta de dominio autorizada que tenga permiso tanto en el Distribuidor como en el Suscriptor, con la capacidad de usar la cuenta del Servicio del Agente SQL para conectarse al Distribuidor y al Suscriptor, lo cual no se recomienda desde el punto de vista de la seguridad. Después de proporcionar la cuenta de seguridad autorizada, haga clic en Siguiente para continuar:
En la siguiente página del asistente Nueva suscripción, especifique el cronograma de sincronización para cada agente. Mantenga la configuración predeterminada si desea que la sincronización se ejecute de forma continua y luego haga clic en Siguiente para continuar:
Después de eso, puede especificar si desea inicializar las suscripciones con una instantánea de la publicación y cuándo realizar ese proceso de inicialización. En esta demostración, elegimos inicializar la Suscripción en la primera sincronización, como se muestra a continuación:
En la ventana Acciones del asistente, puede elegir qué acciones se deben realizar al final de este asistente. Por ejemplo, este asistente le brinda la opción de crear las suscripciones configuradas y generar un archivo de script para crear las suscripciones más tarde o en otra instancia de SQL Server, de la siguiente manera:
Después de eso, el asistente le proporcionará un resumen de todas las configuraciones que haya seleccionado en ese asistente para verificarlo antes de iniciar la configuración de la suscripción. Si todas las selecciones están bien, haga clic en Finalizar para iniciar el proceso de configuración:
Si la operación de creación de la suscripción se completó con éxito, el asistente nos notificará con una marca verde por cada acción completada o nos proporcionará un mensaje de error significativo en caso de falla, como se muestra a continuación:
Para verificar que la suscripción se creó correctamente, en el nodo de replicación del Explorador de objetos de SSMS, expanda la publicación creada anteriormente y verá todas las suscripciones conectadas a ese publicador y recibirá datos de él, como se muestra a continuación:
Crear instantánea de sincronización inicial
Si no eligió crear una instantánea de sincronización inicial durante la creación del publicador, aún puede crear la instantánea después de configurar los componentes de replicación.
Para crear una instantánea de sincronización inicial, haga clic con el botón derecho en la publicación creada y elija Ver estado del agente de instantáneas. opción. Desde la ventana abierta, haga clic en el botón Inicio para ejecutar el agente de instantáneas y crear la instantánea de sincronización inicial. También puede monitorear el progreso del proceso de creación de instantáneas hasta que la instantánea de todos los artículos se cree correctamente, como se muestra a continuación:
Supervisar la sincronización
Una vez que se crea la instantánea de los artículos replicados, el proceso de sincronización con el Suscriptor comenzará automáticamente, al escribir todos los artículos de esa instantánea en el Suscriptor. Para monitorear el proceso de sincronización, haga clic con el botón derecho en la Suscripción en Replicación de SQL Server. del Explorador de objetos de SSMS y seleccione Ver estado de sincronización opción, donde le mostrará la cantidad de transacciones y comandos realizados en el Suscriptor, como se muestra a continuación:
Además, puede monitorear el estado de todos los agentes de replicación y la cantidad de comandos pendientes en el lado del distribuidor y no aplicados en el lado del suscriptor, haciendo clic con el botón derecho en el nombre de la publicación y seleccionando la ventana Iniciar el monitor de replicación, como se muestra a continuación:
Para verificar que el sitio de replicación funciona bien, agreguemos un nuevo registro a uno de los artículos replicados, la tabla "Empleado", en el lado del publicador, que no está disponible en el lado del suscriptor, luego verá desde el monitor de replicación ventana en la que se entrega un nuevo registro del publicador al distribuidor y luego al suscriptor. Después de eso, verá que el nuevo registro está disponible en la tabla Empleado en el lado del Suscriptor, como se muestra claramente a continuación:
Con pasos claros y sencillos, creamos un sitio completo de replicación transaccional que está sincronizado y funciona bien. En el próximo artículo, veremos cómo solucionar problemas de un sitio de replicación de SQL Server existente. Estén atentos.