当前位置: 首页 > news >正文

数据库自动备份到gitee上,实现数据自动化备份

本人有个不太好的习惯,每次项目的数据库都是在线上创建,Navicat 连接线上数据库进行处理,最近有一个项目需要二次升级,发现老项目部署的服务器到期了,完蛋,数据库咩了!!!

只能自己手动补充,唉,自作自受

现在自己写了一个开源的脚本,用来实现宝塔自动备份服务器所有数据库,备份过的数据库自动上传至gitee项目中。

最新版本v1.1新增分支处理多服务器数据信息

https://gitee.com/liudenghuix/gitSync/releases/download/v1.1/gitSync.sh

安装执行脚本:

wget https://gitee.com/liudenghuix/gitSync/releases/download/v1.1/gitSync.sh -O /usr/local/bin/gitSync && chmod +x /usr/local/bin/gitSync && gitSync

一、gitee创建数据库备份项目

 要注意,这个项目一定是私有的,选择好后进行创建

二、宝塔开启备份所有数据库的计划任务

创建完成之后点击一下立即执行,一会用脚本测试上传功能

三、服务器下载脚本并设置相关功能

 下载安装命令

wget https://gitee.com/liudenghuix/gitSync/releases/download/v1.0/gitSync.sh -O /usr/local/bin/gitSync && chmod +x /usr/local/bin/gitSync && gitSync

看到这个画面就是安装成功了,接下来就是设置并在宝塔和gitee上进行配置了

  执行 gitSync -run

1.设置你git的用户名和邮箱,这里填写你再git的邮箱和用户名就可以了

2.设置你这台服务器的ssh备注,这个备注用于自动上传的备注信息,这里我是用备注+服务器ip的形式作为备注的

3.生成公钥完毕之后,要把公钥复制下来,在gitee中进行设置

设置完成回到设置输入y

Gitee连接检测结果: Hi 刘登辉(@liudenghuix)! You've successfully authenticated, but GITEE.COM does not provide shell access.
 

系统提示连接上gitee了

3.在gitee中添加ssh公钥完成之后需要设置一个git目录,因为宝塔备份的数据库地址是在

/www/backup/database/mysql/crontab_backup 

所以我们设置 /www/backup/database/mysql/crontab_backup 

设置完成之后git就会提交本地仓库

4.仓库路径设置完成之后,要设置远程的仓库的url了,在创建仓库的时候远程仓库url就已经给我们了

git@gitee.com:liudenghuix/crontab_backup.git

设置之前我们先去看下gitee项目中有没有上传的备份文件

 

这个时候再设置远程仓库地址

git@gitee.com:liudenghuix/crontab_backup.git

设置完成之后脚本就会自动推送/www/backup/database/mysql/crontab_backup下面的所有数据库备份文件了

 四、宝塔设置自动定时上传

因为数据库是每天2小时30分钟开始备份的,所有延迟5分钟设置在每天2小时35分钟开始执行git上传

#!/bin/bash
gitSync -push

添加完成之后别忘记测试一下执行,然后去gitee看看推送成功没有 

 可以看到,初始化的时候显示的是 备注+ip初始化提交,计划任务提交的时候显示的是gitSync脚本推送外加备注信息

相关文章:

  • 微软Edge浏览器全解析
  • Unity 动画事件
  • opencv颜色识别,hsv采用滑块调节
  • 连接Sql Server时报错:无法通过使用安全套接字层加密与 SQL Server 建立安全连接
  • MySQL高级-SQL优化-insert优化-批量插入-手动提交事务-主键顺序插入
  • Python只读取Excel文件的一部分数据,比如特定范围的行和列?
  • 90%铲屎官不知道养猫好物,希喂、安德迈、小米猫用空气净化器分享
  • whisper 实现语音转文字
  • C语⾔数据类型和变量
  • Python+Pytest+Allure+Yaml+Pymysql+Jenkins+GitLab接口自动化测试框架详解
  • Windows下快速安装Open3D-0.18.0(python版本)详细教程
  • 新华三通用大模型算力底座方案:为AI时代注入强大动力
  • 深层神经网络
  • 深入了解语音识别:Distil-Whisper
  • 大数据可视化实验(八):大数据可视化综合实训
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 2017-09-12 前端日报
  • golang 发送GET和POST示例
  • JSONP原理
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • oldjun 检测网站的经验
  • React-redux的原理以及使用
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 类orAPI - 收藏集 - 掘金
  • 前端面试之CSS3新特性
  • 使用agvtool更改app version/build
  • 树莓派 - 使用须知
  • 学习使用ExpressJS 4.0中的新Router
  • 《码出高效》学习笔记与书中错误记录
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​ArcGIS Pro 如何批量删除字段
  • #14vue3生成表单并跳转到外部地址的方式
  • (论文阅读30/100)Convolutional Pose Machines
  • (转)IOS中获取各种文件的目录路径的方法
  • .aanva
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET MVC第三章、三种传值方式
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET 解决重复提交问题
  • .net 提取注释生成API文档 帮助文档
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .NET序列化 serializable,反序列化
  • .NET中 MVC 工厂模式浅析
  • .net专家(张羿专栏)
  • .vimrc 配置项
  • /usr/bin/env: node: No such file or directory
  • ?.的用法
  • [ C++ ] STL---string类的模拟实现
  • [ Linux ] Linux信号概述 信号的产生
  • [ 网络基础篇 ] MAP 迈普交换机常用命令详解
  • [20160807][系统设计的三次迭代]
  • [Android Studio 权威教程]断点调试和高级调试
  • [Android 数据通信] android cmwap接入点