iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >shell脚本实现数据库表增量同步的流程
  • 606
分享到

shell脚本实现数据库表增量同步的流程

shell数据库表增量同步shell数据库表增量同步 2022-06-04 23:06:23 606人浏览 八月长安
摘要

需求:   每天定时将 源数据库 study_plan 库的 zxxt_class 表   增量同步到 目标数据库 axt_statistics 库的 zxxt_class 表中

需求:

  每天定时将 源数据库 study_plan 库的 zxxt_class 表

  增量同步到 目标数据库 axt_statistics 库的 zxxt_class 表中

前提条件:

  两个库中的 zxxt_class 表结构一致

  询问开发根据哪个字段作为增量参考,这里开发给的是id字段

流程:

  获取 axt_statistics 库的 zxxt_class 表中id字段的最大id值

  通过这个id值备份study_plan 库的 zxxt_class 表中大于此id的数据

  将数据导入

脚本:


#!/bin/bash
 
 
#通用变量
Mysql_Comm='/usr/local/mysql/bin/mysql'
MySqldump_Comm='/usr/local/mysql/bin/mysqldump'
DateTime=`date +%Y-%m-%d-%H:%M:%S`
 
echo -e "\n\n${DateTime} -----脚本开始执行-----" >> /tmp/sourcedb.log
 
#源数据库信息
Source_MySql_User='root'
Source_MySql_Pass='123456'
Source_MySql_Port='3306'
Source_MySql_DB='study_plan'
Source_MySql_Table='zxxt_class'
Source_Host_IP='192.168.0.100'
 
#本机数据库信息
Mysql_User='root'
MySql_Pass='12345678'
MySql_Port='3306'
MySql_DB='axt_statistics'
MySql_Table='zxxt_class'
MySql_Bak_Dir="/tmp/`date +%Y-%m-%d-%H-%M`"
 
#创建备份目录
mkdir ${MySql_Bak_Dir}
 
#备份本机表
if [ -d ${MySql_Bak_Dir} ];then
  ${MySqldump_Comm} \
  -u${Mysql_User} \
  -p${MySql_Pass} \
  -h 127.0.0.1 \
  -P${MySql_Port} \
  ${MySql_DB} ${MySql_Table} > ${MySql_Bak_Dir}/${MySql_DB}-${MySql_Table}.sql
else
  echo "${DateTime} ERROR: ${MySql_Bak_Dir} 目录不存在" >> /tmp/sourcedb.log
  echo "${DateTime} -----脚本执行完成!!!-----" >> /tmp/sourcedb.log
  exit 1
fi
 
#获取本机表最大ID
${MySql_Comm} \
-u${Mysql_User} \
-p${MySql_Pass} \
-h 127.0.0.1 \
-P${MySql_Port} \
--compress ${MySql_DB} -e "select max(id) from ${MySql_Table}" > /tmp/tmp.txt
 
ID_Num=`tail -1 /tmp/tmp.txt`
echo $ID_Num
 
 
#备份源表大于本机获取id的数据
if [[ ${ID_Num} -gt 0 ]];then
  if [ -d ${MySql_Bak_Dir} ];then
    echo "${DateTime} 开始备份原主机${Source_MySql_DB} ${Source_MySql_Table} ID大于${ID_Num}的数据..." >> /tmp/sourcedb.log
    ${MySqldump_Comm} -t \
    -u${Source_MySql_User} \
    -p${Source_MySql_Pass} \
    -h${Source_Host_IP} \
    -JbItxxvP${Source_MySql_Port} \
    --single-transaction --compress ${Source_MySql_DB} ${Source_MySql_Table} --where="id > '`tail -1 /tmp/tmp.txt`'" > ${MySql_Bak_Dir}/${Source_MySql_DB}-${Source_MySql_Table}.sql
    echo "${DateTime} 数据备份完成 ${MySql_Bak_Dir}/${Source_MySql_DB}-${Source_MySql_Table}.sql" >> /tmp/sourcedb.log
 
    #导入数据
    if [ -f ${MySql_Bak_Dir}/${Source_MySql_DB}-${Source_MySql_Table}.sql ];then
      echo "${DateTime} 开始导入数据..." >> /tmp/sourcedb.log
      ${MySql_Comm} \
      -u${Mysql_User} \
      -p${MySql_Pass} \
      -h 127.0.0.1 \
      -P${MySql_Port} \
      ${MySql_DB} -e "source ${MySql_Bak_Dir}/${Source_MySql_DB}-${Source_MySql_Table}.sql"
      echo "${DateTime} 数据导入完成${MySql_Bak_Dir}/${Source_MySql_DB}-${Source_MySql_Table}.sql..." >> /tmp/sourcedb.log
      echo "${DateTime} -----脚本执行完成!!!-----" >> /tmp/sourcedb.log
    else
      echo "${DateTime} ERROR: sql文件${MySql_Bak_Dir}/${Source_MySql_DB}-${Source_MySql_Table}.sql不存在!"
      echo "${DateTime} -----脚本执行完成!!!-----" >> /tmp/sourcedb.log
      exit 1
    fi
  else
    echo "${DateTime} ERROR: ${MySql_Bak_Dir} 目录不存在" >> /tmp/sourcedb.log
    echo "${DateTime} -----脚本执行完成!!!-----" >> /tmp/sourcedb.log
    exit 1
  fi
