欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

shell腳本實(shí)現(xiàn)數(shù)據(jù)庫表增量同步的流程

 更新時(shí)間:2021年10月19日 16:53:08   作者:我的喵叫初六  
這篇文章主要介紹了shell腳本實(shí)現(xiàn)數(shù)據(jù)庫表增量同步的流程,流程也很簡(jiǎn)單,通過獲取axt_statistics 庫的 zxxt_class 表中id字段的最大id值,具體腳本跟隨小編一起看看本文吧

需求:

  每天定時(shí)將 源數(shù)據(jù)庫 study_plan 庫的 zxxt_class 表

  增量同步到 目標(biāo)數(shù)據(jù)庫 axt_statistics 庫的 zxxt_class 表中

前提條件:

  兩個(gè)庫中的 zxxt_class 表結(jié)構(gòu)一致

  詢問開發(fā)根據(jù)哪個(gè)字段作為增量參考,這里開發(fā)給的是id字段

流程:

  獲取 axt_statistics 庫的 zxxt_class 表中id字段的最大id值

  通過這個(gè)id值備份study_plan 庫的 zxxt_class 表中大于此id的數(shù)據(jù)

  將數(shù)據(jù)導(dǎo)入

腳本:

#!/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} -----腳本開始執(zhí)行-----" >> /tmp/sourcedb.log
 
#源數(shù)據(jù)庫信息
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'
 
