应用维护:SQL Server 2008高可用性

博客园 发表于:12年09月05日 10:48 [原创] DOIT.com.cn

  • 分享:
[导读]高可用性的定义是主观性的,高可用性并不意味着全天候运行,而是指在用户需要他们时即可访问。高可用性也指能够满足服务级别协议SLA或操作级别协议OLA,这些协议定义了为满足用户需求保持服务在线,您对应用维护应用程序和服务可用性的要求。

一旦配置了日志传送选项,就可以把它们应用到数据库,如果所有的配置都正确,备份就会立刻开始。

使用Transact-SQL配置日志传送:直接上实例代码

  1. -- Execute the following statements at the Primary to configure Log Shipping  
  2. -- for the database [AUGHTEIGHT].[AdventureWorks2008], 
  3. -- The script needs to be run at the Primary in the context of the [msdb] database. 
  4. -------------------------------------------------------------- 
  5. Adding the Log Shipping configuration  
  6.  
  7. -- ****** Begin: Script to be run at Primary: [AUGHTEIGHT] ****** 
  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.  
  17. @database = N'AdventureWorks2008'  
  18.  
  19. ,@backup_directory = N'\\AughtEight\SQLLogs'  
  20.  
  21. ,@backup_share = N'\\AughtEight\SQLLogs'  
  22.  
  23. ,@backup_job_name = N'LSBackup_AdventureWorks2008'  
  24.  
  25. ,@backup_retention_period = 4320 
  26.  
  27. ,@backup_compression = 1 
  28.  
  29. ,@monitor_server = N'AUGHTEIGHT\HOTH'  
  30.  
  31. ,@monitor_server_security_mode = 1  
  32.  
  33. ,@backup_threshold = 60  
  34.  
  35. ,@threshold_alert_enabled = 1 
  36.  
  37. ,@history_retention_period = 5760  
  38.  
  39. ,@backup_job_id = @LS_BackupJobId OUTPUT  
  40.  
  41. ,@primary_id = @LS_PrimaryId OUTPUT  
  42.  
  43. ,@overwrite = 1  
  44.  
  45.  
  46. IF (@@ERROR = 0 AND @SP_Add_RetCode = 0)  
  47. BEGIN  
  48.  
  49. DECLARE @LS_BackUpScheduleUID     As uniqueidentifier  
  50. DECLARE @LS_BackUpScheduleID      AS int  
  51.  
  52.  
  53. EXEC msdb.dbo.sp_add_schedule  
  54.  
  55. @schedule_name =N'LSBackupSchedule_AUGHTEIGHT1'  
  56.  
  57. ,@enabled = 1  
  58.  
  59. ,@freq_type = 4  
  60.  
  61. ,@freq_interval = 1  
  62.  
  63. ,@freq_subday_type = 4  
  64.  
  65. ,@freq_subday_interval = 15  
  66.  
  67. ,@freq_recurrence_factor = 0  
  68.  
  69. ,@active_start_date = 20081111  
  70.  
  71. ,@active_end_date = 99991231  
  72.  
  73. ,@active_start_time = 0  
  74.  
  75. ,@active_end_time = 235900  
  76.  
  77. ,@schedule_uid = @LS_BackUpScheduleUID OUTPUT  
  78.  
  79. ,@schedule_id = @LS_BackUpScheduleID OUTPUT  
  80.  
  81. EXEC msdb.dbo.sp_attach_schedule  
  82.  
  83. @job_id = @LS_BackupJobId  
  84.  
  85. ,@schedule_id = @LS_BackUpScheduleID   
  86.  
  87. EXEC msdb.dbo.sp_update_job  
  88.  
  89. @job_id = @LS_BackupJobId  
  90.  
  91. ,@enabled = 1  
  92.  
  93.  
  94. END  
  95.  
  96.  
  97. EXEC master.dbo.sp_add_log_shipping_primary_secondary  
  98.  
  99. @primary_database = N'AdventureWorks2008'  
  100.  
  101. ,@secondary_server = N'AUGHTEIGHT\DAGOBAH'  
  102.  
  103. ,@secondary_database = N'AdventureWorks2008'  
  104.  
  105. ,@overwrite = 1  
  106.  
  107. -- ****** End: Script to be run at Primary: [AUGHTEIGHT]  ****** 
  108.  
  109.  
  110. -- Execute the following statements at the Secondary to configure Log Shipping  
  111. -- for the database [AUGHTEIGHT\DAGOBAH].[AdventureWorks2008], 
  112. -- the script needs to be run at the Secondary in the context of the  
  113. -- [msdb] database.  
  114. ----------------------------------------------------------------------------  
  115. -- Adding the Log Shipping configuration  
  116.  
  117. -- ****** Begin: Script to be run at Secondary: [AUGHTEIGHT\DAGOBAH] ****** 
  118.  
  119.  
  120. DECLARE @LS_Secondary__CopyJobId  AS uniqueidentifier  
  121. DECLARE @LS_Secondary__RestoreJobId      AS uniqueidentifier  
  122. DECLARE @LS_Secondary__SecondaryId    AS uniqueidentifier  
  123. DECLARE @LS_Add_RetCode     As int  
  124.  
  125.  
  126. EXEC @LS_Add_RetCode = master.dbo.sp_add_log_shipping_secondary_primary  
  127.  
  128. @primary_server = N'AUGHTEIGHT'  
  129.  
  130. ,@primary_database = N'AdventureWorks2008'  
  131.  
  132. ,@backup_source_directory = N'\\AughtEight\SQLLogs'  
  133.  
  134. ,@backup_destination_directory = N'C:\CopiedLogs'  
  135.  
  136. ,@copy_job_name = N'LSCopy_AUGHTEIGHT_AdventureWorks2008'  
  137.  
  138. ,@restore_job_name = N'LSRestore_AUGHTEIGHT_AdventureWorks2008'  
  139.  
  140. ,@file_retention_period = 4320  
  141.  
  142. ,@monitor_server = N'AUGHTEIGHT\HOTH'  
  143.  
  144. ,@monitor_server_security_mode = 1  
  145.  
  146. ,@overwrite = 1  
  147.  
  148. ,@copy_job_id = @LS_Secondary__CopyJobId OUTPUT  
  149.  
  150. ,@restore_job_id = @LS_Secondary__RestoreJobId OUTPUT  
  151.  
  152. ,@secondary_id = @LS_Secondary__SecondaryId OUTPUT  
  153.  
  154. IF (@@ERROR = 0 AND @LS_Add_RetCode = 0)  
  155. BEGIN  
  156.  
  157. DECLARE @LS_SecondaryCopyJobScheduleUID  As uniqueidentifier  
  158. DECLARE @LS_SecondaryCopyJobScheduleID   AS int  
  159.  
  160.  
  161. EXEC msdb.dbo.sp_add_schedule  
  162.  
  163. @schedule_name =N'DefaultCopyJobSchedule'  
  164.  
  165. ,@enabled = 1  
  166.  
  167. ,@freq_type = 4  
  168.  
  169. ,@freq_interval = 1  
  170.  
  171. ,@freq_subday_type = 4  
  172.  
  173. ,@freq_subday_interval = 15  
  174.  
  175. ,@freq_recurrence_factor = 0  
  176.  
  177. ,@active_start_date = 20081111  
  178.  
  179. ,@active_end_date = 99991231  
  180.  
  181. ,@active_start_time = 0  
  182.  
  183. ,@active_end_time = 235900  
  184.  
  185. ,@schedule_uid = @LS_SecondaryCopyJobScheduleUID OUTPUT  
  186.  
  187. ,@schedule_id = @LS_SecondaryCopyJobScheduleID OUTPUT  
  188.  
  189. EXEC msdb.dbo.sp_attach_schedule  
  190.  
  191. @job_id = @LS_Secondary__CopyJobId  
  192.  
  193. ,@schedule_id = @LS_SecondaryCopyJobScheduleID   
  194.  
  195. DECLARE @LS_SecondaryRestoreJobScheduleUID      As uniqueidentifier  
  196. DECLARE @LS_SecondaryRestoreJobScheduleID       AS int  
  197.  
  198.  
  199. EXEC msdb.dbo.sp_add_schedule  
  200.  
  201. @schedule_name =N'DefaultRestoreJobSchedule'  
  202.  
  203. ,@enabled = 1  
  204.  
  205. ,@freq_type = 4  
  206.  
  207. ,@freq_interval = 1  
  208.  
  209. ,@freq_subday_type = 4  
  210.  
  211. ,@freq_subday_interval = 15  
  212.  
  213. ,@freq_recurrence_factor = 0  
  214.  
  215. ,@active_start_date = 20081111  
  216.  
  217. ,@active_end_date = 99991231  
  218.  
  219. ,@active_start_time = 0  
  220.  
  221. ,@active_end_time = 235900  
  222.  
  223. ,@schedule_uid = @LS_SecondaryRestoreJobScheduleUID OUTPUT  
  224.  
  225. ,@schedule_id = @LS_SecondaryRestoreJobScheduleID OUTPUT  
  226.  
  227. EXEC msdb.dbo.sp_attach_schedule  
  228.  
  229. @job_id = @LS_Secondary__RestoreJobId  
  230.  
  231. ,@schedule_id = @LS_SecondaryRestoreJobScheduleID   
  232.  
  233.  
  234. END  
  235.  
  236.  
  237. DECLARE @LS_Add_RetCode2    As int  
  238.  
  239.  
  240. IF (@@ERROR = 0 AND @LS_Add_RetCode = 0)  
  241. BEGIN  
  242.  
  243. EXEC @LS_Add_RetCode2 = master.dbo.sp_add_log_shipping_secondary_database  
  244.  
  245. @secondary_database = N'AdventureWorks2008'  
  246.  
  247. ,@primary_server = N'AUGHTEIGHT'  
  248.  
  249. ,@primary_database = N'AdventureWorks2008'  
  250.  
  251. ,@restore_delay = 0  
  252.  
  253. ,@restore_mode = 1  
  254.  
  255. ,@disconnect_users   = 1  
  256.  
  257. ,@restore_threshold = 45    
  258.  
  259. ,@threshold_alert_enabled = 1  
  260.  
  261. ,@history_retention_period  = 5760  
  262.  
  263. ,@overwrite = 1  
  264.  
  265. END  
  266.  
  267.  
  268. IF (@@error = 0 AND @LS_Add_RetCode = 0)  
  269. BEGIN  
  270.  
  271. EXEC msdb.dbo.sp_update_job  
  272.  
  273. @job_id = @LS_Secondary__CopyJobId  
  274.  
  275. ,@enabled = 1  
  276.  
  277. EXEC msdb.dbo.sp_update_job  
  278.  
  279. @job_id = @LS_Secondary__RestoreJobId  
  280.  
  281. ,@enabled = 1  
  282.  
  283. END  
  284.  
  285. -- ****** End: Script to be run at Secondary: [AUGHTEIGHT\DAGOBAH] ******

 

