kingbase sys_dump 免密 定时 备份脚本
·
# 安装expect命令
yum install expect -y
# 创建脚本
vim /kdb/databack/data_backup.sh
# 输入以下内容
#!/bin/bash
# 数据库备份脚本
# 备份目录
BACKUP_DIR="/kdb/databack"
# 确保备份目录存在
mkdir -p $BACKUP_DIR
# 生成时间戳,格式:年月日时分秒
TIMESTAMP=$(date +"%Y%m%d%H%M%S")
# 备份文件名
BACKUP_FILE="${BACKUP_DIR}/x_crm_${TIMESTAMP}.sql"
# 数据库连接信息
DB_HOST="127.0.0.1"
DB_PORT="54321"
DB_USER="system"
DB_NAME="x_crm"
# 备份命令(不含重定向)
BACKUP_CMD="/kdb/business/ES/V9/ClientTools/bin/sys_dump -h ${DB_HOST} -p ${DB_PORT} -U ${DB_USER} -d ${DB_NAME}"
# 执行备份
echo "开始备份数据库 ${DB_NAME}..."
echo "执行命令: ${BACKUP_CMD} > ${BACKUP_FILE}"
# 使用expect处理密码输入和重定向
/usr/bin/expect <<EOF
set time 10
spawn bash -c "${BACKUP_CMD} > ${BACKUP_FILE}"
expect {
"Password:" { send "12345678\r" }
}
expect eof
EOF
# 检查备份是否成功
if [ -f "${BACKUP_FILE}" ]; then
echo "备份成功!备份文件保存至: ${BACKUP_FILE}"
echo "备份文件大小: $(du -h ${BACKUP_FILE} | awk '{print $1}')"
# 压缩备份文件
echo "开始压缩备份文件..."
gzip "${BACKUP_FILE}"
# 检查压缩是否成功
COMPRESSED_FILE="${BACKUP_FILE}.gz"
if [ -f "${COMPRESSED_FILE}" ]; then
echo "压缩成功!压缩文件保存至: ${COMPRESSED_FILE}"
echo "压缩文件大小: $(du -h ${COMPRESSED_FILE} | awk '{print $1}')"
# 删除原备份文件(可选)
rm -f "${BACKUP_FILE}"
else
echo "压缩失败!请检查错误信息。"
fi
else
echo "备份失败!请检查错误信息。"
exit 1
fi
echo "备份完成。"
# 赋权
chmod +x /kdb/databack/data_backup.sh
# 设置定时任务
crontab -e
# 输入以下内容
# 每三天凌晨0点执行数据库备份脚本
0 0 */3 * * /kdb/databack/backup_db.sh >> /kdb/databack/backup_log.txt 2>&1
更多推荐




所有评论(0)