#本機(jī)數(shù)據(jù)庫信息
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`"
 
#創(chuàng)建備份目錄
mkdir ${MySql_Bak_Dir}
 
#備份本機(jī)表
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} -----腳本執(zhí)行完成?。?!-----" >> /tmp/sourcedb.log
  exit 1
fi
 
#獲取本機(jī)表最大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
 
 
#備份源表大于本機(jī)獲取id的數(shù)據(jù)
if [[ ${ID_Num} -gt 0 ]];then
  if [ -d ${MySql_Bak_Dir} ];then
    echo "${DateTime} 開始備份原主機(jī)${Source_MySql_DB} ${Source_MySql_Table} ID大于${ID_Num}的數(shù)據(jù)..." >> /tmp/sourcedb.log
    ${MySqldump_Comm} -t \
    -u${Source_MySql_User} \
    -p${Source_MySql_Pass} \
    -h${Source_Host_IP} \
    -P${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} 數(shù)據(jù)備份完成 ${MySql_Bak_Dir}/${Source_MySql_DB}-${Source_MySql_Table}.sql" >> /tmp/sourcedb.log
 
    #導(dǎo)入數(shù)據(jù)
    if [ -f ${MySql_Bak_Dir}/${Source_MySql_DB}-${Source_MySql_Table}.sql ];then
      echo "${DateTime} 開始導(dǎo)入數(shù)據(jù)..." >> /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} 數(shù)據(jù)導(dǎo)入完成${MySql_Bak_Dir}/${Source_MySql_DB}-${Source_MySql_Table}.sql..." >> /tmp/sourcedb.log
      echo "${DateTime} -----腳本執(zhí)行完成?。?!-----" >> /tmp/sourcedb.log
    else
      echo "${DateTime} ERROR: sql文件${MySql_Bak_Dir}/${Source_MySql_DB}-${Source_MySql_Table}.sql不存在!"
      echo "${DateTime} -----腳本執(zhí)行完成!?。?----" >> /tmp/sourcedb.log
      exit 1
    fi
  else
    echo "${DateTime} ERROR: ${MySql_Bak_Dir} 目錄不存在" >> /tmp/sourcedb.log
    echo "${DateTime} -----腳本執(zhí)行完成?。。?----" >> /tmp/sourcedb.log
    exit 1
  fi
else
  echo "${DateTime} ERROR: ID 等于 NULL" >> /tmp/sourcedb.log
  echo "${DateTime} -----腳本執(zhí)行完成?。?!-----" >> /tmp/sourcedb.log
  exit 1
fi

注意!腳本中需要注意的是,從源庫中使用mysqldump時(shí)必須加參數(shù) -t ,-t 表示備份插入數(shù)據(jù),如果不加 -t ,那么導(dǎo)入到目標(biāo)庫的數(shù)據(jù)將替換源有數(shù)據(jù)。 

測(cè)試:

 

上面兩圖可以看到,源表中比目標(biāo)表多了一個(gè)數(shù)據(jù)

執(zhí)行腳本后

 

數(shù)據(jù)已同步過來

日志:

再看看導(dǎo)入的sql腳本

 可

以看到只備份并導(dǎo)入了自己新加的那一條數(shù)據(jù)

到此這篇關(guān)于shell腳本實(shí)現(xiàn)數(shù)據(jù)庫表增量同步的文章就介紹到這了,更多相關(guān)shell數(shù)據(jù)庫表增量同步內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • expect實(shí)現(xiàn)單臺(tái)、多臺(tái)服務(wù)器批量scp傳輸文件

    expect實(shí)現(xiàn)單臺(tái)、多臺(tái)服務(wù)器批量scp傳輸文件

    這篇文章主要介紹了expect實(shí)現(xiàn)單臺(tái)、多臺(tái)服務(wù)器批量scp傳輸文件,本文提供了單臺(tái)傳輸腳本、多臺(tái)傳輸腳本及服務(wù)器信息配置文件,需要的朋友可以參考下
    2014-12-12
  • Linux中自定義shell腳本啟動(dòng)jar包的方法

    Linux中自定義shell腳本啟動(dòng)jar包的方法

    這篇文章主要介紹了Linux中自定義shell腳本啟動(dòng)jar包的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Shell判斷文件或目錄是否存在的腳本(收藏)

    Shell判斷文件或目錄是否存在的腳本(收藏)

    這篇文章主要介紹了Shell判斷文件或目錄是否存在的腳本,shell腳本判斷文件是否存在非常簡(jiǎn)單,文中給大家列舉了常用的例子,給大家講解的非常詳細(xì),需要的朋友跟隨小編一起看看吧
    2022-11-11
  • Linux在shell中自動(dòng)生成1到100的數(shù)組方法(兩種方法)

    Linux在shell中自動(dòng)生成1到100的數(shù)組方法(兩種方法)

    之前自己在寫shell腳本的時(shí)候,需要自動(dòng)創(chuàng)建1-100的文本確不知道該如何去創(chuàng)建。今天小編給大家分享兩種方法,需要的朋友參考下
    2017-02-02
  • Linux?中的export與alias命令詳解

    Linux?中的export與alias命令詳解

    export和alias都是用來簡(jiǎn)化命令行輸入的工具。export用于設(shè)置環(huán)境變量,環(huán)境變量是一些系統(tǒng)級(jí)別的變量,用于指定一些系統(tǒng)的默認(rèn)值或者搜索路徑等,這篇文章主要介紹了Linux?中的export與alias命令,需要的朋友可以參考下
    2023-04-04
  • jenkins?pipeline中獲取shell命令的標(biāo)準(zhǔn)輸出或者狀態(tài)的方法小結(jié)

    jenkins?pipeline中獲取shell命令的標(biāo)準(zhǔn)輸出或者狀態(tài)的方法小結(jié)

    這篇文章主要介紹了jenkins?pipeline中獲取shell命令的標(biāo)準(zhǔn)輸出或者狀態(tài),工作中需要獲取shell?命令的執(zhí)行狀態(tài),返回0或者非0,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • shell腳本定時(shí)備份MySQL數(shù)據(jù)庫數(shù)據(jù)并保留指定時(shí)間

    shell腳本定時(shí)備份MySQL數(shù)據(jù)庫數(shù)據(jù)并保留指定時(shí)間

    這篇文章主要介紹了shell腳本定時(shí)備份MySQL數(shù)據(jù)庫數(shù)據(jù)并保留指定時(shí)間,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Linux命令之free命令使用詳解

    Linux命令之free命令使用詳解

    在Linux系統(tǒng)中,free命令用于顯示系統(tǒng)內(nèi)存的使用情況,它提供了系統(tǒng)內(nèi)存總量、已使用內(nèi)存、空閑內(nèi)存以及其他與內(nèi)存相關(guān)的統(tǒng)計(jì)信息,本文將給大家詳細(xì)的介紹一下Linux free命令的使用方法,需要的朋友可以參考下
    2023-08-08
  • Linux 打包壓縮命令詳解

    Linux 打包壓縮命令詳解

    在Linux系統(tǒng)中,有多種命令可以用于打包和壓縮文件,這些命令可以幫助用戶將多個(gè)文件或目錄打包成一個(gè)文件,并可以選擇不同的壓縮算法來減小文件大小,下面給大家介紹Linux 打包壓縮命令詳解,感興趣的朋友一起看看吧
    2023-09-09
  • Linux 無法使用userdel 刪除用戶和組的解決方案

    Linux 無法使用userdel 刪除用戶和組的解決方案

    這篇文章主要介紹了Linux 無法使用userdel 刪除用戶和組的解決方案的相關(guān)資料,需要的朋友可以參考下
    2017-04-04

最新評(píng)論