YourSQLDba 配置——修改备份路径

公司一直使用YourSQLDba做本地备份,磁带机将本地备份文件上带做异地容灾备份。近期整理、验证备份时发现本地备份目录命名五花八门

其中有历史原因,也有无规划化的缘故,看着这些五花八门的目录,越看越不顺眼。于是想统一规范化。备份目录统一为DB_BACKUP,完整备份位于FULL_BACKUP子目录,事务日志备份位于LOG_BACKUP子目录下。例如如下所示:

完整备份目录    :G:\DB_BACKUP\FULL_BACKUP\

事务日志备份目录:G:\DB_BACKUP\LOG_BACKUP\

于是需要修改YourSQLDba备份路径,本来是一个简单的事情,但是在测试过程中,发现了一些小问题,特此记录一下:

问题1:在哪里修改备份路径? 修改是否立即生效?

修改YourSQLDba的备份路径,需要修改两个作业YourSQLDba_FullBackups_And_Maintenance 和YourSQLDba_LogBackups的配置. 即修改调用的存储过程Maint.YourSqlDba_DoMaint中的@FullBackupPath和@LogBackupPath参数。如下所示:

YourSQLDba_FullBackups_And_Maintenance作业

exec Maint.YourSqlDba_DoMaint
  @oper = ‘YourSQLDba_Operator‘

, @MaintJobName = ‘YourSQLDba: DoInteg,DoUpdateStats,DoReorg,Full backups‘

, @DoInteg = 1

, @DoUpdStats = 1

, @DoReorg = 1

, @DoBackup = ‘F‘

, @FullBackupPath = ‘G:\DB_BACKUP\FULL_BACKUP\‘

, @LogBackupPath = ‘G:\DB_BACKUP\LOG_BACKUP\‘

-- Flush database backups older than the number of days

, @FullBkpRetDays = 1

-- Flush log backups older than the number of days

, @LogBkpRetDays = 2

-- Spread Update Stats over 7 days

, @SpreadUpdStatRun =1

-- Maximum number of consecutive days of failed full backups allowed

-- for a database before putting that database (Offline).

, @ConsecutiveFailedbackupsDaysToPutDbOffline = 9999

-- Each database inclusion filter must be on its own line between the following quote pair

, @IncDb =

-- Each database exclusion filter must be on its own line between the following quote pair

, @ExcDb =

-- Each database exclusion filter must be on its own line between the following quote pair

, @ExcDbFromPolicy_CheckFullRecoveryModel =

YourSQLDba_LogBackups作业

exec Maint.YourSqlDba_DoMaint
  @oper = ‘YourSQLDba_Operator‘

, @MaintJobName = ‘Log backups‘

, @DoBackup = ‘L‘

, @FullBackupPath = ‘G:\DB_BACKUP\FULL_BACKUP\‘

, @LogBackupPath = ‘G:\DB_BACKUP\LOG_BACKUP\‘

-- Specify to user that full database backups are mandatory before log backups

, @NotifyMandatoryFullDbBkpBeforeLogBkp = 1

, @BkpLogsOnSameFile = 1

-- Each database inclusion filter must be on its own line between the following quote pair

, @IncDb =

-- Each database exclusion filter must be on its own line between the following quote pair

, @ExcDb =

将@FullBackupPath和 @LogBackupPath 从D:\backup\修改为G:\DB_BACKUP\FULL_BACKUP\与G:\DB_BACKUP\LOG_BACKUP\后,修改后是否立即生效?  修改过后,如果没有先做一次完整备份,事务日志备份文件(事务日志备份有可能半小时。一小时一次等多种选择)并不会在新目录G:\DB_BACKUP\LOG_BACKUP\生成,依然还是在旧目录G:\backup\下生成。直到完整备份备份后,事务日志备份才在新目录生效。这样就导致我必须等到旧目录数据文件完全上带后才能删除旧目录。但是为什么会这样呢?

从Maint.YourSqlDba_DoMaint追查开始,发现其调用[yMaint].[Backups]做备份,做事务日志备份的一段代码如下

