达梦数据库异地定时备份
1 环境准备
在数据库备份服务器部署新的达梦数据库服务(无需创建数据库实例)
参考文档:KylinV10x86架构安装达梦数据库
2 数据库备份
2.1上传备份脚本并修改
上传【达梦数据库备份还原】文件夹下的【dm_backup】文件夹至服务器【/usr/local/telewave】
并修改【/usr/local/telewave/dm_backup】路径下【back_dmdb.sh】备份文件中对应的参数
#!/bin/bash # 数据库环境变量 export DM_HOME="/usr/local/dm" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$DM_HOME/bin" export PATH="$DM_HOME/bin:$PATH" export LANG=en_US.UTF-8 export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 # 当前时间,精确到分钟 date=$(date +%Y%m%d%H%M) # 逻辑备份路径 bakdir=/usr/local/dm_backup/back_data # 设置保留数据的天数 days=10 # DM数据库IP、端口 dmid=192.168.0.72:5632 # 备份用户和密码 bakuser=SYSDBA bakpass="SYSDBA" # 备份模式列表 schemas=("auth""config") # 遍历模式列表进行备份 for schema in "${schemas[@]}"; do # 备份文件名称 bakdata="${schema}_${date}.dmp" baklog="${schema}_${date}.log" dmdatabak="${schema}_${date}.tar.gz" # 导出dmp和log文件 dexp "$bakuser/$bakpass@$dmid" file="$bakdir/$bakdata" log="$bakdir/$baklog" directory="$bakdir" schemas="$schema" dexp_exit_status=$? # 检查dexp命令是否成功执行 if [ $dexp_exit_status -ne 0 ]; then echo "dexp failed for schema $schema" continue fi # 压缩dmp和log文件 tar -zcvf "$bakdir/$dmdatabak" "$bakdir/$bakdata" "$bakdir/$baklog" tar_exit_status=$? # 检查tar命令是否成功执行 if [ $tar_exit_status -ne 0 ]; then echo "tar failed for schema $schema" continue fi #删除log文件 find $bakdir -type f -name "*.log" -mtime +$days -exec rm -rf {} \; #删除dmp文件 find $bakdir -type f -name "*.dmp" -exec rm {} \; done # 删除10天前备份的压缩文件 find "$bakdir" -type f -name "*.tar.gz" -mtime +$days -exec rm -f {} \;
2.2授权备份脚本可执行权限
chmod +x ./ksql_backup/*.sh
2.3设置定时备份任务
使用linux中的Crontab 工具定时执行数据库备份脚本。
使用 crontab -e 创建定时任务
crontab -l 查看设置的定时任务
每天凌晨两点执行数据库备份 00 02 * * * /usr/local/telewave/dm_dbbak/back_dmdb.sh
3 备份文件还原
3.1 上传备份还原脚本并修改
上传 【达梦数据库备份还原】 文件夹下的【dm_restore】文件夹至服务器【/usr/local/】
修改【/usr/local/dm_restore/】路径下【dmdb_restore.sh】还原脚本中参数
#!/bin/sh #环境变量 #数据库安装路径 export DM_HOME="/usr/local/dm" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/dm/bin" export PATH="$DM_HOME/bin:$PATH" export LANG=en_US.UTF-8 export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 #还原设置 #当前时间 date=$(date +%Y%m%d%H%M) #要还原的目标DM数据库IP、端口 dmid=192.168.0.72:5632 #数据库用户名 bakuser=SYSDBA #用户密码 bakpass="SYSDBA" #还原模式 schema=auth #还原文件路径 restoredir=/usr/local/dm_restore/restore_data #还原文件名 restorefile=auth_202407101651.dmp # 开始还原 dimp $bakuser/$bakpass@$dmid FILE="$restorefile" LOG=db_str_$schema_$date.log SCHEMAS=$schema DIRECTORY=$restoredir
3.2 上传备份文件
上传备份文件至/usr/local/dm_restore/restore_data目录
3.3 授权备份脚本可执行权限
chmod +x dmdb_restore.sh
3.4 执行备份脚本等待还原
./dmdb_restore.sh