配置故障转移:要配置主服务器和辅助服务器之间的故障转移,可以使用下列步骤:如果备份共享中有任何为复制的备份文件,需要把它们复制到每个辅助服务器上的复制目标;把所有剩下的事务日志按顺序应用到每个辅助数据库上;如有可能,在主数据库上执行活动事务日志的备份,复制该备份,然后将其应用到每个备用数据库中;如果主服务器仍然可以操作,那么故障转移完成时可以将主数据库配置为新的辅助数据库,使用NO RECOVERY选项在主数据库上备份事务日志有助于完成这项工作;把数据库设置为恢复模式,选择一个辅助服务器来主流新的主数据库。

如果有额外的辅助服务器,则可以将新恢复的数据库配置为额外辅助数据库的主数据库,并使原来的主数据库成为一个新的辅助数据库,执行下列步骤来进行角色转换:禁用原主服务器上的备份作业;禁用原辅助服务器上的复制和还原作业;对新的主数据库的备份使用为原主数据库创建的共享;添加原数据库作为一个辅助数据库;在原数据库的辅助数据库选项中,指定该数据库已经初始化,这样就没有必要进行完整还原。

由于日志传送是基于每个数据库配置的,因此可能需要执行一些额外的任务以确保用户能够一致地访问该数据库,即便发生了故障转移。首先,客户端使用的应用程序必须知道这一更改。这可能要求手动配置应用程序使用新的主服务器或将旧的服务器名称重新指派为新服务器的别名。另外,要确保应用程序对数据库的一致访问,将需要确保已经迁移了该数据库所有关联的元数据,包括SQL Server登录名、作业和报警等。由于日志传送有一些限制,创建只读备用服务器很好,但是它对于故障转移来说只是一个一般的解决方案。

