Linux定时备份数据库

2024-09-01

Linux定时备份数据库(共15篇)

篇1:Linux定时备份数据库

一、用命令实现备份

首页进入mysql的bin目录

1、备份数据

#mysqldump -uusername -ppassword discuz >discuz_-04-01.sql

这样就把discuz数据库所有的表结构和数据备份到discuz_2010-04-01.sql里了,

如果数据量大会占用很大空间,这时可以利用gzip压缩数据,

命令如下:

#mysqldump -uusername -ppassword discuz | gzip >discuz_2010-04-01.sql.gz

系统崩溃,重建系统时,可以这样恢复数据:

#mysql -uusername -ppassword discuz < discuz_2010-04-01.sql

从压缩文件直接恢复:

#gzip < discuz_2010-04-01.sql.gz | mysql -uusername -ppassword discuz

二、利用crontab,系统每天定时备份mysql数据库

1、创建保存备份文件的路径/mysqldata

#mkdir /mysqldata

2、创建/usr/sbin/bakmysql文件

输入以下内容:

mysqldump -umysql -p51uptry uptry | gzip >/mysqldata/uptry`date +%Y-%m-%d_%H%M%S`.sql.gz

3、修改文件属性,使其可以执行

#chmod +x /usr/sbin/bakmysql

4、修改/etc/crontab

在下面添加

01 3 * * * root /usr/sbin/bakmysql

表示每天3点钟执行备份 crontab使用说明

5、重新启动crond

#/etc/rc.d/init.d/crond restart

完成,

Linux定时备份数据库

三、数据的恢复

首页进入mysql的bin目录

创建数据库

#mysqladmin create discuz

恢复数据

#mysql discuz < /mysqldata/discuz_2010-04-01.sql

篇2:Linux定时备份数据库

1、创建保存备份文件的路径/mysqldata

#mkdir /mysqldata

2、创建/usr/sbin/bakmysql文件

#vi /usr/sbin/bakmysql

输入

rq=` date +%Y%m%d `

tar zcvf /mysqldata/mysql$rq.tar.gz /var/lib/mysql

或者写成

rq=` date +%Y%m%d `

mysqldump --all-databases -u root -p密码 > /mysqldata/mysql$rq.sql

/var/lib/mysql是你数据库文件的目录,部分用户是/usr/local/mysql/data,每个人可能不同

/mysqldata/表示保存备份文件的目录,这个每个人也可以根据自己的要求来做,

3、修改文件属性,使其可执行

# chmod +x /usr/sbin/bakmysql

4、修改/etc/crontab

#vi /etc/crontab

在下面添加

01 3 * * * root /usr/sbin/bakmysql

表示每天3点钟执行备份

5、重新启动crond

# /etc/rc.d/init.d/crond restart

完成。

这样每天你在/mysqldata可以看到这样的文件

mysql0619.tar.gz

篇3:Linux定时备份数据库

一、我公司以往ORACLE数据库备份情况

2007年前, 公司ORACLE数据库备份情况是:由数据库管理员或者备份专人, 在每天17:00点 (休息日除外) , 手工登录3台数据库服务器, 分别执行备份逻辑文件的命令, 修改备份文件的名字, 以每日的日期命名。由于手工操作, 容易手误造成输入错误;每天修改、执行文件, 重复工作占去管理人员很多宝贵时间;缺少休息日的备份文件, 数据可能丢失。为了解决以上众多问题, 保证备份文件正确、数据完整, 并使数据库管理员DBA能抽身出来有更多时间研究ORACLE的核心管理, 我研究并设计了ORACLE的自动定时备份。

二、设计目标

目前我们的数据库有3台, HP-UNIX K380的ORACLE8i, IBM440 LINUX的ORACLE9i, SUN SOLARIS的ORACLE10g。数据库服务器类型多, 平台各异, 数据库版本也多样。要达到的目标备份方式是:UNIX, LINUX自动执行ORACLE的export备份命令;备份时间是:每天晚上17:00点, 休息日也包含在内。备份文件是:每天随日期的不同而变动的, 动态形成带日期的文件, 例如440_linux_080110.dmp。

三、设计难点

1、目前对UNIX, LINUX操作系统不是特别熟悉, 对于该平台的环境, 操作有些障碍, 需要学习操练。

2、对UNIX, LINUX平台上的crontab命令定点执行工作的参数不熟悉, 需要深入研究具体的参数。

3、备份文件名字是动态的, 随日期不同而不同。难点在于ORACLE数据库执行export命令备份时, 对日期变量的设置和格式处理。

四、设计过程

1、为了避免使用SYSTEM超级用户泄漏密码, 我特别专门为3个数据库分别建立了oraclebf用户, 只授予其connect、exp_full_database权限, 执行全数据库备份。

2、研究固定文件名的export备份, 设计成以下参数文件expfull.par:

3、再研究动态变文件名的export备份, 变动的日期如何引入以上文件。查找了UNIX和LINUX上关于日期方面的知识, 知道可以使用系统的日期命令date了, 然而date显示的是国际标准时间:星期+月+日+时分秒+时区+年, 全值而且英文, 无法直接用于我们仅仅需要的年月日, 经过研究和查找, 格式化date实现。定义变量rq, 并输出变量:

4、研究定点执行工作的命令crontab及其参数。crontab的每一行由六个域 (minutes、hours、day of month、month、day of week、command) 组成, 预制定每晚17:00点执行备份命令, 编辑其为

crontab–e:0 17***exp parfile=/home/oracle/zj/expfull.par

crontab定点执行了, 但是却没有备份成功数据库文件。

5、在其他2个数据库服务器上分别建立Oracle Backup.sh和expfull.par文件, 修改不同参数和路径, 赋予ORACLE用户crontab权限, 设置每天晚上17:00定点自动备份。

五、设计结果

3台数据库每天晚上17:00准时备份, 加日期的动态备份文件正确无误。UNIX, LINUX平台上测试全部通过。完全达到预计设计目标。

公司数据库在备份方面有了进一步提高, 势必数据库的可用性、准确性、可恢复性就会得到有力保障, 从而为公司业务应用系统的顺利运行提供坚实基础和数据环境, 进而促进公司整体发展。

