埋头苦干多年一直没写过文章,今天突发狂想,为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命令查看每次备份的中数据库表中版本变化

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

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

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:php中文网

git mysql差异备份_结合Git实现Mysql差异备份,可用于生产环境相关推荐

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

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

  2. android git提交整个项目_使用git管理嵌入式软件版本

    点击上方蓝字关注我哦- 你现在的Keil工程的版本控制是怎么管理的?可能有些人的做法是发布一个版本软件后将代码打一个包保存起来,作为此版本的备份.有一种常见的情况,当开始一项新功能的开发,并且最终的效 ...

  3. git 修改分支名字_基础Git操作与GitHub协作吐血整理,收好!| 原力计划

    作者 | 光子俊来源 | CSDN博客出品 | CSDN(ID:CSDNnews) Git介绍 Git是目前世界上最先进的分布式版本控制系统,可以为我们管理项目.构建工程.多人协作提供便利,作为一个爱 ...

  4. commit git idea 速度慢_关于Git,这篇文章还不够吗?

    Git 安装 Git下载地址: https://git-scm.com/downloads Git安装(Window/Mac): 选择不同系统安装包安装 检验是否安装成功: 出现Git Bash命令行 ...

  5. bash git 如何切换目录_【git】命令行与本地仓库/远程仓库

    终端里如何复制粘贴 在cmder里 粘贴是鼠标右键 粘贴时shift+Insert 复制是用鼠标选中即自动复制 在Git Bash里 粘贴是鼠标中键 粘贴时shift+Insert 复制是用鼠标选中, ...

  6. git钩子放服务器_使用 git post-receive 钩子部署服务端代码

    在 git 中提交服务器源码的时候,如果能够直接更新到测试服务器,并且重启服务使其生效,会节省懒惰的程序员们大量的时间. git 的 Server-side hook (服务端钩子/挂钩)可以用来做件 ...

  7. sqlserver定时差异备份_一分钟看懂完全备份、差异备份以及增量备份

    常用的数据备份方式有完全备份.差异备份以及增量备份,那么这三种备份方式有什么区别,在具体应用中又该如何选择呢? 1.备份方式简介 完全备份(Full Backup) 备份全部选中的文件夹,并不依赖文件 ...

  8. 使用git命令导出项目_【git学习】SVN项目迁移到Git操作指南

    参考链接 在迁移的过程中,参考了以下的链接: 第一步.建立SVN用户到git用户的映射文件在 Subversion,每个提交者在都在主机上有一个用户名,记录在提交信息中.如果想让已有的信息更好的映射到 ...

  9. git gui 历史版本_这些Git命令都不会,还是不要去面试了

    前言 以下,项目中经常使用的Git命令,汇总到这里以便与你能快速的学习和掌握Git命令,在文章最后有惊喜哟,一定要看到最后啊! 使用的 Git版本:git version 2.24.0 命令 git ...

最新文章

  1. 【 C 】队列的链式存储实现
  2. SQL Server 临时表
  3. qt 将不同的数据类型组成一个新类型_SQL 通用数据类型
  4. wifi网络结构(上)
  5. c语言 编程显示图案*,*型图案的显示与控制(学习C语言后的编程尝试)(2)(完)...
  6. 基于docker在Ubuntu上搭建TensorFlow-GPU计算环境
  7. Office 365身份认证管理-安装并配置活动目录同步
  8. 名企面试官精讲典型编程题之数据结构字符串篇
  9. python柱形图绘制_Python Excel 绘制柱形图
  10. K60学习笔记(二)——FTM多功能定时器模块
  11. 【Codecs系列】HEVC标准(三):大尺寸四叉树分割技术
  12. 手机号码归属地查询工具的正确使用方法
  13. XP系统屏幕倒立翻转了怎么办???
  14. Java实现微信运动步数(已自测)
  15. 软件工程 -- 程序流程图
  16. HTML常用标签的基本介绍
  17. C3P0错误APPARENT DEADLOCK!!!解决
  18. 《如何阅读一本书》这本书为什么值8.4分?
  19. 更换计算机桌面背景的教案,《桌面背景换换样》教学设计
  20. Linux ns 3. Mnt Namespace 详解

热门文章

  1. 高光谱数据集_基于飞桨实现高光谱反演:通过遥感数据获取土壤某物质含量
  2. Unreal Engine 4 的 光和影
  3. 从Unreal Engine 3到Unreal Engine 4
  4. UE3 Light Functions (光照函数)
  5. java几种集合遍历速度对比
  6. 学习Python可以从事哪些工作?
  7. Python:numpy数组转换为json格式
  8. 数据库中的DbUtils
  9. nagios监控windows主机 linux主机
  10. php验证码类Validationcode