DataX分库分表脚本实现

5 篇文章 1 订阅
#!/bin/bash
. ~/.bashrc

time=$(date "+%Y-%m-%d %H:%M:%S")
echo "${time}"
for ((i=0;i<100;i++));
do printf "%02d " $i;
    db_no=`printf "%02d\n" $i`
    nohup bash ./trans_query.sh ${db_no} > trans_query.out 2>&1 &
    sleep 6h
    time=$(date "+%Y-%m-%d %H:%M:%S")
    echo "${time}"
done
echo "trans_query_run.sh done"
#!/bin/bash
. ~/.bashrc
if [ $# -lt 1 ]
then
    echo "./loaddata db_no"
    exit
fi
db_no=$1
time=$(date "+%Y-%m-%d %H:%M:%S")
echo "${time}"

example="/home/work/datax/job/core/example"
tempdir="/home/work/datax/job/core"
basepath=$(cd `dirname $0`; pwd)
cd $basepath
ARR=(0 1 2 3 4 5 6 7 8 9)
for ID in ${ARR[*]}
do
    jsonfile="${tempdir}/trans_query_${db_no}_$ID"
    oneexample="${example}/trans_query_example"
    mo_val_str="${db_no}$ID"
    # 去掉串前面的所有0
    mo_val=$(echo -e $mo_val_str | sed -r 's/0*([0-9])/\1/')
    sed "s/DB_NO/${db_no}/g;s/MO_VAL/${mo_val}/g;s/TB_NO/$ID/g" ${oneexample} > ${jsonfile}
done
echo "${jsonfile} done"
ARR=(0 1 2 3 4 5 6 7 8 9)
#ARR=(1)
for ID in ${ARR[*]}
do
    echo "~/datax/log/trans_query_${db_no}_$ID.log"
    nohup /home/work/datax/bin/start_datax.sh /home/work/datax/job/core/trans_query_${db_no}_$ID > /home/work/datax/sh-load/sh-out/trans_query_${db_no}_$ID.out 2>&1 &
    #sleep 1s
done
echo "trans_query.sh done"
{
  "job": {
    "setting": {
      "speed": {
        "channel": 2000,
        "record": "150000"
      },
      "errorLimit": {
        "record": 0,
        "percentage": 0
      }
    },
    "content": [
      {
        "reader": {
          "name": "mysqlreader",
          "parameter": {
            "column": [
              "F_trans_id",
              "F_enabled",
              "F_trans_type",
              "F_payment_mode",
              "F_state"
            ],
            "splitPk": "F_trans_id",
            "where": "F_buyer_user_id%1000=MO_VAL or F_seller_user_id%1000=MO_VAL",
            "connection": [
              {
                "jdbcUrl": [
                  "jdbc:mysql://x.x.x.x:6000?useUnicode=true&characterEncoding=CP1252"
                ],
                "table": [
                  "dyp_db_00.t_trans_00_[0-9]",
                  "dyp_db_08.t_trans_08_[0-9]",
                  "dyp_db_16.t_trans_16_[0-9]",
                  "dyp_db_24.t_trans_24_[0-9]",
                  "dyp_db_32.t_trans_32_[0-9]",
                  "dyp_db_40.t_trans_40_[0-9]",
                  "dyp_db_48.t_trans_48_[0-9]",
                  "dyp_db_56.t_trans_56_[0-9]",
                  "dyp_db_64.t_trans_64_[0-9]",
                  "dyp_db_72.t_trans_72_[0-9]",
                  "dyp_db_80.t_trans_80_[0-9]",
                  "dyp_db_88.t_trans_88_[0-9]",
                  "dyp_db_96.t_trans_96_[0-9]"
                ]
              },
              {
                "jdbcUrl": [
                  "jdbc:mysql://x.x.x.x:6000?useUnicode=true&characterEncoding=CP1252"
                ],
                "table": [
                  "dyp_db_01.t_trans_01_[0-9]",
                  "dyp_db_09.t_trans_09_[0-9]",
                  "dyp_db_17.t_trans_17_[0-9]",
                  "dyp_db_25.t_trans_25_[0-9]",
                  "dyp_db_33.t_trans_33_[0-9]",
                  "dyp_db_41.t_trans_41_[0-9]",
                  "dyp_db_49.t_trans_49_[0-9]",
                  "dyp_db_57.t_trans_57_[0-9]",
                  "dyp_db_65.t_trans_65_[0-9]",
                  "dyp_db_73.t_trans_73_[0-9]",
                  "dyp_db_81.t_trans_81_[0-9]",
                  "dyp_db_89.t_trans_89_[0-9]",
                  "dyp_db_97.t_trans_97_[0-9]"
                ]
              }
            ],
            "username": "datax_r",
            "password": "******"
          }
        },
        "writer": {
          "name": "mysqlwriter",
          "parameter": {
            "writeMode": "insert",
            "username": "datax_w",
            "password": "******",
            "column": [
              "F_trans_id",
              "F_enabled",
              "F_trans_type",
              "F_payment_mode",
              "F_state"
            ],
            "preSql": [],
            "connection": [
              {
                "jdbcUrl": "jdbc:mysql://x.x.x.x:1111?useUnicode=true&characterEncoding=CP1252",
                "table": [
                  "dyp_db_DB_NO.t_trans_query_DB_NO_TB_NO"
                ]
              }
            ]
          }
        }
      }
    ]
  }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值