Configure Log Shipping
准备工作
两台装有的Windows Server 2012R2以及SQL Server 2012的服务器
下载 Microsoft SQL Server 2012 SP1
两台机器可以相互Ping 通,测试环境为了不必要的麻烦请关闭Windows 防护墙
IP:192.168.100.101 Servername: SQL1\SQL1
IP:192.168.100.102 Servername: SQL2\SQL2
开始SQL Server 代理服务 并设置为自动开启
SQL Agent 登入设置:在服务管理中改成使用Administrator,如自建用户请确保两边用户名以及密码相同。并启动服务。
准备共享文件夹
事务日志传送的就是由主库不断产生事务日志文件的备份(或者叫归档日志,可能更好理解)而备库不断还原这些事务日志备份文件的过程。
中间需要一个文件夹作为双方的访问的共享文件夹。
如果这个共享文件夹位于主库的服务器上,主库的备份路径可以不写成UNC路径的形式,而备库则必须写成UNC路径的形式。
如果这个共享文件夹位于备库的服务器上,主库的备份路径就要写成UNC路径,而备库可以写成本地路径的形式。
如果共享文件夹即不在主库也不在备库的服务器上面,那么备份、还原目录的名称都要写成UNC路径了。
在SQL1的C 盘创建一个名为primaryBackupLog的文件夹,并设置为共享文件夹。 NUC:\\SQL1\primaryBackupLog
在SQL2的C 盘创建一个名为secondaryBackup
SQL Server 请使用SQL Server账号进行登录的,
UserName:sa Password 相同
测试环境为了不必要的麻烦,请使用Administrator账号
将SQL1的 AdventureWorks2012 恢复模式改为完整
- USE [master]
- GO
- ALTER DATABASE [AdventureWorks2012] SET RECOVERY FULL WITH NO_WAIT
- GO
对SQL1的AdventureWorks2012进行全备
- USE [master]
- BACKUP DATABASE [AdventureWorks2012] TO DISK = N'C:\primaryBackupLog\AdventureWorks.BAK' WITH NOFORMAT, NOINIT, NAME = N'AdventureWorks2012-FullBackup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
- GO
在SQL2上进行还原,并以STANDBY的方式进行恢复
- USE [master]
- RESTORE DATABASE [AdventureWorks2012]
- FROM DISK = N'C:\secondaryBackup\AdventureWorks.BAK' WITH FILE = 1,
- MOVE N'AdventureWorks2012_Data' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2\MSSQL\DATA\AdventureWorks2012_Data.mdf',
- MOVE N'AdventureWorks2012_Log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2\MSSQL\DATA\AdventureWorks2012_log.ldf',
- STANDBY = N'C:\secondaryBackup\AdventureWorks.BAK_S',
- NOUNLOAD, STATS = 10
- GO
设置备份选项
配置复制作业
以下为代码方式实现
- -- 在主服务器上执行下列语句,以便为数据库 [192.168.100.101\SQL1].[AdventureWorks2012]
- -- 配置日志传送。
- -- 需要在主服务器上 [msdb] 数据库的上下文中运行该脚本。
- -------------------------------------------------------------------------------------
- -- 添加日志传送配置
- -- ****** 开始: 要在主服务器 [192.168.100.101\SQL1] 上运行的脚本 ******
- DECLARE @LS_BackupJobId AS uniqueidentifier
- DECLARE @LS_PrimaryId AS uniqueidentifier
- DECLARE @SP_Add_RetCode As int
- EXEC @SP_Add_RetCode = master.dbo.sp_add_log_shipping_primary_database
- @database = N'AdventureWorks2012'
- ,@backup_directory = N'C:\primaryBackupLog'
- ,@backup_share = N'\\SQL1\primaryBackupLog'
- ,@backup_job_name = N'LSBackup_AdventureWorks2012'
- ,@backup_retention_period = 4320
- ,@backup_compression = 2
- ,@backup_threshold = 60
- ,@threshold_alert_enabled = 1
- ,@history_retention_period = 5760
- ,@backup_job_id = @LS_BackupJobId OUTPUT
- ,@primary_id = @LS_PrimaryId OUTPUT
- ,@overwrite = 1
- IF (@@ERROR = 0 AND @SP_Add_RetCode = 0)
- BEGIN
- DECLARE @LS_BackUpScheduleUID As uniqueidentifier
- DECLARE @LS_BackUpScheduleID AS int
- EXEC msdb.dbo.sp_add_schedule
- @schedule_name =N'LSBackupSchedule_192.168.100.101\SQL11'
- ,@enabled = 1
- ,@freq_type = 4
- ,@freq_interval = 1
- ,@freq_subday_type = 4
- ,@freq_subday_interval = 15
- ,@freq_recurrence_factor = 0
- ,@active_start_date = 20141015
- ,@active_end_date = 99991231
- ,@active_start_time = 0
- ,@active_end_time = 235900
- ,@schedule_uid = @LS_BackUpScheduleUID OUTPUT
- ,@schedule_id = @LS_BackUpScheduleID OUTPUT
- EXEC msdb.dbo.sp_attach_schedule
- @job_id = @LS_BackupJobId
- ,@schedule_id = @LS_BackUpScheduleID
- EXEC msdb.dbo.sp_update_job
- @job_id = @LS_BackupJobId
- ,@enabled = 1
- END
- EXEC master.dbo.sp_add_log_shipping_alert_job
- EXEC master.dbo.sp_add_log_shipping_primary_secondary
- @primary_database = N'AdventureWorks2012'
- ,@secondary_server = N'192.168.100.102\SQL2'
- ,@secondary_database = N'AdventureWorks2012'
- ,@overwrite = 1
- -- ****** 结束: 要在主服务器 [192.168.100.101\SQL1] 上运行的脚本 ******
- -- 在辅助服务器上执行下列语句,以便为数据库 [192.168.100.102\SQL2].[AdventureWorks2012]
- -- 配置日志传送。
- -- 需要在辅助服务器上 [msdb] 数据库的上下文中运行该脚本。
- -------------------------------------------------------------------------------------
- -- 添加日志传送配置
- -- ****** 开始: 要在辅助服务器 [192.168.100.102\SQL2] 上运行的脚本 ******
- DECLARE @LS_Secondary__CopyJobId AS uniqueidentifier
- DECLARE @LS_Secondary__RestoreJobId AS uniqueidentifier
- DECLARE @LS_Secondary__SecondaryId AS uniqueidentifier
- DECLARE @LS_Add_RetCode As int
- EXEC @LS_Add_RetCode = master.dbo.sp_add_log_shipping_secondary_primary
- @primary_server = N'192.168.100.101\SQL1'
- ,@primary_database = N'AdventureWorks2012'
- ,@backup_source_directory = N'\\SQL1\primaryBackupLog'
- ,@backup_destination_directory = N'C:\secondaryBackup'
- ,@copy_job_name = N'LSCopy_192.168.100.101\SQL1_AdventureWorks2012'
- ,@restore_job_name = N'LSRestore_192.168.100.101\SQL1_AdventureWorks2012'
- ,@file_retention_period = 4320
- ,@overwrite = 1
- ,@copy_job_id = @LS_Secondary__CopyJobId OUTPUT
- ,@restore_job_id = @LS_Secondary__RestoreJobId OUTPUT
- ,@secondary_id = @LS_Secondary__SecondaryId OUTPUT
- IF (@@ERROR = 0 AND @LS_Add_RetCode = 0)
- BEGIN
- DECLARE @LS_SecondaryCopyJobScheduleUID As uniqueidentifier
- DECLARE @LS_SecondaryCopyJobScheduleID AS int
- EXEC msdb.dbo.sp_add_schedule
- @schedule_name =N'DefaultCopyJobSchedule'
- ,@enabled = 1
- ,@freq_type = 4
- ,@freq_interval = 1
- ,@freq_subday_type = 4
- ,@freq_subday_interval = 1
- ,@freq_recurrence_factor = 0
- ,@active_start_date = 20141015
- ,@active_end_date = 99991231
- ,@active_start_time = 0
- ,@active_end_time = 235900
- ,@schedule_uid = @LS_SecondaryCopyJobScheduleUID OUTPUT
- ,@schedule_id = @LS_SecondaryCopyJobScheduleID OUTPUT
- EXEC msdb.dbo.sp_attach_schedule
- @job_id = @LS_Secondary__CopyJobId
- ,@schedule_id = @LS_SecondaryCopyJobScheduleID
- DECLARE @LS_SecondaryRestoreJobScheduleUID As uniqueidentifier
- DECLARE @LS_SecondaryRestoreJobScheduleID AS int
- EXEC msdb.dbo.sp_add_schedule
- @schedule_name =N'DefaultRestoreJobSchedule'
- ,@enabled = 1
- ,@freq_type = 4
- ,@freq_interval = 1
- ,@freq_subday_type = 4
- ,@freq_subday_interval = 1
- ,@freq_recurrence_factor = 0
- ,@active_start_date = 20141015
- ,@active_end_date = 99991231
- ,@active_start_time = 0
- ,@active_end_time = 235900
- ,@schedule_uid = @LS_SecondaryRestoreJobScheduleUID OUTPUT
- ,@schedule_id = @LS_SecondaryRestoreJobScheduleID OUTPUT
- EXEC msdb.dbo.sp_attach_schedule
- @job_id = @LS_Secondary__RestoreJobId
- ,@schedule_id = @LS_SecondaryRestoreJobScheduleID
- END
- DECLARE @LS_Add_RetCode2 As int
- IF (@@ERROR = 0 AND @LS_Add_RetCode = 0)
- BEGIN
- EXEC @LS_Add_RetCode2 = master.dbo.sp_add_log_shipping_secondary_database
- @secondary_database = N'AdventureWorks2012'
- ,@primary_server = N'192.168.100.101\SQL1'
- ,@primary_database = N'AdventureWorks2012'
- ,@restore_delay = 0
- ,@restore_mode = 0
- ,@disconnect_users = 0
- ,@restore_threshold = 45
- ,@threshold_alert_enabled = 1
- ,@history_retention_period = 5760
- ,@overwrite = 1
- END
- IF (@@error = 0 AND @LS_Add_RetCode = 0)
- BEGIN
- EXEC msdb.dbo.sp_update_job
- @job_id = @LS_Secondary__CopyJobId
- ,@enabled = 1
- EXEC msdb.dbo.sp_update_job
- @job_id = @LS_Secondary__RestoreJobId
- ,@enabled = 1
- END
- -- ****** 结束: 要在辅助服务器 [192.168.100.102\SQL2] 上运行的脚本 ******
在SQL1 上进行测试
- 1 use AdventureWorks2012
- 2 CREATE TABLE testtable( number int ,
- 3 num nvarchar( 50
- 4 )
- 5 );
- 6 INSERT INTO testtable
- 7 VALUES( 1 ,
- 8 'aaa'
- 9 );
- 10 GO
- 11 select * from testtable;
Step By Step SQL Server Log Shipping
Configure Log Shipping (SQL Server)
Configure Log Shipping的更多相关文章
- SQL Server Log Shipping学习总结
SQL Server的日志传送(log shipping)技术一直比较鸡肋,尤其当SQL Server 推出了Always On技术以后,估计使用日志传送(log shipping)这种技术方案的 ...
- SQL Server数据库log shipping 灾备(Part2 )
3.配置步骤: 主服务器(A机)设置 (1) 启用Log Shipping Configuration 右键单击需要配置日志传输的数据库->Tasks-> Ship Transaction ...
- SQL Server数据库log shipping 灾备(Part1 )
1.概述 Log Shipping为SQL Server提供的数据库备份过程.它可以将数据库整个复制到另一台服务器上.在这种情况下,交易日志也会定期发送到备份服务器上供恢复数据使用,这使得服务器一直处 ...
- Log Shipping搭建
1. 概述 SQL Server 使用日志传送,您可以自动将“主服务器”实例上“主数据库”内的事务日志备份发送到单独“辅助服务器”实例上的一个或多个“辅助数据库”.事务日志备份分别应用于每个辅助 ...
- 转 ORA-16191 "Primary log shipping client not logged on standby
###sample 0 原因未知: 解决办法,重建密码文件 primary db :alter system set log_archive_dest_state_2=defer sid='*' sc ...
- Microsoft SQL Server Version List [sqlserver 7.0-------sql server 2016]
http://sqlserverbuilds.blogspot.jp/ What version of SQL Server do I have? This unofficial build ch ...
- Microsoft SQL Server Version List(SQL Server 版本)
原帖地址 What version of SQL Server do I have? This unofficial build chart lists all of the known Servic ...
- SqlServer 版本号
RTM (no SP) SP1 SP2 SP3 SP4 SQL Server 2014 codename Hekaton 12.00.2000.8 SQL Server 2012 ...
- How to configure Veritas NetBackup (tm) to write Unified and Legacy log files to a different directory
Problem DOCUMENTATION: How to configure Veritas NetBackup (tm) to write Unified and Legacy log files ...
随机推荐
- Java Lock
JVM中的另一种锁Lock的实现.与synchronized不同的是,Lock完全用Java写成,在java这个层面是无关JVM实现的.在java.util.concurrent.locks包中有很多 ...
- 无线网络(WLAN)常见加密方式介绍
在使用无线路由器配置wifi安全设定的时候经常会遇到各种加密方式,即不懂意思也不知道如何选择.本文将对此做一个简单的介绍. 1.WEP 有线等效协议(Wired Equivalent Privacy, ...
- HDU 4441 Queue Sequence
http://acm.hdu.edu.cn/showproblem.php?pid=4441 题意:对于一个序列,每次有三种操作 insert pos 表示在pos插入一个数,这个数是最小的正数 ...
- Windows添加在此处打开命令CMD
打开rededit在:HKEY_CLASS_ROOT > * > shell >下面新建一个项CMD 在CMD中新建两个字符串 一个是默认,值为 @shell32.dll,- 另外一 ...
- Python中的内置函数
2.1 Built-in Functions The Python interpreter has a number of functions built into it that are alway ...
- /var/spool/postfix/maildrop小文件太多造成inode索引使用完解决
/var/spool/postfix/maildrop 小文件太多造成inode索引使用完解决办法 问题表现和检查: 1.运行df -i / 查看inode使用是否满: 2.查看/var/spool/ ...
- Macbook之设置Finder显示文件完整路径
终端里输入:defaults write com.apple.finder _FXShowPosixPathInTitle -bool TRUE;killall Finder 回复输入:default ...
- NodeJS学习之异步编程
NodeJS -- 异步编程 NodeJS最大的卖点--事件机制和异步IO,对开发者并不透明 代码设计模式 异步编程有很多特有的代码设计模式,为了实现同样的功能,使用同步方式和异步方式编写代码会有很大 ...
- css reset及部分layout样式
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html { font-family: sans ...
- ASP.NET MVC 4 SimpleMembership Provider (1)
新的ASP.NET MVC 4.0 提供了一个新的Membership Provider,叫SimpleMembership. 首先,我们建立一个新的solution 首先我们先看一下web.conf ...