From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master
---
docker/postgres/migration/README-杩佺Щ鎿嶄綔鎵嬪唽.md | 271 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 271 insertions(+), 0 deletions(-)
diff --git "a/docker/postgres/migration/README-\346\235\251\344\275\272\320\251\351\216\277\345\266\204\347\266\224\351\216\265\345\254\252\345\224\275.md" "b/docker/postgres/migration/README-\346\235\251\344\275\272\320\251\351\216\277\345\266\204\347\266\224\351\216\265\345\254\252\345\224\275.md"
new file mode 100644
index 0000000..476b83e
--- /dev/null
+++ "b/docker/postgres/migration/README-\346\235\251\344\275\272\320\251\351\216\277\345\266\204\347\266\224\351\216\265\345\254\252\345\224\275.md"
@@ -0,0 +1,271 @@
+# JNPF MySQL 鈫� PostgreSQL 杩佺Щ宸ュ叿鍖呮搷浣滄墜鍐�
+
+> ## 馃弫 杩佺Щ宸插畬鎴愶紝鏈伐鍏峰寘澶ч儴鍒嗗凡閫�褰癸紙2026-07-25 鏍囨敞锛�
+>
+> MySQL鈫扨G 杩佺Щ浜� **2026-07-21 鍏ㄩ儴瀹屾垚**锛堟暟鎹惤鍦ㄨ吘璁簯 CVM 鍏变韩 PG `YOUR_DB_HOST:15432`锛�
+> 寮�鍙戜笌娴嬭瘯鍏辩敤涓�搴擄級銆傛湰鐩綍鍐呰剼鏈殑鐜扮姸鍒嗕笁绫伙細
+>
+> | 鑴氭湰 | 鐜扮姸 |
+> |---|---|
+> | `backup.sh` | 鉁� **浠嶆槸涓诲姏**鈥斺�擟VM 搴撴瘡鏃� 03:00 鍥涘簱澶囦唤鍗崇敱瀹冩墽琛� |
+> | `create-app-roles.sh` | 鉁� **浠嶉渶瑕�**鈥斺�旀柊鐜锛堝惈灏嗘潵鐨勬寮忕幆澧冿級restore 鍓嶅繀椤诲厛寤鸿鑹诧紝鍚﹀垯 owner 钀戒笉瀵� |
+> | `install.sh` / `assemble-*.sh` | 鈿狅笍 **浠�"鍏ㄦ柊绌哄簱"澶囩敤**鈥斺�斾笂绾垮凡鏀逛负鏁村簱 dump/restore锛堣 `docs/release-checklist.md` 搂1锛夛紝涓嶅啀鐜板満閲嶅缓 schema |
+> | `migrate-data.sh` / `migrate-nacos-config.sh` / `schema-drift-check.sh` | 鉀� **宸查��褰癸紝鍕垮啀鎵ц**鈥斺�斿畠浠殑鍓嶆彁鏄�"鑵捐浜� MySQL 鏄簨瀹炴簮"锛岃鍓嶆彁宸叉秷澶憋紙MySQL 鏁版嵁鍋滃湪 07-16锛屼粎浣滃喎澶囧洖閫�搴曠墝淇濈暀锛� |
+>
+> **璇窇 `migrate-data.sh` 鐨勫悗鏋滄槸鐪熷疄鐨勬暟鎹簨鏁�**锛氬畠浼氱敤 MySQL 鏃у揩鐓� truncate 閲嶇亴鐩爣搴撱��
+> 鑴氭湰宸插姞鎵ц鎶ゆ爮锛堝惎鍔ㄥ嵆鎷掔粷锛岄』鏄惧紡璁� `I_KNOW_MIGRATION_IS_RETIRED=1` 鎵嶆斁琛岋級銆�
+>
+> 褰撳墠鎷撴墤涓庤繛鎺ョ邯寰嬶細`docs/db-connection-pool-guide.md`銆�
+
+> **瀹氫綅锛�2026-07-17锛孊acklog B 鏂规 (c) 鍚堟祦鍚庯級**锛氭湰鐩綍鏄�**涓�娆℃�� MySQL鈫扨G 鏁版嵁杩佺Щ宸ュ叿鍖�**锛�
+> 鍙鐩栥�宻chema 鍒濆鍖� + 鍋滄満绐楀彛杩佹暟鎹� + 澶囦唤銆嶏紱鐜板満鍓叉帴瀹屾垚鍚庡嵆閫�褰广��
+> **PG 瀹瑰櫒鐨勯儴缃茬粺涓�璧颁粨搴撴牴 `docker-compose.yml`**锛圔acklog A 鍔犲浐鍩虹嚎锛氱鍙f敹鏁� + `${VAR:?}`
+> 纭害鏉熷嚟鎹級锛屾棫 `docker-compose.prod.yml` 鍗曟満閮ㄧ讲闈㈠凡鍒犻櫎銆�
+> 鏁存爤绂荤嚎浜や粯瑙� `docs/docker-compose-guide.md` 搂14锛坄make images-offline`锛夛紱鏈洰褰曚細琚敹鍏�
+> 浜や粯鍖呯殑 `migration/` 瀛愮洰褰曘�傛柟妗堣儗鏅 `docs/archive/pg-migration-plan.md`锛岃俯鍧戣 `tasks/lessons.md`銆�
+
+---
+
+## 0. 宸ュ叿鍖呭唴瀹�
+
+| 鏂囦欢 | 璇存槑 |
+|---|---|
+| `install.sh` | schema 鍒濆鍖栵紙鍏ㄦ柊绌哄簱锛夛細寤哄洓搴擄紙jnpf_init/jnpf_flow/jnpf_xxljob/nacos_config锛�+ 寤鸿〃 |
+| `migrate-data.sh` | 鍋滄満绐楀彛涓�娆℃�ф暟鎹縼绉伙紙鐜板満 MySQL 鈫� PG锛� |
+| `backup.sh` | pg_dump 瀹氭椂澶囦唤 + 淇濈暀绛栫暐锛堥厤 cron锛夛紝榛樿鍚� nacos_config |
+| `create-app-roles.sh` + `create_app_roles.sql` | 寤轰笟鍔′笓鐢ㄨ繛搴撹鑹诧紙涓夊簱涓夎鑹诧紝璇� .env锛屽箓绛夛紝L030锛� |
+| `schema-drift-check.sh` | 琛ㄧ骇+鍒楃骇婕傜Щ妫�鏌ワ紙杩滅▼ MySQL 浜嬪疄婧� vs 鏈湴 PG锛夛紱鍚堝苟 main 鎴栨暟鎹埛鏂�**涔嬪墠**鍏堣窇锛岄樆鏂」鐩存帴缁欑被鍨嬫槑缁嗭紙SOP 瑙� docs/docker-compose-guide.md 搂18锛孡035锛� |
+| `assemble-package.sh` | **鏋勫缓鏈轰笓鐢�**锛屾妸 repo 閲岀殑 SQL 缁勮杩� `sql/`锛堢幇鍦轰笉鐢級 |
+| `sql/` | 鍏ㄩ儴鍒濆鍖�/杩佺Щ SQL锛堟瀯寤烘満 assemble 鐢熸垚锛屼笉杩� git锛� |
+
+### 鏋勫缓鏈虹粍瑁咃紙浜や粯鍓嶏紝鍦ㄥ紑鍙戞満璺戜竴娆★級
+```bash
+cd docker/postgres/migration
+./assemble-package.sh # 鎶� sql/ 濉弧锛堝惈瀹樻柟 init + 鑷缓琛� DDL + pgloader 妯℃澘锛�
+```
+缁勮缁撴灉闅� `make images-offline` 涓�骞惰繘鏁存爤绂荤嚎浜や粯鍖咃紝涓嶅啀鍗曠嫭鎵� tar銆�
+
+---
+
+## 1. 鐜板満鍓嶇疆鏉′欢
+
+- Linux x86_64锛屽凡瑁� **Docker + docker compose 鎻掍欢**锛坄docker compose version` 鍙敤锛夈��
+- 鏁版嵁鐩橈細`/data` 鍒嗗尯寤鸿 鈮� 20GB锛圥G 鏁版嵁 + 澶囦唤 + 涓存椂 dump锛夈��
+- 涓庣幇鍦� MySQL锛堟簮搴擄級缃戠粶鍙揪銆�
+- PG 瀹瑰櫒宸叉寜鏍� compose 鎷夎捣锛堣 搂2锛夛紱绂荤嚎鐜闀滃儚宸� `docker load`锛堝惈 `mysql:8.0` 涓�
+ `dimitri/pgloader` 杩佺Щ杈呭姪闀滃儚锛屽湪浜や粯鍖� `images/jnpf-migration-tools-*.tar.gz`锛夈��
+
+---
+
+## 2. 璧� PG 瀹瑰櫒涓庡缓 schema锛堝彲鎻愬墠鍋氾紝涓嶉渶鍋滄満锛�
+
+PG 鐢辨牴 compose锛堜粨搴撴牴鎴栦氦浠樺寘鏍癸級鎷夎捣鈥斺�斿嚟鎹粡 `.env` 娉ㄥ叆銆佸熀绾夸笉瀵瑰鍙戝竷绔彛锛�
+
+```bash
+# 鍦ㄤ粨搴撴牴 / 浜や粯鍖呮牴锛�
+cp .env.example .env && vi .env # 鍏ㄩ儴瀵嗙爜鏀圭幇鍦哄�硷紙瑙掕壊鍚�/鐢ㄦ埛鍚嶄繚鎸侀粯璁わ紝SQL 宸茬‖缂栫爜锛�
+docker volume create postgres_pgdata # 鍏ㄦ柊鏈哄櫒
+docker compose up -d cx-postgres # 鍙捣 PG锛坔ealthcheck 杩囦簡鍗冲彲锛�
+```
+
+> **娣峰悎褰㈡��**锛圝NPF 鏈嶅姟鏆傜暀瀹夸富杩涚▼銆佷粎 PG 瀹瑰櫒鍖栵級锛氬熀绾夸笉鍙戝竷 PG 绔彛锛岄渶涓存椂 override鈥斺��
+> ```yaml
+> # docker-compose.override.yml锛堢幇鍦轰复鏃讹紝鍒囧叏瀹瑰櫒鍚庡垹闄わ級
+> services:
+> cx-postgres:
+> ports: ["127.0.0.1:5432:5432"]
+> ```
+> 鍏ㄥ鍣ㄥ舰鎬佹棤闇�姝ゆ锛堜笟鍔$粡 compose 缃戠粶鏈嶅姟鍚� `cx-postgres:5432` 鐩磋繛锛岃 release-checklist 搂0.10锛夈��
+
+鐒跺悗寤� schema锛�**鍙敤浜庡叏鏂扮┖搴�**锛涘簱閲屽凡鏈夎〃浼氭嫆缁濇墽琛岋紝闃叉 init 閲岀殑 DROP TABLE 娓呮暟鎹級锛�
+
+```bash
+cd migration/ # 浜や粯鍖呭唴锛涗粨搴撳唴鍒� cd docker/postgres/migration
+./install.sh # 寤哄洓搴� 鈫� 瀹樻柟 init 鈫� 鑷缓琛� 鈫� 鏁版嵁鎺ュ彛淇 鈫� Nacos 瀛樺偍搴� schema
+```
+缁撴潫浼氭墦鍗拌〃鏁版牳瀵癸紝搴斾负锛�
+```
+jnpf_init BASE TABLE = 366 (瀹樻柟293 + 鑷缓73)
+jnpf_flow BASE TABLE = 70
+jnpf_xxljob BASE TABLE = 11
+nacos_config BASE TABLE = 12
+```
+> 姝ゅ埢搴撴槸**绌� schema**锛屼笟鍔℃暟鎹湪涓嬩竴姝ュ仠鏈虹獥鍙h縼鍏ャ��
+> schema 灏辩华鍚庢寜 `docs/release-checklist.md` 搂0.3 璺� `./create-app-roles.sh` 寤轰笟鍔¤鑹�
+> 锛堥『搴忛搧寰� L030锛氬厛瀹氱 .env 鈫� 璺戣剼鏈� 鈫� 鍚屾 Nacos datasource.yaml 鈫� 閲嶅惎娑堣垂鏂癸級銆�
+
+---
+
+## 3. 鍋滄満绐楀彛锛氭暟鎹縼绉�
+
+> 杩佺Щ鏈熼棿闇�**鍋滄瀵规簮 MySQL 鐨勫啓鍏�**锛堝仠 JNPF 涓氬姟鏈嶅姟锛夛紝淇濊瘉鏁版嵁涓�鑷淬��
+
+### 3.1 鏃跺簭
+```
+鈶� 鍋� JNPF 涓氬姟鏈嶅姟锛堝仠姝㈠婧� MySQL 鍐欏叆锛�
+鈶� cd migration/ && SRC_MYSQL_HOST=... SRC_MYSQL_PWD='***' ./migrate-data.sh all
+鈶� 鏍稿 migrate-data.sh 鏈熬鎶芥牱鏍¢獙 + 璺戝叏閲� rowcount 鏍¢獙锛埪�3.3锛�
+鈶� 鍒� Nacos datasource.yaml 鍒� PG锛埪�4锛�
+鈶� 閲嶅惎 JNPF 鏈嶅姟锛屽啋鐑熼獙璇�
+鈶� 娓呯悊涓存椂璧勬簮锛�./migrate-data.sh cleanup
+```
+
+### 3.2 `migrate-data.sh all` 鍋氫簡浠�涔�
+1. **dump**锛氫粠鐜板満 MySQL `mysqldump`锛坄--single-transaction --hex-blob`锛岃烦杩� `base_sys_log` 澶ф棩蹇楄〃锛夊鍑� `jnpf_init` / `jnpf_flow`銆�
+2. **mirror**锛氳捣涓存椂 `mysql:8.0` 涓浆瀹瑰櫒锛坄mysql_native_password`锛夛紝鐏屽叆 dump銆�
+ 鈥斺�� 涓轰綍涓浆锛歱gloader 鐨� qmynd 搴撲笉鏀寔 MySQL8 鎻℃墜锛屽繀椤荤粡 native_password 鐨� mirror銆�
+3. **load**锛�
+ - `pgloader` 鐏� `jnpf_init`锛堟帓闄� `base_sys_log`銆乣blade_visual_map`锛変笌 `jnpf_flow`锛堝ぇ鍐� ACT/FLW 琛級銆�
+ - `blade_visual_map`锛堝法琛岃〃锛宲gloader 浼氬爢鐖嗭級璧� `mysqldump --tab` 鈫� PG `COPY`锛圢ULL=`\N` 澶╃劧鍏煎锛夈��
+ - 閲嶆斁鏁版嵁鎺ュ彛淇 `data_interface_pg_fixes.sql`锛�4 鏉� UPDATE锛夈��
+ - `lims_biz_log.log_seq` 搴忓垪 setval 鍒板綋鍓嶆渶澶у�笺��
+ - 鎶芥牱琛屾暟鏍¢獙锛坢irror vs PG锛夈��
+
+婧愬簱鍦板潃涓庡瘑鐮�**蹇呴』鏄惧紡浼犲叆**锛堜笉璁捐蒋榛樿锛宑odex review 2026-07-17锛夛紱鐩爣 PG 瀵嗙爜榛樿璇�
+浠撳簱鏍�/浜や粯鍖呮牴 `.env` 鐨� `JNPF_PG_PASSWORD`锛�
+```bash
+SRC_MYSQL_HOST=x.x.x.x SRC_MYSQL_PORT=3306 SRC_MYSQL_USER=root SRC_MYSQL_PWD='***' \
+ ./migrate-data.sh all
+```
+> 杩佺Щ浜х敓鐨� `dump/` 鐩綍鍚畬鏁翠笟鍔℃暟鎹紝楠屾敹鍚庡姟蹇� `./migrate-data.sh cleanup` 娓呴櫎銆�
+
+### 3.3 鍏ㄩ噺閫愯〃琛屾暟鏍¢獙锛堝己鐑堝缓璁級
+```bash
+# mirror 浠嶅湪鏃讹紝閫愯〃瀵规瘮 MySQL 婧� vs PG锛堝簲杈撳嚭銆屼笉涓�鑷� 0銆嶏級
+MYSQL_HOST=cx-mysql-mirror MYSQL_PORT=3306 MYSQL_USER=root MYSQL_PWD_V=mirror_2026 \
+ MYSQL_DOCKER_NET=$(docker inspect -f '{{range $k,$v := .NetworkSettings.Networks}}{{$k}}{{end}}' cx-postgres) \
+ PG_CONTAINER=cx-postgres \
+ bash sql/rowcount_check.sh jnpf_init
+# jnpf_flow 鍚岀悊锛�
+... bash sql/rowcount_check.sh jnpf_flow
+```
+
+---
+
+## 4. 鍒囨崲 Nacos 鏁版嵁婧�
+
+`datasource.yaml` 鏀逛负 PG锛堢ず渚嬪�硷紝鐜板満鎸夊疄闄呭~锛夛細
+```yaml
+jnpf:
+ datasource:
+ db-type: PostgreSQL
+ host: 127.0.0.1 # PG 瀹瑰櫒瀹夸富
+ port: 5432
+ db-name: jnpf_init
+ username: postgres
+ password: 鏀规垚寮哄瘑鐮� # 涓� install 鏃� PG_PASSWORD 涓�鑷�
+```
+鏀规硶浜岄�変竴锛�
+- **鎺у埗鍙�**锛歂acos 鈫� 閰嶇疆绠$悊 鈫� `datasource.yaml`锛坓roup=DEFAULT_GROUP銆佸搴斿懡鍚嶇┖闂达級鈫� 缂栬緫鍙戝竷銆�
+- **API**锛�
+ ```bash
+ TOKEN=$(curl -s -X POST 'http://<nacos>:8848/nacos/v1/auth/login' \
+ -d 'username=nacos&password=nacos' | sed 's/.*"accessToken":"\([^"]*\)".*/\1/')
+ curl -X POST "http://<nacos>:8848/nacos/v1/cs/configs?accessToken=$TOKEN" \
+ --data-urlencode 'dataId=datasource.yaml' \
+ --data-urlencode 'group=DEFAULT_GROUP' \
+ --data-urlencode 'tenant=<鍛藉悕绌洪棿id>' \
+ --data-urlencode 'type=yaml' \
+ --data-urlencode 'content@datasource.yaml'
+ ```
+
+> 鈿狅笍 **`ConfigValueUtil` 娌℃湁 `@RefreshScope`**锛氭敼瀹� Nacos **蹇呴』閲嶅惎 JNPF 鏈嶅姟**鎵嶇敓鏁堬紝涓嶄細鐑洿鏂般��
+
+閲嶅惎鍚庡啋鐑燂細鐧诲綍 鈫� 鑿滃崟 鈫� 鎵撳紑鑻ュ共 LIMS 鍙拌处鍒楄〃锛堟暟鎹�/涓枃姝e父锛夆啋 鏂囦欢涓婁紶棰勮锛堟敞鎰� L015锛歂acos `config.ApiDomain` 瑕佹寚鐜板満缃戝叧鍩熷悕锛夈��
+
+---
+
+## 5. 瀹氭椂澶囦唤
+
+```bash
+# 鎵嬪姩璺戜竴娆$‘璁ゅ彲鐢紙浜х墿钀� volume 澶栵級
+BACKUP_DIR=/data/pg-backup ./backup.sh
+
+# crontab -e锛屾瘡澶� 02:00 澶囦唤锛屼繚鐣� 14 澶╋紙璺緞鎸夌幇鍦哄疄闄呰В鍖呬綅缃皟鏁达級
+0 2 * * * BACKUP_DIR=/data/pg-backup RETENTION_DAYS=14 /opt/jnpf/offline/migration/backup.sh >> /var/log/jnpf-pg-backup.log 2>&1
+```
+杩樺師锛坈ustom 鏍煎紡 `-Fc`锛屽彲閫夋嫨鎬ц繕鍘燂級锛�
+```bash
+docker exec -i cx-postgres pg_restore -U postgres -d jnpf_init --clean --if-exists < /data/pg-backup/jnpf_init_YYYYMMDD_HHMMSS.dump
+```
+
+---
+
+## 5.5 闄勫姞锛歂acos 涓� xxl-job-admin 瀛樺偍搴撲篃鍒� PG锛堝彲閫夛紝寤鸿鍚岀獥鍙e仛锛�
+
+> 鏈湴宸查獙璇侊紙2026-07-16锛夛細JNPF 瀹氬埗 Nacos 涓� xxl-job-admin 鍧囧師鐢熸敮鎸� PG锛屽垏鎹㈠悗 MySQL 鍙畬鍏ㄤ笅绾裤��
+
+### Nacos 瀛樺偍搴�
+1. PG 寤哄簱璺� schema锛歚install.sh` 宸叉妸 `nacos_config` 浣滀负绗洓搴撲竴骞跺缓濂斤紙鍚� nacos/nacos 鐧诲綍绉嶅瓙鈥斺��
+ 瀹樻柟 mysql-schema.sql 鏃� INSERT锛屾紡杩欐绌哄簱鏃犳硶鐧诲綍锛夈�傝�佺増鏈崟鐙缓搴撶殑鍛戒护淇濈暀澶囨煡锛�
+ ```bash
+ docker exec cx-postgres psql -U postgres -c "CREATE DATABASE nacos_config ENCODING 'UTF8'"
+ docker exec -i cx-postgres psql -U postgres -d nacos_config -v ON_ERROR_STOP=1 -f - < sql/nacos_config_pg.sql
+ ```
+2. 锛堝凡鏈� Nacos 杩佺Щ鏃讹級**鍏堢粡鏃� Nacos API 瀵煎嚭**鍏ㄩ儴 namespace + 閰嶇疆锛堥�愭潯 GET content 钀界洏锛夈��
+3. 鏀� `nacos/conf/application.properties`锛堝厛澶囦唤锛涙枃浠堕噷鑷甫 Postgre 娉ㄩ噴绀轰緥娈碉紝鐓ф妱鏀硅繛鎺ヤ覆锛夛細
+ ```properties
+ spring.datasource.convert=postgre # platform 淇濇寔 mysql 涓嶅姩
+ db.url.0=jdbc:postgresql://<PG瀹夸富>:5432/nacos_config?currentSchema=public
+ db.user=postgres
+ db.password=<PG瀵嗙爜>
+ ```
+4. 閲嶅惎 Nacos锛宍logs/start.out` 鍑虹幇 `SwitchDatabase:postgre` + `use external storage` 鍗虫垚鍔燂紱鐧诲綍锛坣acos/nacos锛屽敖蹇敼瀵嗭級鈫� 鍚� id 閲嶅缓 namespace锛坄customNamespaceId` 鍙傛暟锛夆啋 閲嶅彂閰嶇疆 鈫� 閫愭潯 GET 鍥炴潵涓庡鍑哄唴瀹� diff銆�
+5. **鍒囨崲椤哄簭锛堥噸瑕侊紝瀹炴祴鏁欒锛�**锛歚寤哄簱璺� schema 鈫� 瀵煎嚭鏃ч厤缃� 鈫� 鍋滃叏閮� JNPF 涓氬姟鏈嶅姟 鈫� 鏀归厤缃噸鍚� Nacos 鈫� 瀵煎叆閰嶇疆骞� diff 鈫� 鎸夊簭鎷夎捣涓氬姟鏈嶅姟`銆�**涓嶈璁╀笟鍔℃湇鍔″甫鐫�鏃ц繛鎺ョ‖鎵� Nacos 閲嶅惎**鈥斺�攏acos-client 鍦ㄦ湇鍔$涓嶅彲杈剧獥鍙d細娉勬紡 grpc 閲嶈繛绾跨▼锛堝疄娴� 1.5h 鍚庢墦婊℃瘡杩涚▼ 4096 涓婇檺锛屾湇鍔″亣娲汇�佹敞鍐岃〃閫愪釜鎺夌嚎锛岃 tasks/lessons.md L022锛夈��
+6. 鍥炴粴锛氭仮澶� application.properties 澶囦唤 + 閲嶅惎銆�
+
+### xxl-job-admin
+1. `application-dev.yml` 閲屾敞閲� MySQL 娈点�佸惎鐢ㄨ嚜甯︾殑 PostgreSQL 娉ㄩ噴娈碉細
+ ```yaml
+ datasource:
+ url: jdbc:postgresql://<PG瀹夸富>:5432/jnpf_xxljob
+ username: postgres
+ password: <PG瀵嗙爜>
+ driver-class-name: org.postgresql.Driver # 椹卞姩 jar 宸插唴缃� postgresql-42.7.8
+ ```
+2. `server.sh restart`锛岀櫥褰� `/xxl-job-admin`锛坅dmin/123456 绉嶅瓙锛夐獙璇佸垪琛�/鏃ュ織椤垫甯搞��
+3. 鈿狅笍 **JNPF 鍟嗕笟 license**锛歛dmin 鍚姩瑕佹眰 `jnpf.license.licensePath`锛堥粯璁� `/data/jnpfsoft/license.lic`锛夊瓨鍦ㄤ笖鏈夋晥锛堢粦瀹氱‖浠讹級锛岀己澶卞嵆閫�鍑衡�斺�旀湰鍦板紑鍙戞満鏃� license 鏈獙鍚姩锛�**姝ゆ蹇呴』鍦ㄧ幇鍦烘湁 license 鐨勬満鍣ㄤ笂鍋�**銆�
+4. jnpf-scheduletask(30009) 鏈嶅姟鏈韩璧颁富 `datasource.yaml`锛堝凡鏄� PG锛夛紝`datasource-scheduletask.yaml` 閲屽彧鏈� admin 鍦板潃鏃� DB 杩炴帴锛屾棤闇�鏀广��
+
+## 6. 鍥炴粴鏂规
+
+PG 渚ф暟鎹槸**鏂板啓鍏�**锛屾簮 MySQL 鍦ㄥ仠鏈虹獥鍙e唴**鏈鏀瑰姩** 鈫� 鍥炴粴闆舵暟鎹崯澶憋細
+
+1. 鎶� Nacos `datasource.yaml` 鍒囧洖 **MySQL 鍘熻繛鎺�**锛�
+ ```yaml
+ db-type: MySQL
+ host: <鐜板満婧� MySQL 鍦板潃>
+ port: 3306
+ db-name: jnpf_init
+ username: <鍘熺敤鎴�>
+ password: <鍘熷瘑鐮�>
+ ```
+2. **閲嶅惎 JNPF 鏈嶅姟**锛堝悓鏍峰洜鏃� `@RefreshScope`锛夈��
+3. 涓氬姟鎭㈠鍒� MySQL銆侾G 瀹瑰櫒鍙繚鐣欏緟鎺掓煡锛屼笉褰卞搷鍥炴粴銆�
+
+> 鍥炴粴鍒ゆ嵁锛氬垏 PG 鍚庢牳蹇冮摼璺啋鐑熷け璐ャ�佹垨 搂3.3 鏍¢獙鍙戠幇鏁版嵁缂哄け涓旀棤娉曞揩閫熶慨澶嶃��
+
+---
+
+## 7. 甯歌闂锛堝搴� lessons.md锛�
+
+- **鏈嶅姟鎶� `database "jnpf_init" does not exist` 浣� `docker exec psql` 鑳界湅鍒拌〃**锛圠016锛夛細瀹夸富鏈哄彟鏈� PG 鍗犱簡 5432锛屾湇鍔¤繛閿欏疄渚嬨�俙lsof -iTCP:5432 -sTCP:LISTEN` 鏌ュ崰鐢紱鐜板満搴旂‘淇濆彧鏈夊鍣ㄧ洃鍚� 5432銆�
+- **鑴氭湰鍖栫櫥褰曟姤"涓嶆敮鎸佹鐧诲綍鏂瑰紡"**锛圠017锛夛細JNPF 鐧诲綍鏄� `form-urlencoded + AES(MD5(瀵嗙爜))`锛屼笉鑳界敤 JSON 瑁歌皟銆�
+- **鏌愬湪绾挎ā鍨� List 杩斿洖绌�**锛圠018锛夛細鍏堟煡 `base_visual_release.f_web_type`锛寃ebType=1 绾〃鍗曟棤鍒楄〃灞炴甯革紝闈炴暟鎹涪澶便��
+- **鏂囦欢涓婁紶鎴愬姛浣嗛瑙�/涓嬭浇 502**锛圠015锛夛細Nacos `system-config.yaml` 鐨� `config.ApiDomain` 瑕佹寚鐜板満缃戝叧锛涙敼鍚庨噸鍚� `jnpf-file`銆�
+
+---
+
+## 8. 鍛戒护閫熸煡
+
+| 鐩殑 | 鍛戒护 |
+|---|---|
+| 璧� PG 瀹瑰櫒锛堟牴 compose锛� | `docker volume create postgres_pgdata && docker compose up -d cx-postgres` |
+| 寤� schema锛堝叏鏂扮┖搴擄級 | `./install.sh` |
+| 寤轰笟鍔¤鑹诧紙.env 瀹氱鍚庯級 | `./create-app-roles.sh` |
+| 鍋滄満绐楀彛杩佹暟鎹� | `SRC_MYSQL_HOST=... SRC_MYSQL_PWD='***' ./migrate-data.sh all` |
+| 鍙窇 PG 渚э紙mirror 宸插氨缁級 | `./migrate-data.sh load` |
+| 鍏ㄩ噺琛屾暟鏍¢獙 | 瑙� 搂3.3 |
+| 娓呯悊涓存椂 mirror/dump | `./migrate-data.sh cleanup` |
+| 澶囦唤 | `BACKUP_DIR=/data/pg-backup ./backup.sh` |
+| 杩� PG 鍛戒护琛� | `docker exec -it cx-postgres psql -U postgres -d jnpf_init` |
--
Gitblit v1.8.0