If @DoFullBkp = 1 And DATABASEPROPERTYEX(@DbName, ‘Recovery‘) <> ‘Simple‘
      Begin

        Set @fileName = yMaint.MakeBackupFileName(@DbName, ‘L‘, @LogBackupPath, @Language, @LogBkExt)

       

        Set @sql = yMaint.MakeBackupCmd

                   (

                     @DbName

                   , ‘L‘ -- say explicitely full backup command

                   , @fileName

                   , 1

                   , @MaintJobName

                   )

        -- Launch first log backup that creates the file that will be used

        -- to stored log backups usually for the rest of the days unless

        -- end-user launch Maint.SaveDbOnNewFileSet

        Exec yExecNLog.LogAndOrExec

          @context = ‘yMaint.backups‘

        , @sql = @sql

        , @Info = ‘Log backups (init)‘

        , @JobNo = @JobNo

        , @errorN = @errorN_BkpPartielInit output

        -- Restore the backup to the mirror server if enabled

        Exec yMirroring.QueueRestoreToMirrorCmd

             @context = ‘yMaint.backups (queue restore of log backup init)‘

           , @JobNo = @JobNo

           , @DbName = @DbName

           , @bkpTyp = N‘L‘

           , @fileName = @fileName

           , @MirrorServer = @MirrorServer

           , @BrokerDlgHandle = @BrokerDlgHandle OUT

                             

        If @errorN_BkpPartielInit = 0 -- version

        Begin

          Update Maint.JobLastBkpLocations

          Set lastLogBkpFile = @filename

           , MirrorServer = @MirrorServer

          Where dbName = @DbName

         

          -- shrink the log after backup (the procedure acts depending on the size)

          -- Exec yMaint.ShrinkLog @DbName, @JobNo

        End

      End

其中@fileName = yMaint.MakeBackupFileName(@DbName, ‘L‘, @LogBackupPath, @Language, @LogBkExt)取值取决于@LogBackupPath, 而@LogBackupPath来源于Maint.JobHistory中(如下所示)。每次全备在Maint.JobHistory中生成一条记录,而全备后不管事务日志备份多少次,只会在第一次事务日志备份时生成记录,所以即使修改了@FullBackupPath和 @LogBackupPath这两个参数的值,Maint.JobHistory表中最后一次事务日志备份记录的值依然为修改前的旧值。从而出现上面描述的问题。

Select 
    @MaintJobName = JobName 

  , @DoFullBkp = DoFullBkp

  , @DoLogBkp = DoLogBkp

  , @FullBkpRetDays = FullBkpRetDays

  , @LogBkpRetDays = LogBkpRetDays

  , @NotifyMandatoryFullDbBkpBeforeLogBkp = NotifyMandatoryFullDbBkpBeforeLogBkp

  , @BkpLogsOnSameFile = BkpLogsOnSameFile

  , @FullBackupPath = yUtl.NormalizePath(FullBackupPath )

  , @LogBackupPath = yUtl.NormalizePath(LogBackupPath )

  , @FullBkExt = FullBkExt

  , @LogBkExt = LogBkExt

  , @ConsecutiveFailedbackupsDaysToPutDbOffline = ConsecutiveFailedbackupsDaysToPutDbOffline 

  , @IncDb = IncDb 

  , @ExcDb = ExcDb 

  , @jobStart = JobStart 

  , @MirrorServer = MirrorServer

  , @JobId = JobId

  , @StepId = StepId

  From Maint.JobHistory Where JobNo = @JobNo

问题2:修改备份路径后,原路径下的备份文件能否在保留期后自动删除?


如下所示,在存储过程[yMaint].[Backups]里面删除过期备份时,@Path参数来自于@FullBackupPath 和@LogBackupPath


这两个参数的值来源于表Maint.JobHistory, 而当修改了YourSQLDba备份路径后,如果没有做一次全备,对应记录FullBackupPath 与LogBackupPath字段的值都是原先的路径(因为事务日志备份的路径从Maint.JobHistory最后一次事务日志记录取值,也即原先的路径),做了一次全备后,其值都是修改后路径,这样就会导致以前备份删除不了的情况。此时只能手工删除。

