使用T-SQL配置日志传送

日志传送(log shipping)主要基于SQL Server代理,使用定时作业来完成,另外在配置日志传送之前必须要创建共享文件夹,用于辅助服务器访问。这里我们假设有数据库logTrans1需要进行日志传送,共享文件夹为“C:\data”,在T-SQL中配置日志传送主要有以下几步操作:

(1)备份主数据库并在辅助服务器上还原主数据库的完整备份,初始化辅助数据库。具体操作如代码:

使用T-SQL配置日志传送
使用T-SQL配置日志传送backup database logTrans1 --在主数据库上备份 
使用T-SQL配置日志传送
to disk='c:\logt.bak' 
使用T-SQL配置日志传送
--以下是将数据库还原到辅助数据库上 
使用T-SQL配置日志传送
restore database logTrans2 
使用T-SQL配置日志传送
from disk='c:\logt.bak' 
使用T-SQL配置日志传送
with NORECOVERY, 
使用T-SQL配置日志传送move 
'logTrans' to 'c:\logTrans2.mdf'
使用T-SQL配置日志传送move 
'logTrans_log' to 'c:\logTrans2.ldf' 
使用T-SQL配置日志传送

(2)在主服务器上,执行sp_add_log_shipping_primary_database以添加主数据库。存储过程将返回备份作业ID和主ID,具体SQL脚本如代码:

使用T-SQL配置日志传送
DECLARE @LS_BackupJobId AS uniqueidentifier 
DECLARE @LS_PrimaryId AS uniqueidentifier 
EXEC master.dbo.sp_add_log_shipping_primary_database 
@database = N'logTrans1' 
,
@backup_directory = N'D:\data' 
,
@backup_share = N'\\10.101.10.66\data' 
,
@backup_job_name = N'LSBackup_logTrans1' 
,
@backup_retention_period = 1440 
,
@monitor_server = N'localhost' 
,
@monitor_server_security_mode = 1 
,
@backup_threshold = 60 
,
@threshold_alert_enabled = 0 
,
@history_retention_period = 1440 
,
@backup_job_id = @LS_BackupJobId OUTPUT 
,
@primary_id = @LS_PrimaryId OUTPUT 
,
@overwrite = 1 

使用T-SQL配置日志传送

(3)在主服务器上,执行sp_add_jobschedule以添加使用备份作业的计划。为了能够尽快看到日志传送的效果,这里将日志备份的频率设置为2分钟一次。但是在实际生产环境中,一般是用不到这么高的执行频率的。添加计划的脚本如代码:

使用T-SQL配置日志传送
使用T-SQL配置日志传送DECLARE @schedule_id int 
使用T-SQL配置日志传送
EXEC msdb.dbo.sp_add_jobschedule @job_name =N'LSBackup_logTrans1'
使用T-SQL配置日志传送
@name=N'BackupDBEvery2Min'
使用T-SQL配置日志传送
@enabled=1
使用T-SQL配置日志传送
@freq_type=4
使用T-SQL配置日志传送
@freq_interval=1
使用T-SQL配置日志传送
@freq_subday_type=4
使用T-SQL配置日志传送
@freq_subday_interval=2
使用T-SQL配置日志传送
@freq_relative_interval=0
使用T-SQL配置日志传送
@freq_recurrence_factor=1
使用T-SQL配置日志传送
@active_start_date=20080622
使用T-SQL配置日志传送
@active_end_date=99991231
使用T-SQL配置日志传送
@active_start_time=0
使用T-SQL配置日志传送
@active_end_time=235959
使用T-SQL配置日志传送
@schedule_id = @schedule_id OUTPUT 
使用T-SQL配置日志传送
select @schedule_id 
使用T-SQL配置日志传送
使用T-SQL配置日志传送

【注意:sp_add_jobschedule存储过程是在msdb数据库中,在其他数据库中是没有该存储过程的。】

(4)在监视服务器上,执行sp_add_log_shipping_alert_job以添加警报作业。此存储过程用于检查是否已在此服务器上创建了警报作业。如果警报作业不存在,此存储过程将创建警报作业并将其作业ID添加到log_shipping_monitor_alert表中。默认情况下,将启用警报作业并按计划每两分钟运行一次。添加警报作业如代码:

使用T-SQL配置日志传送USE master 
使用T-SQL配置日志传送
GO 
使用T-SQL配置日志传送
EXEC sp_add_log_shipping_alert_job; 

(5)在主服务器上,启用备份作业。启用作业使用sp_update_job存储过程,只需要输入作业名并设置状态为1即可。具体SQL脚本如代码:

使用T-SQL配置日志传送EXEC msdb.dbo.sp_update_job 
使用T-SQL配置日志传送
@job_name='LSBackup_logTrans1'
使用T-SQL配置日志传送
@enabled=1 

(6)在辅助服务器上,执行sp_add_log_shipping_secondary_primary,提供主服务器和数据库的详细信息。此存储过程返回辅助ID以及复制和还原作业ID,具体SQL脚本如代码:

使用T-SQL配置日志传送
使用T-SQL配置日志传送DECLARE @LS_Secondary__CopyJobId uniqueidentifier 
使用T-SQL配置日志传送
DECLARE @LS_Secondary__RestoreJobId uniqueidentifier 
使用T-SQL配置日志传送
DECLARE @LS_Secondary__SecondaryId uniqueidentifier 
使用T-SQL配置日志传送
EXEC master.dbo.sp_add_log_shipping_secondary_primary 
使用T-SQL配置日志传送
@primary_server = N'10.101.10.66' 
使用T-SQL配置日志传送,
@primary_database = N'logTrans1' 
使用T-SQL配置日志传送,
@backup_source_directory = N'\\10.101.10.66\data' 
使用T-SQL配置日志传送,
@backup_destination_directory = N'D:\log' 
使用T-SQL配置日志传送,
@copy_job_name = N'LSCopy_logTrans1' 
使用T-SQL配置日志传送,
@restore_job_name = N'LSRestore_logTrans2' 
使用T-SQL配置日志传送,
@file_retention_period = 1440 
使用T-SQL配置日志传送,
@copy_job_id = @LS_Secondary__CopyJobId OUTPUT 
使用T-SQL配置日志传送,
@restore_job_id = @LS_Secondary__RestoreJobId OUTPUT 
使用T-SQL配置日志传送,
@secondary_id = @LS_Secondary__SecondaryId OUTPUT 
使用T-SQL配置日志传送

(7)在辅助服务器上,执行sp_add_jobschedule以设置复制和还原作业的计划。这里一般将复制和还原作业计划的频率设置来和日志备份的作业频率相同,所以此处将这两个作业的频率设置为每2分钟执行一次,具体SQL脚本如代码:

使用T-SQL配置日志传送
使用T-SQL配置日志传送DECLARE @schedule_id int 
使用T-SQL配置日志传送
--设置复制作业计划 
使用T-SQL配置日志传送
EXEC msdb.dbo.sp_add_jobschedule 
使用T-SQL配置日志传送
@job_name=N'LSCopy_logTrans1'
使用T-SQL配置日志传送
@name=N'CopyEvery2Min'
使用T-SQL配置日志传送
@enabled=1
使用T-SQL配置日志传送
@freq_type=4
使用T-SQL配置日志传送
@freq_interval=1
使用T-SQL配置日志传送
@freq_subday_type=4
使用T-SQL配置日志传送
@freq_subday_interval=2
使用T-SQL配置日志传送
@freq_relative_interval=0
使用T-SQL配置日志传送
@freq_recurrence_factor=1
使用T-SQL配置日志传送
@active_start_date=20080622
使用T-SQL配置日志传送
@active_end_date=99991231
使用T-SQL配置日志传送
@active_start_time=0
使用T-SQL配置日志传送
@active_end_time=235959
使用T-SQL配置日志传送
@schedule_id = @schedule_id OUTPUT 
使用T-SQL配置日志传送
select @schedule_id 
使用T-SQL配置日志传送
--设置还原作业的计划 
使用T-SQL配置日志传送
EXEC msdb.dbo.sp_add_jobschedule 
使用T-SQL配置日志传送
@job_name=N'LSCopy_logTrans1'
使用T-SQL配置日志传送
@name=N'RestoreEvery2Min'
使用T-SQL配置日志传送
@enabled=1
使用T-SQL配置日志传送
@freq_type=4
使用T-SQL配置日志传送
@freq_interval=1
使用T-SQL配置日志传送
@freq_subday_type=4
使用T-SQL配置日志传送
@freq_subday_interval=2
使用T-SQL配置日志传送
@freq_relative_interval=0
使用T-SQL配置日志传送
@freq_recurrence_factor=1
使用T-SQL配置日志传送
@active_start_date=20080622
使用T-SQL配置日志传送
@active_end_date=99991231
使用T-SQL配置日志传送
@active_start_time=0
使用T-SQL配置日志传送
@active_end_time=235959
使用T-SQL配置日志传送
@schedule_id = @schedule_id OUTPUT 
使用T-SQL配置日志传送
select @schedule_id 
使用T-SQL配置日志传送

