纯增量部署、host 网络、复用既有 MySQL nacos 库;鉴权开 token。探针 200 绿,内存 <700M 不挤 RAGflow。 端点/密钥写回 docs/内网凭据与端点.md。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
42 lines
2.5 KiB
Bash
42 lines
2.5 KiB
Bash
#!/usr/bin/env bash
|
|
# =============================================================================
|
|
# 在既有 mini-infra MySQL 建 nacos 库 + 灌官方 schema(切片一 阶段〇 B1)
|
|
# -----------------------------------------------------------------------------
|
|
# 纯增量:只新建 `nacos` 库 + 建表,绝不 drop / 不动任何既有库。
|
|
#
|
|
# 两个关键取舍(资深工程师视角):
|
|
# 1) 复用正在运行的 infra-mysql 容器执行 mysql 客户端(docker exec -i),而不是
|
|
# `docker run --rm mysql:8`。原因:mini-infra 本地镜像标签是 mysql:8.4.8,`mysql:8`
|
|
# 并不存在,一旦 run 会触发一次时长不可控的 docker pull —— 违反"纯增量、不引入
|
|
# 不确定拉取"的部署纪律。exec 进 DB 容器走容器内本地 socket,零网络、零代理、零拉取。
|
|
# 2) schema 从本地 Nacos 镜像 docker cp 取出(/home/nacos/conf/mysql-schema.sql),
|
|
# 而不是从网上下 —— 保证 schema 与镜像版本严格对齐。docker create 只建不启、不拉取。
|
|
#
|
|
# 注:官方 mysql-schema.sql 用裸 CREATE TABLE(非 IF NOT EXISTS),故本脚本按"全新库
|
|
# 一次性初始化"设计;库已建表的场景不重复灌(建库那步 IF NOT EXISTS 幂等,灌表那步不重跑)。
|
|
#
|
|
# 用法(在 mini-infra 上执行,MySQL root 口令见 docs/内网凭据与端点.md):
|
|
# MYSQL_ROOT_PW=<见凭据文档> bash init-nacos-schema.sh
|
|
# =============================================================================
|
|
set -euo pipefail
|
|
|
|
MYSQL_CONTAINER="${MYSQL_CONTAINER:-infra-mysql}" # 既有运行中的 MySQL 容器
|
|
MYSQL_ROOT_PW="${MYSQL_ROOT_PW:?需传 MySQL root 密码(见 docs/内网凭据与端点.md)}"
|
|
NACOS_IMAGE="${NACOS_IMAGE:-nacos/nacos-server:v2.4.3}"
|
|
SCHEMA_TMP="/tmp/nacos-mysql-schema.sql"
|
|
|
|
echo "[1/3] 从本地 Nacos 镜像取版本对齐的 schema(docker create 不启动、不拉取)..."
|
|
cid="$(docker create "$NACOS_IMAGE")"
|
|
trap 'docker rm -f "$cid" >/dev/null 2>&1 || true' EXIT
|
|
docker cp "$cid:/home/nacos/conf/mysql-schema.sql" "$SCHEMA_TMP"
|
|
echo " 已取出 schema:$SCHEMA_TMP($(wc -l < "$SCHEMA_TMP") 行)"
|
|
|
|
echo "[2/3] 建 nacos 库(utf8mb4;IF NOT EXISTS 幂等,绝不 drop)..."
|
|
docker exec -i "$MYSQL_CONTAINER" mysql -uroot -p"$MYSQL_ROOT_PW" \
|
|
-e "CREATE DATABASE IF NOT EXISTS nacos DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;"
|
|
|
|
echo "[3/3] 灌 schema 进 nacos 库..."
|
|
docker exec -i "$MYSQL_CONTAINER" mysql -uroot -p"$MYSQL_ROOT_PW" nacos < "$SCHEMA_TMP"
|
|
|
|
echo "PASS nacos schema 已灌入 容器 ${MYSQL_CONTAINER} 的 nacos 库"
|