Select
   @MaintJobName = JobName

 , @DoFullBkp = DoFullBkp

 , @DoLogBkp = DoLogBkp

 , @FullBkpRetDays = FullBkpRetDays

 , @LogBkpRetDays = LogBkpRetDays

 , @NotifyMandatoryFullDbBkpBeforeLogBkp = NotifyMandatoryFullDbBkpBeforeLogBkp

 , @BkpLogsOnSameFile = BkpLogsOnSameFile

 , @FullBackupPath = yUtl.NormalizePath(FullBackupPath )

 , @LogBackupPath = yUtl.NormalizePath(LogBackupPath )

 , @FullBkExt = FullBkExt

 , @LogBkExt = LogBkExt

 , @ConsecutiveFailedbackupsDaysToPutDbOffline = ConsecutiveFailedbackupsDaysToPutDbOffline

 , @IncDb = IncDb

 , @ExcDb = ExcDb

 , @jobStart = JobStart

 , @MirrorServer = MirrorServer

 , @JobId = JobId

 , @StepId = StepId

 From Maint.JobHistory Where JobNo = @JobNo

问题3:输出日志文件MaintenanceReport.txt路径在哪里修改?


YourSQLDba的输出日志文件MaintenanceReport.txt并不会随着@FullBackupPath和 @LogBackupPath 的修改会保存到新目录。这个文件的输出目录的值放置在msdb.dbo.sysjobsteps表中,对应记录的output_file_name字段。

可以通过两种方式来修改:

1 SQL脚本方式:

EXEC msdb.dbo.sp_update_jobstep @job_id=N‘41662692-c7b2-47ae-8e07-df3eb12e1fe2‘, @step_id=1 ,

@output_file_name=N‘G:\DB_BACKUP\MaintenanceReport.txt‘

2:UI图形界面:



问题4:是否可以用其它方式


可以修改@FullBackupPath和 @LogBackupPath参数值后,将旧备份文件拷贝到对应新目录,不过对备份比较大的服务器,会产生一定的IO消耗。修改修改Maint.JobLasstBkpLocations记录中的LastLogBkpFile和LastFullBkpFile字段, 以及Maint.JobHistory中最后一条记录的FullBackupPath与LogBackupPath。

UPDATE Maint.JobLastBkpLocations set lastLogBkpFile=‘G:\DB_BACKUP\LOG_BACKUP\xxxx_[2014-07-15_17h48m08_Tue]_logs.TRN‘, 
lastFullBkpFile=‘G:\DB_BACKUP\FULL_BACKUP\xxxx_[2014-07-15_17h48m07_Tue]_database.BAK‘

WHERE .....

 

 

UPDATE Maint.JobHistory SET FullBackupPath=‘G:\DB_BACKUP\LOG_BACKUP\‘, LogBackupPath=‘G:\DB_BACKUP\FULL_BACKUP‘ where [email protected]


YourSQLDba 配置——修改备份路径

时间: 2024-10-09 02:53:12

YourSQLDba 配置——修改备份路径的相关文章

maven 配置: 修改默认的 .m2仓库 默认存储路径.

maven 配置: 修改默认的 .m2仓库 默认存储路径. 一 .在系统maven里修改 1.在maven_HOME/conf/下找到配置文档 settings.xml 在文档中添加如下的配置说明 <localRepository>/home/morpheus/.m2/repository</localRepository> 1 例如 settings.xml : .... <settings xmlns="http://maven.apache.org/SETTI

配置RMAN备份环境

关于配置RMAN备份环境你可以给每个目标数据库设置一些固定的配置,这些配置控制着RMAN多个方面的行为.例如,你可配置备份的保存策略.默认的备份目录.默认的备份设备类型等.你可以用show命令来查看配置及用configure来修改RMAN的配置. 1.查看和清除RMAN配置参数show命令可以查看RMAN当前的配置情况,以及这些参数当前是否设置了默认值.SHOW ALL; --查看说有的配置情况 你也可以通过SHOW命令加指定的配置参数的名字来查看它的值.例:SHOW RETENTION POL