(8)在辅助服务器上,执行sp_add_log_shipping_secondary_database以添加辅助数据库,具体操作脚本如代码:

 

使用T-SQL配置日志传送
使用T-SQL配置日志传送EXEC master.dbo.sp_add_log_shipping_secondary_database 
使用T-SQL配置日志传送
@secondary_database = N'logTrans2' 
使用T-SQL配置日志传送,
@primary_server = N'10.101.10.66' 
使用T-SQL配置日志传送,
@primary_database = N'logTrans1' 
使用T-SQL配置日志传送,
@restore_delay = 0 
使用T-SQL配置日志传送,
@restore_mode = 1 
使用T-SQL配置日志传送,
@disconnect_users = 0 
使用T-SQL配置日志传送,
@restore_threshold = 45 
使用T-SQL配置日志传送,
@threshold_alert_enabled = 0 
使用T-SQL配置日志传送,
@history_retention_period = 1440 
使用T-SQL配置日志传送

(9)在主服务器上,执行sp_add_log_shipping_primary_secondary向主服务器添加有关新辅助数据库的必需信息,具体SQL脚本如代码:

使用T-SQL配置日志传送EXEC master.dbo.sp_add_log_shipping_primary_secondary 
使用T-SQL配置日志传送
@primary_database = N'logTrans1' 
使用T-SQL配置日志传送
@secondary_server = N'10.101.10.67' --辅助数据库的IP 
使用T-SQL配置日志传送
@secondary_database = N'logTrans2' 
使用T-SQL配置日志传送

(10)在辅助服务器上,启用复制和还原作业。启用作业仍然使用sp_update_job存储过程,具体操作如代码:

使用T-SQL配置日志传送
使用T-SQL配置日志传送EXEC msdb.dbo.sp_update_job 
使用T-SQL配置日志传送
@job_name='LSCopy_logTrans1'
使用T-SQL配置日志传送
@enabled=1 
使用T-SQL配置日志传送
使用T-SQL配置日志传送
EXEC msdb.dbo.sp_update_job 
使用T-SQL配置日志传送
@job_name='LSRestore_logTrans2'
使用T-SQL配置日志传送
@enabled=1 
使用T-SQL配置日志传送

通过以上10部操作就完成了对日志传送的配置。现在每隔2分钟,系统将会把主服务器中的日志备份到共享文件夹中,辅助服务器访问共享文件夹将日志备份复制到本地硬盘上,然后由还原作业将复制到本地的日志还原到数据库,从而完成了日志的传送。用户可以在共享文件夹和辅助服务器的本地复制文件夹中看到备份的日志文件。

【说明:在SSMS中可以通过右击对应的作业,在弹出的右键菜单中选择“查看历史记录”选项来查看该作业是否正常运行。如果所有日志传送正常运行,则说明日志传送正常。】

本文转自深蓝居博客园博客,原文链接:http://www.cnblogs.com/studyzy/archive/2008/06/23/1227855.html,如需转载请自行联系原作者

上一篇:Java BigDecimal


下一篇:nginx访问日志 logstash 配置文件实例2