使用T-SQL配置日志传送

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

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

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

复制代码
backup   database  logTrans1  -- 在主数据库上备份 
to   disk = ' c:\logt.bak '  
-- 以下是将数据库还原到辅助数据库上 
restore   database  logTrans2 
from   disk = ' c:\logt.bak '  
with  NORECOVERY, 
move 
' logTrans '   to   ' c:\logTrans2.mdf '
move 
' logTrans_log '   to   ' c:\logTrans2.ldf '  
复制代码

(2)在主服务器上,执行sp_add_log_shipping_primary_database以添加主数据库。存储过程将返回备份作业ID和主ID,具体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  

复制代码

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

复制代码
DECLARE   @schedule_id   int  
EXEC  msdb.dbo.sp_add_jobschedule  @job_name   = N ' LSBackup_logTrans1 '
@name = N ' BackupDBEvery2Min '
@enabled = 1
@freq_type = 4
@freq_interval = 1
@freq_subday_type = 4
@freq_subday_interval = 2
@freq_relative_interval = 0
@freq_recurrence_factor = 1
@active_start_date = 20080622
@active_end_date = 99991231
@active_start_time = 0
@active_end_time = 235959
@schedule_id   =   @schedule_id  OUTPUT 
select   @schedule_id  
复制代码

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

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

USE  master 
GO  
EXEC  sp_add_log_shipping_alert_job; 

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

EXEC  msdb.dbo.sp_update_job 
@job_name = ' LSBackup_logTrans1 '
@enabled = 1  

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

复制代码
DECLARE   @LS_Secondary__CopyJobId   uniqueidentifier  
DECLARE   @LS_Secondary__RestoreJobId   uniqueidentifier  
DECLARE   @LS_Secondary__SecondaryId   uniqueidentifier  
EXEC  master.dbo.sp_add_log_shipping_secondary_primary 
@primary_server   =  N ' 10.101.10.66 '  
,
@primary_database   =  N ' logTrans1 '  
,
@backup_source_directory   =  N ' \\10.101.10.66\data '  
,
@backup_destination_directory   =  N ' D:\log '  
,
@copy_job_name   =  N ' LSCopy_logTrans1 '  
,
@restore_job_name   =  N ' LSRestore_logTrans2 '  
,
@file_retention_period   =   1440  
,
@copy_job_id   =   @LS_Secondary__CopyJobId  OUTPUT 
,
@restore_job_id   =   @LS_Secondary__RestoreJobId  OUTPUT 
,
@secondary_id   =   @LS_Secondary__SecondaryId  OUTPUT 
复制代码

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

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

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

 

复制代码
EXEC  master.dbo.sp_add_log_shipping_secondary_database 
@secondary_database   =  N ' logTrans2 '  
,
@primary_server   =  N ' 10.101.10.66 '  
,
@primary_database   =  N ' logTrans1 '  
,
@restore_delay   =   0  
,
@restore_mode   =   1  
,
@disconnect_users   =   0  
,
@restore_threshold   =   45  
,
@threshold_alert_enabled   =   0  
,
@history_retention_period   =   1440  
复制代码

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

EXEC  master.dbo.sp_add_log_shipping_primary_secondary 
@primary_database   =  N ' logTrans1 '  
@secondary_server   =  N ' 10.101.10.67 '   -- 辅助数据库的IP 
@secondary_database   =  N ' logTrans2 '  

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

复制代码
EXEC  msdb.dbo.sp_update_job 
@job_name = ' LSCopy_logTrans1 '
@enabled = 1  

EXEC  msdb.dbo.sp_update_job 
@job_name = ' LSRestore_logTrans2 '
@enabled = 1  
复制代码

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

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

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
目录
相关文章
|
10天前
|
SQL 传感器 人工智能
生成更智能,调试更轻松,SLS SQL Copilot 焕新登场!
阿里云日志服务(SLS)推出智能分析助手 SLS SQL Copilot,融合 AI 技术与日志分析最佳实践,将自然语言转换为 SQL 查询,降低使用门槛,提升查询效率。其具备原生集成、智能语义理解与高效执行能力,助力用户快速洞察日志数据价值,实现智能化日志分析新体验。
|
10天前
|
SQL 传感器 人工智能
生成更智能,调试更轻松,SLS SQL Copilot 焕新登场!
本文是阿里云日志服务(SLS)首次对外系统性地揭秘 SLS SQL Copilot 背后的产品理念、架构设计与核心技术积淀。我们将带你深入了解,这一智能分析助手如何从用户真实需求出发,融合前沿 AI 能力与 SLS 十余年日志分析最佳实践,打造出面向未来的智能化日志分析体验。
|
10天前
|
缓存 Java 应用服务中间件
Spring Boot配置优化:Tomcat+数据库+缓存+日志,全场景教程
本文详解Spring Boot十大核心配置优化技巧,涵盖Tomcat连接池、数据库连接池、Jackson时区、日志管理、缓存策略、异步线程池等关键配置,结合代码示例与通俗解释,助你轻松掌握高并发场景下的性能调优方法,适用于实际项目落地。
165 4
|
24天前
|
SQL 监控 关系型数据库
查寻MySQL或SQL Server的连接数,并配置超时时间和最大连接量
以上步骤提供了直观、实用且易于理解且执行的指导方针来监管和优化数据库服务器配置。务必记得,在做任何重要变更前备份相关配置文件,并确保理解每个参数对系统性能可能产生影响后再做出调节。
163 11
|
安全 BI 网络安全
EventLog Analyzer 如何满足等保合规要求?密码有效期、产品日志保留、配置备份三大核心问题全面解答
EventLog Analyzer(ELA)助力企业满足网络安全等级保护要求,支持配置自动/手动备份、日志180天留存及密码策略管理,提升合规性与安全运营效率。
|
2月前
|
JSON 安全 Go
Go语言项目工程化 —— 日志、配置、错误处理规范
本章详解Go语言项目工程化核心规范,涵盖日志、配置与错误处理三大关键领域。在日志方面,强调其在问题排查、性能优化和安全审计中的作用,推荐使用高性能结构化日志库zap,并介绍日志级别与结构化输出的最佳实践。配置管理部分讨论了配置分离的必要性,对比多种配置格式如JSON、YAML及环境变量,并提供viper库实现多环境配置的示例。错误处理部分阐述Go语言显式返回error的设计哲学,讲解标准处理方式、自定义错误类型、错误封装与堆栈追踪技巧,并提出按调用层级进行错误处理的建议。最后,总结各模块的工程化最佳实践,助力构建可维护、可观测且健壮的Go应用。
|
3月前
|
存储 NoSQL MongoDB
Docker中安装MongoDB并配置数据、日志、配置文件持久化。
现在,你有了一个运行在Docker中的MongoDB,它拥有自己的小空间,对高楼大厦的崩塌视而不见(会话丢失和数据不持久化的问题)。这个MongoDB的数据、日志、配置文件都会妥妥地保存在你为它精心准备的地方,天旋地转,它也不会失去一丁点儿宝贵的记忆(即使在容器重启后)。
391 4
|
2月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
266 0
|
4月前
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
614 54