详细讲解西软FOXHIS增量备份与恢复方法

如何为西软数据做增量备份及恢复

  西软在实施阶段时,会设置好几个Linux shell的自动任务,把数据每天全库备份两次,并且并把数据通过ftp拷至备份库,其实这样做存在非常大的安全隐患,数据库服务器如果给KO了,您酒店只有当天的两次备份,数据损失将是12个小时来计算,对酒店经营非常不利。如果通过Sybase和中标的高可用集群配置将带来成本的高额上升,可能大部分酒店总经理都不会批准这个方案,前段时间做了一个方案,并在我们集团的某酒店数据库中实现了,过程非常简单,就看各位EDP有没有心思去做。这样的做的好处是可以帮您把数据损失量控制在一个小时之内。

  提醒各位EDP,这个方案不太适合服务器性能较低的酒店,差异备份虽然数据量不大,但是还会稍微影响生产数据库的io性能的。

  方案总体概述:(这个办法可以有效避免复杂的crontab重命名文件的操作,但是在写脚本的时候有点累赘)
  预备:准备工作设置

1. 编写简单的Linux shell文件,作用是调用sql脚本文件;
2. 编写sql备份脚本文件;
3. 设置Linux crontab任务,让差异备份自己每小时进行;
4. 通过Windows 批处理文件,从Linux ftp中把数据定时拉出来;
5. 备份恢复。

预备:设置sybase数据sp_dboption参数。

1.进入命令行界面

2.输入:sybase 密码:sybase

3.输入:isql -Usa 密码为空按回车

4.输入:sp_dboption foxhis,trunc,false //关闭truncation,保证增量备份可以在database online的情况下使用。

5.首先执行全库备份:
dump database foxhis to 'xx/xx/xx/full_full.dat' 6点一次

操作完以上工作后再进行下面的操作

一、编写简单的Linux shell文件,作用是调用sql脚本文件
  首先需要用sybase用户进入Linux系统,在/home/sybase目录下建立一个您的脚本文件夹

-bash-3.2$ mkdir hotelbackup //新建脚本文件夹
-bash-3.2$ cd hotelbackup  //来到刚刚新建的脚本文件夹里
-bash-3.2$ vi 00.sh    //用vi新建一个空白的shell文件然后在vi的状态下,按一下字母“a”启动vi的编辑模式,然后输入:
#!/bin/sh
/home/sybase/bin/./isql -Usa -P -i/home/sybase/hotelbackup/00.sql  //不要直接写isql,一定要写全路径,避免isql启动失败!
:wq  //输入完成后,按下“esc”然后输入“:wq”是保存退出。 

这样第一个shell脚本就编写完成,具体意思就是说:启动isql命令输入用户名和密码,并在isql状态下运行00.sql这个脚本的sql语句。

  二、编写sql备份脚本文件;

dump tran foxhis to '/home/sybase/hotelbackupfile/00.log'
go  //把差异备份到以上目录 

1. 我们的备份策略是每12小时做一次全库备份,每小时做一次差异备份。上面的语句是做差异备份,文件名“00”可以自定义,我这里的00就是0点的意思,各位酒店EDP可以随心所欲地命名。

2. 接下来我们设置全库备份语句:

dump database foxhis to 'home/sybase/hotelbackupfile/06.bak'
go //把全库备份拷到以上目录 

3.一天又24个小时,为了少写一些crontab的语句,我们建议各位酒店的EDP同事做24个sh文件和24个sql文件,这样保证不会有错误,并且会自动覆盖昨天的备份,基本起到全自动的备份目的,00.sh/00.sql、01.sh/01.sql .....23.sh/23.sql。也就是说,06和18的sql脚本就用第2点的语句,其它时候就用第1点的语句。把着一对对的文件放到hotelbackup文件后,我们继续第三大点crontab的设置。

三、编写自动运行crontab自动运行脚本。
  1. 首先用sybase用户登录,切忌不要用root。
  2. 然后输入以下语句:

-bash-3.2$ crontab -e

//启动crontab编辑模式,编辑完成完成后按"ESC"并输入":wq"保存退出

3. 我们在后面添加如下语句:

意思很明显每天的1点、2点.....6点30分......18点30分自动执行sh的命名,刚刚大家看到sh文件就是调用sql文件,所以备份当您设置完这个crontab后,按下”esc“再输入“wq”保存退出后,数据库就会自动开始帮您自动做增量备份了,每天都数据会自动自己覆盖,无需担心备份爆慢的情况出现。

