上海腾科教育干货分享之达梦数据库D数据同步工具的网络流量,知多少?

提到数据库间的数据实时同步工具,Oracle的OGG(Oracle GoldenGate)大概是被最为广泛接受的,即便褒贬不一。达梦公司也有自己的一款数据实时同步软件DMHS(Heterogeneous databaseSynchronization for DM)。

 

DMHS 是达梦推出的新一代支持异构环境的高性能、高可靠和高可扩展的数据库实时同步系统;它基于成熟的关系数据模型和标准接口,跨越多种软硬件平台实现秒级数据实时同步;可广泛应用于应急系统、容灾备份、负载均衡、数据移植、联机维护、订阅分发和多业务中心等业务领域。具有易于安装部署、易于同步管理、操作命令简单易用、装载数据及同步数据的速度较快等优点。

 

达梦的DMHS对数据的同步传输是基于日志实现的。对源数据库在线日志或归档日志进行解析,提取其中数据的变化,如增、删、改操作,将相关信息转换为DMHS 自定义的格式存放在队列文件中。通过发送进程将队列文件通过TCP/IP传送到接收执行子系统;从而实现对带宽占用率低,数据传输效率高。

 

那么,如何观察DMHS的网络日志传输量?

 

要观察网卡接口的数据传输量,诸如Sniffer、Wireshark、科来、Nagios、Cacti等等,均能做到;但它们统统,安装部署相对比较繁琐!这里分享一个简单的方法,用于Linux平台,完全不需要安装;可以在DMHS部署时,实时监控到网络接口的日志量传输情况。使用脚本文件。文件内容如下:

 

#!/bin/sh

usage(){

echo "Usage: $0 [-i INTERFACE] [-s INTERVAL] [-c COUNT]"

echo

echo "-i INTERFACE"

echo "    The interface to  monitor, default is eth0."

echo "-s INTERVAL"

echo "    The time to wait  in seconds between measurements, default is 3 seconds."

echo "-c COUNT"

echo "    The number of  times to measure, default is 10 times."

exit 3

}

 

readargs(){

while [ "$#" -gt 0 ] ; do

  case "$1" in

   -i)

    if [ "$2" ] ;  then

     interface="$2"

     shift ; shift

    else

     echo "Missing a value  for $1."

     echo

     shift

     usage

    fi

   ;;

   -s)

    if [ "$2" ] ;  then

     sleep="$2"

     shift ; shift

    else

     echo "Missing a value  for $1."

     echo

     shift

     usage

    fi

   ;;

   -c)

    if [ "$2" ] ;  then

     counter="$2"

     shift ; shift

    else

     echo "Missing a value  for $1."

     echo

     shift

     usage

    fi

   ;;

   *)

    echo "Unknown option  $1."

    echo

    shift

    usage

   ;;

  esac

done

}

 

checkargs(){

if [ ! "$interface" ] ; then

  interface="eth0"

fi

if [ ! "$sleep" ] ; then

  sleep="3"

fi

if [ ! "$counter" ] ; then

  counter="10"

fi

}

 

printrxbytes(){

/sbin/ifconfig "$interface" | grep "RX bytes" |  cut -d: -f2 | awk '{ print $1 }'

}

 

printtxbytes(){

/sbin/ifconfig "$interface" | grep "TX bytes" |  cut -d: -f3 | awk '{ print $1 }'

}

 

bytestohumanreadable(){

multiplier="0"

number="$1"

while [ "$number" -ge 1024 ] ; do

  multiplier=$(($multiplier+1))

  number=$(($number/1024))

done

case "$multiplier" in

  1)

   echo "$number Kb"

  ;;

  2)

   echo "$number Mb"

  ;;

  3)

   echo "$number Gb"

  ;;

  4)

   echo "$number Tb"

  ;;

  *)

   echo "$1 b"

  ;;

esac

}

printresults(){

while [ "$counter" -ge 0 ] ; do

  counter=$(($counter - 1))

  if [ "$rxbytes" ] ;  then

    oldrxbytes="$rxbytes"

    oldtxbytes="$txbytes"

  fi

  rxbytes=$(printrxbytes)

  txbytes=$(printtxbytes)

  if [ "$oldrxbytes"  -a "$rxbytes" -a "$oldtxbytes" -a "$txbytes" ]  ; then

   echo "RXbytes =  $(bytestohumanreadable $(($rxbytes - $oldrxbytes))) TXbytes =  $(bytestohumanreadable $(($txbytes - $oldtxbytes)))"

  else

   echo "Monitoring  $interface every $sleep seconds. (RXbyte total = $(bytestohumanreadable  $rxbytes) TXbytes total = $(bytestohumanreadable $txbytes))"

  fi

  sleep "$sleep"

done

}

readargs "$@"

checkargs

printresults

 

将脚本文件内容保存成sh文件,存放到目的库所在服务器上,终端中执行就可以了。

注:因为该脚本文件监控的是网卡的传输流量情况,所以,单独查看DMHS的日志传输量时,请尽量保证机器上只有DMHS在使用网络传输数据。

 

小编验证如下:

 

Oracle(源端)待同步表数据约720万条,

                           

图1待同步表数据量

 

使用上述脚本查看同步时网络流量情况:

 

图2

 

返回值中RXbytes表示接收数据大小,TXbytes表示发送数据大小,单位比特。

也可以如下指定监控端口、执行间隔时间、执行次数:

 

上海腾科教育干货分享之达梦数据库D数据同步工具的网络流量,知多少?_第1张图片

图3

 

通过这个脚本,就可以方便的在Linux上监控DMHS网络流量啦。

你可能感兴趣的:(上海腾科教育干货分享之达梦数据库D数据同步工具的网络流量,知多少?)