Linux 下自动化之路:达梦数据库定期备份并推送至 GitLab 全攻略

目录

环境准备

[生成SSH 密钥对](#生成SSH 密钥对)

数据库备份并推送到gitlab脚本

设置定时任务


环境准备

服务器要有安装达梦数据库(达梦安装这里就不示例了),git

安装Git

1、首先,确保包列表是最新的,运行以下命令:

bash 复制代码
sudo yum update

2、安装Git包,运行以下命令:

bash 复制代码
sudo yum install git

3、安装完成后,你可以通过运行以下命令来检查Git版本,确认安装成功:

bash 复制代码
git --version

生成SSH 密钥对

详情请看

Linux服务器生成SSH 密钥对与 GitLab 仓库进行交互

这种方式以更安全地进行代码的版本控制和管理操作,可以防止密码泄露风险

数据库备份并推送到gitlab脚本

bash 复制代码
#!/bin/bash

# DM8数据库连接信息
DB_USER="SYSDBA"
DB_PASSWORD="SYSDBA"
DB_HOST="127.0.0.1"
DB_PORT="5236"
# 导出多个模式使用号隔开
DB_SCHEMAS="user"

# dexp 工具路径
DMDBMS_PATH="/home/dmdba/dmdbms/bin"

# 备份文件保存路径和文件名
BACKUP_DIR="/data/dm8_back"
BACKUP_FILE="${BACKUP_DIR}/dm8_backup_$(date +%Y%m%d%H%M%S).dmp"
BACKUP_LOG_FILE="${BACKUP_DIR}/dm8_backup_$(date +%Y%m%d%H%M%S).log"

# GitLab仓库相关信息
GITLAB_REPO_URL="git@127.0.0.1:implcenter/project/test/database.git"
GITLAB_BRANCH="master"

# 执行数据库备份
echo "开始备份DM8数据库..."

# 设置库文件的搜索路径
export LD_LIBRARY_PATH=$DMDBMS_PATH:$LD_LIBRARY_PATH

# 使用 dexp 命令进行逻辑备份,使用变量 $DEXP_PATH
$DMDBMS_PATH/dexp $DB_USER/$DB_PASSWORD@$DB_HOST:$DB_PORT SCHEMAS=$DB_SCHEMAS FILE=$BACKUP_FILE LOG=$BACKUP_LOG_FILE DIRECTORY=Y FULL=Y


# 检查备份命令是否成功
if [ $? -eq 0 ]; then
    echo "数据库备份成功,备份文件:${BACKUP_FILE}"
else
    echo "数据库备份失败,请检查错误信息。"
    exit 1
fi

# 进入备份文件所在目录
cd "${BACKUP_DIR}" || exit 1

git init || echo "git初始化失败"

# 配置 Git 用户信息(如果还未配置)
git config --global user.name "xx"
git config --global user.email "122312@163.com"

# 检查本地是否存在分支,如果不存在则创建并关联远程分支
if [! -z "$(git branch -a | grep remotes/origin/${GITLAB_BRANCH})" ] && [! -z "$(git branch | grep ${GITLAB_BRANCH})" ]; then
    echo "本地已存在与远程对应的分支,继续推送。"
else
    echo "本地不存在与远程对应的分支,创建并关联。"
    git checkout -b "${GITLAB_BRANCH}" "origin/${GITLAB_BRANCH}"
fi

# 添加备份文件到 Git 仓库
echo "将备份文件添加到GitLab仓库..."
git remote add origin "$GITLAB_REPO_URL"
git pull remote "$GITLAB_BRANCH"
git add "${BACKUP_FILE}"

# 提交备份文件到 Git 仓库
git commit -m "备份文件上传:$(date +%Y%m%d%H%M%S)"

# 推送备份文件到 GitLab 仓库
echo "推送备份文件到GitLab仓库..."
git push origin $GITLAB_BRANCH --force

# 检查推送命令是否成功
if [ $? -eq 0 ]; then
    echo "备份文件成功上传到GitLab仓库。"
else
    echo "备份文件上传到GitLab仓库失败,请检查错误信息。"
    exit 1
fi

修改变量信息,将脚本保存到服务器**/data/dm8_back/backDatabase.sh**

设置定时任务

1、编辑crontab文件

bash 复制代码
crontab -e

2、添加crontab任务

文件中添加一行(每个月的 1 号,0 点 0 分执行一次)

bash 复制代码
0 0 1 * * /bin/bash /data/dm8-back/backDatabase.sh

3、查看crontab任务列表

bash 复制代码
crontab -l

完成!!

相关推荐
jianchwa3 分钟前
3.10 内核 BUG_ON() at xfs_vm_writepage() -> page_buffers()
linux·运维·bug
zqzgng3 分钟前
怎样安装和启动Apache HTTP服务器(httpd)和PHP?
linux·运维·服务器
vvw&9 分钟前
如何在 Ubuntu 22.04 上安装 Metabase 数据可视化分析工具
linux·运维·服务器·ubuntu·信息可视化·数据可视化·metabase
网安CILLE1 小时前
2024下半年——【寒假】自学黑客计划(网络安全)
linux·网络·安全·web安全·网络安全·密码学·ddos
我是唐青枫1 小时前
Linux iptables 命令详解
linux·运维·网络
wish3662 小时前
How to use gitlab-runner to execute CI?
ci/cd·gitlab
橙-极纪元2 小时前
项目自动化部署,持续集成/持续交付(CI/CD)工具有那些?他们的优劣势分别是什么?共计15个工具进行对比分析。
gitlab·jenkins·自动化部署·持续集成·circleci·持续交付·阿里云云效
Mr.yuliu2 小时前
IT成长之路-ubuntu驱动篇
linux·服务器·ubuntu
咖猫2 小时前
linux bash shell http请求脚本
linux·http·bash
ascarl20102 小时前
准确--在 AlmaLinux 9.2 上快速搭建 FTP 服务器
linux·运维·服务器