Estrategias para hacer copias de seguridad y restaurar la réplica de instantáneas o transaccional
Hay tres áreas que hay que considerar al diseñar una estrategia de copia de seguridad y restauración para la réplica de instantáneas o transaccional:
- Qué bases de datos se incluirán en la copia de seguridad
- Configuración de la copia de seguridad para la réplica transaccional
- Pasos necesarios para restaurar una base de datos, que dependen del tipo de réplica y de las opciones elegidas
En este tema se tratan cada una de estas áreas en las tres secciones siguientes. Para obtener información acerca de la copia de seguridad y la restauración para la publicación de Oracle, vea Copia de seguridad y restauración de publicadores de Oracle.
Realizar copias de seguridad de bases de datos
Para la réplica de instantáneas y transaccional, debe crear regularmente una copia de seguridad de las siguientes bases de datos:
- La base de datos de publicaciones en el publicador.
- La base de datos de distribución en el distribuidor.
- La base de datos de suscripciones en el suscriptor.
- Las bases de datos del sistema master y msdb en el publicador, el distribuidor y todos los suscriptores. Debe realizarse la copia de seguridad de estas bases de datos al mismo tiempo, y junto con la de la base de datos de réplica relevante. Por ejemplo, cree la copia de seguridad de las bases de datos master y msdb en el publicador al mismo tiempo que crea la copia de seguridad de la base de datos de publicaciones. Al restaurar la base de datos de publicaciones, asegúrese de que las bases de datos master y msdb sean coherentes con la base de datos de publicaciones en términos de configuración general y configuración de la réplica.
Si realiza regularmente copias de seguridad de registros, éstas deben capturar todos los cambios relacionados con la réplica. Si no se realizan copias de seguridad de registros, debe realizarse una copia de seguridad siempre que se cambie un valor importante en la réplica. Para obtener más información, vea Acciones comunes que requieren una copia de seguridad actualizada.
Configuración de la copia de seguridad para la réplica transaccional
La réplica transaccional incluye la opción sync with backup, que se puede establecer en las bases de datos de distribución y de publicaciones:
Se recomienda establecer esta opción en la base de datos de distribución en todos los casos.
Establecer esta opción en la base de datos de distribución garantiza que las transacciones en el registro de la base de datos de publicaciones no se trunquen hasta que se hayan incluido en una copia de seguridad en la base de datos de distribución. La base de datos de distribución se puede restaurar hasta la última copia de seguridad y todas las transacciones faltantes se entregan de la base de datos de publicaciones a la base de datos de distribución; la réplica continúa sin ninguna variación.
Establecer esta opción en la base de datos de distribución no afecta a la latencia de réplica. Sin embargo, sí retrasa el truncamiento del registro en la base de datos de publicaciones hasta que se haya realizado la copia de seguridad de las transacciones correspondientes en la base de datos de distribución (lo que puede ocasionar que el registro de transacciones en la base de datos de publicaciones sea más grande).Se recomienda establecer esta opción en la base de datos de publicaciones si su aplicación tolera la latencia adicional.
Establecer esta opción en la base de datos de publicaciones garantiza que las transacciones no se enviarán a la base de datos de distribución hasta que se hayan incluido en la copia de seguridad en la base de datos de publicaciones. Después, se puede restaurar la última copia de seguridad de la base de datos de publicaciones en el publicador, sin que exista ninguna posibilidad de que la base de datos de distribución contenga transacciones que la base de datos de publicaciones restaurada no tenga.
La latencia y el rendimiento se ven afectados, ya que las transacciones no se pueden enviar a la base de datos de publicaciones hasta que no se hayan incluido en la copia de seguridad del publicador. Por ejemplo, si se crea una copia de seguridad del registro de transacciones cada cinco minutos, habrá cinco minutos más de latencia entre una transacción confirmada en el publicador y la transacción enviada a la base de datos de distribución y posteriormente al suscriptor.[!NOTA] La opción sync with backup garantiza la coherencia entre la base de datos de publicaciones y la base de datos de distribución, pero no garantiza que no se pierdan datos. Por ejemplo, si se pierde el registro de transacciones, las transacciones confirmadas desde la última copia de seguridad del registro de transacciones no estarán disponibles en la base de datos de publicaciones ni en la base de datos de distribución. Éste es el mismo comportamiento que tiene una base de datos no replicada.
Para establecer la opción sync with backup
- Programación de la réplica con Transact-SQL: How to: Enable Coordinated Backups for Transactional Replication (Replication Transact-SQL Programming)
Restaurar bases de datos que participan en la réplica
Es posible restaurar todas las bases de datos de una topología de réplica si hay copias de seguridad recientes disponibles y se siguen los pasos correctos. Los pasos de restauración para la base de datos de publicaciones dependen del tipo de réplica y de las opciones utilizadas, pero los pasos de restauración para todas las demás bases de datos son independientes del tipo y de las opciones.
La réplica permite restaurar las bases de datos replicadas en el mismo servidor y base de datos de los que se creó la copia de seguridad. Si restaura una copia de seguridad de una base de datos replicada en otro servidor o base de datos, no se conservará la configuración de la réplica. En este caso, deberá volver a crear todas las publicaciones y suscripciones después de restaurar las copias de seguridad.
Publicador
Se proporcionan los pasos de restauración para los siguientes tipos de réplica:
- Réplica de instantáneas
- Réplica transaccional de sólo lectura
- Réplica transaccional con suscripciones de actualización
- Réplica transaccional de punto a punto
La restauración de las bases de datos msdb y master, que también se tratan en esta sección, es igual para los cuatro tipos.
Base de datos de publicaciones: réplica de instantáneas
- Restaure la última copia de seguridad de la base de datos de publicaciones. Continúe en el paso 2.
- ¿La base de datos de publicaciones contiene la configuración más reciente de todas las publicaciones y suscripciones? En caso afirmativo, la restauración ha finalizado. En caso contrario, continúe en el paso 3.
- Quite la configuración de réplica del publicador, el distribuidor y los suscriptores, y vuelva a crear la configuración. La restauración ha finalizado.
Para obtener más información acerca de cómo quitar la réplica, vea Quitar la réplica y sp_removedbreplication (Transact-SQL).
Base de datos de publicaciones: réplica transaccional de sólo lectura
- Restaure la última copia de seguridad de la base de datos de publicaciones. Continúe en el paso 2.
- ¿Estaba activada la opción sync with backup en la base de datos de publicaciones antes del error? En caso afirmativo, vaya al paso 3; de lo contrario, continúe en el paso 5.
Si la opción está activada, la consultaSELECT DATABASEPROPERTYEX('<PublicationDatabaseName>', 'IsSyncWithBackup');
devuelve '1'. - ¿Está completa y actualizada la copia de seguridad? ¿Contiene la configuración más reciente para todas las publicaciones y suscripciones? En caso afirmativo, la restauración ha finalizado. En caso contrario, continúe en el paso 4.
- La información de configuración en la base de datos restaurada no está actualizada, así que debe asegurarse de que los suscriptores tengan todos los comandos pendientes en la base de datos de distribución y, después, debe quitar y volver a crear la configuración de réplica:
- Ejecute el Agente de distribución hasta que todos los suscriptores estén sincronizados con los comandos pendientes de la base de datos de distribución. Asegúrese de que todos los comandos se envíen a los suscriptores, utilizando la ficha Comandos sin distribuir del Monitor de réplica o ejecutando una consulta en la vista MSdistribution_status de la base de datos de distribución. Continúe en el paso b.
Para obtener más información acerca de cómo ejecutar el Agente de distribución, vea Cómo iniciar y detener un agente de réplica (SQL Server Management Studio) y Programming Replication Agent Executables.
Para obtener más información acerca de cómo comprobar comandos, vea How to: View Replicated Commands and Other Information in the Distribution Database (Replication Transact-SQL Programming) y Cómo ver información y realizar tareas para los agentes asociados con una suscripción (Monitor de réplica). - Quite la configuración de réplica del publicador, el distribuidor y los suscriptores, y vuelva a crear la configuración. Al volver a crear las suscripciones, especifique que el suscriptor ya tiene los datos. La restauración ha finalizado.
Para obtener más información acerca de cómo quitar la réplica, vea Quitar la réplica y sp_removedbreplication (Transact-SQL).
Para obtener más información acerca de cómo especificar que el suscriptor ya tiene los datos, vea Cómo inicializar una suscripción manualmente (SQL Server Management Studio) y How to: Initialize a Subscription Manually (Replication Transact-SQL Programming).
- Ejecute el Agente de distribución hasta que todos los suscriptores estén sincronizados con los comandos pendientes de la base de datos de distribución. Asegúrese de que todos los comandos se envíen a los suscriptores, utilizando la ficha Comandos sin distribuir del Monitor de réplica o ejecutando una consulta en la vista MSdistribution_status de la base de datos de distribución. Continúe en el paso b.
- La opción sync with backup no estaba establecida en la base de datos de publicaciones; por lo tanto, podrían haberse enviado al distribuidor y a los suscriptores transacciones que no estaban incluidas en la copia de seguridad restaurada. Ahora, debe asegurarse de que los suscriptores tengan todos los comandos pendientes de la base de datos de distribución y, después, debe aplicar manualmente a la base de datos de publicaciones todas las transacciones no incluidas en la copia de seguridad restaurada:
Importante:
Este proceso puede dar como resultado la restauración de las tablas publicadas hasta un momento más reciente que el de otras tablas no publicadas restauradas de la copia de seguridad.
Base de datos de publicaciones: réplica transaccional con suscripciones de actualización
Restaure la última copia de seguridad de la base de datos de publicaciones. Continúe en el paso 2.
Ejecute el Agente de distribución hasta que todos los suscriptores estén sincronizados con los comandos pendientes de la base de datos de distribución. Asegúrese de que todos los comandos se envíen a los suscriptores, utilizando la ficha Comandos sin distribuir del Monitor de réplica o ejecutando una consulta en la vista MSdistribution_status de la base de datos de distribución. Continúe en el paso 3.
Para obtener más información acerca de cómo ejecutar el Agente de distribución, vea Cómo iniciar y detener un agente de réplica (SQL Server Management Studio) y Programming Replication Agent Executables.
Para obtener más información acerca de cómo comprobar comandos, vea How to: View Replicated Commands and Other Information in the Distribution Database (Replication Transact-SQL Programming) y Cómo ver información y realizar tareas para los agentes asociados con una suscripción (Monitor de réplica).Si está utilizando suscripciones de actualización en cola, conéctese a cada suscriptor y elimine todas las filas de la tabla MSreplication_queue en la base de datos de suscripciones. Continúe en el paso 4.
[!NOTA] Si está utilizando suscripciones de actualización en cola y hay tablas que contienen columnas de identidad, debe asegurarse de que se asignen los intervalos de identidad correctos después de la restauración. Para obtener más información, vea Replicar columnas de identidad.
Ahora, debe asegurarse de que los suscriptores tengan todos los comandos pendientes de la base de datos de distribución y, después, debe aplicar manualmente a la base de datos de publicaciones todas las transacciones no incluidas en la copia de seguridad restaurada:
Importante:
Este proceso puede dar como resultado la restauración de las tablas publicadas hasta un momento más reciente que el de otras tablas no publicadas restauradas de la copia de seguridad.
Base de datos de publicaciones: réplica transaccional punto a punto
En los pasos siguientes, las bases de datos de publicaciones A, B y C están en una topología de réplica transaccional de punto a punto. Las bases de datos A y C están conectadas y funcionan correctamente; la base de datos B es la que se desea restaurar.
- Ejecute los agentes de distribución para sincronizar las suscripciones de las bases de datos A y C. Continúe en el paso 2.
Para obtener más información acerca de cómo ejecutar el Agente de distribución, vea Cómo iniciar y detener un agente de réplica (SQL Server Management Studio) y Programming Replication Agent Executables. - Si la base de datos de distribución que utiliza B aún está disponible, ejecute los agentes de distribución para sincronizar las suscripciones entre las bases de datos B y A, y B y C. Continúe en el paso 3.
- Quite los metadatos de la base de datos de distribución que utiliza B, ejecutando sp_removedistpublisherdbreplication (Transact-SQL) en la base de datos de distribución para B. Continúe en el paso 4.
- En las bases de datos A y C, quite las suscripciones a la publicación de la base de datos B. Continúe en el paso 5.
Para obtener más información acerca de cómo quitar suscripciones, vea Suscribirse a publicaciones. - Realice una copia de seguridad de registros o una copia de seguridad completa de la base de datos A. Continúe en el paso 6.
- Restaure la copia de seguridad de la base de datos A en la base de datos B. Ahora, la base de datos B tiene los datos de la base de datos A, pero no tiene la configuración de réplica. Al restaurar una copia de seguridad en otro servidor, se quita la réplica; esto significa que se ha quitado la réplica de la base de datos B. Continúe en el paso 7.
- Vuelva a crear la publicación en la base de datos B y a continuación, vuelva a crear las suscripciones entre las bases de datos A y B (las suscripciones relacionadas con la base de datos C se administran en una etapa posterior):
- Vuelva a crear la publicación en la base de datos B. Continúe en el paso b.
- Vuelva a crear la suscripción de la base de datos B a la publicación de la base de datos A, especificando que la suscripción debe inicializarse con una copia de seguridad (el valor initialize with backup para el parámetro @sync_type de sp_addsubscription (Transact-SQL)). Continúe en el paso c.
- Vuelva a crear la suscripción de la base de datos A a la publicación de la base de datos B, especificando que el suscriptor ya tiene los datos (el valor replication support only para el parámetro @sync_type de sp_addsubscription (Transact-SQL)). Continúe en el paso 8.
La forma más directa de llevar a cabo los pasos a-c es utilizando el Asistente de configuración de la topología punto a punto. Para obtener más información, vea Cómo configurar la réplica transaccional de punto a punto (SQL Server Management Studio). También puede utilizar procedimientos almacenados; para obtener más información, vea How to: Configure Peer-to-Peer Transactional Replication (Replication Transact-SQL Programming).
- Ejecute los agentes de distribución para sincronizar las suscripciones de las bases de datos A y B. Si hay columnas de identidad en las tablas publicadas, vaya al paso 9. En caso contrario, continúe en el paso 10.
- Después de la restauración, el intervalo de identidad asignado a cada tabla en la base de datos A también se utilizará en la base de datos B. Asegúrese de que la base de datos B restaurada haya recibido todos los cambios de la base de datos B con errores que se propagaron a las bases de datos A y C y, a continuación, reinicialice el intervalo de identidad para cada tabla.
- Ejecute sp_requestpeerresponse (Transact-SQL) en la base de datos B y recupere el parámetro de salida @request_id. Continúe en el paso b.
- De forma predeterminada, el Agente de distribución está configurado para ejecutarse de forma continua, por lo que los testigos deben enviarse automáticamente a todos los nodos. Si el Agente de distribución no se está ejecutando de forma continua, ejecútelo. Para obtener más información, vea Programming Replication Agent Executables o Cómo iniciar y detener un agente de réplica (SQL Server Management Studio). Continúe en el paso c.
- Ejecute sp_helppeerresponses (Transact-SQL), proporcionando el valor @request_id recuperado en el paso b. Espere a que todos los nodos indiquen que han recibido la solicitud de los pares. Continúe en el paso d.
- Use DBCC CHECKIDENT para reinicializar cada tabla de la base de datos B con el fin de asegurarse de que se utiliza un intervalo apropiado. Continúe en el paso 10.
Para obtener más información acerca de la administración de los intervalos de identidad, vea la sección sobre asignación de intervalos para la administración manual de intervalos de identidad en el tema Replicar columnas de identidad.
- En este punto, las bases de datos B y C no están conectadas directamente, pero reciben los cambios a través de la base de datos A. Para conectar las bases de datos B y C, siga los pasos del 11 al 13.
- Detenga el sistema. Para detener el sistema, hay que detener la actividad de las tablas publicadas en todos los nodos y asegurarse de que cada nodo haya recibido todos los cambios de los demás nodos:
- Detenga toda la actividad en las tablas publicadas de la topología punto a punto. Continúe en el paso b.
- Ejecute sp_requestpeerresponse (Transact-SQL) en la base de datos B y recupere el parámetro de salida @request_id. Continúe en el paso c.
- De forma predeterminada, el Agente de distribución está configurado para ejecutarse de forma continua, por lo que los testigos deben enviarse automáticamente a todos los nodos. Si el Agente de distribución no se está ejecutando de forma continua, ejecútelo. Continúe en el paso d.
- Ejecute sp_helppeerresponses (Transact-SQL), proporcionando el valor @request_id recuperado en el paso b. Espere a que todos los nodos indiquen que han recibido la solicitud de los pares. Continúe en el paso 12.
- Vuelva a crear la suscripción entre las bases de datos B y C:
- Vuelva a crear la suscripción de la base de datos B a la publicación de la base de datos C, especificando que la suscripción debe inicializarse desde una copia de seguridad. Continúe en el paso b.
- Vuelva a crear la suscripción de la base de datos C a la publicación de la base de datos B, especificando que el suscriptor ya tiene los datos. Continúe en el paso 13.
- Ejecute los agentes de distribución para sincronizar las suscripciones de las bases de datos B y C. La restauración ha finalizado.
Base de datos msdb (publicador)
- Restaure la última copia de seguridad de la base de datos msdb.
- ¿Está completa y actualizada la copia de seguridad? ¿Contiene la configuración más reciente para todas las publicaciones y suscripciones? En caso afirmativo, la recuperación ha finalizado. En caso contrario, continúe en el paso 3.
- Vuelva a crear el trabajo de limpieza de la suscripción a partir de las secuencias de comandos de réplica. La recuperación ha finalizado.
Base de datos master (publicador)
- Restaure la última copia de seguridad de la base de datos master.
- Asegúrese de que la base de datos sea coherente con la base de datos de publicaciones en términos de configuración general y configuración de la réplica.
Bases de datos del distribuidor
Base de datos de distribución
- Restaure la última copia de seguridad de la base de datos de distribución.
- ¿Estaba activada la opción sync with backup en la base de datos de distribución antes del error? En caso afirmativo, vaya al paso 3; de lo contrario, continúe en el paso 4.
Si la opción está activada, la consultaSELECT DATABASEPROPERTYEX('<DistributionDatabaseName>', 'IsSyncWithBackup');
devuelve '1'. - ¿Está completa y actualizada la copia de seguridad? ¿Contiene la configuración más reciente para todas las publicaciones y suscripciones? En caso afirmativo, la recuperación ha finalizado. En caso contrario, continúe en el paso 4.
- La información de configuración en la base de datos de distribución restaurada no está actualizada, o bien no se estableció la opción sync with backup en la base de datos de distribución (después de la restauración, es posible que en la base de datos de distribución falten transacciones confirmadas en el publicador que aún no se habían enviado a los suscriptores). Quite y vuelva a crear la réplica; después, ejecute la validación:
- Quite la configuración de réplica del publicador, el distribuidor y los suscriptores, y vuelva a crear la configuración. Al volver a crear las suscripciones, especifique que el suscriptor ya tiene los datos. Continúe en el paso b.
Para obtener más información acerca de cómo quitar la réplica, vea Quitar la réplica y sp_removedbreplication (Transact-SQL).
Para obtener más información acerca de cómo especificar que el suscriptor ya tiene los datos, vea Cómo inicializar una suscripción manualmente (SQL Server Management Studio) y How to: Initialize a Subscription Manually (Replication Transact-SQL Programming). - Marque todas las publicaciones para validación. Reinicialice todas las suscripciones que no superen la validación. La recuperación ha finalizado.
Para obtener más información acerca de la validación, vea Validar los datos replicados.
Para obtener más información acerca de la reinicialización, vea Reinicializar una suscripción.
- Quite la configuración de réplica del publicador, el distribuidor y los suscriptores, y vuelva a crear la configuración. Al volver a crear las suscripciones, especifique que el suscriptor ya tiene los datos. Continúe en el paso b.
Base de datos msdb (distribuidor)
- Restaure la última copia de seguridad de la base de datos msdb.
- ¿Está completa y actualizada la copia de seguridad? ¿Contiene la configuración más reciente para todas las publicaciones y suscripciones? En caso afirmativo, la recuperación ha finalizado. En caso contrario, continúe en el paso 3.
- Quite la configuración de réplica del publicador, el distribuidor y los suscriptores, y vuelva a crear la configuración. Al volver a crear las suscripciones, especifique que el suscriptor ya tiene los datos. Continúe en el paso 4.
Para obtener más información acerca de cómo quitar la réplica, vea Quitar la réplica y sp_removedbreplication (Transact-SQL).
Para obtener más información acerca de cómo especificar que el suscriptor ya tiene los datos, vea Cómo inicializar una suscripción manualmente (SQL Server Management Studio) y How to: Initialize a Subscription Manually (Replication Transact-SQL Programming). - Marque todas las publicaciones para validación. Reinicialice todas las suscripciones que no superen la validación. La recuperación ha finalizado.
Para obtener más información acerca de la validación, vea Validar los datos replicados.
Para obtener más información acerca de la reinicialización, vea Reinicializar una suscripción.
Base de datos master (distribuidor)
- Restaure la última copia de seguridad de la base de datos master.
- Asegúrese de que la base de datos sea coherente con la base de datos de publicaciones en términos de configuración general y configuración de la réplica.
Bases de datos del suscriptor
Base de datos de suscripciones
- ¿La última copia de seguridad de la base de datos de suscripciones es más reciente que el período máximo de retención de la distribución en la base de datos de distribución? (Esto determina si el distribuidor tiene aún todos los comandos necesarios para actualizar el suscriptor). En caso afirmativo, vaya al paso 2. En caso contrario, reinicialice la suscripción; la recuperación ha finalizado.
Para determinar el período máximo de retención de la distribución, ejecute sp_helpdistributiondb (Transact-SQL) y recupere el valor de la columna max_distretention (este valor está en horas).
Para obtener más información acerca de cómo reinicializar una suscripción, vea Cómo reinicializar una suscripción (SQL Server Management Studio) y How to: Reinitialize a Subscription (Replication Transact-SQL Programming). - Restaure la última copia de seguridad de la base de datos de suscripciones. Continúe en el paso 3.
- Si la base de datos de suscripciones sólo contiene suscripciones de inserción, vaya al paso 4. Si contiene suscripciones de extracción, responda: ¿está actualizada la información de suscripciones? ¿incluye todas las tablas y opciones que estaban establecidas en el momento del error? En caso afirmativo, vaya al paso 4. En caso contrario, reinicialice la suscripción; la recuperación ha finalizado.
- Ejecute el Agente de distribución para sincronizar el suscriptor. La recuperación ha finalizado.
Para obtener más información acerca de cómo ejecutar el Agente de distribución, vea Cómo iniciar y detener un agente de réplica (SQL Server Management Studio) y Programming Replication Agent Executables.
Base de datos msdb (suscriptor)
- Restaure la última copia de seguridad de la base de datos msdb. ¿Se utilizan suscripciones de extracción en este suscriptor? Si no es así, la restauración ha finalizado. En caso afirmativo, continúe en el paso 2.
- ¿Está completa y actualizada la copia de seguridad? ¿Contiene la configuración más reciente para todas las suscripciones de extracción? En caso afirmativo, la recuperación ha finalizado. En caso contrario, continúe en el paso 3.
- Quite y vuelva a crear todas las suscripciones de extracción. Al volver a crear las suscripciones, especifique que el suscriptor ya tiene los datos. La restauración ha finalizado.
Para obtener más información acerca de cómo quitar suscripciones, vea Suscribirse a publicaciones.
Para obtener más información acerca de cómo especificar que el suscriptor ya tiene los datos, vea Cómo inicializar una suscripción manualmente (SQL Server Management Studio) y How to: Initialize a Subscription Manually (Replication Transact-SQL Programming).
Base de datos master (suscriptor)
- Restaure la última copia de seguridad de la base de datos master.
- Asegúrese de que la base de datos sea coherente con la base de datos de publicaciones en términos de configuración general y configuración de la réplica.
Vea también
Conceptos
Realizar copias de seguridad de bases de datos de réplica y restaurarlas
Configurar la distribución
Publicar datos y objetos de base de datos
Suscribirse a publicaciones
Inicializar una suscripción
Sincronizar datos
Otros recursos
Realizar copias de seguridad y restaurar bases de datos en SQL Server