準備工作
兩臺裝有的Windows Server 2012R2以及SQL Server 2012的服務器
下載評估版 Windows Server 2012 R2
下載 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 恢復模式改為完整
1 USE [master]2 GO3 ALTER DATABASE [AdventureWorks2012] SET RECOVERY FULL WITH NO_WAIT4 GO
對SQL1的AdventureWorks2012進行全備
1 USE [master]2 BACKUP DATABASE [AdventureWorks2012] TO DISK = N'C:/primaryBackupLog/AdventureWorks.BAK' WITH NOFORMAT, NOINIT, NAME = N'AdventureWorks2012-FullBackup', SKIP, NOREWIND, NOUNLOAD, STATS = 103 GO
在SQL2上進行還原,并以STANDBY的方式進行恢復
1 USE [master]2 RESTORE DATABASE [AdventureWorks2012] 3 FROM DISK = N'C:/secondaryBackup/AdventureWorks.BAK' WITH FILE = 1, 4 MOVE N'AdventureWorks2012_Data' TO N'C:/Program Files/Microsoft SQL Server/MSSQL11.SQL2/MSSQL/DATA/AdventureWorks2012_Data.mdf', 5 MOVE N'AdventureWorks2012_Log' TO N'C:/Program Files/Microsoft SQL Server/MSSQL11.SQL2/MSSQL/DATA/AdventureWorks2012_log.ldf', 6 STANDBY = N'C:/secondaryBackup/AdventureWorks.BAK_S',7 NOUNLOAD, STATS = 108 GO
設置備份選項
配置復制作業
以下為代碼方式實現
1 -- 在主服務器上執行下列語句,以便為數據庫 [192.168.100.101/SQL1].[AdventureWorks2012] 2 -- 配置日志傳送。 3 -- 需要在主服務器上 [msdb] 數據庫的上下文中運行該腳本。 4 ------------------------------------------------------------------------------------- 5 -- 添加日志傳送配置 6 7 -- ****** 開始: 要在主服務器 [192.168.100.101/SQL1] 上運行的腳本 ****** 8 9 10 DECLARE @LS_BackupJobId AS uniqueidentifier 11 DECLARE @LS_PrimaryId AS uniqueidentifier 12 DECLARE @SP_Add_RetCode As int 13 14 15 EXEC @SP_Add_RetCode = master.dbo.sp_add_log_shipping_primary_database 16 @database = N'AdventureWorks2012' 17 ,@backup_directory = N'C:/primaryBackupLog' 18 ,@backup_share = N'//SQL1/primaryBackupLog' 19 ,@backup_job_name = N'LSBackup_AdventureWorks2012' 20 ,@backup_retention_period = 4320 21 ,@backup_compression = 2 22 ,@backup_threshold = 60 23 ,@threshold_alert_enabled = 1 24 ,@history_retention_period = 5760 25 ,@backup_job_id = @LS_BackupJobId OUTPUT 26 ,@primary_id = @LS_PrimaryId OUTPUT 27 ,@overwrite = 1 28 29 30 IF (@@ERROR = 0 AND @SP_Add_RetCode = 0) 31 BEGIN 32 33 DECLARE @LS_BackUpScheduleUID As uniqueidentifier 34 DECLARE @LS_BackUpScheduleID AS int 35 36 37 EXEC msdb.dbo.sp_add_schedule 38 @schedule_name =N'LSBackupSchedule_192.168.100.101/SQL11' 39 ,@enabled = 1 40 ,@freq_type = 4 41 ,@freq_interval = 1 42 ,@freq_subday_type = 4 43 ,@freq_subday_interval = 15 44 ,@freq_recurrence_factor = 0 45 ,@active_start_date = 20141015 46 ,@active_end_date = 99991231 47 ,@active_start_time = 0 48 ,@active_end_time = 235900 49 ,@schedule_uid = @LS_BackUpScheduleUID OUTPUT 50 ,@schedule_id = @LS_BackUpScheduleID OUTPUT 51 52 EXEC msdb.dbo.sp_attach_schedule 53 @job_id = @LS_BackupJobId 54 ,@schedule_id = @LS_BackUpScheduleID 55 56 EXEC msdb.dbo.sp_update_job 57 @job_id = @LS_BackupJobId 58 ,@enabled = 1 59 60 61 END 62 63 64 EXEC master.dbo.sp_add_log_shipping_alert_job 65 66 EXEC master.dbo.sp_add_log_shipping_primary_secondary 67 @primary_database = N'AdventureWorks2012' 68 ,@secondary_server = N'192.168.100.102/SQL2' 69 ,@secondary_database = N'AdventureWorks2012' 70 ,@overwrite = 1 71 72 -- ****** 結束: 要在主服務器 [192.168.100.101/SQL1] 上運行的腳本 ****** 73 74 75 -- 在輔助服務器上執行下列語句,以便為數據庫 [192.168.100.102/SQL2].[AdventureWorks2012] 76 -- 配置日志傳送。 77 -- 需要在輔助服務器上 [msdb] 數據庫的上下文中運行該腳本。 78 ------------------------------------------------------------------------------------- 79 -- 添加日志傳送配置 80 81 -- ****** 開始: 要在輔助服務器 [192.168.100.102/SQL2] 上運行的腳本 ****** 82 83 84 DECLARE @LS_Secondary__CopyJobId AS uniqueidentifier 85 DECLARE @LS_Secondary__RestoreJobId AS uniqueidentifier 86 DECLARE @LS_Secondary__SecondaryId AS uniqueidentifier 87 DECLARE @LS_Add_RetCode As int 88 89 90 EXEC @LS_Add_RetCode = master.dbo.sp_add_log_shipping_secondary_primary 91 @primary_server = N'192.168.100.101/SQL1' 92 ,@primary_database = N'AdventureWorks2012' 93 ,@backup_source_directory = N'//SQL1/primaryBackupLog' 94 ,@backup_destination_directory = N'C:/secondaryBackup' 95 ,@copy_job_name = N'LSCopy_192.168.100.101/SQL1_AdventureWorks2012' 96 ,@restore_job_name = N'LSRestore_192.168.100.101/SQL1_AdventureWorks2012' 97 ,@file_retention_period = 4320 98 ,@overwrite = 1 99 ,@copy_job_id = @LS_Secondary__CopyJobId OUTPUT 100 ,@restore_job_id = @LS_Secondary__RestoreJobId OUTPUT 101 ,@secondary_id = @LS_Secondary__SecondaryId OUTPUT 102 103 IF (@@ERROR = 0 AND @LS_Add_RetCode = 0) 104 BEGIN 105 106 DECLARE @LS_SecondaryCopyJobScheduleUID As uniqueidentifier 107 DECLARE @LS_SecondaryCopyJobScheduleID AS int 108 109 110 EXEC msdb.dbo.sp_add_schedule 111 @schedule_name =N'DefaultCopyJobSchedule' 112 ,@enabled = 1 113 ,@freq_type = 4 114 ,@freq_interval = 1 115 ,@freq_subday_type = 4 116 ,@freq_subday_interval = 1 117 ,@freq_recurrence_factor = 0 118 ,@active_start_date = 20141015 119 ,@active_end_date = 99991231 120 ,@active_start_time = 0 121 ,@active_end_time = 235900 122 ,@schedule_uid = @LS_SecondaryCopyJobScheduleUID OUTPUT 123 ,@schedule_id = @LS_SecondaryCopyJobScheduleID OUTPUT 124 125 EXEC msdb.dbo.sp_attach_schedule 126 @job_id = @LS_Secondary__CopyJobId 127 ,@schedule_id = @LS_SecondaryCopyJobScheduleID 128 129 DECLARE @LS_SecondaryRestoreJobScheduleUID As uniqueidentifier 130 DECLARE @LS_SecondaryRestoreJobScheduleID AS int 131 132 133 EXEC msdb.dbo.sp_add_schedule 134 @schedule_name =N'DefaultRestoreJobSchedule' 135 ,@enabled = 1 136 ,@freq_type = 4 137 ,@freq_interval = 1 138 ,@freq_subday_type = 4 139 ,@freq_subday_interval = 1 140 ,@freq_recurrence_factor = 0 141 ,@active_start_date = 20141015 142 ,@active_end_date = 99991231 143 ,@active_start_time = 0 144 ,@active_end_time = 235900 145 ,@schedule_uid = @LS_SecondaryRestoreJobScheduleUID OUTPUT 146 ,@schedule_id = @LS_SecondaryRestoreJobScheduleID OUTPUT 147 148 EXEC msdb.dbo.sp_attach_schedule 149 @job_id = @LS_Secondary__RestoreJobId 150 ,@schedule_id = @LS_SecondaryRestoreJobScheduleID 151 152 153 END 154 155 15
新聞熱點
疑難解答