0 1 * * * sh /home/sybase/hotelbackup/01.sh
0 2 * * * sh /home/sybase/hotelbackup/02.sh
0 3 * * * sh /home/sybase/hotelbackup/03.sh
0 4 * * * sh /home/sybase/hotelbackup/04.sh
0 5 * * * sh /home/sybase/hotelbackup/05.sh
30 6 * * * sh /home/sybase/hotelbackup/06.sh
0 7 * * * sh /home/sybase/hotelbackup/07.sh
0 8 * * * sh /home/sybase/hotelbackup/08.sh
0 9 * * * sh /home/sybase/hotelbackup/09.sh
0 10 * * * sh /home/sybase/hotelbackup/10.sh
0 11 * * * sh /home/sybase/hotelbackup/11.sh
0 12 * * * sh /home/sybase/hotelbackup/12.sh
0 13 * * * sh /home/sybase/hotelbackup/13.sh
0 14 * * * sh /home/sybase/hotelbackup/14.sh
0 15 * * * sh /home/sybase/hotelbackup/15.sh
0 16 * * * sh /home/sybase/hotelbackup/16.sh
0 17 * * * sh /home/sybase/hotelbackup/17.sh
30 18 * * * sh /home/sybase/hotelbackup/18.sh
0 19 * * * sh /home/sybase/hotelbackup/19.sh
0 20 * * * sh /home/sybase/hotelbackup/20.sh
0 21 * * * sh /home/sybase/hotelbackup/21.sh
0 22 * * * sh /home/sybase/hotelbackup/22.sh
0 23 * * * sh /home/sybase/hotelbackup/23.sh
0 24 * * * sh /home/sybase/hotelbackup/00.sh 

四、通过Windows 批处理文件,从Linux ftp中把数据定时拉出来;(待更新)
五、 备份恢复。
  回复备份就非常简单,如果在数据在20点30分担时候挂掉了,也就是说我们损失了半个小时的数据,操作方法如下:

load database from foxhis(DatabaseName) 'home/sybase/hotelbackupfile/18.bak'
load tran from 'home/sybase/hotelbackupfile/19.log'
load tran from 'home/sybase/hotelbackupfile/20.log'
go
online database foxhis 

只要这简单的几个语句就可以把数据恢复过来,非常简单。

(0)

