V4.0.9版本更新合伙人H5端调整
This commit is contained in:
@@ -6,6 +6,15 @@
|
||||
# 本地开发机一般不在白名单,因此借道生产服务器 dukang-server 建立隧道。
|
||||
# 2. 在本地 dukang-v1-mysql 容器内用 mysqldump 连接隧道端口,导出线上库。
|
||||
# 3. 通过管道直接导入本地库(默认 dukang_haoke,即应用本地库名)。
|
||||
# 4. 下列表不同步,保留本地数据(环境配置 / 密钥 / 大表日志等):
|
||||
# · 系统设置:system_config, common_wx_app_config
|
||||
# · 企微机器人:wecom_bot, wecom_message_push, wecom_push_template,
|
||||
# llm_api_config, knowledge_base, knowledge_document
|
||||
# · OSS 资源库:common_resource
|
||||
# · 日志:log_third_party, log_promo_event, log_user_analytics,
|
||||
# log_store_analytics, log_partner_analytics, log_wecom_bot
|
||||
# · 白名单:common_test_whitelist_phone, common_product_visibility_phone,
|
||||
# store_visibility_phone
|
||||
#
|
||||
# 前置条件:
|
||||
# - deploy.env 中 DEPLOY_HOST / DEPLOY_USER / DEPLOY_PORT 已配置且可无密码 SSH
|
||||
@@ -35,13 +44,35 @@ DO_BACKUP=1
|
||||
ASSUME_YES=0
|
||||
DRY_RUN=0
|
||||
|
||||
# 同步时保留本地数据的表(见文件头说明)
|
||||
SYNC_EXCLUDE_TABLES=(
|
||||
system_config
|
||||
common_wx_app_config
|
||||
wecom_bot
|
||||
wecom_message_push
|
||||
wecom_push_template
|
||||
llm_api_config
|
||||
knowledge_base
|
||||
knowledge_document
|
||||
common_resource
|
||||
log_third_party
|
||||
log_promo_event
|
||||
log_user_analytics
|
||||
log_store_analytics
|
||||
log_partner_analytics
|
||||
log_wecom_bot
|
||||
common_test_whitelist_phone
|
||||
common_product_visibility_phone
|
||||
store_visibility_phone
|
||||
)
|
||||
|
||||
# ---------------- 解析参数 ----------------
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
--yes|-y) ASSUME_YES=1 ;;
|
||||
--no-backup) DO_BACKUP=0 ;;
|
||||
--dry-run) DRY_RUN=1 ;;
|
||||
--help|-h) sed -n '3,30p' "$0"; exit 0 ;;
|
||||
--help|-h) sed -n '3,39p' "$0"; exit 0 ;;
|
||||
--tunnel-port=*) TUNNEL_PORT="${arg#*=}" ;;
|
||||
--local-db=*) LOCAL_DB="${arg#*=}" ;;
|
||||
--container=*) LOCAL_CONTAINER="${arg#*=}" ;;
|
||||
@@ -103,6 +134,8 @@ echo " 源(线上): $REMOTE_USER@$REMOTE_HOST:$REMOTE_PORT/$REMOTE_DB"
|
||||
echo " 目标(本地): root@$LOCAL_CONTAINER:$LOCAL_DB (对外端口 6016)"
|
||||
echo " 隧道: $TARGET -L $TUNNEL_PORT:$REMOTE_HOST:$REMOTE_PORT"
|
||||
echo " 本地备份: $([[ $DO_BACKUP -eq 1 ]] && echo 是 || echo 否)"
|
||||
echo " 保留本地(不同步): ${#SYNC_EXCLUDE_TABLES[@]} 张表"
|
||||
printf ' - %s\n' "${SYNC_EXCLUDE_TABLES[@]}"
|
||||
if [[ $DRY_RUN -eq 1 ]]; then
|
||||
echo "(dry-run) 已结束,未做任何修改。"
|
||||
exit 0
|
||||
@@ -148,13 +181,20 @@ if [[ $ready -ne 1 ]]; then
|
||||
fi
|
||||
|
||||
# ---------------- 同步(线上 -> 本地,管道直导) ----------------
|
||||
IGNORE_TABLE_ARGS=()
|
||||
for tbl in "${SYNC_EXCLUDE_TABLES[@]}"; do
|
||||
IGNORE_TABLE_ARGS+=(--ignore-table="${REMOTE_DB}.${tbl}")
|
||||
done
|
||||
|
||||
echo "==> 开始同步(管道直导,不落临时文件)"
|
||||
echo " 提示:同步前建议本地 Prisma 已追平线上 schema(pnpm db:push 或迁移),否则可能因表结构差异报错。"
|
||||
echo " 提示:${#SYNC_EXCLUDE_TABLES[@]} 张环境/配置表保留本地数据,不会被线上覆盖。"
|
||||
set +e
|
||||
docker exec -i -e "MYSQL_PWD=$REMOTE_PASS" "$LOCAL_CONTAINER" \
|
||||
mysqldump -h "$HOST_ALIAS" -P "$TUNNEL_PORT" -u "$REMOTE_USER" \
|
||||
--lock-tables=0 --add-drop-table --skip-triggers --no-create-db \
|
||||
--skip-routines --skip-events --column-statistics=0 --no-tablespaces --set-gtid-purged=OFF \
|
||||
"${IGNORE_TABLE_ARGS[@]}" \
|
||||
"$REMOTE_DB" \
|
||||
| docker exec -i "$LOCAL_CONTAINER" mysql -uroot -p"$LOCAL_ROOT_PASSWORD" "$LOCAL_DB"
|
||||
RC=${PIPESTATUS[0]}
|
||||
@@ -168,4 +208,4 @@ if [[ $RC -ne 0 ]]; then
|
||||
[[ $DO_BACKUP -eq 1 ]] && echo "请用备份恢复: $BK" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "==> 同步完成 ✅ 本地 $LOCAL_DB 现已是线上 $REMOTE_DB 的副本。"
|
||||
echo "==> 同步完成 ✅ 本地 $LOCAL_DB 已同步线上业务数据(${#SYNC_EXCLUDE_TABLES[@]} 张配置/日志表保留本地)。"
|
||||
|
||||
Reference in New Issue
Block a user