mysql、oracle在Linux和Windows下的简单自动备份

前面一段时间已经安装好了mysql、oracle等常用数据库,但是数据库在使用时必须做到定时备份,这样能够在数据库出现问题时及时恢复到可用状态。那么下面我们就在Linux和Windows环境下测试使用mysql和oracle的自动备份脚本。

1.Linux环境下


#!/bin/sh

# Database info
DB_USER=""
DB_PASS=""
DB_HOST=""
DB_NAME=""

# Others vars
BIN_DIR="/ps/mysql/bin"            #the mysql bin path
BCK_DIR="/data/mysqlbak"    #the backup file directory
DATE=`date +"%Y-%m-%d %H:%M:%S"`    #date of now
days=7                      #Backup retention days
# TODO
# /usr/bin/mysqldump --opt -ubatsing -pbatsingpw -hlocalhost timepusher > /mnt/mysqlBackup/db_`date +%F`.sql
# $BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME > $BCK_DIR/db_$DATE.sql
#mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME |gzip > $BCK_DIR/db_dczdpscms_$DATE.sql.tar.gz
$BIN_DIR/mysqldump --opt -u$DB_USER -p$DB_PASS -h$DB_HOST $DB_NAME |gzip > $BCK_DIR/$DB_NAME"_"$DATE.sql.gz
echo $(date ‘+%Y-%m-%d  %T‘) "$DB_NAME数据库备份成功!">>/data/mysqlbaklog/$DB_NAME.log
#Delete expired backups
find $BCK_DIR -type f -name "*.sql" -mtime +$days -exec rm -rf {} \; > /dev/null 2>&1
#-type f   File type found
#-mtime +7  Find files by file change time
#-exec rm -rf {} \;  The exec option is followed by the command or script to be executed, followed by a pair of {}, a space and a \, and finally a semicolon.
#/dev/null 2>&1  Redirect the standard error to standard output and drop it below /dev/null.
#throw all standard outputs and standard errors into the trash can.The & indicates that the command is executed in the background.

以上脚本的功能只是使用mysql的mysqldump工具备份指定的整个数据库,(也可只备份核心表)同时生成压缩的sql文件以gzip压缩成.gz格式。

脚本设定最大保留天数为7天,可以自行设定需要保留的天数。同时在简单输出备份情况到日志文件,方便查看数据库的备份情况。

二、oracle

同样oracle也可以使用同样的方式来备份数据库

#!/bin/bash
export ORACLE_HOSTNAME=
export ORACLE_BASE=/data/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.1/
export ORACLE_SID=orcl
export PATH=.:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/jdk/bin:$PATH
export LC_ALL="en_US"
export LANG="en_US"
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
export NLS_DATE_FORMAT=‘YYYY-MON-DD HH24:MI:SS‘

date=`date +%Y_%m_%d`
#设置删除7天之前的备份文件
days=7
#Oracle数据库服务器IP、端口、SID
orsid=‘orcl‘      

orowner=

bakuser=

bakpass=

bakdir=/data/app/oracle/admin/orcl/dpdump
#备份数据库名称
bakdata=$orowner"_"$date.dmp
#备份执行时候生成的日志文件名称
baklog=$orowner"_"$date.log
#最后保存的Oracle数据库备份文件
ordatabak=$orowner"_"$date.tar.gz

#执行备份
expdp $bakuser/$bakpass  dumpfile=$bakdata log=$baklog schemas=$bakuser
#删除日志文件
find $bakdir -type f -name "*.log" -mtime +$days -exec rm -rf  {} \;
#删除7天前备份文件
find $bakdir -type f -name "*.dmp" -mtime +$days -exec rm -rf {} \;

最近出现了一点oracle的环境配置不生效的问题,我将环境配置写在了脚本中,为了避免指令无法使用

同样也是简单备份同时保留7天。

可以选择使用expdp数据泵和一般的exp来备份数据库(exp可以用来实现增量备份),expdp备份效率高,但是只能在数据库本地使用。

以上仅是简单的数据库备份,考虑到更好的容灾性,首先数据库可以是分布式的,同时之间互相同步备份。一般的情况可以在使用上述脚本后叫入scp命令将备份的数据已到多台存储服务器上,以提到容灾能力。

当备份的内容较多,内容不同时我一般会用时间为分隔将其放入不同的目录文件夹中方便管理。更具体的备份方式会在后续写出来。

2、Windows

在Windows上常用的是Windows自己的脚本批处理来实现,以下为mysql和oracle的.bat批处理文件

一、mysql

@echo off 

MODE con: COLS=71 LINES=25

@echo 变量信息
set "date_time=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%%time:~9,2%"
set "bak_dir=C:\sqlback\"
set "days=7"
@echo 数据库信息
set "db_user=root"
set "db_pass=123456"
set "db_host=localhost"
set "db_name=jdzd"
@echo 创建备份目录
md %bak_dir%
@echo 开始备份数据库。
echo %date_time% Start backing up database files... >> %bak_dir%\sqlback.log
::mysqldump -u%db_user% -p%db_pass% -h%db_host% %db_name% > %bak_dir%\%date_time%%db_name%.sql
mysqldump -u%db_user% -p%db_pass% -h%db_host% %db_name% |gzip > %bak_dir%\%date_time%%db_name%.sql.gz
@echo 删除七天前备份的文件。
forfiles /p "%bak_dir%" /s /m *.gz /d -7 /c "cmd /c del @path"
echo %date_time% Delete expired files! >> %bak_dir%\sqlback.log
echo %date_time% Successfully backed up the database files! >> %bak_dir%\sqlback.log
@echo on
exit

实现的功能同Linux下的一样

二、oracle

@echo 开始备份oracle数据

