File size: 2,619 Bytes
e4bf523
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/env bash
# obcon-hf — 실 운영 데이터를 per-device 균등 샘플링해서 seed/03_data.sql 재생성.
#
# 기존 03_data.sql 은 "전체 최근 5000행" 이라 활동 많은 몇몇 장치에 쏠려 있어서 다른
# 장치 클릭 시 그래프 비어 보임. 이 스크립트는 각 장치별로 최근 N행씩 추출해서
# 모든 장치가 화면에 데이터를 가지도록 한다.
#
# Usage:
#   cd /home/gpuadmin/cream/obcon-hf
#   bash scripts/dump_real_data.sh         # 기본: 장치당 50행
#   ROWS_PER_DEVICE=100 bash scripts/dump_real_data.sh

set -euo pipefail
HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
SEED="${HERE}/seed/03_data.sql"

SRC_HOST="${SRC_DB_HOST:-127.0.0.1}"
SRC_PORT="${SRC_DB_PORT:-3306}"
SRC_USER="${SRC_DB_USER:-scada}"
SRC_PASS="${SRC_DB_PASS:-scada}"
SRC_NAME="${SRC_DB_NAME:-obcondb}"
N="${ROWS_PER_DEVICE:-50}"

MYSQL_FLAGS=( -h "$SRC_HOST" -P "$SRC_PORT" -u "$SRC_USER" "-p${SRC_PASS}" -D "$SRC_NAME" )
DUMP_FLAGS=( --no-create-info --skip-comments --skip-add-locks --skip-lock-tables
             --insert-ignore --set-charset --default-character-set=utf8mb4
             --single-transaction )

echo "[dump] target: $SEED  (장치당 $N 행)"
echo ""

# ---- A. 메타 테이블 풀 덤프 ------------------------------------------------
echo "[dump] A. 메타 풀 덤프 (sites/branches/devices/pipelines/alarms/...)"
mysqldump -h "$SRC_HOST" -P "$SRC_PORT" -u "$SRC_USER" "-p${SRC_PASS}" \
    "${DUMP_FLAGS[@]}" \
    "$SRC_NAME" \
    sites branches devices pipelines alarms settings mapLines reports jobManagers \
    2>/dev/null > "$SEED"
echo "  → $(wc -c < "$SEED") bytes"
echo ""

# ---- B. devicedata: 장치당 최근 N 행 ----------------------------------------
for t in devicedata1s devicedata2s devicedataAs; do
    DEVS=$(mysql "${MYSQL_FLAGS[@]}" -N -e "SELECT DISTINCT deviceKey FROM $t" 2>/dev/null)
    COUNT=0
    for d in $DEVS; do
        mysqldump -h "$SRC_HOST" -P "$SRC_PORT" -u "$SRC_USER" "-p${SRC_PASS}" \
            "${DUMP_FLAGS[@]}" \
            --where="deviceKey='$d' ORDER BY statusDatetime DESC LIMIT $N" \
            "$SRC_NAME" "$t" 2>/dev/null \
            | grep -E "^INSERT" >> "$SEED"
        COUNT=$((COUNT+1))
    done
    echo "[dump] B. $t : $COUNT 장치 × 최대 $N 행 (누적 $(wc -c < "$SEED") bytes)"
done

echo ""
echo "[dump] 완료. seed/03_data.sql:"
ls -lh "$SEED"
echo ""
echo "각 테이블별 inserted row 추정:"
for t in devicedata1s devicedata2s devicedataAs; do
    n=$(grep "INSERT IGNORE INTO \`$t\`" "$SEED" | grep -oE "\)," | wc -l)
    echo "  $t : ~$n rows"
done