热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

西软在实施阶段时,会设置好几个Linuxshell的自动任务,把数据每天全库备份两次,并且并把数据通过ftp拷至备份库,其实这样做存在非常大的安全隐患,数据库服务器如果给KO了,您酒店只有当天的两次备份,数据损失将是12个小时来计算,对酒店经营非常不利

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

  西软在实施阶段时,会设置好几个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 

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


推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
author-avatar
hanlei99999
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有