相关推荐

  • 详细讲解西软FOXHIS增量备份与恢复方法

    如何为西软数据做增量备份及恢复 西软在实施阶段时,会设置好几个Linux shell的自动任务,把数据每天全库备份两次,并且并把数据通过ftp拷至备份库,其实这样做存在非常大的安全隐患,数据库服务器如果给KO了,您酒店只有当天的两次备份,数据损失将是12个小时来计算,对酒店经营非常不利.如果通过Sybase和中标的高可用集群配置将带来成本的高额上升,可能大部分酒店总经理都不会批准这个方案,前段时间做了一个方案,并在我们集团的某酒店数据库中实现了,过程非常简单,就看各位EDP有没有心思去做.这样的

  • FOXHIS PMS前台西软服务器端和客户端安装教程

    西软服务器端和客户端安装教程V1.0 前言:网上有很多关于西软FOXHIS PMS的安装教程,但大多没有详细描述并且内容非常肤浅粗燥,本特意把自己的安装过程写成文档并记下,后面的数据库操作没有提供图片,但是我相信绝对能够看得懂.文章为本人原创,如需转载请注明CSDN 飞越飘零,谢谢! 下面文章内容经过测试N遍,100%是能成功安装,请各位无须怀疑. 注意:西软的license是在相应酒店对应的数据里面的,并绑定了对应酒店的客户端安装包,所以不能跨酒店导入和跨酒店使用第二个酒店的安装包. 一.li

  • Python中关于面向对象私有属性方法的详细讲解

    目录 1.私有属性和私有方法 私有属性: 私有方法: 类部调用私有属性和私有方法 子类不能继承父类私有属性和方法 实例属性(对象属性) 通过实例(对象)去修改类属性 2.修改私有属性的值 3.类属性和实例属性 4.类方法和静态方法 类方法: 静态方法: 实例方法 5.__new__方法 6.单例模式 福利 1.私有属性和私有方法 封装的意义: 将属性和方法放到一起做为一个整体,然后通过实例化对象来处理: 隐藏内部实现细节,只需要和对象及其属性和方法交互就可以了: 对类的属性和方法增加 访问权限控

  • Java 超详细讲解hashCode方法

    目录 1.介绍一下hashCode方法 2.为什么需要hashCode方法? 3.hashCode(),equals()两种方法是什么关系? 4.为什么重写 equals 方法必须重写 hashcode 方法 ? 1.介绍一下hashCode方法 hashCode() 的作用是获取哈希码,也称为散列码,它实际上是返回一个int整数.这个哈希码的作用是确定该对象在哈希表中的索引位置. hashCode() 定义在JDK的Object.java中,这就意味着Java中的任何类都包含有 hashCo

  • C语言 详细讲解#pragma的使用方法

    目录 一.#pragma 简介 二.#pragma message 三.#pragma once 四.#pragma pack 五.小结 一.#pragma 简介 #pragma 用于指示编译器完成一些特定的动作 #pragma 所定义的很多指示字是编译器特有的 #pragma 在不同的编译器间是不可移植的 预处理器将忽略它不认识的 #pragma 指令 不同的编译器可能以不同的方式解释同一条 #pragma 指令 一般用法: #pragma parameter 注:不同的 parameter

  • ThreadPoolExecutor中的submit()方法详细讲解

    目录 submmit()参数解析 submit()的返回值Future FutureTask的get()的实现 submit()使用案例 在使用线程池的时候,发现除了execute()方法可以执行任务外,还发现有一个方法submit()可以执行任务. submit()有3个参数不一的方法,这些方法都是在ExecutorService接口中声明的,在AbstractExecutorService中实现,而ThreadPoolExecutor继承AbstractExecutorService. <T

  • C++超详细讲解隐藏私有属性和方法的两种实现方式

    目录 例子 用抽象类解决问题 用Pimpl风格解决问题 总结 参考 在我们编写程序的时候,会将程序模块化,常见的就是用动态链接库的方式,然后导出函数接口或者类.而对于导出类的方式,作为模块的实现者,不论是给第三方使用或者自己的项目使用,应该都不太愿意暴露自己的私有属性和方法,个人碰到的主要有以下两个常见原因: 通过隐藏私有属性和方法,让被调用者猜不到其实现方式 私有方法中或者属性中,可能会存在一些第三方的头文件或者库的依赖,而对于被调用方来说不应该直接依赖 本文将介绍两种方式来满足以上的需求,一

  • SpringBoot超详细讲解集成Flink的部署与打包方法

    目录 一.SpringBoot集成Flink 二.FlinkTask写法调整 三.打包插件 四.Flink的上传与运行 总结 一.SpringBoot集成Flink 其实没什么特别的,就把Flink依赖的包在pom引入就行了.只是FlinkTask的写法要小调整下,把相关依赖交给spring管理就行. 然后如果放弃Flink的Dashboard端监控task执行相关信息,那也可以在SpringBoot的启动类里调用就行,但是可能出现task的相关对象没有注入,这种都是小问题(实际就是spring

  • C++详细讲解模拟实现位图和布隆过滤器的方法

    目录 位图 引论 概念 解决引论 位图的模拟实现 铺垫 结构 构造函数 存储 set,reset,test flip,size,count any,none,all 重载流运算符 测试 位图简单应用 位图代码汇总 布隆过滤器 引论 要点 代码实现 效率 解决方法 位图 引论 四十亿个无符号整数,现在给你一个无符号整数,判断这个数是否在这四十亿个数中. 路人甲:简单,快排+二分. 可是存储这四十亿个整数需要多少空间? 简单算一下,1G=1024M=1024 * 1024KB=1024 * 1024

  • Mybatis超详细讲解构建SQL方法

    目录 1 SQL 构建对象介绍 1.1.1 介绍 1.1.2 实现准备 2 查询功能的实现 3 新增功能的实现 4 修改功能的实现 5 删除功能的实现 1 SQL 构建对象介绍 1.1.1 介绍 我们之前通过注解开发时,相关 SQL 语句都是自己直接拼写的.一些关键字写起来比较麻烦.而且容易出错. MyBatis 给我们提供了 org.apache.ibatis.jdbc.SQL 功能类,专门用于构建 SQL 语句 1.1.2 实现准备 编写指定调用方法 package com.yyl.sql;

随机推荐