@echo off
set
set curdir="D:\oraclebackup\badm"
echo %curdir%
set t1=%Time:~0,1%
if "%t1%"==" " set t1=0
set td=%Date:~0,4%%Date:~5,2%%Date:~8,2%%t1:~0,1%%Time:~1,1%%Time:~3,2%%Time:~6,2%
exp badm_gis/[email protected] owner=(badm_gis) file=%curdir%\badm_gis_%td%.dmp rows=y log=%curdir%\badm_gis_%td%.Log buffer=800000

echo 建立压缩文件并删除源备份文件日志文件
zip %curdir%\badm_gis_%td%.zip %curdir%\badm_gis_%td%.dmp %curdir%\badm_gis_%td%.Log
del %curdir%\*.dmp
del %curdir%\*.Log
echo 完成文件压缩
forfiles /p "D:\oraclebackup\badm" /s /m *.* /d -7 /c "cmd /c del @path"
@echo on
@echo 备份oracle数据结束

最近在学习python,有时间会将python写的自动化backup写上来。还有自动化安装部署的内容。

原文地址:https://www.cnblogs.com/observe/p/10750759.html

时间: 2024-10-10 05:27:19

mysql、oracle在Linux和Windows下的简单自动备份的相关文章

mysql数据库在Linux和windows下免安装实现以及框架开发碰到的问题

2017年7月23号下午5:20分,上周我根据自己的实际情况,总结了mysql数据库在windows系统下和linux系统下免安装版本的实现,以及在项目开发中遇到的数据库报错,今天整理出来,以供日后学习之用,同时,我给自己制定了一个计划,每周日会将自己本周碰到的一些问题记录下来,在周日整理出来发布在博客上面,2017年7月23号是我的第一周,我要坚持10年,卢小朋说到做到,加油! 一.linux安装说明 说明 mysql-5.7.14-linux.zip部署包支持在CentOS 6.x/7.x

Oracle instant client在windows下的安装和使用【转】

[转] Oracle instant client在windows下的安装和使用 转载自 placidcreate 最终编辑 placidcreate [安装]从oracle官方网站下载instant client文件,(http://www.oracle.com/technetwork/topics/winx64soft-089540.html) 一般来说,有basic.sqlplus.odbc.jdbc,就足够用的了: instantclient-basic-win32-11.2.0.1.0

Linux和Windows下ping命令详解

转:http://linux.chinaitlab.com/command/829332.html 一.Linux下的ping参数 用途 发送一个回送信号请求给网络主机. 语法 ping [ -d] [ -D ] [ -n ] [ -q ] [ -r] [ -v] [ \ -R ] [ -a addr_family ] [ -c Count ] [ -w timeout ] [ -f | -i \ Wait ] [ -l Preload ] [ -p Pattern ] [ -s PacketS

centos6.4 *64 Linux挂载windows下共享文件夹

centos6.4 *64 Linux挂载windows下共享文件夹 mount //192.168.1.21 /mnt/pub 结果无法正常挂载,提示以下错误,开始以为是因为windows下共享文件夹是ntfs格式的问题,下了一个ntfs-3g,依旧无效,后来发现是少了组件包cifs-utils [[email protected] ~]# mount //192.168.1.25/pub /mnt/pubmount: wrong fs type, bad option, bad superb

[笔记]linux下和windows下的 创建线程函数

linux下和windows下的 创建线程函数 1 #ifdef __GNUC__ 2 //Linux 3 #include <pthread.h> 4 #define CreateThreadEx(tid,threadFun,args) pthread_create(tid, 0, threadFun, args) 5 #define CloseHandle(ph) 6 7 int pthread_create( 8 //指向线程标识符的指针. 9 pthread_t *restrict t

tar.xz如何解压:linux和windows下tar.xz解压命令介绍

在linux下怎么解压和压缩tar.xz文件? (本文由www.169it.com搜集整理) 在linux下解压tar.xz文件步骤 1 2 # xz -d ***.tar.xz  //先解压xz # tar -xvf  ***.tar //再解压tar tar.xz压缩包也是打包后再压缩,外面是xz压缩方式,里层是tar打包方式. 在linux下创建tar.xz文件步骤 1 2 # tar cvf xxx.tar xxx  // 这样创建xxx.tar文件先, # xz -z xxx.tar 

从Docker在Linux和Windows下的区别简单理解Docker的层次结构

上篇文章我们成功在Windows下安装了Docker,输出了一个简单的Hello World程序.本文中我们将利用Docker已有的云端镜像training/webapp来发布一个简单Python的Web程序,在浏览器中输出hello world. 本文内容的测试环境是Windows7下的Docker,用例基于官方文档用例.   一:从运行一个简单的Python Web程序说起 启动Docker客户端并登陆.在客户端中输入以下内容: $ sudo docker run -d -P trainin

Tomcat日志文件的输出在Linux和Windows下的差异

前言 最近老大发现Tomcat的日志文件catalina.out里存在着大量的和公司项目相关的log信息,因为一般都是会使用日志框架并另外将log信息输出到另外的文件里的,catalina.out文件里就不需要这些多余的log信息了. 不过我在测试的时候发现,Linux和Windows下catalina.out文件的输出是有区别的. 在Linux和Windows下的差异 在Windows平台下,所有System.out, System.err以及printStackTrace()输出的log信息

sphinx在windows下的简单安装与使用

1.下载地址 http://sphinxsearch.com/downloads/release/,我这里下的是“Win64 binaries w/MySQL+PgSQL+libstemmer+id64 support”,下载后文件名:sphinx-2.0.6-release-win64-id64-full.zip: 2.将其解压到D: \ sphinx,并在D:\sphinx下新建目录data(用来存放索引文件)与log(用来存放日志文件): 3.将D:\sphinx\sphinx.conf.