[责任编辑:韩蕊]
Ruby
SAP分享了多年来对企业运营变革的洞察,以及SAP Business Suite powered by HANA如何推动企业在对业务影响最小的情况下向实时企业转型,从而帮助企业实现更睿智的业务创新、更快速的业务流程和更简化的业务交互。发布会现场,SAP公司宣布,中国最大的瓶装水生产商——农夫山泉成为基于 SAP HANA 的SAP Business Suite在中国的首家客户。
官方微信
weixin
精彩专题更多
存储风云榜”是由DOIT传媒主办的年度大型活动。回顾2014年,存储作为IT系统架构中最基础的元素,已经成为了推动信息产业发展的核心动力,存储产业的发展迈向成熟,数据经济的概念顺势而为的提出。
华为OceanStor V3系列存储系统是面向企业级应用的新一代统一存储产品。在功能、性能、效率、可靠性和易用性上都达到业界领先水平,很好的满足了大型数据库OLTP/OLAP、文件共享、云计算等各种应用下的数据存储需求。
联想携ThinkServer+System+七大行业解决方案惊艳第十六届高交会
 

公司简介 | 媒体优势 | 广告服务 | 客户寄语 | DOIT历程 | 诚聘英才 | 联系我们 | 会员注册 | 订阅中心

Copyright © 2013 DOIT Media, All rights Reserved. 北京楚科信息技术有限公司 版权所有.