侧边栏壁纸
博主头像
Ivan Zhang

所谓更牛,就是换个罪受

  • 累计撰写 48 篇文章
  • 累计创建 54 个标签
  • 累计收到 6 条评论

目 录CONTENT

文章目录

Jenkins 数据库还原配置

Ivan Zhang
2022-05-13 / 0 评论 / 0 点赞 / 457 阅读 / 1,260 字
温馨提示:
本文最后更新于 ,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
有什么问题或观点欢迎评论留言,或者 交流。
如果觉得文章对您有所帮助,可以给博主打赏鼓励一下。

Jenkins 数据库还原配置

导出数据库备份文件

# 通过 pg_dump 导出数据库
# -Fc 导出 dump 文件,这样文件比较小
# -c --if_exists 清理旧库相关的表
# -v 显示导出信息
# -W 需要输入密码
pg_dump -U user -d db --if-exists -c -Fc -vW > d:\db.dump

配置参数

  • dbHost
    • 默认值:192.168.1.178
    • 备注:数据库文件名,相对git根目录的文件相对路径
  • dbName
    • 默认值:db
    • 备注:数据库文件名,相对git根目录的文件相对路径
  • dbUser
    • 默认值:user
    • 备注:数据库文件名,相对git根目录的文件相对路径
  • dbPwd
    • 默认值:password
    • 备注:数据库文件名,相对git根目录的文件相对路径
  • dbFile
    • 默认值:db.dump
    • 备注:数据库文件名,相对git根目录的文件相对路径

通过git中转dump文件

配置git获取dump文件,添加过滤条件,获取指定dump文件

构建

Execute shell

# 写入密码配置
pgpass=/var/lib/jenkins/.pgpass

# 删除数据库旧密码配置
sed -i "/${dbUser}:${dbPwd}/d" ${pgpass}
# 重新添加源数据库密码配置
echo "*:*:*:${dbUser}:${dbPwd}" >> ${pgpass}

# 修改密码文件权限
chmod 600 ${pgpass}

# 数据库还原
# 获取文件后缀
fileType=${dbFile##*.}
# 文件后缀转小写
fileType=${fileType,,}
if [ "${dbFile##*.}" = "dump" ]; then
    #psql -h ${dbHost} -d ${dbName} -U ${dbUser} --command="SELECT pg_terminate_backend ( pg_stat_activity.pid ) FROM pg_stat_activity WHERE datname = '${dbName}' AND pid <> pg_backend_pid()"
    #dropdb -h ${dbHost} -U ${dbUser} ${dbName}
    #createdb -h ${dbHost} -U ${dbUser} -T template0 ${dbName}
    # 忽略错误,避免旧库有新库不存在的表等情况导致的错误
    set +e
    pg_restore -d ${dbName} ${dbFile} -U ${dbUser} -h ${dbHost} -w -v -c -O
else
    # 清理数据库,旧库可能存在新库中不存在的表,导致无法删除schema重新创建新库
    sh /var/lib/jenkins/bash/drop_tables.sh ${dbUser} ${dbPwd} ${dbHost} ${dbName}
    psql -d ${dbName} -U ${dbUser} -h ${dbHost} -f ${dbFile}
fi

exit 0
0

评论区