摘要:本文从我公司ORACLE数据库目前手工备份情况开始分析, 提出改变备份方式的目标和设计方案, 并对该方案进行了详细的设计说明和结果描述。

篇4:Linux定时备份数据库

关键词:Oracle CRON 备份 数据库

中图分类号:TP309.3 文献标识码:A 文章编号:1673-8454(2008)19-0045-03

在计算机网络广泛应用的今天,医院信息化获得了飞速的发展,电子处方、电子医嘱、电子申请单等一系列计算机手段的应用极大地提高了医护人员的工作效率,方便患者就医诊治。但是目前这些医院信息化的应用大部分用于医护人员的日常使用,患者还无法从存储在医院数据库中的数据查询到自己的检验/检查信息。在患者就诊的时候,提供近期的检验/检查报告结果,能够为医生的诊治提供有利的帮助,但是如果近期的检验/检查报告丢失或者就诊时忘记携带,那么不得不重新做一遍相应的检验/检查项目,这样既浪费患者的时间,又浪费患者的金钱。“一单通”实行后,部分大医院之间互相认可彼此的检验/检查结果,患者或者医生能够通过计算机网络远程查询相应的检验/检查结果,利用信息化和计算机网络为患者就诊提供更好的服务。在黑客、病毒肆虐的互联网上,为了保证服务的持续性和稳定性,对提供基础数据的数据库做备份是必须的。

一、Oracle数据库备份方式[1]

UNIX平台和Oracle数据库组合是大中型应用系统的首选。Oracle数据库是目前应用最为广泛的大型数据库之一,其备份的方式主要有冷备份、热备份和逻辑备份。

冷备份是一种物理备份,它使用操作系统的拷贝命令将与数据库相关的物理文件进行备份。在进行冷备份的时候,为了保证数据库中数据的完整性,数据库要预先正常关闭。冷备份是一种非常快速的备份方法,只需将备份文件拷贝回去,就可以非常容易地将数据恢复到备份时的时间点上。冷备份的不足之处是在实施备份的全过程中,数据库必须是处于关闭状态。备份所需时间与数据库的数据文件大小、个数以及备份介质I/O速度有关。

热备份又叫联机备份,它是在数据库运行的状态下进行的物理备份,适用于要求每周7天、每天24小时运行的数据库。与冷备份整个数据库不同,热备份的备份单位是表空间。要进行热备份,首先必须将表空间设置为备份模式,此时数据库在该表空间发生检查点(checkpoint),并将SCN(System Change Number,系统变更号)写入组成表空间的数据文件的头文件中,在表空间处于备份模式期间,Oracle将停止对该表空间数据文件的直接写入,转而使用复杂的机制将回滚段、缓冲、重做日志和归档日志结合起来存储数据,拷贝完毕后结束表空间的备份模式, 数据库将完成对数据文件的同步更新,以数据库当前的SCN替换备份开始时写入头文件中的SCN,由此保证表空间数据的一致性。热备份要求数据库工作在归档(archive log)模式下,在归档模式下重做日志记录了所有数据库的事务,提供了多次表空间备份之间的数据库变化,因此,可利用不同时间的多个表空间备份恢复整个数据库,可作数据库“最新状态”的恢复。热备份的不足在于不易操作,维护成本高。

逻辑备份即为拷贝数据库的数据,而不记录数据位置的备份过程。Oracle中所提供的export(导出)工具可进行逻辑备份。export将数据按Oracle的特定格式从Oracle数据库写到操作系统文件中,恢复时利用Oracle的import(导入)工具读取export导出的文件,将数据导入到数据库中。逻辑备份常用于Oracle数据库之间移动数据,备份整个数据库到一个文件中。使用export工具备份数据库的时候,数据库必须打开。为了保证备份期间整个数据库的完整性和一致性,要以restrict模式打开数据库。

针对要为患者和医生提供不间断的、持续服务的特点,逻辑备份是最适合的一种备份方式。

二、cron实现Oracle数据库的定时备份

1.cron介绍[2]

cron是Unix系统的调度进程,它可以在无需人工干预的情况下运行用户的作业,执行作业的命令是crontab,该命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个自己的crontab文件来保存调度信息。用户可以使用它运行任意一个shell脚本或某个命令。虽然每一个用户都可以有自己的crontab文件,但在一个重要的系统中,系统管理员可以通过 /ect/cron.d目录下的cron.allow和cron.deny两个文件控制用户对contab文件的访问。这两个文件全部由用户名组成,每个用户名一行。这两个文件的使用遵循如下规则:

第一,如果cron.allow存在,那么只有该文件中指定的用户才可以执行crontab任务,例如建立、编辑、显示或者删除他们自己的crontab文件;

第二,如果cron.allow不存在,那么除了cron.deny文件中指定的用户名以外,其它所有用户均可以执行contab任务;

第三,如果cron.allow和cron.deny两个文件都不存在,那么只有root用户可以执行crontab任务,其它用户不能执行crontab任务。

2.cron实现Oracle数据库的定时备份

本文以Sun Solaris 9 平台下的Oracle 9.2.0.6为例,说明如何使用cron实现Oracle数据库的定时逻辑备份。

在使用cron定时备份Oracle数据库的时候,用户首先要根据自己的需求定制crontab文件的脚本。本文以备份Oracle数据库中的test用户为例说明如何定制脚本:

步骤1:确定要定时自动执行作业的用户

以Oracle用户登录服务器;

步骤2:编辑备份Oracle数据库的脚本

(1)使用vi编辑器创建文件backup_oracle.sh;

(2)编辑文件backup_oracle.sh的内容如下:

#Start

#Part 1

ORACLE_BASE=/export/home1/oracle; export ORACLE_BASE

ORACLE_HOME=/export/home1/oracle/product/9.2.0; export ORACLE_HOME

ORACLE_SID=orcl; export ORACLE_SID

ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data; export ORA_NLS33

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:usr/lib:$LD_LIBRARY_PATH

export LD_LIBRARY_PATH

NLS_LANG=american_america.ZHS16GBK;export NLS_LANG

