Files
aiData/DataX/run_jobs_inc.sh
HuangHai 06fe23ff6e 'commit'
2026-02-05 13:32:12 +08:00

129 lines
3.3 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# 环境变量补丁
export PATH=$PATH:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
[ -f /etc/profile ] && . /etc/profile
[ -f ~/.bash_profile ] && . ~/.bash_profile
[ -f ~/.profile ] && . ~/.profile
# 检查参数
TARGET=$1
if [ "$TARGET" != "doris" ] && [ "$TARGET" != "mysql" ]; then
echo "使用方法: $0 [doris|mysql]"
exit 1
fi
# 配置文件
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
CONF_DIR="$SCRIPT_DIR/json"
CONFIG_FILE="$SCRIPT_DIR/db_config.sh"
# 加载数据库配置
if [ -f "$CONFIG_FILE" ]; then
source "$CONFIG_FILE"
else
echo "错误: 找不到配置文件 $CONFIG_FILE"
exit 1
fi
DATAX_HOME="/usr/local/datax"
BIN_DIR="$DATAX_HOME/bin"
DATAX_PY="$BIN_DIR/datax.py"
# 明确指定要执行的15个文件
JOBS=(
"t_equipment_charge_order.json"
"t_equipment_charge_order_detail.json"
"t_account_recharge.json"
"t_account_water.json"
"t_car.json"
"t_company.json"
"t_company_info_value.json"
"t_connector.json"
"t_equipment.json"
"t_station.json"
"t_ext_hurry_quit.json"
"t_time_day.json"
"t_user.json"
"t_user_account.json"
"t_user_upload_fault.json"
)
# 日志配置
LOG_DIR="$SCRIPT_DIR/logs"
if [ ! -d "$LOG_DIR" ]; then
mkdir -p "$LOG_DIR"
fi
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
LOG_FILE="$LOG_DIR/run_inc_${TARGET}_${TIMESTAMP}.log"
echo "日志将同时记录到: $LOG_FILE"
# 根据目标设置参数
if [ "$TARGET" == "doris" ]; then
DEST_PARAMS="$DORIS_DEST_PARAMS"
TITLE="MySQL -> Doris Incremental Sync"
else
DEST_PARAMS="$MYSQL_DEST_PARAMS"
TITLE="MySQL -> MySQL Incremental Sync"
fi
# 在脚本最开始记录开始时间
SCRIPT_START_TIME=$(date '+%Y-%m-%d %H:%M:%S')
SCRIPT_START_TIMESTAMP=$(date +%s)
echo "DataX增量同步脚本 ($TITLE)"
echo "=========================="
# 切换到配置文件目录
cd "$CONF_DIR" || {
echo "错误: 无法进入配置文件目录 $CONF_DIR"
exit 1
}
SUCCESS_COUNT=0
FAIL_COUNT=0
TOTAL=${#JOBS[@]}
declare -a TASK_RESULTS=()
declare -a TASK_DURATIONS=()
declare -a TASK_STATUSES=()
for JOB in "${JOBS[@]}"; do
TABLE_NAME="${JOB%.json}"
echo "任务 [$((SUCCESS_COUNT + FAIL_COUNT + 1))/$TOTAL] $JOB"
# 动态构造增量 SQL按 id 倒序取 1000 条
QUERY_SQL="SELECT * FROM $TABLE_NAME ORDER BY id DESC LIMIT 1000"
# 增量模式下 preSql 为空(不清空目标表)
PRE_SQL=""
PARAMS="$SRC_BASE_PARAMS $DEST_PARAMS -Dsrc_query_sql=\"$QUERY_SQL\" -Ddest_pre_sql=\"$PRE_SQL\""
START_TIME=$(date +%s)
/usr/bin/python "$DATAX_PY" -p "$PARAMS" "$JOB" 2>&1 | tee -a "$LOG_FILE"
EXIT_CODE=${PIPESTATUS[0]}
END_TIME=$(date +%s)
DURATION=$((END_TIME - START_TIME))
TASK_RESULTS+=("$JOB")
TASK_DURATIONS+=("$DURATION")
if [ $EXIT_CODE -eq 0 ]; then
echo "✓ 成功: $JOB (耗时: ${DURATION}秒)"
SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
TASK_STATUSES+=("成功")
else
echo "✗ 失败: $JOB (耗时: ${DURATION}秒)"
FAIL_COUNT=$((FAIL_COUNT + 1))
TASK_STATUSES+=("失败")
fi
done
echo "=========================="
echo "执行结果汇总 (Incremental Sync to $TARGET)"
echo "=========================="
echo "总任务数: $TOTAL"
echo "成功: $SUCCESS_COUNT"
echo "失败: $FAIL_COUNT"
echo "=========================="