else
  echo "${DateTime} ERROR: ID 等于 NULL" >> /tmp/sourcedb.log
  echo "${DateTime} -----脚本执行完成!!!-----" >> /tmp/sourcedb.log
  exit 1
fi

注意!脚本中需要注意的是,从源库中使用mysqldump时必须加参数 -t ,-t 表示备份插入数据,如果不加 -t ,那么导入到目标库的数据将替换源有数据。 

测试

shell脚本实现数据库表增量同步的流程 shell脚本实现数据库表增量同步的流程

上面两图可以看到,源表中比目标表多了一个数据

执行脚本后

shell脚本实现数据库表增量同步的流程 

数据已同步过来

日志

shell脚本实现数据库表增量同步的流程

再看看导入的sql脚本

shell脚本实现数据库表增量同步的流程 可

以看到只备份并导入了自己新加的那一条数据

到此这篇关于shell脚本实现数据库表增量同步的文章就介绍到这了,更多相关shell数据库表增量同步内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

--结束END--

本文标题: shell脚本实现数据库表增量同步的流程

本文链接: https://www.lsjlt.com/news/21364.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 利用python怎么将MySQL指定的表增量同步数据到clickhouse脚本
    本篇文章为大家展示了利用python怎么将MySQL指定的表增量同步数据到clickhouse脚本,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python实现MySQL指定表增量同步数据到clic...
    99+
    2023-06-06
  • 如何用shell脚本实现监控shell脚本的执行流程及变量的值
    本篇内容主要讲解“如何用shell脚本实现监控shell脚本的执行流程及变量的值”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用shell脚本实现监控shell脚本的执行流程及变量的值”吧!...
    99+
    2023-06-09
  • GO语言如何实现Shell脚本的同步?
    Shell脚本是在Linux系统上编写的一种脚本语言,常用于自动化管理和执行任务。然而,Shell脚本在处理大量数据或需要高性能的场景下,会出现性能瓶颈。在这种情况下,使用Go语言来实现Shell脚本的同步是一个不错的选择。 Go语言是一...
    99+
    2023-10-26
    同步 shell linux
  • 如何实现备份数据库的shell脚本
    这篇文章将为大家详细讲解有关如何实现备份数据库的shell脚本,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。备份数据库的shell脚本一代码如下:#!/bin/bash#指定运行的脚本shell#运行脚本...
    99+
    2023-06-09
  • 使用datax实现增量同步mysql数据库数据(定时任务)
    使用datax来做数据全量同步很简单,增量同步该怎样做呢,接下来就一起试试吧 下载datax(前提CentOS已安装jdk等运行环境),解压(路径自定),使用centos7自带的python执行datax.py,运行自检 wget http...
    99+
    2023-09-22
    python json 开发语言 数据库
  • shell脚本中整数型变量自增(加1)的几种实现
    在shell脚本中,有时为了计数,需要编写整数型变量,并用自增来显示。 shell脚本中的整数型变量,自增有多种实现方式,整体测试脚本如下: #!/bin/sh #本脚本测试shell脚本中整型变量自增 加1的几种方法 ...
    99+
    2023-05-06
    shell变量自增 shell 变量加1
  • 怎么用shell脚本实现LINUX下的流量监控
    本篇内容主要讲解“怎么用shell脚本实现LINUX下的流量监控”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用shell脚本实现LINUX下的流量监控”吧!一、脚本源码# vi /etc/...
    99+
    2023-06-09
  • 如何实现数据库的检查步骤脚本
    小编给大家分享一下如何实现数据库的检查步骤脚本,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1、数据库的实例名版本        Picasa Co...
    99+
    2024-04-02
  • MySQL特定表全量、增量数据同步到消息队列怎么实现
    本篇内容主要讲解“MySQL特定表全量、增量数据同步到消息队列怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL特定表全量、增量数据同步到消息队列怎么实现”吧!1、原始需求既要同步...
    99+
    2023-06-21
  • Java 解析binlog实现数据同步增量等操作
    使用mysql-binlog-connector-java进行解析 解析row格式的binlog(mysql默认的是Statement格式需要手动调整到row格式) 如果使用Statement模式的话...
    99+
    2023-09-14
    java 数据库 mysql binlog
  • Linux下使用Shell脚本实现进程监控的流程
    本文介绍一种在Linux系统下为实现某些关键进程状态的实时监控而使用shell脚本的编写方法。在这里主要通过监控某些进程是否退出作为判断依据,如果某个进程退出了,则进行对应的恢复处理...
    99+
    2023-02-27
    Shell脚本进程监控 Linux使用Shell脚本进程监控
  • GO语言在Linux系统中如何实现Shell脚本的同步?
    随着互联网的快速发展,我们越来越需要快速、高效地处理数据。Shell脚本作为一种常见的自动化脚本语言,被广泛应用于Linux系统中。然而,Shell脚本在处理大量数据时,容易出现性能瓶颈。为了解决这个问题,我们可以考虑使用GO语言来实现S...
    99+
    2023-10-26
    同步 shell linux
  • 使用datagrip实现不同数据库表之间的结构同步
    datagrip表结构同步 如何把A数据库的结构同步到B数据库 需要将datagrip升级到2022.1及以后版本,可以实现单表的同步 也可以实现数据库所有表的同步 同步单表结构 这里以demo数据库...
    99+
    2023-09-17
    java mysql 数据库
  • Shell脚本中不同进制数据转换的方法教程
    这篇文章主要讲解了“Shell脚本中不同进制数据转换的方法教程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Shell脚本中不同进制数据转换的方法教程”吧!shell可以在不调用第3方命令,...
    99+
    2023-06-09
  • 数据库中如何实现表空间监控脚本
    小编给大家分享一下数据库中如何实现表空间监控脚本,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! -----查询表空间使用情况  SELECT...
    99+
    2024-04-02
  • Linux下如何使用Shell脚本实现进程监控的流程
    这篇“Linux下如何使用Shell脚本实现进程监控的流程”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Linux下如何使用...
    99+
    2023-07-05
  • PostgreSQL数据库实现表字段的自增
    在使用MySQL的时候,创建表结构时可以通过关键字AUTO_INCREMENT来指定主键是否自增。在PostgreSQL数据库中,使用序列来实现字段的自增。 PostgreSQL序列是一种特殊的用于生产整数序列数据库对象。序列通常用于主键列...
    99+
    2023-08-19
    数据库 postgresql mysql
  • 如何实现并发数据库压力测试的shell脚本代码
    这篇文章给大家分享的是有关如何实现并发数据库压力测试的shell脚本代码的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。代码如下:#!/bin/bash#******************************...
    99+
    2023-06-09
  • MYSQL数据库主从同步设置的实现步骤
    目录为什么要主从同步?主从同步的原理MYSQL数据库进行主从同步创建两个MYSQL数据库初始化,安装主机数据库配置从机测试主从同步为什么要主从同步? 1、读写分离 主从同步分为一个主...
    99+
    2024-04-02
  • Java实现多线程大批量同步数据(分页)
    背景 最近遇到个功能,两个月有300w+的数据,之后还在累加,因一开始该数据就全部存储在mysql表,现需要展示在页面,还需要关联另一张表的数据,而且产品要求页面的查询条件多达20个...
    99+
    2022-11-13
    Java同步数据 Java多线程同步数据 Java多线程大批量同步数据
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作