PATH=$ORACLE_HOME/bin:/usr/bin:/usr/ucb:/etc:/usr/

#Part 2

RQ=` date+"%y%m%d%H%M%S"`

#Part 3

/export/home1/oracle/product/9.2.0/bin/exp system/pw_system owner=testfile=/export/home0/oracle/backup/test$RQ.dmplog=/export/home0/oracle/backup/test$RQ.log

#End

文件内容说明:

文件的内容包括两部分:

Part 1:Oracle用户的环境变量设置

Part 2:RQ是一个变量,其值表示当前系统的时间,如:060501203000,表示2006年5月1日20点30分0秒

Part 3:/export/home1/oracle/product/9.2.0/bin/exp system/pw_system owner=testfile=/export/home0/oracle/backup/test$RQ.dmplog=/export/home0/oracle/backup/test$RQ.log

该语句使用Oracle的exp命令对数据库进行逻辑备份,备份产生的文件名字为所导出的用户名与RQ变量的组合,如:test060501203000.dmp,备份的日志文件名字也是用户名与RQ变量的组合,如:test060501203000.log。

步骤3:创建crontab文件

(1)使用vi编辑器编辑创建名字为cron的文件,其中的为用户的名字,在本脚本中应该是:vi oraclecron。

(2)文件oraclecron的内容如下:

30 20 * * * sh /global/oracle/oradata/backup_oracle.sh

该文件的格式说明如下:[3][4]

该文件的每一个条目必须含有6列、5个时间域,每个域之间要用空格分隔,其中:

第1列表示分钟:1~59;第2列表示小时:0~23(0表示子夜);第3列表示日:1~31;第4列表示月:1~12;第5列表示星期:0~6(0表示星期天);第6列表示要运行的命令。

在前5个时间域中可以用星号“*”来表示连续的时间段。如果对某个时间域没有特别的限定,应该在该域内填入“*”。

步骤4:提交任务

使用如下命令提交该任务给系统进程cron:crontab oraclecron,同时创建文件的一个副本放在/var/spool/cron/crontabs目录中,文件名就是用户名Oracle

步骤5:查看crontab文件是否已经提交

使用如下命令查看任务是否已经提交:crontab –l

通过上面的设置,在每天20:30分将自动执行Oracle数据库的备份,文件名字test<脚本启动时间>,如:test060501203000.dmp,orcl_user060502203000.dmp,由于每次脚本启动的时间不同,所以可以在服务器上保留近期多个数据库备份。

三、结束语

为患者和自己医院之外的医生提供检验/检查结果是医院提供的一种“增值服务”,但是这种服务没有经济收入,所以投入成本是提供这种“增值服务”要考虑的一个重要因素。本文实现的Oracle数据库备份,可以在无需额外投入的基础上完成Oracle数据库的日常备份,并且在备份的时候无需人工干预。根据磁盘空间的大小在服务器上可以保存最近日期的数据库备份文件,一旦数据库出现问题,可以利用最近一次的备份进行数据库恢复。

参考文献:

[1]Kevin loney.oracle9i数据库管理员手册[M].北京:机械工业出版社,2002.

[2]饶云华,张曜.Unix/Selaris系统管理与网络管理[M].北京:清华大学出版社,2002.

[3]SebeH M G.Selaris技术指南[M].北京:机械工业出版社,2001.

篇5:Linux定时备份数据库

#!bin/sh

mkdir /mysqlbackup/`date +%Y-%m-%d`

mysqldump -uroot -p123456 -h192.168.1.1 ap_account -B -R > /mysqlbackup/`date +%Y-%m-%d`/ap_account.sql

sleep 2

.........

HOST=172.20.225.151

USER=root

PASS=123456

echo “Starting to sftp…”

lftp -u ${USER},${PASS} sftp://${HOST} <

cd mysqlbackup/

mkdir `date +%Y-%m-%d`

cd `date +%Y-%m-%d`

lcd /mysqlbackup/`date +%Y-%m-%d`

put ap_account.sql

echo “Over…”

bye

EOF

设置脚本运行权限:chmod 777 sqlbak.sh -R

2、修改/etc/crontab #添加计划任务

vi /etc/crontab

例如:

01 2 * * 1 root /sqlbak.sh每周五凌成2点开始自动执行sqlbak.sh

3、重新启动crond使设置生效

/etc/rc.d/init.d/crond restart

chkconfig crond on #设为开机启动

service crond start #启动

篇6:Linux定时备份数据库

代码如下复制代码

#!/bin/bash

D=“/root/backup”

T=`date +%Y%m%d`

if [ ! -d “${D}/${T}” ]; then

/bin/mkdir “${D}/${T}”

fi

/usr/local/mysql/bin/mysqldump --host=localhost --user=root --password=数据库密码 要备份的数据库名 > “${D}/${T}/${T}.sql”

cd ${D}

/bin/tar -czf “${D}/${T}.tar.gz” “${T}”

/usr/bin/scp “${D}/${T}.tar.gz” kuco@x4100.unix-center.net:~/web_backup/studyday.net

2, 设置 Crontab , 更多的 crontab 介绍在这里

代码如下复制代码

crontab -e

30 04 * * * /bin/sh /root/backup/web_backup.sh

3, 可能会遇到的问题:

在 STEP 1 中 scp 远程复制命令时会遇到输入密码的提示, 如果没有密码输入, 会导致复制不成功. 通过百度找到了解决的办法.

1, 在 VPS 服务器上的 ~/.ssh/ 目录下生成密钥文件:

代码如下复制代码mkdir -p ~/.ssh

ssh-keygen -t rsa -P “” -f ~/.ssh/id_rsa

2, 在 x4100 服务器上配置:

代码如下复制代码mkdir -p ~/.ssh

touch ~/.ssh/authorized_keys

3, 将 VPS 服务器的 ~/.ssh/id_rsa.pub 内容追加到 x4100 服务器的 ~/.ssh/authorized_keys 里面

篇7:Linux定时备份数据库

简单的网站备份脚本

代码如下复制代码

#!/bin/bash

#backup database

mypw=CactiEZ