bitnami redmine安装、配置、备份、恢复(这篇文章靠谱)

bitnami redmine安装.配置.备份.恢复 2012-12-17 12:33 2596人阅读 评论(0) 收藏 举报 1. 安装时语言选择英文,不可以选择中文,否则不能正常运行,可以在账户里改为显示中文: 2. 安装完成后,最上面的标题栏字体太小,修改: D:\BitNami\redmine-2.1.4-0\apps\redmine\htdocs\public\themes\classic\stylesheets\application.css 中  #top-menu { font-

Confluence 6 配置自动备份

希望配置 Confluence 备份: 进入  > 基本配置(General Configuration) > 备份管理(Backup administration). 选择 编辑(Edit ): 选择备份文件名的前缀. 使用不同的日期格式(使用在  simple date format 中描述的句法). 选择是否在你的备份中包含有附件(默认配置是同时备份附件). 选择存储备份文件在默认的位置(在默认情况下,这个配置是禁用的,请参考下面的 Enabling backup path config

[Apache]改变Apache端口等配置修改方法

 如何改变Apache端口:找到Apache安装目录下conf目录下的httpd.conf文件.打开它,找到"Listen",紧接着Listen的数字就是端口号,默认状态下为"Listen 80".在之前的PHP专题中提到过关于在安装配置Apache时会遇到端口与IIS HTTP端口冲突的问题,因为IIS HTTP端口默认也为80.那么我们就可以在这里改变Apache的端口,从而避免冲突,比如可以改成:Listen 8011.改好之后别忘重起Apache服务使得配置

CKEditor学习笔记2(CKEditor基本配置修改)

第二篇,围绕这5个问题进行基本配置: 1.自定义ToolbarSet,去掉一些功能 2.加上几种常用的字体 3.修改"回车"和"Shift+回车"的换行行为 4.修改编辑区样式文件 5.更换表情图片 这些信息的配置,可以通过config.js文件进行,当然也可以创建自己的配置文件. 可以参考我的步骤: 1.首先创建一个目录custom,接着在该目录内新建一个myConfig.js配置文件. 2.JavaScript调用方式二(上一篇内容),修改为: CKEDITOR

android 模拟器修改默认路径问题

问题产生: 当在本地配置好自己的avd的时候(因为本地可以有图形界面,当ssh连接到机房服务器时,只能是无界面的,所以需要先在本地配置好),发送到服务器时,avd想放到和工程一个目录,而不是当前默认的~/.android/avd下,所以遇到找不到avd的问题, 1.知识点(翻译自官方文档) avd文件的默认位置 当创建一个avd时,android 工具会在开发的电脑上创建一个专用的目录存放avd,目录包括avd配置文件.用户数据镜像.sd卡镜像及设备相关的其他文件.需要注意的是,这个目录不包括系

VirtualBox修改虚拟盘路径

VirtualBox虚拟盘路径默认是存在C盘的,而当我们发现C盘不够用的时候,想转移就感觉有点麻烦了,现在给大家介绍一个简单又使用的方法. 第一步:到默认目录C:\Users\Administrator\VirtualBox VMs 找到需要转移的VirtualBox虚拟盘,剪切VirtualBox虚拟盘粘贴到另一个盘,例如:E盘 1.把要转移的虚拟盘剪切 2.粘贴到另一个空间多的硬盘 第二步:启动VirtualBox软件,鼠标右键选择要转移的虚拟盘,选择删除该虚拟盘. 第三步:关闭Virtua

WAMPServer配置修改及问题汇总

备忘录 软件版本wampserver2.5-Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b ----------------------------------------------------------------------------------------- 配置修改 自定义网站根目录: 1.修改Apache配置:找到 "  盘符:\wamp\bin\apache\apache2.4.9\conf\httpd.conf  "下Apache配置