最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2021年10月19日 16:53:08   作者:我的喵叫初六  
這篇文章主要介紹了shell腳本實(shí)現(xiàn)數(shù)據(jù)庫表增量同步的流程,流程也很簡單,通過獲取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ù)。 

測試:

 

上面兩圖可以看到,源表中比目標(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Linux vim編輯命令模式

    Linux vim編輯命令模式

    vi(vim)是上Linux非常常用的編輯器,很多Linux發(fā)行版都默認(rèn)安裝了vi(vim)。這篇文章給大家介紹了Linux vim編輯命令模式,非常不錯(cuò),感興趣的朋友參考下吧
    2016-11-11
  • Shell基本運(yùn)算符的實(shí)現(xiàn)

    Shell基本運(yùn)算符的實(shí)現(xiàn)

    Shell支持多種運(yùn)算符,主要包括算數(shù)運(yùn)算符,關(guān)系運(yùn)算符,布爾運(yùn)算符,字符串運(yùn)算符,文件測試運(yùn)算符,下面我們就介紹一下這些運(yùn)算符的用法
    2023-05-05
  • shell 字符串操作(切片 長度 替換)

    shell 字符串操作(切片 長度 替換)

    這篇文章主要為大家介紹了shell 字符串操作(切片 長度 替換)腳本解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • linux壓縮常用命令小結(jié)

    linux壓縮常用命令小結(jié)

    這篇文章主要介紹了linux壓縮常用命令知識,包括壓縮解壓縮方面的內(nèi)容,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2017-03-03
  • Linux bc命令實(shí)現(xiàn)數(shù)學(xué)計(jì)算器

    Linux bc命令實(shí)現(xiàn)數(shù)學(xué)計(jì)算器

    這篇文章主要介紹了Linux bc命令實(shí)現(xiàn)數(shù)學(xué)計(jì)算器,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Shell腳本實(shí)現(xiàn)的陽歷轉(zhuǎn)農(nóng)歷代碼分享

    Shell腳本實(shí)現(xiàn)的陽歷轉(zhuǎn)農(nóng)歷代碼分享

    這篇文章主要介紹了Shell腳本實(shí)現(xiàn)的陽歷轉(zhuǎn)農(nóng)歷代碼分享,本文是作者一個(gè)星期的工作成果,得來不易,需要的朋友可以參考下
    2014-09-09
  • linux重啟和關(guān)閉系統(tǒng)命令的寫法

    linux重啟和關(guān)閉系統(tǒng)命令的寫法

    這篇文章給大家介紹了linux重啟和關(guān)閉系統(tǒng)命令的寫法,然后在文中給大家分享了linux五個(gè)重啟命令,感興趣的朋友一起看看吧
    2017-10-10
  • 實(shí)現(xiàn)core文件自動生成配置文件的方法

    實(shí)現(xiàn)core文件自動生成配置文件的方法

    這篇文章主要介紹了實(shí)現(xiàn)core文件自動生成配置文件的方法,需要的朋友可以參考下
    2014-07-07
  • 普通用戶啟動supervisor報(bào)HTTP錯(cuò)誤(strace)解決分析

    普通用戶啟動supervisor報(bào)HTTP錯(cuò)誤(strace)解決分析

    這篇文章主要為大家介紹了普通用戶啟動supervisor報(bào)HTTP錯(cuò)誤strace的問題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • 對Shell 腳本加密的方法

    對Shell 腳本加密的方法

    shc是一個(gè)加密shell腳本的工具.它的作用是把shell腳本轉(zhuǎn)換為一個(gè)可執(zhí)行的二進(jìn)制文件
    2013-01-01

最新評論

万山特区| 确山县| 墨脱县| 辽宁省| 清镇市| 吴桥县| 临江市| 滁州市| 佛山市| 翁源县| 绥芬河市| 连城县| 偃师市| 卢湾区| 苍南县| 义乌市| 丰县| 澄城县| 隆尧县| 肇庆市| 阿拉善盟| 板桥市| 潮安县| 太仆寺旗| 宜川县| 辽宁省| 阿克苏市| 古蔺县| 白沙| 宁国市| 宣化县| 栖霞市| 桃园市| 敦化市| 梓潼县| 博乐市| 永吉县| 南陵县| 潞西市| 瓦房店市| 桓台县|