一 备份需求
数据量较小,可以使用sys_dumpall进行全库备份
备份频率每天
备份设置保留时间
备份到其他服务器
环境:
-
相关服务器: 数据库(192.168.1.2)-- > 备份服务器(192.168.1.3)
-
备份脚本执行用户: devUser
二 前期准备
## 登录数据库服务器192.168.1.2
mkdir -p /mnt/data/backup4kingbase/scripts /mnt/data/backup4kingbase/backupdata
# 免密登录到备份服务器
ssh-keygen
ssh-copy-id -p 22 devUser@192.168.1.3
## 备份服务器192.168.1.3上devUser用户创建目录
mkdir -p /mnt/data/backup4kingbase/scripts /mnt/data/backup4kingbase/backupdata
三 数据库服务器脚本
1. 创建备份脚本:/mnt/data/backup4kingbase/scripts/kingbase_backup.sh
#!/bin/bash
DATE="$(date +"%Y-%m-%d")"
BACK_BASE_DIR=/mnt/data/backup4kingbase/backupdata
BACKDIR="${BACK_BASE_DIR}/${DATE}/"
mkdir -p ${BACKDIR}
echo "---------------${DATE}开始备份----------------"
cd ${BACKDIR} && /mnt/data/kingbase/ES/V8/ClientTools/bin/sys_dumpall -Usystem -p54321 >all_kingbase_db.sql
echo "---------------压缩备份文件$(date +"%Y-%m-%d %H:%M:%S")----------------"
cd ${BACK_BASE_DIR}
tar -czvf ${DATE}.tar.gz ${DATE} --remove-files
echo "---------------传输到备份服务器$(date +"%Y-%m-%d %H:%M:%S")----------------"
/usr/bin/rsync -azv --progress -e "ssh -p 18922 " ${BACK_BASE_DIR}/ devUser@192.168.1.3:${BACK_BASE_DIR}/
echo "---------------删除三天前备份的文件$(date +"%Y-%m-%d %H:%M:%S")----------------"
cd /mnt/data/backup4kingbase/backupdata && find . -type f -name "*.tar.gz" -mtime +5 | tee -a delete_list.log | xargs rm -f
echo "---------------备份结束$(date +"%Y-%m-%d %H:%M:%S")----------------"
2. 创建定时任务,每天早上1点10分执行
10 1 * * * /mnt/data/backup4kingbase/scripts/kingbase_backup.sh >> /mnt/data/backup4kingbase/scripts/kingbase_cron.log
四 备份服务器脚本
1. 创建备份脚本:/mnt/data/backup4kingbase/scripts/clear_backup_files.sh
# chmod 755 clear_backup_files.sh
#!/bin/bash
echo "---------------删除30天前备份的文件$(date +"%Y-%m-%d %H:%M:%S")----------------"
cd /mnt/data/backup4kingbase/backupdata/
find /mnt/data/backup4kingbase/backupdata/ -type f -name "*.tar.gz" -mtime +30 | tee -a delete_backup_list.log | xargs rm -f
echo "---------------清理任务结束$(date +"%Y-%m-%d %H:%M:%S")----------------"
echo ""
2. 创建定时任务,每天早上2点10分执行
10 2 * * * /mnt/data/backup4kingbase/scripts/clear_backup_files.sh >> /mnt/data/backup4kingbase/scripts/clear_backup_files.log