newtime=$(date +%Y%m%d)

if [ -d /var/www/backup/ ];then

mysqldump -u root -p$mypw DB >/var/www/backup/$newtime-Database.sql

else

mkdir /var/www/backup/

mysqldump -u root -p$mypw DB >/var/www/backup/$newtime-Database.sql

fi

tar -zcvf /var/www/backup/$newtime-www.tar.gz /var/www/

find /var/www/backup/ -mtime +4 -exec rm -rf {} ;

还有一个更高级的自动备份网站/数据库/绑米信息/自动上传FTP脚本

本脚本特色:

1.纯zip压缩,1-9可自行调整压缩率

2.整台VPS备份,还原方便,非常适合站群

3.加入压缩密码,可以自己设置

4.加入绑米信息伪静态压缩,防止伪静态弄丢

5.请确保在home目录下有backup目录,如果没有请执行 mkdir /home/backup

6.还原数据库请参考:导入数据库方法

最后更新时间:8月25日

centos安装zip

yum install zip

debian安装zip

apt-get install zip

下载编辑

wget -c www.***.com/soft/beifen.sh

vi beifen.sh

只编辑注解为需要修改的地方

【脚本开始】

代码如下复制代码

#!/bin/bash

#下面的参数是你要修改的

MYSQL_USER=root                            #mysql用户名

MYSQL_PASS=mysql密码                     #mysql密码

FTP_USER=FTP用户名                             #ftp用户名

FTP_PASS=FTP密码                        #ftp密码

FTP_IP=FTP地址                         #ftp地址

FTP_backup=FTP目录                         #ftp上存放备份文件的目录,这个要自己得ftp上面建的

WEB_DATA=/home/wwwroot/                         #要备份的网站数据

WEB_BANGMI=/usr/local/nginx/conf/                         #要备份的绑米信息

WEB_MULU=/home/backup                   #备份文件存放目录

WEB_MIMA=zhujima                   #备份时候的密码

WEB_YASUOLV=1                              #压缩率 1-9 如果VPS没有zip,请安装zip

#上面是你要修改的地方

#删除淘宝客缓存,属于自定义设置,

可自行操作

#rm -rf /home/wwwroot/1.com/Apicache/*

#定义数据库的名字和旧数据库的名字

DataBakName=Data_$(date +“%Y%m%d”).zip      #定义数据库名字

WebBakName=Web_$(date +%Y%m%d).zip          #定义备份网站名字

BANGMI=BANGMI_$(date +%Y%m%d).zip           #定义绑米备份名字

ldData=Data_$(date -d -5day +“%Y%m%d”).zip #定义5天前数据库名字

ldWeb=Web_$(date -d -5day +“%Y%m%d”).zip   #定义5天前网站名字

BANGMIshan=BANGMI_$(date -d -5day +“%Y%m%d”).zip  #定义5天前绑米名字

#删除本地3天前的数据

rm -rf $WEB_MULU/Data_$(date -d -3day +“%Y%m%d”).zip $WEB_MULU/Web_$(date -d -3day +“%Y%m%d”).zip $WEB_MULU/BANGMI_$(date -d -3day +“%Y%m%d”).zip

#导出全部数据库

cd $WEB_MULU

/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS --all-databases >$(date +“%Y%m%d”).sql

#压缩数据库文件为一个文件

