热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

结合Git实现Mysql差异备份,可用于生产环境

埋头苦干多年一直没写过文章,今天突发狂想,为LNMP阵营贡献一些力量。就从平时工作过程中的心得和一些技巧分享出来。今天就猿们最熟悉的Mysql开始宅鸟的开篇博客

埋头苦干多年一直没写过文章,今天突发狂想,为LNMP阵营贡献一些力量。就从平时工作过程中的心得和一些技巧分享出来。今天就猿们最熟悉的Mysql开始宅鸟的开篇博客

埋头苦干多年一直没写过文章,今天突发狂想,为LNMP阵营贡献一些力量。就从平时工作过程中的心得和一些技巧分享出来。今天就猿们最熟悉的Mysql开始宅鸟的开篇博客文章。欢迎猿们拍砖、转载。

注意:宅鸟的测试环境和生产环境为ubuntu


Mysql是程序猿和运维猿最关心的开发利器之一,今天就来谈谈Mysql的日常备份之宅鸟见.

常见的Mysql备份方法很多在此不在赘述。直上干货!


本shell脚本运行需要安装

git

ssh

要求读者对mysql,git,ssh,shell有一定了解


本脚本功能:把远程mysqlserver通过脚本配置的白名单和黑名单把指定数据库sql文件利用git版本控制备份到localserver指定目录下,

通过版本控制git查看数据库表数据的变化


预先配置好从localserver->mysqlserver的免密码登录(配置过程)

localserver(192.168.1.110)


db_backup_local.sh



#!/bin/bash #created by lihuibin #date 2013-8-30 #desc backup mysqlsql file from mysqlserver to localserver tar_path="/root/mysql_backup" ssh root@192.168.1.120 /root/shell/db_backup.sh [ -d $tar_path ] && cd $tar_path; git pull || git clone root@192.168.1.20:/root/shell/mysql_backup.git


mysqlserver(192.168.1.120)

假设mysqlserver服务器上有testdb1,testdb2,exdb1,exdb2四个数据库


脚本位置:/root/shell/db_backup.sh


#!/bin/bash #created by lihuibin #date 2013-8-30 #desc exec mysqldump mysqlsql file from mysqlserver to git time=`date '+%F %R'` mysql_user="backup_user" mysql_password="backup_passwd" mysql_host="127.0.0.1" mysql_port="3306" tar_path=/root/shell/mysql_backup backup_db_arr=("testdb1" "testdb2") #需要备份的数据库列表 #backup_db_arr=() exclude_db_arr=("exdb1" "exdb2") #排除备份的数据库列表 当backup_db_arr为空的时候,exclude_db_arr生效,不为空时仅backup_db_arr有效 [ -d $tar_path ] is_first_backup=$? in_array() { local hay needle=$1 shift for hay; do [[ $hay == $needle ]] && return 0 done return 1 } backup_length=${#backup_db_arr[@]} #echo $backup_length exclude_length=${#exclude_db_arr[@]} #echo $exclude_length; #in_array "dopool_blog" ${backup_db_arr[@]} && echo hit || echo miss for dbname in `mysql -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -e "show databases" |sed '1,2d'` do if [ $backup_length -gt 0 ]; then in_array $dbname ${backup_db_arr[@]} || continue elif [ $backup_length -eq 0 -a $exclude_length -gt 0 ]; then in_array $dbname ${exclude_db_arr[@]} && continue fi for tablename in `mysql -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password -e "show tables from $dbname" |sed '1d'` do mkdir -p $tar_path/$dbname/ /usr/bin/mysqldump --lock-tables=TRUE --extended-insert=FALSE --complete-insert=TRUE -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password $dbname $tablename > $tar_path/$dbname/$tablename.sql done done init_git(){ tar_path=`dirname $1` dir_name=`basename $1` cd $1 git init git add . git commit -a -m "init $time" cd $tar_path git clone --bare $dir_name/ rm -rf $dir_name git clone $dir_name.git } [ $is_first_backup -eq 1 ] && init_git $tar_path || { cd $tar_path; git add .; git commit -a -m " back up $time"; git push; }


脚本执行后,就可以结合git的tig、diff命令查看每次备份的中数据库表中版本变化

干活吐槽结束 有不足之处,欢迎拍砖!!!

本文出自 “宅鸟” 博客,请务必保留此出处


推荐阅读
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 本文介绍了在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一,尤其是在大规模系统中,数据库集群已经成为必备的配置之一。文章详细介绍了主从数据库架构的好处和实验环境的搭建方法,包括主数据库的配置文件修改和设置需要同步的数据库等内容。MySQL的主从复制功能在国内外大型网站架构体系中被广泛采用,本文总结了作者在实际的Web项目中的实践经验。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • PHP函数实现分页含文本分页和数字分页【PHP】
    后端开发|php教程PHP,分页后端开发-php教程最近,在项目中要用到分页。分页功能是经常使用的一个功能,所以,对其以函数形式进行了封装。影视网源码带充值系统,vscode配置根 ... [详细]
  • Linux下部署Symfoy2对app/cache和app/logs目录的权限设置,symfoy2logs
    php教程|php手册xml文件php教程-php手册Linux下部署Symfoy2对appcache和applogs目录的权限设置,symfoy2logs黑色记事本源码,vsco ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了markdown[软件代理设置]相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
author-avatar
一个萝卜一个坑
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有