Linux下数据库备份 - 清秋扶摇

时间:2024-03-06 13:56:35

Linux下数据库备份

1、登录数据库服务器并切换到数据库用户下

[root@*** ~]# su - oracle

2、测试用户名密码是否能正确连接数据库

[oracle@*** ~]$ sqlplus username/passwd

3、创建本地每日备份脚本文件exp_day.sh(创建在当前目录下)

[oracle@*** ~]$ vi exp_day.sh

#编辑添加以下内容

date=`date "+%Y%m%d"`
USERID=username/passwd
DMPFILE=/home/oracle/db_backup/backup_备份文件名_$date
LOGFILE=/home/oracle/db_backup/backup_$date
exp $USERID file=${DMPFILE} log=$LOGFILE

4、设置文件执行权限

[oracle@*** ~]$ chmod 755 exp_day.sh

5、创建保存目录

[oracle@*** ~]$ mkdir db_backup

6、执行脚本文件,测试脚本

[oracle@*** ~]$ ./exp_day.sh 

脚本正确的话界面会出现数据库对象export过程;

此外,也可通过[oracle@*** ~]$ ls -ltr 命令查看/home/oracle/db_backup目录下是否生成下面的.dmp和.log文件验证:

-rw-r--r-- 1 oracle oinstall 12140544 8月 8 13:50 backup_devmng_20180808.dmp
-rw-r--r-- 1 oracle oinstall 3554 8月 8 13:50 backup_20180808.log

7、创建ftp.sh脚本文件,将上面导出的dmp文件上传到其他服务器,进行异地备份(本地需安装并启动ftp服务)

[oracle@*** ~]$ vi ftp.sh 

# 编辑添加以下内容,把本次备份传至备份服务器

date=`date "+%Y%m%d"`
ftp -in <<!
open 10.46.*.*   #备份服务器ip
user root 123  #备份服务器用户 密码
bin
lcd /backup/dmp/  #本地待备份文件
cd crm  #指定备份服务器目录
mput *$date.dmp
bye

8、上面的异地备份也可以通过scp服务进行

[oracle@*** ~]$ vi scp.sh 

# 把本次备份传至备份服务器

date=`date "+%Y%m%d"`
scp backup_备份文件名_$date.dmp(注释:上面的导出文件) 备份服务器用户@备份服务器IP:/back_up/xxx(注释:备份目录)

9、测试异地备份脚本

[oracle@*** ~]$ ./ftp.sh 

然后到备份服务器相应目录下查看是否存在;测试完成后删除异地服务器备份文件。

10、将执行脚本文件添加到crontab计划任务中

[oracle@***~]$ crontab -e  #说明:-e:编辑该用户的计时器设置;-l:列出该用户的计时器设置

#编辑添加以下内容

02 22 * * * /home/oracle/exp_day.sh  # minute hour day month week 指令:分 时 日 月 周 指令

01 23 * * * /home/oracle/ftp.sh  # minute hour day month week 指令:分 时 日 月 周 指令

如果oracle用户没有设置相应的环境变量可能会导致脚本文件执行失败,也可以通过下面方式,在root用户下添加crontab计划任务:

[oracle@*** ~]$ exit  #切换到root用户

[root@***~]$ crontab -e

#编辑添加以下内容

02 22 * * * su - oracle -c  "/home/oracle/exp_day.sh"

 =================================================================================================================================

 以上就是数据库备份的过程。需要说明的是,本文只是提供一种借鉴方法,可能大家会因系统环境的不同而出现不可预见的问题。后续本文将继续更新和完善,增加对备份文件的压缩和定期删除。

2018-08-0811:30:13