■ 江苏 缪振龙
编者按: Shell脚本一直是Linux运维管理的必备工具之一。通过Shell脚本,管理员可以轻松地完成复杂而重复性的维护工作。
单位机房有一台Sun小型机,运行Solaris 10系统,安装Oracle 10g数据库。该小型机通过iSCSI协议连接到远程存储服务器。因为业务数据的重要性,需要对数据进行日常备份。
为提高备份效率,我们通过一个简单的shell脚本实现,由于白天业务流量较大,为不影响业务系统运行,采用crontab在每天晚间自动执行备份脚本,将服务器本地数据备份到远程存储服务器上。经过近一周测试,数据备份运行正常。
图1 创建数据备份目录
图2 数据自动备份
图3 备份脚本内容
1.通 过SecureCRT连接到Sun小型机,创建数据备份目录并赋权,如图1所示。
2.编写shell脚本,实现数据自动备份,如图2所示。
3.编写shell脚本,实现自动备份。
-bash-3.2$ vi oracle_bak.sh
备份脚本内容,如图3所示。脚本结束后,使用wq保存。为防止Oracle在导出过程中出现异常错误,可在业务空闲期执行该脚本测试。确认无误后,再配置Crontab计划任务。
在向Crontab添加定时任务前,先设置环境变量。
-bash-3.2$ EDITOR=vi
-bash-3.2$ export EDITOR
-bash-3.2$ crontab -e
#每天晚间11点自动执行脚本备份数据
0 23 * * * /export/home/oracle/oracle_bak.sh
图4 备份情况
配置脚本和Crontab计划后的第二天,查看前一天的备份情况,如图4所示。
可以看出,备份过程中没有出现警告。有的表是通过直接路径方式导出,通过查阅相关资料。备份如果采用直接导出模式,数据将直接从磁盘中读取到导出session的UGA中,跳过SQL命令处理层,避免了不必要的数据转换,比传统导出方式提高2至3倍速度。
除了采用将数据备份到远程iSCSI磁盘,我们还可以在内网中搭建NFS服务器,将数据备份到NFS共享盘中。两种方式相比,NFS是基于文件级的存储,具有较高的可视性。而iSCSI方式则是基于数据块级的存储,提供数据块集合供用户访问。两种方式孰优孰劣,业界暂无定论。由于业务需求为备份数据库,从安全性和传输性能方面来看,笔者更倾向于采用iSCSI方式。
现在运维技术已经越来越向自动化、智能化方向发展。这就要求运维人员一定要紧跟新时代发展步伐,不断提高自身运维能力。
更正声明:在2019年第4期“基础设施与数据管理”栏目中文章“安装Kali Linux”的署名更正为“潍坊工程职业学院信息工程系 赵培元”。