zip -r -$WEB_YASUOLV -P $WEB_MIMA $DataBakName $WEB_MULU/*.sql

rm -rf $WEB_MULU/*.sql

#压缩网站数据

cd $WEB_DATA

zip -r -$WEB_YASUOLV -P $WEB_MIMA $WebBakName ./*

mv $WebBakName $WEB_MULU/$WebBakName

cd $WEB_MULU

#压缩绑米信息

cd $WEB_BANGMI #进入绑米目录

zip -r -$WEB_YASUOLV -P $WEB_MIMA $BANGMI ./*

mv $BANGMI $WEB_MULU/$BANGMI

#上传到FTP空间,删除FTP空间5天前的数据

cd $WEB_MULU #进入备份目录

ftp -v -n $FTP_IP << END

user $FTP_USER $FTP_PASS

type binary

cd $FTP_backup

delete $BANGMIshan

delete $OldData

delete $OldWeb

put $DataBakName

put $WebBakName

put $BANGMI

bye

END

加入权限,写入定时执行

chmod 777 /root/beifen.sh

crontab -e

篇8:Linux系统下数据备份与恢复

任何系统都有可能遭遇到一些无法考虑到的失效, 比如人为误操作, 电气故障, 以及自然界不可抗力等等, 在这些情况威胁下, 数据备份就成为非常重要和必要的安全措施。

2 备份的策略

基本的备份策略分为下面三类:

完全备份 (full backup) :对文件系统中所有的文件和目录进行备份。其特点是备份时间长, 存储的数据量大, 通常是在安装好系统时首次创建备份时执行一次完全备份。

增量备份 (Incremental backup) :只备份上次完全备份或增量备份以来新创建、新修改的文件。它的特点是最少的备份时间, 最小的数据存储空间, 但在恢复过程时需要将之前的完全备份和增量备份逐一恢复, 因此时间上较慢。

差异备份 (differential backup) :差异备份与增量备份类似, 只备份更动过的数据。区别是增量备份的是上一次备份以 (无论是哪种数据备份方式) 来, 所有发生变化的文件;差异备份则要对完全备份以来, 更新之后, 与完全备份有差异的部分进行备份。

3 备份工具命令

3.1 dd命令

dd是Linux下常用的磁盘文件系统完全备份命令。它针对指定大小的磁盘区块进行物理读写的拷贝, 还能在拷贝的同时进行一些必要的压缩转换。因为其低级读写的特性, 常常用它来进行整块硬盘间的拷贝, 还有就是特殊磁道的备份。

3.2 tar命令

tar是Linux系统针对文件系统指定文件的归档、打包工具。配合压缩工具也能对打包后进行压缩处理。

3.3 cpio命令

cpio命令也是通过拷贝的方式实现文件或文件系统的备份与恢复。它与tar的不同之处在于它能通过重定向以及管道操作, 可以将文件发送给外部设备。

3.4 dump和restore命令

dump与restore命令用来实现在Linux下的增量备份与差异备份。

参考文献

篇9:Linux定时备份数据库

关键词:数据备份 Linux Rsync

中图分类号:TP309.3文献标识码:B 文章编号:1673-8454(2009)19-0027-02

校园网建设的工作重心主要集中在保证网络的正常运行和提供良好的网络服务。除此以外,数据备份也是网络管理员的重要职责之一。对数据进行自动远程备份是保证数据安全的有效方法。

一、现状

校园网中的应用系统,比如计费系统和电子邮件系统中积累了大量的用户数据,包括用户的费用和邮件等重要信息,对于此类敏感又很重要的数据一定要做好备份。这些数据具有实时性的特点,即信息随时都在发生动态变化。因此,要求能够对数据做到周期性自动跟踪,反之,需要恢复数据时能够恢复到离故障点较接近的时间点,丢失的数据尽可能少且在大多数用户的可接受范围内。

目前我校没有为备份提供专用的存储空间,在这种情况下,可以使用一台性能相对稳定并且磁盘空间较大的已被替换下来的服务器,作为存储平台。同时能够找到一种相对灵活的备份方案实现备份需求。但是用什么方法将数据传输过来呢?

二、选择方案

由于我校大多数应用系统都使用Linux操作系统,在Linux操作系统中数据备份方法通常有:(1)Linux系统中常用的备份工具tar、dump、restore等,但这些工具大多数适合本地备份,对不同主机之间的远程备份往往力不从心。(2)选择商业化的备份和镜像产品,但是这种产品通常价格昂贵。对于价格高的项目需要审批,从立项到实施周期长。(3)编写脚本,使用FTP等工具定时传输数据,但是这种方法的缺点是每次都要将所有文件和数据重新传输一遍,将要备份的文件和已备份文件没有比较,不考虑哪些文件是新增加的和更新的。当需要备份的数据量较大时,更是需要较长时间的网络传输,效率低。(4)使用自由软件——远程传输工具Rsync,Rsync是一个小巧而灵活但是功能强大的远程备份工具,它使用“Rsync演算法”提供一个非常快速的文件传输方法,使得本地和远端主机间的文档达到同步。Rsync只有第一次备份时需要传输所有数据文件,以后传输数据时会比较两组数据,相同的不再传输,只传输发生变化的数据部分,因此速度相当快,而且节省网络带宽。由此可以看出,选择Rsync做备份工具是最佳选择。

三、制定备份策略

实时数据备份对服务器和网络带宽的要求较高,因为不停地备份会降低服务器性能,而且会造成网络负荷过重。与提供良好的网络服务相比,数据备份应该是第二位的,当出现争抢资源时应该让位于网络服务。因此需要制定一个折中的策略——选择一个合适的时间间隔。白天服务器的访问量大,用户操作频繁,此时不适宜做备份,而晚上的访问量相对较低,系统和网络都处于空闲的状态,此时做备份既可利用系统的低使用率也不会增加网络负载。因此,选择每天凌晨备份,一天的数据差别在用户的可接受范围内。

四、实施方法

Rsync是以服务器/客户端的方式工作的,较为特殊的一点是Rsync服务器和客户端都使用同一个程序。启动服务器的时候需要指明以daemon方式运行,表明启动的是服务器。而启动客户端程序的时候则不需要指定daemon选项。

每台需要备份数据的服务器在设置上都类似,因此以一台服务器和一组待备份数据为例。例如,需要备份数据的服务器IP地址为10.0.0.1,该主机称之为Rsync-server,程序以daemon方式运行;作为存储平台的主机IP地址为10.0.0.200,运行Rsync客户端程序,该主机称之为Rsync-client。Rsync程序默认运行在TCP的873端口,即Rsync-server会监听873端口,等待对方的rsync连接。当以认证方式登录时,Rsync-server与Rsync-client连接时会检查密码是否相符,如果相符则开始文件传输。

1.Rsync-server(10.0.0.1)的配置

Rsync-server需要设置以下几项:

明确需要建立备份的目录

设置/etc/xinetd.d/rsync

设置/etc/rsyncd.conf

设置密码文件

(1)目录/udata以及子目录中存有用户数据,需要备份。

(2)设定/etc/xinetd.d/rsync,确保文件中两个参数:

disable = no

server_args = --daemon

使用命令service xinetd restart,使设置生效,使rsync服务进程以daemon方式运行rsync。

(3)Rsync服务器最重要最复杂的就是配置文件/etc/rsyncd.conf,这个配置文件控制着Rsync服务器的认证、访问、日志、可用模块等信息。该文件由一个或多个模块结构组成。一个模块定义是以方括弧中的模块名开始,直到下一个模块名或者文件结束。每个模块对应一个需要备份的目录。配置文件以行为单位,模块中的行是一些参数赋值或注释等。

uid = root

read only = yes

list = no

log file = /var/log/rsyncd.log

pid file = /var/run/rsyncd.pid

hosts allow = 10.0.0.200

hosts deny = 0.0.0.0/32

[userdata]

path = /udata

ignore errors

read only = yes

list = no

auth users = secretuser

secrets file = /etc/rsyncd.secrets

前五行指定在daemon模式下运行的Rsync-server是以root用户的只读方式运行,指定日志和运行时的进程ID的存放位置,以及允许连接的Rsync客户端地址等。这些选项是全局的。在模块[userdata]中指定了需要备份的目录,忽略了一些无关的IO错误,不允许列文件,备份时需要认证,及密码文件的存放位置等。

(4)密码文件的格式很简单,账号:密码。例如,/etc/rsyncd.secrets的内容可设为:

secretuser:secretpasswd123

注意,一定要设置密码文件的属主和权限,否则备份会失败。

#chown root.root rsyncd.secrets

#chmod 600 rsyncd.secrets

2.Rsync-client(假设主机地址为10.0.0.200)的配置

Rsync需要设置如下几项:

规划一个容量足够大的独立分区,并设置好存储目录

编写备份指令文件

将指令加入crontab列表中,完成定时备份

(1)设置存储目录为/backup。

(2)编辑文件rsync-restore,并存放在某一目录下,比如/目录下,文件内容为:

rsync-tvzrp-progress-delete secretuser@10.0.0.1::userdata /backup-passwd-file=/etc/rsyncd.pass

命令参数-tvzrp中的v是将传输过程显示到屏幕中,z是传输时压缩数据,r是逐级保留目录及目录下文件,tp是保持文件原有属性如权限、时间等参数。-progress指示详细的进度。-delete删除在Rsync-client上存在而Rsync-server上不存在的额外文件,精确保存副本。这一选项对邮件服务器很有实施价值,如果不删除已经不存在的文件,比如用户邮件,当恢复数据时,被用户删除过的邮件又会出现在用户的邮箱当中,这种莫名其妙的事情发生会给用户造成困扰。-passwd-file:指定用于rsync服务器的用户验证密码。/etc/rsyncd.pass文件中指定访问密码,内容为:secretpasswd123(与Rsync-server的/etc/rsyncd.secrets文件中密码一致),设置文件权限为读写 #chmod 600 rsyncd.pass。

注意,要修改rsync-restore文件的权限,否则备份不会成功。

#chmod 755 rsync-restore

(3)使用crontab命令定时备份文件,编辑如下内容:

0 2 * * * /rsync-restore

这样,每天凌晨2点Rsync-server就将待备份目录/udata以及目录下的文件以目录树结构做镜像自动备份到Rsync-client的/backup目录下。

五、结束语

当需要恢复数据时,在保证重新架设的应用服务程序与原服务程序保持一致的前提下,只要将备份的整个目录树恢复到服务器相应的目录下即可。注意,备份实施过程中设置rsync相关文件时,一定要设置使用权限,否则将导致备份失败。一般来说,备份用户数据比备份系统数据更频繁一些,合理规划备份方案,明确备份的内容、备份时间及备份方式,并进行适时备份可以有效防止重要数据的丢失。在日常工作中,备份是管理员的一项重要工作,掌握好备份技巧对管理员的工作很有帮助。

参考文献:

[1]用Rsync对网站进行镜像备份[EB/OL]. http://fanqiang.chinaunix.net/a6/b7/20010908/1305001258_b.html

[2]Linux下的远程备份(镜像)工具Rsync[EB/OL]. http://wuwd.blog.ubuntu.org.cn/2007/12/22/

篇10:Linux定时备份数据库

数据库备份是非常重要的。如果定期做好备份,这样就可以在发生系统崩溃时恢复数据到最后一次正常的状态,把损失减小到最少。

一、用命令实现备份

MySQLl提供了一个mysqldump命令,我们可以用它进行数据备份。

按提示输入密码,这就把tm数据库所有的表结构和# mysqldump -u root -p tm >tm_050519.sql数据备份到tm_050519.sql了,因为要总进行备份工作,如果数据量大会占用很大空间,这时可以利用gzip压缩数据,命令如下:

# mysqldump -u root -p tm gzip >tm_050519.sql.gz

系统崩溃,重建系统时,可以这样恢复数据:

# mysqldump -u root -p tm < tm_050519.sql

从压缩文件直接恢复:

#gzip < tm_050519.sql.gz mysqldump -u root -p tm

当然,有很多MySQL工具提供更直观的备份恢复功能,比如用phpMyAdmin就很方便。但我认为,mysqldump是最基本、最通用的。

二、利用crontab,系统每天定时备份mysql数据库

利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的,

1、创建保存备份文件的路径/var/backup/mysqlbak

# mkdir -p /var/backup/mysqlbak

2、创建/usr/sbin/bakmysql文件

#vi /usr/sbin/bakmysql.sh

#!/bin/bash# mysql备份脚本cd /var/backup/mysqlbak/dateDIR=`date +“%y-%m-%d”`mkdir -p $dateDIR/datafor i in `/usr/local/www/mysql/bin/mysql -uroot -plin31415926 -e “show databases” grep -v “Database” grep -v “information_schema”`do /usr/local/www/mysql/bin/mysqldump -uroot -plin31415926 $i gzip >/var/backup/mysqlbak/$dateDIR/${i}_${dateDIR}.gzdone

3、修改文件属性,使其可执行

# chmod +x /usr/sbin/bakmysql

4、修改/etc/crontab

# crontab -e在下面添加01 3 * * * root /usr/sbin/bakmysql

#表示每天3点钟执行备份

篇11:WPS定时自动备份怎么修改

WPS定时自动备份怎么修改

第二步:在“选项”对话框中,选择“常规与保存”选项卡。

WPS定时自动备份怎么修改

第三步:在“定时备份,时间间隔”文本框中,设置间隔时间。

篇12:Linux定时备份数据库

at命令可以在某个时间运行某个程序,而mail可以以命令行的方式把存于一个文本中的邮件正文发送抄送出去。

具体用法:

1. 把email正文预备好,比如写在email.txt里

2. 然后写一个脚本,如run.sh

#!/usr/bin/bash

mail -s “Title here” -c Address_CC Address_To < email.txt

3. 命令行里执行

at 0815am Jan 24

at>./run.sh

at>^D

run.sh就可以在8:15am, Jan 24执行了

不过有些服务器限制了对at命令的使用,这样还有一个笨方法,

在run.sh的开头加上“speep time”,然后直接运行run.sh,在转至后台就可以了,

time在这里是整数,指多少秒。

篇13:Linux定时备份数据库

1 Linux内核时钟机制

与Linux2.4内核相比,Linux2.6内核将内核时间频率“Hz”,由原来的100提高到了1000,对于内核的时钟精度的提升是显而易见的:更高的时钟中断解析度(resolution)可以提高时间驱动时间的解析度(1ms);提高了时间驱动事件的准确度(accuracy)(事件的响应的平均误差降低10倍(0.5ms);内核定时器能够以更高的频度和更高的准确度运行;依赖定时值执行的系统调用,如po11Q和selectQ能够以更高的精度运行;对诸如资源消耗和系统运行时间等的测量会有更精细的解析度;提高进程抢占的准确度,加快调度响应的时间。

然而,即使是1ms的时钟精度,对于高精度的实时应用来说仍然是不够的。大量的高实时性应用中,时钟精度往往要求达到微秒级,否则大量实时进程将无法得到即时响应。一个简单而直接的方法是继续提高内核的时间频率“Hz”,如提高到1000000,即可达到1us的时钟精度。但是,这样大幅度地提高时钟精度的方法是以严重降低系统负载性能为代价的:时间频率提高1000倍,意味着时钟中断频率提高了1000倍,使中断处理程序占用CPU时间提高了1000倍,从而减少了CPU处理其他工作的时间,更频繁的扰乱了CPU的高速缓存,最终增加了系统的负载,严重降低了系统性能。

因此,需要考虑更加有效的改造方案,以便达到系统微秒级时钟精度和调度负载增加的平衡。

2 细粒度定时器的实现原理

8253/8254定时器工作于单次触发模式(One-shot Mode)下,将从CPU时间戳计数器TSC(Timestamp Counter)中获得高精度的时间基值,然后根据实时任务的执行时间设置定时器计数初始值寄存器,由于TSC存储着系统启动以来CPU所经历的时钟周期数,所以它的精度可以达到纳秒级,轻松地满足了实时应用中的高时钟精度要求。和周期模式不同,在这种模式下,程序员把预先计算好的数值送至锁存器,然后启动定时器。硬件在自动把锁存器的内容拷贝到计数器,当计数器计数到0时,产生一个中断后,便停止工作,直到有软件再次启动为止。通过对80x86中的三个定时器T/C0,T/C1和T/C2的设置,在系统初始化时,向端口43H写入控制字32H,即可控制时钟以单次触发模式工作。而下一次的中断间隔需要在每次中断产生后重新写入锁存器。在单次触发模式下对时钟中断间隔进行设置,即可实现时钟以微秒级在任何需要的时候产生时钟中断。在任何时刻,时钟的下一次中断将由所有定时器到期时间中最早的一个来决定。一旦定时器到期,内核便能立刻响应,因此内核的响应开销只由中断服务的时间所决定,大约只有几个微秒。

此方法的基本原理:在系统中增加一个新的定时器链表,该链表中每一项的超时处理函数都在中断环境中执行,同时该链表的定时可以精确到微秒级,这是通过x86处理器的时间戳寄存器将系统时钟周期1毫秒进一步细分来实现的。下面讲述具体实现定时器链表类型:

expires_jiffies为还剩下多少个定时器周期该定时器到期,expires_sc为当expires_jiffies为0时,该定时还有多少时间到期,单位为tsc数,即cpu时钟周期数,此项为实现微秒级定时器的关键所在。IRT_timers为定时器链表头。当时钟中断发生时,系统将调用timer_interrupt0函数,对timer_interrupt0函数修改如下:

该函数首先判断当前时钟中断是处于什么状态,如果处于周期性模式(PERIOD_MOD),则查看在下个定时器周期里是否有定时器超时(PERIOD_MOD),则查看在下个定时器周期里是否有定时器超时(HRT_timers->expires_jiffies==0),如果有则将定时器设置为一次性触发模式(ONE_SHOT_MOD),并利用定时器超时的tsc值,转换成PIT counter重新设定定时器计数值,还要将该定时器从定时器链表中移到HRT_timers_should_process链表中,当下次中断时,将调用该定时器的超时处理函数。因为处于周期性模式,所以还要调用标准内核的时钟中断处理函数,以进行标准内核中与时钟中断相关的维护和更新工作。

如果时钟处于一次性触发模式(ONE_SHOT_MOD),说明有超时事件发生,则遍历HRT_timers_should_process链表,并调用其中每个定时器的超时处理函数,接着还会判断该定时器周期是否还有将要超时的定时器,如果有则类似周期性模式利用定时器超时时的tsc值,转换成PIT counter重新设定定时器计数值,还要将该定时器从定时器链表中移到HRT_timers_should_process链表中:如果该定时器周期没有将要超时的定时器(HRT_timers->expires_jiffies!=0),则设置变量pit_mod为PERIOD_MOD以表明下次中断为定时器周期中断,但时定时器硬件此时仍处于一次性触发模式,其计数值对应的tsc个数为上次定时器周期中断时的tsc值(HRT_period_tsc)加上每个定时器周期所对应的tsc(TSC_PER_PERIOD)再减去当前cpu的tsc值。

定时器硬件将在下个时钟中断时设置为周期性模式,上面即为新的时钟中断处理函数的大致处理过程。具体处理流程图如图1所示。对于定时器链表的组织还有2点需要说明一下:

1)定时器链表中,定时器超时时间是本定时器时间相对于前一定时器超时时间的差值,而不是定时器实际的超时时间,这样的好处是不用在每个定时器中断都要遍历定时器链表对其进行处理以更新超时时间,采用差值的方法后,只需在增加定时器时遍历链表,进行插入操作。

2)为了不产生2次中断时间非常短的情况,本定时器设定一个中断间隔时间门限值,该值可以通过系统调用进行调整,因此在HRT_move_timer(HRT_timers_should_process,HRT_timers)中从HRT_timers移到HRT_timers_should_process中的超时定时器可能有多少。

3 系统测试

将通Linux为Red Hat 9,内核版本2.6内核为测试修改后的内核的实时性能,测试按照两种条件进行;轻负载:Linux操作系统只是运行了初始化进程、shell进程。重负载:在轻负载的情况下,拷贝一个大容量文件(100M)。

从表1,表2可以看出:标准的Linux在轻负载下的最长调度误差是2130us,在重负载下更是达到了25600us,而改进的Linux内核不论在轻负载下还是在重负是最长调度延迟都在450us以下。所以改进的Linux内核的实时性能比原有的Linux内核有较大的改善。

重负载的测试结果如表2。

4 结束语

随着嵌入式系统越来越深入到人们的口常生活,廉价而高性能的Linux操作系统成了嵌入式开发人员的主要选择之一。尽管Linux用于嵌入式系统中具有得天独厚的优势,它在实时性方面的缺陷也越来越明显。因此,要将Linux用于嵌入式实时领域,需要对Linux内核进行实时化改造,使它更好地满足实时应用的要求。

参考文献

[1]Michael Beck.Linux内核编程指南[M].北京:清华大学出版社,2004.

[2]赵慧斌,李小群.改善Linux核心可抢占性方法的研究与实现[J].计算机学报,2004,27(2):240.

[3]赵明富.Linux嵌入式系统实时性分析与实时化改进[J].计算机应用研究,2004,(4).

篇14:Linux定时备份数据库

为解决这个问题,我用的是一款多功能时钟软件——AddinTimer绿色版。这是一款可以称得上是很完美的PPC定时任务软件。具有闹钟提醒(可设置多个闹钟,可以用MP3做铃声)、定时短信、定时备份、定时程序、设置报时、自动对时、定时开关机(指的是关闭手机信号,并没有关闭手机电源,可设置多个时间段关闭或打开手机信号)。该软件是绿色版,因为是时钟软件,为了稳定起见,所以装到手机上的Program Files文件夹比较好。

一、呼出软件

它是绿色软件,不需要安装,下载解压后拷贝到手机卡中运行即可进行设置。

注:设置了自动任务之后,软件会自动运行,到时自动执行你设定好的任务,不再需要你去运行。

二、定时控制网络

可以设置定时开启或关闭飞行模式、蓝牙功能或WiFi无线网络。

三、定时自动通信

可以设置定时发送短信、定时呼出电话、定时呼叫转移等。

四、定时切换主题

可以设置让你的手机桌面定时改变主题样式,做到个性化桌面常换常新。

五、定时重启设备

手机长时间不重启,会因驻留内存的程序不能完全释放等原因变得缓慢甚至影响来电。设定定时重启很有必要,最好在后半夜重启,这样重启就在你不知不觉中完成了。

六、定时执行程序

可以设定让你的手机在某个时间运行某个程序,从而自动达到你的某种目的。

七、定时自动备份

你可以设置定时让手机自动为你备份短信、联系人列表、通话记录、个人文件等各类重要数据。

八、定时自动录音

智能手机或掌上设备均有录音功能,你可以根据需要设置好时间,让手机在指定时间自动开始为你录音。偷录适用哦!

九、定时自动报时

你可以设置让你的手机在每到一个整点时为你报时,也可以设置为当按下某个键时为你报时。

十、定时自动对时

电子表走的时间一长就不准了,手机里的时钟也是电子表,会不会出现这种情况呢?肯定会!不过没有关系,使用该软件的自动对时功能可以在你不知不觉中帮你把时间调到最准。

十一、定时提醒

软件还可以充当你的小秘书,提醒你到时候该做的事情。

十二、备份实战

1. 备份联系人信息

2. 备份所有短信

3. 备份通话记录

4. 备份任意文件

5. 数据的恢复操作

有了这款定时工作的“小秘书”,你再也不用发愁忘掉什么事情或耽误什么事情了。不过,如果你忘了给手机充电,“小秘书”断粮了,她不提醒你了,那你就不能怪我没说到了哦。

篇15:Linux定时备份数据库

需求:一台服务器上内容,每天定时备份到远程容灾服务器。为了节省空间和提高传输效率,使用增量备份。

扩展需求:两台服务器实时单向、双向同步某目录下的所有数据。

环境:cent os 5(5.4 5.5 5.6测试通过),系统自带rsync。

1.安装rsync(已经安装可以忽略)

代码如下复制代码

wget rsync.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz

tar xvfz rsync-3.0.7.tar.gz

cd rsync-3.0.7

./configure --prefix=/usr/local/rsync

make && make install

2.配置rsync,创建一个rsyncd.conf文件。

vim /etc/rsyncd.conf

输入以下内容:

代码如下复制代码

uid=nobody

gid=nobody

max connections=36000

use chroot=no

log file=/var/log/rsyncd.log

pid file=/var/run/rsyncd.pid

lock file=/var/run/rsyncd.lock

[htdocs]

comment= backup htdocs

path=/opt/htdocs/view

ignore errors

read nly = yes

host allow = *

host deny=*

secrets file=/etc/rsyncd.passwd

auth users=bakccad

修改:

代码如下复制代码

vim /etc/rsyncd.passwd

输入:

代码如下复制代码username:13577531

执行:

代码如下复制代码

chmod 600 /etc/rsyncd.conf

chmod 600 /etc/rsyncd.passwd

3.启动rsync以服务器端方式:

代码如下复制代码

/usr/local/rsync/bin/rsync --daemon

客户端:

客户端无需安装,只需编辑密码文件输入密码:

代码如下复制代码

vim /etc/rsyncd.passwd

输入:

13577531

执行:

代码如下复制代码

chmod 600 /etc/rsyncd.passwd

客户端执行以下命令即可完成服务器端到本地的同步:

代码如下复制代码

rsync -azP --delete bakccad@1.2.3.4::htdocs /opt/bakroot/rsyncwww/view --password-file=/etc/rsync.passwd

这里命令中htdocs为服务器端配置的名称,

后面路径为保存到的路径。后面是密码文件所在,密码文件只需有密码即可(客户机如果使用user:passwd的形式反而会出现错误)。

附,如果你只是本身备份我们可以直接使用shell命令进行备份

在cron里设置,每周一凌晨2点执行(每周一全备份,其余时间增量备份)

代码如下复制代码

#vi backup.sh

Code highlighting produced by Actipro CodeHighlighter (freeware)www.CodeHighlighter.com/-->#!/bin/bash

# define

dayofweek=`date “+%u”`

today=`date “+%Y%m%d”`

source=/data/

backup=/backup/

# action

cd $backup

if [ $dayofweek -eq 1 ]; then

if [ ! -f “full$today.tar.gz” ]; then

rm -rf snapshot

tar -g snapshot -zcf “full$today.tar.gz” $source --exclude $sourceserver.log

fi

else

if [ ! -f “inc$today.tar.gz” ]; then

tar -g snapshot -zcf “inc$today.tar.gz” $source --exclude $sourceserver.log

fi

fi

上一篇:还我绿色家园——杨艺下一篇:xx保安班长述职报告