虚谷数据库定时备份
在实际生产环境中,很多异常(比如硬件资源故障)都有可能导致数据丢失,为保证数据的完整性,除多副本存储机制外,虚谷数据库还提供了更加灵活的备份方案,通常可使用以下两种备份方式进行定时备份:
一、操作系统层:shell脚本+定时任务(crontab)
1.1编写备份脚本
该方式需用到xgconsole工具连接到数据库中执行back database备份命令。各路径按实际情况修改,最好使用绝对路径。可通过创建空库来测试脚本是否正确生效。
vim backupdb.sh
讯享网
讯享网#!/bin/bash datetamp=`date +%Y%m%d%H%M%S` #需备份的库名,空格隔开 DB_NAMES=(DB_NAME1 DB_NAME2) for db_name in ${DB_NAMES[@]} do cd /home/xugu/ ./xgconsole nssl 127.0.0.1 5138 ${db_name} SYSDBA SYSDBA <<EOF checkpoint; backup DATABASE to '/BACKUP/${db_name}.exp'; EOF mv /home/xugu/XGDBMS/XHOME/BACKUP/${db_name}.exp /home/xugu/XGDBMS/XHOME/BACKUP/${db_name}_${datetamp}.exp done #保留天数,按需修改 find /home/xugu/XGDBMS/XHOME/BACKUP/ -type f -mtime +7 -name '*.exp' -exec rm -f {
} \;
1.2创建定时任务
通过/etc/crontab创建定时任务,脚本路径按实际情况修改,定时备份时间按生产需求修改,建议定在业务访问量小的时候。
vim /etc/crontab
在最下方添加行,作用为:每天02:00使用root用户执行backupdb.sh脚本
讯享网SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 0 2 * * * root sh /home/xugu/backupdb.sh
二、数据库层:定时任务(job)
2.1创建备份计划
使用SQL命令来创建备份计划,备份策略为对当前数据库进行备份,需要登录到需要被备份的数据库中,执行以下SQL创建备份计划,策略为每天备份一次,备份数据保留7天(其中DB_NAME按实际情况修改)。
USE DB_NAME1; EXEC dbms_backup.create_plan('DB_BAK1','EXP','/BACKUP','2023-12-28 14:00:00',INTERVAL '0 0:10' DAY TO MINUTE); EXEC dbms_backup.Add_Export_Item('DB_BAK1','DB_NAME1','database','DB_NAME1.EXP',INTERVAL '0 0:0' DAY TO MINUTE); EXEC dbms_backup.add_file_item('DB_BAK1','DB_NAME1.EXP',6,'DELETE',NULL); EXEC dbms_backup.Enable_Plan('DB_BAK1',true); --每个要备份的库均需创建备份计划 USE DB_NAME2; EXEC dbms_backup.create_plan('DB_BAK2','EXP','/BACKUP','2023-12-28 14:00:00',INTERVAL '0 0:10' DAY TO MINUTE); EXEC dbms_backup.Add_Export_Item('DB_BAK2','DB_NAME2','database','DB_NAME2.EXP',INTERVAL '0 0:0' DAY TO MINUTE); EXEC dbms_backup.add_file_item('DB_BAK2','DB_NAME2.EXP',6,'DELETE',NULL); EXEC dbms_backup.Enable_Plan('DB_BAK2',true);
如需删除备份计划,可执行以下操作:
讯享网exec dbms_backup.enable_plan('DB_BAK1',false); exec dbms_backup.drop_plan('DB_BAK1');
2.2创建定时作业
需要创建定时作业来定时调用步骤1创建的备份计划,执行以下SQL命令创建定时作业,策略为每天凌晨1点定时调用备份计划。
USE DB_NAME1 EXEC DBMS_SCHEDULER.CREATE_JOB( 'BAK_DATABASE', 'PLSQL_BLOCK', 'declare begin DBMS_BACKUP.RUN(); end;', 0, '2023-12-28 14:00:00', 'FREQ=DAILY;INTERVAL=1;BYHOUR=1;', '2199-12-31 23:00:00', 'DEFAULT_CLASS', true, false, null); --每个备份计划均需创建定时作业 USE DB_NAME2 EXEC DBMS_SCHEDULER.CREATE_JOB( 'BAK_DATABASE', 'PLSQL_BLOCK', 'declare begin DBMS_BACKUP.RUN(); end;', 0, '2023-12-28 14:00:00', 'FREQ=DAILY;INTERVAL=1;BYHOUR=1;', '2199-12-31 23:00:00', 'DEFAULT_CLASS', true, false, null);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/121751.html