Browse Source

更新项目代码:重构权限模块、社区管理、服务管理等功能

wangmeng 1 month ago
parent
commit
79d7f7d231
100 changed files with 258619 additions and 213 deletions
  1. 131 0
      backup_database.sh
  2. 1311 0
      backups/20260112_113730/xdz_business.sql
  3. 36 0
      backups/20260112_113730/xdz_message.sql
  4. 258 0
      backups/20260112_113730/xdz_user.sql
  5. 36 0
      backups/20260112_113730/xdz_vehicle.sql
  6. 30 0
      backups/20260112_113730/备份说明.txt
  7. 35 0
      backups/20260112_113800/备份说明.txt
  8. 1586 0
      backups/20260112_120753/xdz_business.sql
  9. 36 0
      backups/20260112_120753/xdz_message.sql
  10. 295 0
      backups/20260112_120753/xdz_user.sql
  11. 36 0
      backups/20260112_120753/xdz_vehicle.sql
  12. 36 0
      backups/20260112_120753/备份说明.txt
  13. 43 0
      backups/20260112_120845/备份说明.txt
  14. 1503 0
      backups/20260112_121017/xdz_business.sql
  15. 36 0
      backups/20260112_121017/xdz_message.sql
  16. 313 0
      backups/20260112_121017/xdz_user.sql
  17. 36 0
      backups/20260112_121017/xdz_vehicle.sql
  18. 43 0
      backups/20260112_121017/备份说明.txt
  19. 1586 0
      backups/20260113_194113/xdz_business.sql
  20. 36 0
      backups/20260113_194113/xdz_message.sql
  21. 295 0
      backups/20260113_194113/xdz_user.sql
  22. 36 0
      backups/20260113_194113/xdz_vehicle.sql
  23. 35 0
      backups/20260113_194113/备份说明.txt
  24. 1586 0
      backups/20260113_194456/xdz_business.sql
  25. 36 0
      backups/20260113_194456/xdz_message.sql
  26. 295 0
      backups/20260113_194456/xdz_user.sql
  27. 36 0
      backups/20260113_194456/xdz_vehicle.sql
  28. 35 0
      backups/20260113_194456/备份说明.txt
  29. 1510 0
      backups/backup_before_cleanup_20260123_181319.sql
  30. 69 0
      backups/backup_menu_before_delete_20260123_182341.sql
  31. 1479 0
      backups/multi_db_merge_20260123_183010/backup_xdz_business.sql
  32. 28 0
      backups/multi_db_merge_20260123_183010/backup_xdz_message.sql
  33. 287 0
      backups/multi_db_merge_20260123_183010/backup_xdz_user.sql
  34. 28 0
      backups/multi_db_merge_20260123_183010/backup_xdz_vehicle.sql
  35. 316 0
      nacos/nacos/LICENSE
  36. 36 0
      nacos/nacos/NOTICE
  37. 27 0
      nacos/nacos/conf/1.4.0-ipv6_support-update.sql
  38. 1 0
      nacos/nacos/conf/announcement_en-US.conf
  39. 1 0
      nacos/nacos/conf/announcement_zh-CN.conf
  40. 291 0
      nacos/nacos/conf/application.properties
  41. 271 0
      nacos/nacos/conf/application.properties.example
  42. 21 0
      nacos/nacos/conf/cluster.conf.example
  43. 1 0
      nacos/nacos/conf/console-guide.conf
  44. 203 0
      nacos/nacos/conf/derby-schema.sql
  45. 179 0
      nacos/nacos/conf/mysql-schema.sql
  46. 797 0
      nacos/nacos/conf/nacos-logback.xml
  47. 1 0
      nacos/nacos/data/protocol/raft/naming_instance_metadata/log/CURRENT
  48. 1 0
      nacos/nacos/data/protocol/raft/naming_instance_metadata/log/IDENTITY
  49. 0 0
      nacos/nacos/data/protocol/raft/naming_instance_metadata/log/LOCK
  50. 60399 0
      nacos/nacos/data/protocol/raft/naming_instance_metadata/log/LOG
  51. BIN
      nacos/nacos/data/protocol/raft/naming_instance_metadata/log/MANIFEST-000005
  52. 317 0
      nacos/nacos/data/protocol/raft/naming_instance_metadata/log/OPTIONS-000007
  53. BIN
      nacos/nacos/data/protocol/raft/naming_instance_metadata/meta-data/raft_meta
  54. BIN
      nacos/nacos/data/protocol/raft/naming_instance_metadata/snapshot/snapshot_1/__raft_snapshot_meta
  55. 1 0
      nacos/nacos/data/protocol/raft/naming_persistent_service/log/CURRENT
  56. 1 0
      nacos/nacos/data/protocol/raft/naming_persistent_service/log/IDENTITY
  57. 0 0
      nacos/nacos/data/protocol/raft/naming_persistent_service/log/LOCK
  58. 60399 0
      nacos/nacos/data/protocol/raft/naming_persistent_service/log/LOG
  59. BIN
      nacos/nacos/data/protocol/raft/naming_persistent_service/log/MANIFEST-000005
  60. 317 0
      nacos/nacos/data/protocol/raft/naming_persistent_service/log/OPTIONS-000007
  61. BIN
      nacos/nacos/data/protocol/raft/naming_persistent_service/meta-data/raft_meta
  62. BIN
      nacos/nacos/data/protocol/raft/naming_persistent_service/snapshot/snapshot_1/__raft_snapshot_meta
  63. 1 0
      nacos/nacos/data/protocol/raft/naming_persistent_service_v2/log/CURRENT
  64. 1 0
      nacos/nacos/data/protocol/raft/naming_persistent_service_v2/log/IDENTITY
  65. 0 0
      nacos/nacos/data/protocol/raft/naming_persistent_service_v2/log/LOCK
  66. 60399 0
      nacos/nacos/data/protocol/raft/naming_persistent_service_v2/log/LOG
  67. BIN
      nacos/nacos/data/protocol/raft/naming_persistent_service_v2/log/MANIFEST-000005
  68. 317 0
      nacos/nacos/data/protocol/raft/naming_persistent_service_v2/log/OPTIONS-000007
  69. BIN
      nacos/nacos/data/protocol/raft/naming_persistent_service_v2/meta-data/raft_meta
  70. BIN
      nacos/nacos/data/protocol/raft/naming_persistent_service_v2/snapshot/snapshot_1/__raft_snapshot_meta
  71. 1 0
      nacos/nacos/data/protocol/raft/naming_service_metadata/log/CURRENT
  72. 1 0
      nacos/nacos/data/protocol/raft/naming_service_metadata/log/IDENTITY
  73. 0 0
      nacos/nacos/data/protocol/raft/naming_service_metadata/log/LOCK
  74. 60399 0
      nacos/nacos/data/protocol/raft/naming_service_metadata/log/LOG
  75. BIN
      nacos/nacos/data/protocol/raft/naming_service_metadata/log/MANIFEST-000005
  76. 317 0
      nacos/nacos/data/protocol/raft/naming_service_metadata/log/OPTIONS-000007
  77. BIN
      nacos/nacos/data/protocol/raft/naming_service_metadata/meta-data/raft_meta
  78. BIN
      nacos/nacos/data/protocol/raft/naming_service_metadata/snapshot/snapshot_1/__raft_snapshot_meta
  79. 1 0
      pom.xml
  80. 44 1
      xdz-framework/xdz-common/src/main/java/com/xindazhou/framework/common/biz/system/permission/PermissionCommonApi.java
  81. 4 4
      xdz-framework/xdz-common/src/main/java/com/xindazhou/framework/common/enums/RpcConstants.java
  82. 42 6
      xdz-framework/xdz-spring-boot-starter-security/src/main/java/com/xindazhou/framework/security/config/XdzWebSecurityConfigurerAdapter.java
  83. 15 2
      xdz-framework/xdz-spring-boot-starter-web/src/main/java/com/xindazhou/framework/apilog/config/XdzApiLogRpcAutoConfiguration.java
  84. 2 2
      xdz-framework/xdz-spring-boot-starter-web/src/main/java/com/xindazhou/framework/web/config/WebProperties.java
  85. 11 0
      xdz-framework/xdz-spring-boot-starter-web/src/main/java/com/xindazhou/framework/web/config/XdzWebAutoConfiguration.java
  86. 4 4
      xdz-module-business/xdz-module-business-api/src/main/java/com/xindazhou/business/api/member/MemberGroupApi.java
  87. 9 4
      xdz-module-business/xdz-module-business-api/src/main/java/com/xindazhou/business/api/member/MemberLevelApi.java
  88. 19 4
      xdz-module-business/xdz-module-business-api/src/main/java/com/xindazhou/business/api/member/MemberTagApi.java
  89. 34 5
      xdz-module-business/xdz-module-business-api/src/main/java/com/xindazhou/business/api/member/MemberUserApi.java
  90. 51 0
      xdz-module-business/xdz-module-business-api/src/main/java/com/xindazhou/business/api/service/EvaluationApi.java
  91. 89 0
      xdz-module-business/xdz-module-business-api/src/main/java/com/xindazhou/business/api/service/MaintenanceOrderApi.java
  92. 1 1
      xdz-module-business/xdz-module-business-api/src/main/java/com/xindazhou/business/enums/ApiConstants.java
  93. 6 0
      xdz-module-business/xdz-module-business-api/src/main/java/com/xindazhou/business/enums/ErrorCodeConstants.java
  94. 16 0
      xdz-module-business/xdz-module-business-server/pom.xml
  95. 39 0
      xdz-module-business/xdz-module-business-server/src/main/java/com/xindazhou/business/api/logger/ApiAccessLogApiImpl.java
  96. 39 0
      xdz-module-business/xdz-module-business-server/src/main/java/com/xindazhou/business/api/logger/ApiErrorLogApiImpl.java
  97. 0 44
      xdz-module-business/xdz-module-business-server/src/main/java/com/xindazhou/business/api/permission/PermissionApiImpl.java
  98. 0 25
      xdz-module-business/xdz-module-business-server/src/main/java/com/xindazhou/business/api/permission/RoleApiImpl.java
  99. 0 111
      xdz-module-business/xdz-module-business-server/src/main/java/com/xindazhou/business/config/ApiLogLocalConfiguration.java
  100. 0 0
      xdz-module-business/xdz-module-business-server/src/main/java/com/xindazhou/business/controller/admin/agreement/AgreementController.java

+ 131 - 0
backup_database.sh

@@ -0,0 +1,131 @@
+#!/bin/bash
+
+# 数据库备份脚本
+# 备份所有 xdz 相关数据库
+
+# 数据库连接配置
+DB_HOST="127.0.0.1"
+DB_PORT="3306"
+DB_USER="root"
+DB_PASSWORD="Xiuxiu@087"
+
+# 要备份的数据库列表
+DATABASES=("xdz_user" "xdz_business" "xdz_vehicle" "xdz_message")
+
+# 创建备份目录
+BACKUP_BASE_DIR="$(cd "$(dirname "$0")" && pwd)/backups"
+TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
+BACKUP_DIR="${BACKUP_BASE_DIR}/${TIMESTAMP}"
+mkdir -p "${BACKUP_DIR}"
+
+echo "=========================================="
+echo "开始数据库全量备份"
+echo "=========================================="
+echo "备份时间: $(date '+%Y-%m-%d %H:%M:%S')"
+echo "备份目录: ${BACKUP_DIR}"
+echo ""
+
+# 备份每个数据库
+for DB_NAME in "${DATABASES[@]}"; do
+    echo "正在备份数据库: ${DB_NAME}..."
+    
+    BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}.sql"
+    
+    # 使用 mysqldump 备份数据库
+    mysqldump -h"${DB_HOST}" -P"${DB_PORT}" -u"${DB_USER}" -p"${DB_PASSWORD}" \
+        --single-transaction \
+        --routines \
+        --triggers \
+        --events \
+        --default-character-set=utf8mb4 \
+        "${DB_NAME}" > "${BACKUP_FILE}" 2>&1
+    
+    if [ $? -eq 0 ]; then
+        FILE_SIZE=$(du -h "${BACKUP_FILE}" | cut -f1)
+        echo "✓ 备份成功: ${DB_NAME} (${FILE_SIZE})"
+    else
+        echo "✗ 备份失败: ${DB_NAME}"
+        echo "错误信息已保存到备份文件"
+    fi
+    echo ""
+done
+
+# 生成备份说明文件
+cat > "${BACKUP_DIR}/备份说明.txt" << EOF
+数据库备份说明
+================
+
+备份时间: $(date '+%Y-%m-%d %H:%M:%S')
+备份目录: backups/${TIMESTAMP}
+
+备份的数据库:
+EOF
+
+for DB_NAME in "${DATABASES[@]}"; do
+    BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}.sql"
+    if [ -f "${BACKUP_FILE}" ]; then
+        FILE_SIZE=$(du -h "${BACKUP_FILE}" | cut -f1)
+        echo "1. ${DB_NAME} (${FILE_SIZE})" >> "${BACKUP_DIR}/备份说明.txt"
+    fi
+done
+
+cat >> "${BACKUP_DIR}/备份说明.txt" << EOF
+
+备份说明:
+- 包含所有表(包括日志表的结构和数据)
+- 使用 --single-transaction 保证数据一致性
+- 包含存储过程和函数(--routines)
+- 包含触发器(--triggers)
+- 包含事件(--events)
+
+备份参数:
+- --single-transaction: 保证数据一致性
+- --routines: 包含存储过程和函数
+- --triggers: 包含触发器
+- --events: 包含事件
+
+恢复方法:
+mysql -h${DB_HOST} -u${DB_USER} -p'密码' 数据库名 < 备份文件.sql
+
+例如:
+mysql -h${DB_HOST} -u${DB_USER} -p'${DB_PASSWORD}' xdz_user < xdz_user.sql
+mysql -h${DB_HOST} -u${DB_USER} -p'${DB_PASSWORD}' xdz_business < xdz_business.sql
+mysql -h${DB_HOST} -u${DB_USER} -p'${DB_PASSWORD}' xdz_vehicle < xdz_vehicle.sql
+mysql -h${DB_HOST} -u${DB_USER} -p'${DB_PASSWORD}' xdz_message < xdz_message.sql
+
+注意: 所有表都已备份,包括日志表的结构和数据,确保恢复后应用程序能正常运行。
+EOF
+
+echo "=========================================="
+echo "备份完成!"
+echo "备份目录: ${BACKUP_DIR}"
+echo "=========================================="
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

File diff suppressed because it is too large
+ 1311 - 0
backups/20260112_113730/xdz_business.sql


+ 36 - 0
backups/20260112_113730/xdz_message.sql

@@ -0,0 +1,36 @@
+mysqldump: [Warning] Using a password on the command line interface can be insecure.
+-- MySQL dump 10.13  Distrib 8.0.43, for macos14.7 (x86_64)
+--
+-- Host: 127.0.0.1    Database: xdz_message
+-- ------------------------------------------------------
+-- Server version	8.0.43
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!50503 SET NAMES utf8mb4 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Dumping events for database 'xdz_message'
+--
+
+--
+-- Dumping routines for database 'xdz_message'
+--
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2026-01-12 11:37:39

File diff suppressed because it is too large
+ 258 - 0
backups/20260112_113730/xdz_user.sql


+ 36 - 0
backups/20260112_113730/xdz_vehicle.sql

@@ -0,0 +1,36 @@
+mysqldump: [Warning] Using a password on the command line interface can be insecure.
+-- MySQL dump 10.13  Distrib 8.0.43, for macos14.7 (x86_64)
+--
+-- Host: 127.0.0.1    Database: xdz_vehicle
+-- ------------------------------------------------------
+-- Server version	8.0.43
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!50503 SET NAMES utf8mb4 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Dumping events for database 'xdz_vehicle'
+--
+
+--
+-- Dumping routines for database 'xdz_vehicle'
+--
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2026-01-12 11:37:36

+ 30 - 0
backups/20260112_113730/备份说明.txt

@@ -0,0 +1,30 @@
+数据库备份说明
+================
+
+备份时间: 2025-01-12 11:37:30
+备份目录: backups/20260112_113730
+
+备份的数据库:
+1. xdz_user - 用户服务数据库 (3.1M)
+2. xdz_business - 业务服务数据库(包含社区模块)(4.6M)
+3. xdz_vehicle - 车辆服务数据库 (1.4K)
+4. xdz_message - 消息服务数据库 (1.4K)
+
+已排除的日志表:
+- xdz_user: system_login_log
+- xdz_business: infra_api_access_log, infra_api_error_log, infra_job_log, system_login_log, system_operate_log
+
+备份参数:
+- --single-transaction: 保证数据一致性
+- --routines: 包含存储过程和函数
+- --triggers: 包含触发器
+- --events: 包含事件
+
+恢复方法:
+mysql -h127.0.0.1 -uroot -p'密码' 数据库名 < 备份文件.sql
+
+例如:
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_user < xdz_user.sql
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_business < xdz_business.sql
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_vehicle < xdz_vehicle.sql
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_message < xdz_message.sql

+ 35 - 0
backups/20260112_113800/备份说明.txt

@@ -0,0 +1,35 @@
+数据库备份说明
+================
+
+备份时间: 2025-01-12 12:07:53
+备份目录: backups/20260112_120753
+
+备份的数据库:
+1. xdz_user - 用户服务数据库 (3.1M)
+2. xdz_business - 业务服务数据库(包含社区模块)(68M)
+3. xdz_vehicle - 车辆服务数据库 (1.4K)
+4. xdz_message - 消息服务数据库 (1.4K)
+
+备份说明:
+- 包含所有表(包括日志表的结构和数据)
+- 使用 --single-transaction 保证数据一致性
+- 包含存储过程和函数(--routines)
+- 包含触发器(--triggers)
+- 包含事件(--events)
+
+备份参数:
+- --single-transaction: 保证数据一致性
+- --routines: 包含存储过程和函数
+- --triggers: 包含触发器
+- --events: 包含事件
+
+恢复方法:
+mysql -h127.0.0.1 -uroot -p'密码' 数据库名 < 备份文件.sql
+
+例如:
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_user < xdz_user.sql
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_business < xdz_business.sql
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_vehicle < xdz_vehicle.sql
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_message < xdz_message.sql
+
+注意: 所有表都已备份,包括日志表的结构和数据,确保恢复后应用程序能正常运行。

File diff suppressed because it is too large
+ 1586 - 0
backups/20260112_120753/xdz_business.sql


+ 36 - 0
backups/20260112_120753/xdz_message.sql

@@ -0,0 +1,36 @@
+mysqldump: [Warning] Using a password on the command line interface can be insecure.
+-- MySQL dump 10.13  Distrib 8.0.43, for macos14.7 (x86_64)
+--
+-- Host: 127.0.0.1    Database: xdz_message
+-- ------------------------------------------------------
+-- Server version	8.0.43
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!50503 SET NAMES utf8mb4 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Dumping events for database 'xdz_message'
+--
+
+--
+-- Dumping routines for database 'xdz_message'
+--
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2026-01-12 12:08:02

File diff suppressed because it is too large
+ 295 - 0
backups/20260112_120753/xdz_user.sql


+ 36 - 0
backups/20260112_120753/xdz_vehicle.sql

@@ -0,0 +1,36 @@
+mysqldump: [Warning] Using a password on the command line interface can be insecure.
+-- MySQL dump 10.13  Distrib 8.0.43, for macos14.7 (x86_64)
+--
+-- Host: 127.0.0.1    Database: xdz_vehicle
+-- ------------------------------------------------------
+-- Server version	8.0.43
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!50503 SET NAMES utf8mb4 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Dumping events for database 'xdz_vehicle'
+--
+
+--
+-- Dumping routines for database 'xdz_vehicle'
+--
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2026-01-12 12:07:59

+ 36 - 0
backups/20260112_120753/备份说明.txt

@@ -0,0 +1,36 @@
+数据库备份说明
+================
+
+备份时间: 2025-01-12 12:07:53
+备份目录: backups/20260112_120753
+
+备份的数据库:
+1. xdz_user - 用户服务数据库 (3.1M)
+2. xdz_business - 业务服务数据库(包含社区模块)(68M)
+3. xdz_vehicle - 车辆服务数据库 (1.4K)
+4. xdz_message - 消息服务数据库 (1.4K)
+
+备份说明:
+- 包含所有表(包括日志表的结构和数据)
+- 使用 --single-transaction 保证数据一致性
+- 包含存储过程和函数(--routines)
+- 包含触发器(--triggers)
+- 包含事件(--events)
+
+备份参数:
+- --single-transaction: 保证数据一致性
+- --routines: 包含存储过程和函数
+- --triggers: 包含触发器
+- --events: 包含事件
+
+恢复方法:
+mysql -h127.0.0.1 -uroot -p'密码' 数据库名 < 备份文件.sql
+
+例如:
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_user < xdz_user.sql
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_business < xdz_business.sql
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_vehicle < xdz_vehicle.sql
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_message < xdz_message.sql
+
+注意: 所有表都已备份,包括日志表的结构和数据,确保恢复后应用程序能正常运行。
+

+ 43 - 0
backups/20260112_120845/备份说明.txt

@@ -0,0 +1,43 @@
+数据库备份说明
+================
+
+备份时间: 2025-01-12 12:08:45
+备份目录: backups/20260112_120845
+
+备份的数据库:
+1. xdz_user - 用户服务数据库
+2. xdz_business - 业务服务数据库(包含社区模块)
+3. xdz_vehicle - 车辆服务数据库
+4. xdz_message - 消息服务数据库
+
+备份说明:
+- 所有表的结构都已备份
+- 日志表只备份结构,不备份数据(恢复后为空表)
+- 非日志表正常备份结构和数据
+- 使用 --single-transaction 保证数据一致性
+- 包含存储过程和函数(--routines)
+- 包含触发器(--triggers)
+- 包含事件(--events)
+
+日志表(只备份结构,不备份数据):
+- xdz_user: system_login_log
+- xdz_business: infra_api_access_log, infra_api_error_log, infra_job_log, system_login_log, system_operate_log
+
+备份参数:
+- --single-transaction: 保证数据一致性
+- --routines: 包含存储过程和函数
+- --triggers: 包含触发器
+- --events: 包含事件
+- --no-data: 只备份表结构(用于日志表)
+
+恢复方法:
+mysql -h127.0.0.1 -uroot -p'密码' 数据库名 < 备份文件.sql
+
+例如:
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_user < xdz_user.sql
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_business < xdz_business.sql
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_vehicle < xdz_vehicle.sql
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_message < xdz_message.sql
+
+注意: 所有表的结构都已备份,包括日志表。日志表在恢复后为空表,但表结构存在,确保应用程序能正常运行。
+

File diff suppressed because it is too large
+ 1503 - 0
backups/20260112_121017/xdz_business.sql


+ 36 - 0
backups/20260112_121017/xdz_message.sql

@@ -0,0 +1,36 @@
+mysqldump: [Warning] Using a password on the command line interface can be insecure.
+-- MySQL dump 10.13  Distrib 8.0.43, for macos14.7 (x86_64)
+--
+-- Host: 127.0.0.1    Database: xdz_message
+-- ------------------------------------------------------
+-- Server version	8.0.43
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!50503 SET NAMES utf8mb4 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Dumping events for database 'xdz_message'
+--
+
+--
+-- Dumping routines for database 'xdz_message'
+--
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2026-01-12 12:10:26

File diff suppressed because it is too large
+ 313 - 0
backups/20260112_121017/xdz_user.sql


+ 36 - 0
backups/20260112_121017/xdz_vehicle.sql

@@ -0,0 +1,36 @@
+mysqldump: [Warning] Using a password on the command line interface can be insecure.
+-- MySQL dump 10.13  Distrib 8.0.43, for macos14.7 (x86_64)
+--
+-- Host: 127.0.0.1    Database: xdz_vehicle
+-- ------------------------------------------------------
+-- Server version	8.0.43
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!50503 SET NAMES utf8mb4 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Dumping events for database 'xdz_vehicle'
+--
+
+--
+-- Dumping routines for database 'xdz_vehicle'
+--
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2026-01-12 12:10:24

+ 43 - 0
backups/20260112_121017/备份说明.txt

@@ -0,0 +1,43 @@
+数据库备份说明
+================
+
+备份时间: 2025-01-12 12:10:17
+备份目录: backups/20260112_121017
+
+备份的数据库:
+1. xdz_user - 用户服务数据库 (3.1M)
+2. xdz_business - 业务服务数据库(包含社区模块)(4.7M)
+3. xdz_vehicle - 车辆服务数据库 (1.4K)
+4. xdz_message - 消息服务数据库 (1.4K)
+
+备份说明:
+- 所有表的结构都已备份
+- 日志表只备份结构,不备份数据(恢复后为空表)
+- 非日志表正常备份结构和数据
+- 使用 --single-transaction 保证数据一致性
+- 包含存储过程和函数(--routines)
+- 包含触发器(--triggers)
+- 包含事件(--events)
+
+日志表(只备份结构,不备份数据):
+- xdz_user: system_login_log
+- xdz_business: infra_api_access_log, infra_api_error_log, infra_job_log, system_login_log, system_operate_log
+
+备份参数:
+- --single-transaction: 保证数据一致性
+- --routines: 包含存储过程和函数
+- --triggers: 包含触发器
+- --events: 包含事件
+- --no-data: 只备份表结构(用于日志表)
+
+恢复方法:
+mysql -h127.0.0.1 -uroot -p'密码' 数据库名 < 备份文件.sql
+
+例如:
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_user < xdz_user.sql
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_business < xdz_business.sql
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_vehicle < xdz_vehicle.sql
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_message < xdz_message.sql
+
+注意: 所有表的结构都已备份,包括日志表。日志表在恢复后为空表,但表结构存在,确保应用程序能正常运行。
+

File diff suppressed because it is too large
+ 1586 - 0
backups/20260113_194113/xdz_business.sql


+ 36 - 0
backups/20260113_194113/xdz_message.sql

@@ -0,0 +1,36 @@
+mysqldump: [Warning] Using a password on the command line interface can be insecure.
+-- MySQL dump 10.13  Distrib 8.0.43, for macos14.7 (x86_64)
+--
+-- Host: 127.0.0.1    Database: xdz_message
+-- ------------------------------------------------------
+-- Server version	8.0.43
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!50503 SET NAMES utf8mb4 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Dumping events for database 'xdz_message'
+--
+
+--
+-- Dumping routines for database 'xdz_message'
+--
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2026-01-13 19:41:15

File diff suppressed because it is too large
+ 295 - 0
backups/20260113_194113/xdz_user.sql


+ 36 - 0
backups/20260113_194113/xdz_vehicle.sql

@@ -0,0 +1,36 @@
+mysqldump: [Warning] Using a password on the command line interface can be insecure.
+-- MySQL dump 10.13  Distrib 8.0.43, for macos14.7 (x86_64)
+--
+-- Host: 127.0.0.1    Database: xdz_vehicle
+-- ------------------------------------------------------
+-- Server version	8.0.43
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!50503 SET NAMES utf8mb4 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Dumping events for database 'xdz_vehicle'
+--
+
+--
+-- Dumping routines for database 'xdz_vehicle'
+--
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2026-01-13 19:41:15

+ 35 - 0
backups/20260113_194113/备份说明.txt

@@ -0,0 +1,35 @@
+数据库备份说明
+================
+
+备份时间: 2026-01-13 19:41:15
+备份目录: backups/20260113_194113
+
+备份的数据库:
+1. xdz_user (3.1M)
+1. xdz_business ( 80M)
+1. xdz_vehicle (4.0K)
+1. xdz_message (4.0K)
+
+备份说明:
+- 包含所有表(包括日志表的结构和数据)
+- 使用 --single-transaction 保证数据一致性
+- 包含存储过程和函数(--routines)
+- 包含触发器(--triggers)
+- 包含事件(--events)
+
+备份参数:
+- --single-transaction: 保证数据一致性
+- --routines: 包含存储过程和函数
+- --triggers: 包含触发器
+- --events: 包含事件
+
+恢复方法:
+mysql -h127.0.0.1 -uroot -p'密码' 数据库名 < 备份文件.sql
+
+例如:
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_user < xdz_user.sql
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_business < xdz_business.sql
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_vehicle < xdz_vehicle.sql
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_message < xdz_message.sql
+
+注意: 所有表都已备份,包括日志表的结构和数据,确保恢复后应用程序能正常运行。

File diff suppressed because it is too large
+ 1586 - 0
backups/20260113_194456/xdz_business.sql


+ 36 - 0
backups/20260113_194456/xdz_message.sql

@@ -0,0 +1,36 @@
+mysqldump: [Warning] Using a password on the command line interface can be insecure.
+-- MySQL dump 10.13  Distrib 8.0.43, for macos14.7 (x86_64)
+--
+-- Host: 127.0.0.1    Database: xdz_message
+-- ------------------------------------------------------
+-- Server version	8.0.43
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!50503 SET NAMES utf8mb4 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Dumping events for database 'xdz_message'
+--
+
+--
+-- Dumping routines for database 'xdz_message'
+--
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2026-01-13 19:44:59

File diff suppressed because it is too large
+ 295 - 0
backups/20260113_194456/xdz_user.sql


+ 36 - 0
backups/20260113_194456/xdz_vehicle.sql

@@ -0,0 +1,36 @@
+mysqldump: [Warning] Using a password on the command line interface can be insecure.
+-- MySQL dump 10.13  Distrib 8.0.43, for macos14.7 (x86_64)
+--
+-- Host: 127.0.0.1    Database: xdz_vehicle
+-- ------------------------------------------------------
+-- Server version	8.0.43
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!50503 SET NAMES utf8mb4 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Dumping events for database 'xdz_vehicle'
+--
+
+--
+-- Dumping routines for database 'xdz_vehicle'
+--
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2026-01-13 19:44:59

+ 35 - 0
backups/20260113_194456/备份说明.txt

@@ -0,0 +1,35 @@
+数据库备份说明
+================
+
+备份时间: 2026-01-13 19:44:59
+备份目录: backups/20260113_194456
+
+备份的数据库:
+1. xdz_user (3.1M)
+1. xdz_business ( 81M)
+1. xdz_vehicle (4.0K)
+1. xdz_message (4.0K)
+
+备份说明:
+- 包含所有表(包括日志表的结构和数据)
+- 使用 --single-transaction 保证数据一致性
+- 包含存储过程和函数(--routines)
+- 包含触发器(--triggers)
+- 包含事件(--events)
+
+备份参数:
+- --single-transaction: 保证数据一致性
+- --routines: 包含存储过程和函数
+- --triggers: 包含触发器
+- --events: 包含事件
+
+恢复方法:
+mysql -h127.0.0.1 -uroot -p'密码' 数据库名 < 备份文件.sql
+
+例如:
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_user < xdz_user.sql
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_business < xdz_business.sql
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_vehicle < xdz_vehicle.sql
+mysql -h127.0.0.1 -uroot -p'Xiuxiu@087' xdz_message < xdz_message.sql
+
+注意: 所有表都已备份,包括日志表的结构和数据,确保恢复后应用程序能正常运行。

File diff suppressed because it is too large
+ 1510 - 0
backups/backup_before_cleanup_20260123_181319.sql


File diff suppressed because it is too large
+ 69 - 0
backups/backup_menu_before_delete_20260123_182341.sql


File diff suppressed because it is too large
+ 1479 - 0
backups/multi_db_merge_20260123_183010/backup_xdz_business.sql


+ 28 - 0
backups/multi_db_merge_20260123_183010/backup_xdz_message.sql

@@ -0,0 +1,28 @@
+mysqldump: [Warning] Using a password on the command line interface can be insecure.
+-- MySQL dump 10.13  Distrib 8.0.43, for macos14.7 (x86_64)
+--
+-- Host: localhost    Database: xdz_message
+-- ------------------------------------------------------
+-- Server version	8.0.43
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!50503 SET NAMES utf8mb4 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2026-01-23 18:30:16

File diff suppressed because it is too large
+ 287 - 0
backups/multi_db_merge_20260123_183010/backup_xdz_user.sql


+ 28 - 0
backups/multi_db_merge_20260123_183010/backup_xdz_vehicle.sql

@@ -0,0 +1,28 @@
+mysqldump: [Warning] Using a password on the command line interface can be insecure.
+-- MySQL dump 10.13  Distrib 8.0.43, for macos14.7 (x86_64)
+--
+-- Host: localhost    Database: xdz_vehicle
+-- ------------------------------------------------------
+-- Server version	8.0.43
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!50503 SET NAMES utf8mb4 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2026-01-23 18:30:15

+ 316 - 0
nacos/nacos/LICENSE

@@ -0,0 +1,316 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (properties) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+------
+This product has a bundle logback, which is available under the EPL v1.0 License.
+The source code of logback can be found at https://github.com/qos-ch/logback.
+
+Logback LICENSE
+---------------
+
+Logback: the reliable, generic, fast and flexible logging framework.
+Copyright (C) 1999-2015, QOS.ch. All rights reserved.
+
+This program and the accompanying materials are dual-licensed under
+either the terms of the Eclipse Public License v1.0 as published by
+the Eclipse Foundation
+
+  or (per the licensee's choosing)
+
+under the terms of the GNU Lesser General Public License version 2.1
+as published by the Free Software Foundation.
+
+------
+This product has a bundle slf4j, which is available under the MIT License.
+The source code of slf4j can be found at https://github.com/qos-ch/slf4j.
+
+ Copyright (c) 2004-2017 QOS.ch
+ All rights reserved.
+
+ Permission is hereby granted, free  of charge, to any person obtaining
+ a  copy  of this  software  and  associated  documentation files  (the
+ "Software"), to  deal in  the Software without  restriction, including
+ without limitation  the rights to  use, copy, modify,  merge, publish,
+ distribute,  sublicense, and/or sell  copies of  the Software,  and to
+ permit persons to whom the Software  is furnished to do so, subject to
+ the following conditions:
+
+ The  above  copyright  notice  and  this permission  notice  shall  be
+ included in all copies or substantial portions of the Software.
+
+ THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
+ EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
+ MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+------
+This product has a bundle javassist, which is available under the ASL2 License.
+The source code of javassist can be found at https://github.com/jboss-javassist/javassist.
+
+ Copyright (C) 1999- by Shigeru Chiba, All rights reserved.
+
+ Javassist (JAVA programming ASSISTant) makes Java bytecode manipulation simple.
+ It is a class library for editing bytecodes in Java; it enables Java programs to define a new class
+ at runtime and to modify a class file when the JVM loads it. Unlike other similar bytecode editors,
+ Javassist provides two levels of API: source level and bytecode level. If the users use the source- level API,
+ they can edit a class file without knowledge of the specifications of the Java bytecode.
+ The whole API is designed with only the vocabulary of the Java language.
+ You can even specify inserted bytecode in the form of source text; Javassist compiles it on the fly.
+ On the other hand, the bytecode-level API allows the users to directly edit a class file as other editors.
+
+ This software is distributed under the Mozilla Public License Version 1.1,
+ the GNU Lesser General Public License Version 2.1 or later, or the Apache License Version 2.0.
+
+------
+This product has a bundle jna, which is available under the ASL2 License.
+The source code of jna can be found at https://github.com/java-native-access/jna.
+
+ This copy of JNA is licensed under the
+ Apache (Software) License, version 2.0 ("the License").
+ See the License for details about distribution rights, and the
+ specific rights regarding derivate works.
+
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/
+
+ A copy is also included in the downloadable source code package
+ containing JNA, in file "AL2.0", under the same directory
+ as this file.
+------
+This product has a bundle guava, which is available under the ASL2 License.
+The source code of guava can be found at https://github.com/google/guava.
+
+ Copyright (C) 2007 The Guava authors
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+------
+This product has a bundle OpenMessaging, which is available under the ASL2 License.
+The source code of OpenMessaging can be found at https://github.com/openmessaging/openmessaging.
+
+ Copyright (C) 2017 The OpenMessaging authors.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+

+ 36 - 0
nacos/nacos/NOTICE

@@ -0,0 +1,36 @@
+Nacos
+Copyright 2018-2019 The Apache Software Foundation
+
+This product includes software developed at
+The Alibaba MiddleWare Group.
+
+------
+This product has a bundle netty:
+                            The Spring oot Project
+                            =================
+
+Please visit the Netty web site for more information:
+
+  * http://netty.io/
+
+Copyright 2014 The Netty Project
+
+The Netty Project licenses this file to you under the Apache License,
+version 2.0 (the "License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at:
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+License for the specific language governing permissions and limitations
+under the License.
+
+Also, please refer to each LICENSE.<component>.txt file, which is located in
+the 'license' directory of the distribution file, for the license terms of the
+components that this product depends on.
+
+------
+This product has a bundle commons-lang, which includes software from the Spring Framework,
+under the Apache License 2.0 (see: StringUtils.containsWhitespace())

+ 27 - 0
nacos/nacos/conf/1.4.0-ipv6_support-update.sql

@@ -0,0 +1,27 @@
+/*
+ * Copyright 1999-2018 Alibaba Group Holding Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ALTER TABLE `config_info_tag`
+MODIFY COLUMN `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip' AFTER `src_user`;
+
+ALTER TABLE `his_config_info`
+MODIFY COLUMN `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL AFTER `src_user`;
+
+ALTER TABLE `config_info`
+MODIFY COLUMN `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip' AFTER `src_user`;
+
+ALTER TABLE `config_info_beta`
+MODIFY COLUMN `src_ip` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip' AFTER `src_user`;

+ 1 - 0
nacos/nacos/conf/announcement_en-US.conf

@@ -0,0 +1 @@
+Authentication has not been enabled in cluster, please refer to <a href="https://nacos.io/en/docs/latest/manual/admin/auth/">Documentation</a> to enable~

+ 1 - 0
nacos/nacos/conf/announcement_zh-CN.conf

@@ -0,0 +1 @@
+当前集群没有开启鉴权,请参考<a href="https://nacos.io/docs/latest/manual/admin/auth/">文档</a>开启鉴权~

+ 291 - 0
nacos/nacos/conf/application.properties

@@ -0,0 +1,291 @@
+#
+# Copyright 1999-2021 Alibaba Group Holding Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+#*************** Spring Boot Related Configurations ***************#
+### Default web context path:
+server.servlet.contextPath=/nacos
+### Include message field
+server.error.include-message=ALWAYS
+### Default web server port:
+server.port=8848
+
+#*************** Network Related Configurations ***************#
+### If prefer hostname over ip for Nacos server addresses in cluster.conf:
+# nacos.inetutils.prefer-hostname-over-ip=false
+
+### Specify local server's IP:
+# nacos.inetutils.ip-address=
+
+
+#*************** Config Module Related Configurations ***************#
+### If use MySQL as datasource:
+### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
+# spring.datasource.platform=mysql
+# spring.sql.init.platform=mysql
+
+### Count of DB:
+db.num=1
+db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
+db.user.0=root
+db.password.0=Xiuxiu@087
+
+### Connect URL of DB:
+
+### Connection pool configuration: hikariCP
+
+### the maximum retry times for push
+nacos.config.push.maxRetryTime=50
+
+#*************** Naming Module Related Configurations ***************#
+
+### If enable data warmup. If set to false, the server would accept request without local data preparation:
+# nacos.naming.data.warmup=true
+
+### If enable the instance auto expiration, kind like of health check of instance:
+# nacos.naming.expireInstance=true
+
+### Add in 2.0.0
+### The interval to clean empty service, unit: milliseconds.
+# nacos.naming.clean.empty-service.interval=60000
+
+### The expired time to clean empty service, unit: milliseconds.
+# nacos.naming.clean.empty-service.expired-time=60000
+
+### The interval to clean expired metadata, unit: milliseconds.
+# nacos.naming.clean.expired-metadata.interval=5000
+
+### The expired time to clean metadata, unit: milliseconds.
+# nacos.naming.clean.expired-metadata.expired-time=60000
+
+### The delay time before push task to execute from service changed, unit: milliseconds.
+# nacos.naming.push.pushTaskDelay=500
+
+### The timeout for push task execute, unit: milliseconds.
+# nacos.naming.push.pushTaskTimeout=5000
+
+### The delay time for retrying failed push task, unit: milliseconds.
+# nacos.naming.push.pushTaskRetryDelay=1000
+
+### Since 2.0.3
+### The expired time for inactive client, unit: milliseconds.
+# nacos.naming.client.expired.time=180000
+
+#*************** CMDB Module Related Configurations ***************#
+### The interval to dump external CMDB in seconds:
+
+### The interval of polling data change event in seconds:
+
+### The interval of loading labels in seconds:
+
+### If turn on data loading task:
+
+#***********Metrics for tomcat **************************#
+server.tomcat.mbeanregistry.enabled=true
+
+#***********Expose prometheus and health **************************#
+#management.endpoints.web.exposure.include=prometheus,health
+
+### Metrics for elastic search
+management.metrics.export.elastic.enabled=false
+#management.metrics.export.elastic.host=http://localhost:9200
+
+### Metrics for influx
+management.metrics.export.influx.enabled=false
+#management.metrics.export.influx.db=springboot
+#management.metrics.export.influx.uri=http://localhost:8086
+#management.metrics.export.influx.auto-create-db=true
+#management.metrics.export.influx.consistency=one
+#management.metrics.export.influx.compressed=true
+
+#*************** Access Log Related Configurations ***************#
+### If turn on the access log:
+server.tomcat.accesslog.enabled=true
+
+### file name pattern, one file per hour
+server.tomcat.accesslog.rotate=true
+server.tomcat.accesslog.file-date-format=.yyyy-MM-dd-HH
+### The access log pattern:
+server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
+
+### The directory of access log:
+server.tomcat.basedir=file:.
+
+#*************** Access Control Related Configurations ***************#
+### If enable spring security, this option is deprecated in 1.2.0:
+#spring.security.enabled=false
+
+### The ignore urls of auth
+nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
+
+### The auth system to use, currently only 'nacos' and 'ldap' is supported:
+nacos.core.auth.system.type=nacos
+
+### If turn on auth system:
+nacos.core.auth.enabled=true
+
+### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
+nacos.core.auth.caching.enabled=true
+
+### Since 1.4.1, Turn on/off white auth for user-agent: nacos-server, only for upgrade from old version.
+nacos.core.auth.enable.userAgentAuthWhite=false
+
+### Since 1.4.1, worked when nacos.core.auth.enabled=true and nacos.core.auth.enable.userAgentAuthWhite=false.
+### The two properties is the white list for auth and used by identity the request from other server.
+
+### worked when nacos.core.auth.system.type=nacos
+### The token expiration in seconds:
+nacos.core.auth.plugin.nacos.token.cache.enable=false
+nacos.core.auth.plugin.nacos.token.expire.seconds=18000
+### The default token (Base64 String):
+
+### worked when nacos.core.auth.system.type=ldap,{0} is Placeholder,replace login username
+#nacos.core.auth.ldap.url=ldap://localhost:389
+#nacos.core.auth.ldap.basedc=dc=example,dc=org
+#nacos.core.auth.ldap.userDn=cn=admin,${nacos.core.auth.ldap.basedc}
+#nacos.core.auth.ldap.password=admin
+#nacos.core.auth.ldap.userdn=cn={0},dc=example,dc=org
+#nacos.core.auth.ldap.filter.prefix=uid
+#nacos.core.auth.ldap.case.sensitive=true
+#nacos.core.auth.ldap.ignore.partial.result.exception=false
+
+#*************** Control Plugin Related Configurations ***************#
+# plugin type
+#nacos.plugin.control.manager.type=nacos
+
+# local control rule storage dir, default ${nacos.home}/data/connection and ${nacos.home}/data/tps
+#nacos.plugin.control.rule.local.basedir=${nacos.home}
+
+# external control rule storage type, if exist
+#nacos.plugin.control.rule.external.storage=
+
+#*************** Config Change Plugin Related Configurations ***************#
+# webhook
+#nacos.core.config.plugin.webhook.enabled=false
+# It is recommended to use EB https://help.aliyun.com/document_detail/413974.html
+#nacos.core.config.plugin.webhook.url=http://localhost:8080/webhook/send?token=***
+# The content push max capacity ,byte
+#nacos.core.config.plugin.webhook.contentMaxCapacity=102400
+
+# whitelist
+#nacos.core.config.plugin.whitelist.enabled=false
+# The import file suffixs
+#nacos.core.config.plugin.whitelist.suffixs=xml,text,properties,yaml,html
+# fileformatcheck,which validate the import file of type and content
+#nacos.core.config.plugin.fileformatcheck.enabled=false
+
+#*************** Istio Related Configurations ***************#
+### If turn on the MCP server:
+nacos.istio.mcp.server.enabled=false
+
+#*************** Core Related Configurations ***************#
+
+### set the WorkerID manually
+# nacos.core.snowflake.worker-id=
+
+### Member-MetaData
+# nacos.core.member.meta.site=
+# nacos.core.member.meta.adweight=
+# nacos.core.member.meta.weight=
+
+### MemberLookup
+### Addressing pattern category, If set, the priority is highest
+# nacos.core.member.lookup.type=[file,address-server]
+## Set the cluster list with a configuration file or command-line argument
+# nacos.member.list=192.168.16.101:8847?raft_port=8807,192.168.16.101?raft_port=8808,192.168.16.101:8849?raft_port=8809
+## for AddressServerMemberLookup
+# Maximum number of retries to query the address server upon initialization
+# nacos.core.address-server.retry=5
+## Server domain name address of [address-server] mode
+# address.server.domain=jmenv.tbsite.net
+## Server port of [address-server] mode
+# address.server.port=8080
+## Request address of [address-server] mode
+# address.server.url=/nacos/serverlist
+
+#*************** JRaft Related Configurations ***************#
+
+### Sets the Raft cluster election timeout, default value is 5 second
+# nacos.core.protocol.raft.data.election_timeout_ms=5000
+### Sets the amount of time the Raft snapshot will execute periodically, default is 30 minute
+# nacos.core.protocol.raft.data.snapshot_interval_secs=30
+### raft internal worker threads
+# nacos.core.protocol.raft.data.core_thread_num=8
+### Number of threads required for raft business request processing
+# nacos.core.protocol.raft.data.cli_service_thread_num=4
+### raft linear read strategy. Safe linear reads are used by default, that is, the Leader tenure is confirmed by heartbeat
+# nacos.core.protocol.raft.data.read_index_type=ReadOnlySafe
+### rpc request timeout, default 5 seconds
+# nacos.core.protocol.raft.data.rpc_request_timeout_ms=5000
+
+#*************** Distro Related Configurations ***************#
+
+### Distro data sync delay time, when sync task delayed, task will be merged for same data key. Default 1 second.
+# nacos.core.protocol.distro.data.sync.delayMs=1000
+
+### Distro data sync timeout for one sync data, default 3 seconds.
+# nacos.core.protocol.distro.data.sync.timeoutMs=3000
+
+### Distro data sync retry delay time when sync data failed or timeout, same behavior with delayMs, default 3 seconds.
+# nacos.core.protocol.distro.data.sync.retryDelayMs=3000
+
+### Distro data verify interval time, verify synced data whether expired for a interval. Default 5 seconds.
+# nacos.core.protocol.distro.data.verify.intervalMs=5000
+
+### Distro data verify timeout for one verify, default 3 seconds.
+# nacos.core.protocol.distro.data.verify.timeoutMs=3000
+
+### Distro data load retry delay when load snapshot data failed, default 30 seconds.
+# nacos.core.protocol.distro.data.load.retryDelayMs=30000
+
+### enable to support prometheus service discovery
+#nacos.prometheus.metrics.enabled=true
+
+### Since 2.3
+#*************** Grpc Configurations ***************#
+
+## sdk grpc(between nacos server and client) configuration
+## Sets the maximum message size allowed to be received on the server.
+#nacos.remote.server.grpc.sdk.max-inbound-message-size=10485760
+
+## Sets the time(milliseconds) without read activity before sending a keepalive ping. The typical default is two hours.
+#nacos.remote.server.grpc.sdk.keep-alive-time=7200000
+
+## Sets a time(milliseconds) waiting for read activity after sending a keepalive ping. Defaults to 20 seconds.
+#nacos.remote.server.grpc.sdk.keep-alive-timeout=20000
+
+
+## Sets a time(milliseconds) that specify the most aggressive keep-alive time clients are permitted to configure. The typical default is 5 minutes
+#nacos.remote.server.grpc.sdk.permit-keep-alive-time=300000
+
+## cluster grpc(inside the nacos server) configuration
+#nacos.remote.server.grpc.cluster.max-inbound-message-size=10485760
+
+## Sets the time(milliseconds) without read activity before sending a keepalive ping. The typical default is two hours.
+#nacos.remote.server.grpc.cluster.keep-alive-time=7200000
+
+## Sets a time(milliseconds) waiting for read activity after sending a keepalive ping. Defaults to 20 seconds.
+#nacos.remote.server.grpc.cluster.keep-alive-timeout=20000
+
+## Sets a time(milliseconds) that specify the most aggressive keep-alive time clients are permitted to configure. The typical default is 5 minutes
+#nacos.remote.server.grpc.cluster.permit-keep-alive-time=300000
+
+## open nacos default console ui
+#nacos.console.ui.enabled=truenacos.core.auth.plugin.nacos.token.secret.key=TvCaAg/QEdP7eMd6xpl1gQgc0XcoQeYQePmGnw+IaUo=
+spring.datasource.platform=mysql
+spring.sql.init.platform=mysql
+nacos.core.auth.plugin.nacos.token.secret.key=N2Q3NGI4MmVhMGU4MjEyNDY5NThmYmE4MWNkNzUzMGY4ZDUxMGZjY2MwMzk3OTExMjNhZTM2YWQ4ZmRmOTg5Ng==
+nacos.core.auth.server.identity.key=serverIdentity
+nacos.core.auth.server.identity.value=security

+ 271 - 0
nacos/nacos/conf/application.properties.example

@@ -0,0 +1,271 @@
+#
+# Copyright 1999-2021 Alibaba Group Holding Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+#*************** Spring Boot Related Configurations ***************#
+### Default web context path:
+server.servlet.contextPath=/nacos
+### Include message field
+server.error.include-message=ALWAYS
+### Default web server port:
+server.port=8848
+
+#*************** Network Related Configurations ***************#
+### If prefer hostname over ip for Nacos server addresses in cluster.conf:
+# nacos.inetutils.prefer-hostname-over-ip=false
+
+### Specify local server's IP:
+# nacos.inetutils.ip-address=
+
+
+#*************** Config Module Related Configurations ***************#
+### If use MySQL as datasource:
+### Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
+# spring.datasource.platform=mysql
+# spring.sql.init.platform=mysql
+
+### Count of DB:
+# db.num=1
+
+### Connect URL of DB:
+# db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=Asia/Shanghai
+# db.user.0=nacos
+# db.password.0=nacos
+
+### Connection pool configuration: hikariCP
+db.pool.config.connectionTimeout=30000
+db.pool.config.validationTimeout=10000
+db.pool.config.maximumPoolSize=20
+db.pool.config.minimumIdle=2
+
+### the maximum retry times for push
+nacos.config.push.maxRetryTime=50
+
+#*************** Naming Module Related Configurations ***************#
+### If enable data warmup. If set to false, the server would accept request without local data preparation:
+# nacos.naming.data.warmup=true
+
+### If enable the instance auto expiration, kind like of health check of instance:
+# nacos.naming.expireInstance=true
+
+### will be removed and replaced by `nacos.naming.clean` properties
+nacos.naming.empty-service.auto-clean=true
+nacos.naming.empty-service.clean.initial-delay-ms=50000
+nacos.naming.empty-service.clean.period-time-ms=30000
+
+### Add in 2.0.0
+### The interval to clean empty service, unit: milliseconds.
+# nacos.naming.clean.empty-service.interval=60000
+
+### The expired time to clean empty service, unit: milliseconds.
+# nacos.naming.clean.empty-service.expired-time=60000
+
+### The interval to clean expired metadata, unit: milliseconds.
+# nacos.naming.clean.expired-metadata.interval=5000
+
+### The expired time to clean metadata, unit: milliseconds.
+# nacos.naming.clean.expired-metadata.expired-time=60000
+
+### The delay time before push task to execute from service changed, unit: milliseconds.
+# nacos.naming.push.pushTaskDelay=500
+
+### The timeout for push task execute, unit: milliseconds.
+# nacos.naming.push.pushTaskTimeout=5000
+
+### The delay time for retrying failed push task, unit: milliseconds.
+# nacos.naming.push.pushTaskRetryDelay=1000
+
+### Since 2.0.3
+### The expired time for inactive client, unit: milliseconds.
+# nacos.naming.client.expired.time=180000
+
+#*************** CMDB Module Related Configurations ***************#
+### The interval to dump external CMDB in seconds:
+# nacos.cmdb.dumpTaskInterval=3600
+
+### The interval of polling data change event in seconds:
+# nacos.cmdb.eventTaskInterval=10
+
+### The interval of loading labels in seconds:
+# nacos.cmdb.labelTaskInterval=300
+
+### If turn on data loading task:
+# nacos.cmdb.loadDataAtStart=false
+
+
+#*************** Metrics Related Configurations ***************#
+### Metrics for prometheus
+#management.endpoints.web.exposure.include=*
+
+### Metrics for elastic search
+management.metrics.export.elastic.enabled=false
+#management.metrics.export.elastic.host=http://localhost:9200
+
+### Metrics for influx
+management.metrics.export.influx.enabled=false
+#management.metrics.export.influx.db=springboot
+#management.metrics.export.influx.uri=http://localhost:8086
+#management.metrics.export.influx.auto-create-db=true
+#management.metrics.export.influx.consistency=one
+#management.metrics.export.influx.compressed=true
+
+#*************** Access Log Related Configurations ***************#
+### If turn on the access log:
+server.tomcat.accesslog.enabled=true
+
+### The access log pattern:
+server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
+
+### The directory of access log:
+server.tomcat.basedir=file:.
+
+#*************** Access Control Related Configurations ***************#
+### If enable spring security, this option is deprecated in 1.2.0:
+#spring.security.enabled=false
+
+### The ignore urls of auth, is deprecated in 1.2.0:
+nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
+
+### The auth system to use, currently only 'nacos' and 'ldap' is supported:
+nacos.core.auth.system.type=nacos
+
+### If turn on auth system:
+nacos.core.auth.enabled=false
+
+### worked when nacos.core.auth.system.type=ldap,{0} is Placeholder,replace login username
+#nacos.core.auth.system.type=ldap
+#nacos.core.auth.ldap.url=ldap://localhost:389
+#nacos.core.auth.ldap.basedc=dc=example,dc=org
+#nacos.core.auth.ldap.userDn=cn=admin,${nacos.core.auth.ldap.basedc}
+#nacos.core.auth.ldap.password=admin
+#nacos.core.auth.ldap.userdn=cn={0},dc=example,dc=org
+#nacos.core.auth.ldap.filter.prefix=uid
+#nacos.core.auth.ldap.case.sensitive=true
+#nacos.core.auth.ldap.ignore.partial.result.exception=false
+
+
+### worked when nacos.core.auth.system.type=nacos
+### The token expiration in seconds:
+nacos.core.auth.plugin.nacos.token.cache.enable=false
+nacos.core.auth.plugin.nacos.token.expire.seconds=18000
+### The default token (Base64 String):
+nacos.core.auth.plugin.nacos.token.secret.key=
+
+### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
+nacos.core.auth.caching.enabled=true
+
+### Since 1.4.1, Turn on/off white auth for user-agent: nacos-server, only for upgrade from old version.
+nacos.core.auth.enable.userAgentAuthWhite=false
+
+### Since 1.4.1, worked when nacos.core.auth.enabled=true and nacos.core.auth.enable.userAgentAuthWhite=false.
+### The two properties is the white list for auth and used by identity the request from other server.
+#nacos.core.auth.server.identity.key=example
+#nacos.core.auth.server.identity.value=example
+
+#*************** Istio Related Configurations ***************#
+### If turn on the MCP server:
+nacos.istio.mcp.server.enabled=false
+
+#*************** Core Related Configurations ***************#
+
+### set the WorkerID manually
+# nacos.core.snowflake.worker-id=
+
+### Member-MetaData
+# nacos.core.member.meta.site=
+# nacos.core.member.meta.adweight=
+# nacos.core.member.meta.weight=
+
+### MemberLookup
+### Addressing pattern category, If set, the priority is highest
+# nacos.core.member.lookup.type=[file,address-server]
+## Set the cluster list with a configuration file or command-line argument
+# nacos.member.list=192.168.16.101:8847?raft_port=8807,192.168.16.101?raft_port=8808,192.168.16.101:8849?raft_port=8809
+## for AddressServerMemberLookup
+# Maximum number of retries to query the address server upon initialization
+# nacos.core.address-server.retry=5
+## Server domain name address of [address-server] mode
+# address.server.domain=jmenv.tbsite.net
+## Server port of [address-server] mode
+# address.server.port=8080
+## Request address of [address-server] mode
+# address.server.url=/nacos/serverlist
+
+#*************** JRaft Related Configurations ***************#
+
+### Sets the Raft cluster election timeout, default value is 5 second
+# nacos.core.protocol.raft.data.election_timeout_ms=5000
+### Sets the amount of time the Raft snapshot will execute periodically, default is 30 minute
+# nacos.core.protocol.raft.data.snapshot_interval_secs=30
+### raft internal worker threads
+# nacos.core.protocol.raft.data.core_thread_num=8
+### Number of threads required for raft business request processing
+# nacos.core.protocol.raft.data.cli_service_thread_num=4
+### raft linear read strategy. Safe linear reads are used by default, that is, the Leader tenure is confirmed by heartbeat
+# nacos.core.protocol.raft.data.read_index_type=ReadOnlySafe
+### rpc request timeout, default 5 seconds
+# nacos.core.protocol.raft.data.rpc_request_timeout_ms=5000
+
+#*************** Distro Related Configurations ***************#
+
+### Distro data sync delay time, when sync task delayed, task will be merged for same data key. Default 1 second.
+# nacos.core.protocol.distro.data.sync.delayMs=1000
+
+### Distro data sync timeout for one sync data, default 3 seconds.
+# nacos.core.protocol.distro.data.sync.timeoutMs=3000
+
+### Distro data sync retry delay time when sync data failed or timeout, same behavior with delayMs, default 3 seconds.
+# nacos.core.protocol.distro.data.sync.retryDelayMs=3000
+
+### Distro data verify interval time, verify synced data whether expired for a interval. Default 5 seconds.
+# nacos.core.protocol.distro.data.verify.intervalMs=5000
+
+### Distro data verify timeout for one verify, default 3 seconds.
+# nacos.core.protocol.distro.data.verify.timeoutMs=3000
+
+### Distro data load retry delay when load snapshot data failed, default 30 seconds.
+# nacos.core.protocol.distro.data.load.retryDelayMs=30000
+
+### enable to support prometheus service discovery
+#nacos.prometheus.metrics.enabled=true
+
+### Since 2.3
+#*************** Grpc Configurations ***************#
+
+## sdk grpc(between nacos server and client) configuration
+## Sets the maximum message size allowed to be received on the server.
+#nacos.remote.server.grpc.sdk.max-inbound-message-size=10485760
+
+## Sets the time(milliseconds) without read activity before sending a keepalive ping. The typical default is two hours.
+#nacos.remote.server.grpc.sdk.keep-alive-time=7200000
+
+## Sets a time(milliseconds) waiting for read activity after sending a keepalive ping. Defaults to 20 seconds.
+#nacos.remote.server.grpc.sdk.keep-alive-timeout=20000
+
+
+## Sets a time(milliseconds) that specify the most aggressive keep-alive time clients are permitted to configure. The typical default is 5 minutes
+#nacos.remote.server.grpc.sdk.permit-keep-alive-time=300000
+
+## cluster grpc(inside the nacos server) configuration
+#nacos.remote.server.grpc.cluster.max-inbound-message-size=10485760
+
+## Sets the time(milliseconds) without read activity before sending a keepalive ping. The typical default is two hours.
+#nacos.remote.server.grpc.cluster.keep-alive-time=7200000
+
+## Sets a time(milliseconds) waiting for read activity after sending a keepalive ping. Defaults to 20 seconds.
+#nacos.remote.server.grpc.cluster.keep-alive-timeout=20000
+
+## Sets a time(milliseconds) that specify the most aggressive keep-alive time clients are permitted to configure. The typical default is 5 minutes
+#nacos.remote.server.grpc.cluster.permit-keep-alive-time=300000

+ 21 - 0
nacos/nacos/conf/cluster.conf.example

@@ -0,0 +1,21 @@
+#
+# Copyright 1999-2021 Alibaba Group Holding Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+#it is ip
+#example
+192.168.16.101:8847
+192.168.16.102
+192.168.16.103

+ 1 - 0
nacos/nacos/conf/console-guide.conf

@@ -0,0 +1 @@
+当前节点已关闭Nacos开源控制台使用,请修改application.properties中的nacos.console.ui.enabled参数为true打开开源控制台使用,详情查看<a href="https://nacos.io/docs/latest/manual/admin/console/">文档</a>中关于<code>关闭默认控制台部分</code>。

+ 203 - 0
nacos/nacos/conf/derby-schema.sql

@@ -0,0 +1,203 @@
+/*
+ * Copyright 1999-2018 Alibaba Group Holding Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+CREATE SCHEMA nacos AUTHORIZATION nacos;
+
+CREATE TABLE config_info (
+                             id bigint NOT NULL generated by default as identity,
+                             data_id varchar(255) NOT NULL,
+                             group_id varchar(128) NOT NULL,
+                             tenant_id varchar(128) default '',
+                             app_name varchar(128),
+                             content CLOB,
+                             md5 varchar(32) DEFAULT NULL,
+                             gmt_create timestamp NOT NULL DEFAULT '2010-05-05 00:00:00',
+                             gmt_modified timestamp NOT NULL DEFAULT '2010-05-05 00:00:00',
+                             src_user varchar(128) DEFAULT NULL,
+                             src_ip varchar(50) DEFAULT NULL,
+                             c_desc varchar(256) DEFAULT NULL,
+                             c_use varchar(64) DEFAULT NULL,
+                             effect varchar(64) DEFAULT NULL,
+                             type varchar(64) DEFAULT NULL,
+                             c_schema LONG VARCHAR DEFAULT NULL,
+                             encrypted_data_key LONG VARCHAR DEFAULT NULL,
+                             constraint configinfo_id_key PRIMARY KEY (id),
+                             constraint uk_configinfo_datagrouptenant UNIQUE (data_id,group_id,tenant_id));
+
+CREATE INDEX configinfo_dataid_key_idx ON config_info(data_id);
+CREATE INDEX configinfo_groupid_key_idx ON config_info(group_id);
+CREATE INDEX configinfo_dataid_group_key_idx ON config_info(data_id, group_id);
+
+CREATE TABLE his_config_info (
+                                 id bigint NOT NULL,
+                                 nid bigint NOT NULL generated by default as identity,
+                                 data_id varchar(255) NOT NULL,
+                                 group_id varchar(128) NOT NULL,
+                                 tenant_id varchar(128) default '',
+                                 app_name varchar(128),
+                                 content CLOB,
+                                 md5 varchar(32) DEFAULT NULL,
+                                 gmt_create timestamp NOT NULL DEFAULT '2010-05-05 00:00:00.000',
+                                 gmt_modified timestamp NOT NULL DEFAULT '2010-05-05 00:00:00.000',
+                                 src_user varchar(128),
+                                 src_ip varchar(50) DEFAULT NULL,
+                                 publish_type varchar(50)  DEFAULT 'formal',
+                                 gray_name varchar(128) DEFAULT NULL,
+                                 ext_info CLOB,
+                                 op_type char(10) DEFAULT NULL,
+                                 encrypted_data_key LONG VARCHAR DEFAULT NULL,
+                                 constraint hisconfiginfo_nid_key PRIMARY KEY (nid));
+
+CREATE INDEX hisconfiginfo_dataid_key_idx ON his_config_info(data_id);
+CREATE INDEX hisconfiginfo_gmt_create_idx ON his_config_info(gmt_create);
+CREATE INDEX hisconfiginfo_gmt_modified_idx ON his_config_info(gmt_modified);
+
+CREATE TABLE config_info_gray (
+                                  id bigint NOT NULL generated by default as identity,
+                                  data_id varchar(255) NOT NULL,
+                                  group_id varchar(128) NOT NULL,
+                                  tenant_id varchar(128) default '',
+                                  gray_name varchar(128) NOT NULL,
+                                  gray_rule CLOB,
+                                  app_name varchar(128),
+                                  src_ip varchar(128),
+                                  src_user varchar(128) default '',
+                                  content CLOB,
+                                  md5 varchar(32) DEFAULT NULL,
+                                  encrypted_data_key varchar(32) DEFAULT NULL,
+                                  gmt_create timestamp NOT NULL DEFAULT '2010-05-05 00:00:00',
+                                  gmt_modified timestamp NOT NULL DEFAULT '2010-05-05 00:00:00',
+                                  constraint configinfogray_id_key PRIMARY KEY (id),
+                                  constraint uk_configinfogray_datagrouptenantgrayname UNIQUE (data_id,group_id,tenant_id,gray_name));
+CREATE INDEX config_info_gray_dataid_gmt_modified ON config_info_gray(data_id,gmt_modified);
+CREATE INDEX config_info_gray_gmt_modified ON config_info_gray(gmt_modified);
+
+CREATE TABLE app_list (
+                          id bigint NOT NULL generated by default as identity,
+                          app_name varchar(128) NOT NULL,
+                          is_dynamic_collect_disabled smallint DEFAULT 0,
+                          last_sub_info_collected_time timestamp DEFAULT '1970-01-01 08:00:00.0',
+                          sub_info_lock_owner varchar(128),
+                          sub_info_lock_time timestamp DEFAULT '1970-01-01 08:00:00.0',
+                          constraint applist_id_key PRIMARY KEY (id),
+                          constraint uk_appname UNIQUE (app_name));
+
+CREATE TABLE app_configdata_relation_subs (
+                                              id bigint NOT NULL generated by default as identity,
+                                              app_name varchar(128) NOT NULL,
+                                              data_id varchar(255) NOT NULL,
+                                              group_id varchar(128) NOT NULL,
+                                              gmt_modified timestamp DEFAULT '2010-05-05 00:00:00',
+                                              constraint configdatarelationsubs_id_key PRIMARY KEY (id),
+                                              constraint uk_app_sub_config_datagroup UNIQUE (app_name, data_id, group_id));
+
+
+CREATE TABLE app_configdata_relation_pubs (
+                                              id bigint NOT NULL generated by default as identity,
+                                              app_name varchar(128) NOT NULL,
+                                              data_id varchar(255) NOT NULL,
+                                              group_id varchar(128) NOT NULL,
+                                              gmt_modified timestamp DEFAULT '2010-05-05 00:00:00',
+                                              constraint configdatarelationpubs_id_key PRIMARY KEY (id),
+                                              constraint uk_app_pub_config_datagroup UNIQUE (app_name, data_id, group_id));
+
+CREATE TABLE config_tags_relation (
+                                      id bigint NOT NULL,
+                                      tag_name varchar(128) NOT NULL,
+                                      tag_type varchar(64) DEFAULT NULL,
+                                      data_id varchar(255) NOT NULL,
+                                      group_id varchar(128) NOT NULL,
+                                      tenant_id varchar(128) DEFAULT '',
+                                      nid bigint NOT NULL generated by default as identity,
+                                      constraint config_tags_id_key PRIMARY KEY (nid),
+                                      constraint uk_configtagrelation_configidtag UNIQUE (id, tag_name, tag_type));
+
+CREATE INDEX config_tags_tenant_id_idx ON config_tags_relation(tenant_id);
+
+CREATE TABLE group_capacity (
+                                id bigint NOT NULL generated by default as identity,
+                                group_id varchar(128) DEFAULT '',
+                                quota int DEFAULT 0,
+                                usage int DEFAULT 0,
+                                max_size int DEFAULT 0,
+                                max_aggr_count int DEFAULT 0,
+                                max_aggr_size int DEFAULT 0,
+                                max_history_count int DEFAULT 0,
+                                gmt_create timestamp DEFAULT '2010-05-05 00:00:00',
+                                gmt_modified timestamp DEFAULT '2010-05-05 00:00:00',
+                                constraint group_capacity_id_key PRIMARY KEY (id),
+                                constraint uk_group_id UNIQUE (group_id));
+
+CREATE TABLE tenant_capacity (
+                                 id bigint NOT NULL generated by default as identity,
+                                 tenant_id varchar(128) DEFAULT '',
+                                 quota int DEFAULT 0,
+                                 usage int DEFAULT 0,
+                                 max_size int DEFAULT 0,
+                                 max_aggr_count int DEFAULT 0,
+                                 max_aggr_size int DEFAULT 0,
+                                 max_history_count int DEFAULT 0,
+                                 gmt_create timestamp DEFAULT '2010-05-05 00:00:00',
+                                 gmt_modified timestamp DEFAULT '2010-05-05 00:00:00',
+                                 constraint tenant_capacity_id_key PRIMARY KEY (id),
+                                 constraint uk_tenant_id UNIQUE (tenant_id));
+
+CREATE TABLE tenant_info (
+                             id bigint NOT NULL generated by default as identity,
+                             kp varchar(128) NOT NULL,
+                             tenant_id varchar(128)  DEFAULT '',
+                             tenant_name varchar(128)  DEFAULT '',
+                             tenant_desc varchar(256)  DEFAULT NULL,
+                             create_source varchar(32) DEFAULT NULL,
+                             gmt_create bigint NOT NULL,
+                             gmt_modified bigint NOT NULL,
+                             constraint tenant_info_id_key PRIMARY KEY (id),
+                             constraint uk_tenant_info_kptenantid UNIQUE (kp,tenant_id));
+CREATE INDEX tenant_info_tenant_id_idx ON tenant_info(tenant_id);
+
+CREATE TABLE users (
+                       username varchar(50) NOT NULL PRIMARY KEY,
+                       password varchar(500) NOT NULL,
+                       enabled boolean NOT NULL DEFAULT true
+);
+
+CREATE TABLE roles (
+                       username varchar(50) NOT NULL,
+                       role varchar(50) NOT NULL,
+                       constraint uk_username_role UNIQUE (username,role)
+);
+
+CREATE TABLE permissions (
+                             role varchar(50) NOT NULL,
+                             resource varchar(512) NOT NULL,
+                             action varchar(8) NOT NULL,
+                             constraint uk_role_permission UNIQUE (role,resource,action)
+);
+
+
+
+/******************************************/
+/*   ipv6 support   */
+/******************************************/
+
+ALTER TABLE his_config_info ADD  src_ip varchar(50)  DEFAULT NULL  ;
+
+ALTER TABLE config_info  ADD src_ip varchar(50)  DEFAULT NULL ;
+
+
+ALTER TABLE his_config_info ADD publish_type varchar(50)  DEFAULT 'formal';
+ALTER TABLE his_config_info ADD ext_info CLOB   DEFAULT NULL ;
+ALTER TABLE his_config_info ADD gray_name varchar(128) DEFAULT NULL;

+ 179 - 0
nacos/nacos/conf/mysql-schema.sql

@@ -0,0 +1,179 @@
+/*
+ * Copyright 1999-2018 Alibaba Group Holding Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/******************************************/
+/*   表名称 = config_info                  */
+/******************************************/
+CREATE TABLE `config_info` (
+                               `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+                               `data_id` varchar(255) NOT NULL COMMENT 'data_id',
+                               `group_id` varchar(128) DEFAULT NULL COMMENT 'group_id',
+                               `content` longtext NOT NULL COMMENT 'content',
+                               `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
+                               `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+                               `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
+                               `src_user` text COMMENT 'source user',
+                               `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
+                               `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
+                               `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
+                               `c_desc` varchar(256) DEFAULT NULL COMMENT 'configuration description',
+                               `c_use` varchar(64) DEFAULT NULL COMMENT 'configuration usage',
+                               `effect` varchar(64) DEFAULT NULL COMMENT '配置生效的描述',
+                               `type` varchar(64) DEFAULT NULL COMMENT '配置的类型',
+                               `c_schema` text COMMENT '配置的模式',
+                               `encrypted_data_key` varchar(1024) NOT NULL DEFAULT '' COMMENT '密钥',
+                               PRIMARY KEY (`id`),
+                               UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';
+
+/******************************************/
+/*   表名称 = config_info  since 2.5.0                */
+/******************************************/
+CREATE TABLE `config_info_gray` (
+                                    `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
+                                    `data_id` varchar(255) NOT NULL COMMENT 'data_id',
+                                    `group_id` varchar(128) NOT NULL COMMENT 'group_id',
+                                    `content` longtext NOT NULL COMMENT 'content',
+                                    `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
+                                    `src_user` text COMMENT 'src_user',
+                                    `src_ip` varchar(100) DEFAULT NULL COMMENT 'src_ip',
+                                    `gmt_create` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'gmt_create',
+                                    `gmt_modified` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT 'gmt_modified',
+                                    `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
+                                    `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
+                                    `gray_name` varchar(128) NOT NULL COMMENT 'gray_name',
+                                    `gray_rule` text NOT NULL COMMENT 'gray_rule',
+                                    `encrypted_data_key` varchar(256) NOT NULL DEFAULT '' COMMENT 'encrypted_data_key',
+                                    PRIMARY KEY (`id`),
+                                    UNIQUE KEY `uk_configinfogray_datagrouptenantgray` (`data_id`,`group_id`,`tenant_id`,`gray_name`),
+                                    KEY `idx_dataid_gmt_modified` (`data_id`,`gmt_modified`),
+                                    KEY `idx_gmt_modified` (`gmt_modified`)
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='config_info_gray';
+
+/******************************************/
+/*   表名称 = config_tags_relation         */
+/******************************************/
+CREATE TABLE `config_tags_relation` (
+                                        `id` bigint(20) NOT NULL COMMENT 'id',
+                                        `tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
+                                        `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
+                                        `data_id` varchar(255) NOT NULL COMMENT 'data_id',
+                                        `group_id` varchar(128) NOT NULL COMMENT 'group_id',
+                                        `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
+                                        `nid` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增长标识',
+                                        PRIMARY KEY (`nid`),
+                                        UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
+                                        KEY `idx_tenant_id` (`tenant_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';
+
+/******************************************/
+/*   表名称 = group_capacity               */
+/******************************************/
+CREATE TABLE `group_capacity` (
+                                  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
+                                  `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
+                                  `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
+                                  `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
+                                  `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
+                                  `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
+                                  `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
+                                  `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
+                                  `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+                                  `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
+                                  PRIMARY KEY (`id`),
+                                  UNIQUE KEY `uk_group_id` (`group_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';
+
+/******************************************/
+/*   表名称 = his_config_info              */
+/******************************************/
+CREATE TABLE `his_config_info` (
+                                   `id` bigint(20) unsigned NOT NULL COMMENT 'id',
+                                   `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增标识',
+                                   `data_id` varchar(255) NOT NULL COMMENT 'data_id',
+                                   `group_id` varchar(128) NOT NULL COMMENT 'group_id',
+                                   `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
+                                   `content` longtext NOT NULL COMMENT 'content',
+                                   `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
+                                   `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+                                   `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
+                                   `src_user` text COMMENT 'source user',
+                                   `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
+                                   `op_type` char(10) DEFAULT NULL COMMENT 'operation type',
+                                   `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
+                                   `encrypted_data_key` varchar(1024) NOT NULL DEFAULT '' COMMENT '密钥',
+                                   `publish_type` varchar(50)  DEFAULT 'formal' COMMENT 'publish type gray or formal',
+                                   `gray_name` varchar(50)  DEFAULT NULL COMMENT 'gray name',
+                                   `ext_info`  longtext DEFAULT NULL COMMENT 'ext info',
+                                   PRIMARY KEY (`nid`),
+                                   KEY `idx_gmt_create` (`gmt_create`),
+                                   KEY `idx_gmt_modified` (`gmt_modified`),
+                                   KEY `idx_did` (`data_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';
+
+
+/******************************************/
+/*   表名称 = tenant_capacity              */
+/******************************************/
+CREATE TABLE `tenant_capacity` (
+                                   `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
+                                   `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
+                                   `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
+                                   `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
+                                   `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
+                                   `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
+                                   `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
+                                   `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
+                                   `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+                                   `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
+                                   PRIMARY KEY (`id`),
+                                   UNIQUE KEY `uk_tenant_id` (`tenant_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';
+
+
+CREATE TABLE `tenant_info` (
+                               `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
+                               `kp` varchar(128) NOT NULL COMMENT 'kp',
+                               `tenant_id` varchar(128) default '' COMMENT 'tenant_id',
+                               `tenant_name` varchar(128) default '' COMMENT 'tenant_name',
+                               `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
+                               `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
+                               `gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
+                               `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
+                               PRIMARY KEY (`id`),
+                               UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
+                               KEY `idx_tenant_id` (`tenant_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';
+
+CREATE TABLE `users` (
+                         `username` varchar(50) NOT NULL PRIMARY KEY COMMENT 'username',
+                         `password` varchar(500) NOT NULL COMMENT 'password',
+                         `enabled` boolean NOT NULL COMMENT 'enabled'
+);
+
+CREATE TABLE `roles` (
+                         `username` varchar(50) NOT NULL COMMENT 'username',
+                         `role` varchar(50) NOT NULL COMMENT 'role',
+                         UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
+);
+
+CREATE TABLE `permissions` (
+                               `role` varchar(50) NOT NULL COMMENT 'role',
+                               `resource` varchar(128) NOT NULL COMMENT 'resource',
+                               `action` varchar(8) NOT NULL COMMENT 'action',
+                               UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
+);
+

+ 797 - 0
nacos/nacos/conf/nacos-logback.xml

@@ -0,0 +1,797 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 1999-2018 Alibaba Group Holding Ltd.
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<configuration scan="true" scanPeriod="10 seconds">
+
+    <springProperty scope="context" name="logPath" source="nacos.logs.path" defaultValue="${nacos.home}/logs"/>
+    <property name="LOG_HOME" value="${logPath}"/>
+
+    <appender name="cmdb-main"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${nacos.home}/logs/cmdb-main.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${nacos.home}/logs/cmdb-main.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>2GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>7GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="naming-server"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/naming-server.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/naming-server.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>1GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>7GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="async-naming-server" class="ch.qos.logback.classic.AsyncAppender">
+        <discardingThreshold>0</discardingThreshold>
+        <queueSize>1024</queueSize>
+        <neverBlock>true</neverBlock>
+        <appender-ref ref="naming-server"/>
+    </appender>
+
+    <appender name="naming-raft"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/naming-raft.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/naming-raft.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>1GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>3GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="async-naming-raft" class="ch.qos.logback.classic.AsyncAppender">
+        <discardingThreshold>0</discardingThreshold>
+        <queueSize>1024</queueSize>
+        <neverBlock>true</neverBlock>
+        <appender-ref ref="naming-raft"/>
+    </appender>
+
+
+    <appender name="naming-distro"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/naming-distro.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/naming-distro.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>1GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>3GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="async-naming-distro" class="ch.qos.logback.classic.AsyncAppender">
+        <discardingThreshold>0</discardingThreshold>
+        <queueSize>1024</queueSize>
+        <neverBlock>true</neverBlock>
+        <appender-ref ref="naming-distro"/>
+    </appender>
+
+    <appender name="naming-event"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/naming-event.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/naming-event.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>1GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>3GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="async-naming-event" class="ch.qos.logback.classic.AsyncAppender">
+        <discardingThreshold>0</discardingThreshold>
+        <queueSize>1024</queueSize>
+        <neverBlock>true</neverBlock>
+        <appender-ref ref="naming-event"/>
+    </appender>
+
+    <appender name="naming-push"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/naming-push.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/naming-push.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>1GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>3GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    <appender name="naming-rt"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/naming-rt.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/naming-rt.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>1GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>3GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%msg%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="naming-performance"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/naming-performance.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/naming-performance.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>1GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>3GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <!--config module logback config-->
+    <appender name="dumpFile"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/config-dump.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/config-dump.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>2GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>7GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    <appender name="pullFile"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/config-pull.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/config-pull.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>20MB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>128MB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    <appender name="fatalFile"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/config-fatal.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/config-fatal.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>20MB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>128MB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    <appender name="memoryFile"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/config-memory.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/config-memory.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>20MB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>128MB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    <appender name="pullCheckFile"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/config-pull-check.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/config-pull-check.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>1GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>3GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%msg%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="clientLog"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/config-client-request.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/config-client-request.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>2GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>7GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date|%msg%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="traceLog"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/config-trace.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/config-trace.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>2GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>7GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date|%msg%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="notifyLog"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/config-notify.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/config-notify.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>1GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>3GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="startLog"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/config-server.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/config-server.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>50MB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>512MB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="rootFile"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/nacos.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/nacos.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>50MB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>512MB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="nacos-address"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/nacos-address.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/nacos-address.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>2GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>7GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="istio-main"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/istio-main.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/istio-main.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>2GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>7GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="core-auth"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/core-auth.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/core-auth.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>2GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>7GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="protocol-raft"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/protocol-raft.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/protocol-raft.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>2GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>7GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="protocol-distro"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/protocol-distro.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/protocol-distro.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>2GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>7GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="nacos-cluster"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/nacos-cluster.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/nacos-cluster.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>2GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>7GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="alipay-jraft"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/alipay-jraft.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/alipay-jraft.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>2GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>7GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    
+    
+    <!--TPS control -->
+    <appender name="plugin-control-connection"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/plugin-control-connection.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/plugin-control-connection.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>2GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>2GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    <appender name="plugin-control-tps"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/plugin-control-tps.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/plugin-control-tps.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>2GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>2GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+    <appender name="plugin-control"
+              class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/plugin-control.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/plugin-control.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>2GB</maxFileSize>
+            <maxHistory>14</maxHistory>
+            <totalSizeCap>7GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    
+    
+    <appender name="remote"
+        class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/remote.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/remote.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>2GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>7GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    
+    <appender name="remote-digest"
+        class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/remote-digest.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/remote-digest.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>2GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>7GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    
+    <appender name="remote-push"
+        class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/remote-push.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/remote-push.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>2GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>7GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    
+    <appender name="nacos-persistence"
+        class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${LOG_HOME}/nacos-persistence.log</file>
+        <append>true</append>
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${LOG_HOME}/nacos-persistence.log.%d{yyyy-MM-dd}.%i</fileNamePattern>
+            <maxFileSize>2GB</maxFileSize>
+            <maxHistory>7</maxHistory>
+            <totalSizeCap>7GB</totalSizeCap>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+        </rollingPolicy>
+        <encoder>
+            <Pattern>%date %level %msg%n%n</Pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    
+    <logger name="com.alibaba.nacos.address.main" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="nacos-address"/>
+    </logger>
+
+    <logger name="com.alibaba.nacos.cmdb.main" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="cmdb-main"/>
+    </logger>
+    
+    <logger name="com.alibaba.nacos.core.remote" additivity="false">
+        <level value="DEBUG"/>
+        <appender-ref ref="remote"/>
+    </logger>
+    <logger name="com.alibaba.nacos.core.remote.push" additivity="false">
+        <level value="DEBUG"/>
+        <appender-ref ref="remote-push"/>
+    </logger>
+    
+    <logger name="com.alibaba.nacos.core.remote.digest" additivity="false">
+        <level value="DEBUG"/>
+        <appender-ref ref="remote-digest"/>
+    </logger>
+
+    <!-- TPS Control-->
+    <logger name="com.alibaba.nacos.plugin.control" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="plugin-control"/>
+    </logger>
+    <logger name="com.alibaba.nacos.plugin.control.tps" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="plugin-control-tps"/>
+    </logger>
+
+    <logger name="com.alibaba.nacos.plugin.control.connection" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="plugin-control-connection"/>
+    </logger>
+    
+    <logger name="com.alibaba.nacos.naming.main" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="async-naming-server"/>
+    </logger>
+    <logger name="com.alibaba.nacos.naming.raft" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="async-naming-raft"/>
+    </logger>
+    <logger name="com.alibaba.nacos.naming.distro" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="async-naming-distro"/>
+    </logger>
+    <logger name="com.alibaba.nacos.naming.event" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="async-naming-event"/>
+    </logger>
+    <logger name="com.alibaba.nacos.naming.push" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="naming-push"/>
+    </logger>
+    <logger name="com.alibaba.nacos.naming.rt" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="naming-rt"/>
+    </logger>
+    <logger name="com.alibaba.nacos.naming.performance" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="naming-performance"/>
+    </logger>
+
+    <logger name="com.alibaba.nacos.config.dumpLog" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="dumpFile"/>
+    </logger>
+    <logger name="com.alibaba.nacos.config.pullLog" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="pullFile"/>
+    </logger>
+    <logger name="com.alibaba.nacos.config.pullCheckLog" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="pullCheckFile"/>
+    </logger>
+    <logger name="com.alibaba.nacos.config.fatal" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="fatalFile"/>
+    </logger>
+    <logger name="com.alibaba.nacos.config.monitorLog" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="memoryFile"/>
+    </logger>
+
+    <logger name="com.alibaba.nacos.config.clientLog" additivity="false">
+        <level value="info"/>
+        <appender-ref ref="clientLog"/>
+    </logger>
+
+    <logger name="com.alibaba.nacos.config.notifyLog" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="notifyLog"/>
+    </logger>
+
+    <logger name="com.alibaba.nacos.config.traceLog" additivity="false">
+        <level value="info"/>
+        <appender-ref ref="traceLog"/>
+    </logger>
+
+    <logger name="com.alibaba.nacos.config.startLog" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="startLog"/>
+    </logger>
+
+    <logger name="com.alibaba.nacos.istio.main" additivity="false">
+        <level value="DEBUG"/>
+        <appender-ref ref="istio-main"/>
+    </logger>
+
+    <logger name="com.alibaba.nacos.core.auth" additivity="false">
+        <level value="DEBUG"/>
+        <appender-ref ref="core-auth"/>
+    </logger>
+
+    <logger name="com.alibaba.nacos.core.protocol.raft" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="protocol-raft"/>
+    </logger>
+
+    <logger name="com.alipay.sofa.jraft" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="alipay-jraft"/>
+    </logger>
+
+    <logger name="com.alibaba.nacos.core.protocol.distro" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="protocol-distro"/>
+    </logger>
+
+    <logger name="com.alibaba.nacos.core.cluster" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="nacos-cluster"/>
+    </logger>
+    
+    <logger name="com.alibaba.nacos.persistence" additivity="false">
+        <level value="INFO"/>
+        <appender-ref ref="nacos-persistence"/>
+    </logger>
+
+    <springProfile name="standalone">
+        <logger name="org.springframework">
+            <appender-ref ref="CONSOLE"/>
+            <level value="INFO"/>
+        </logger>
+
+        <logger name="org.apache.catalina.startup.DigesterFactory">
+            <appender-ref ref="CONSOLE"/>
+            <level value="INFO"/>
+        </logger>
+
+        <logger name="org.apache.catalina.util.LifecycleBase">
+            <appender-ref ref="CONSOLE"/>
+            <level value="ERROR"/>
+        </logger>
+
+        <logger name="org.apache.coyote.http11.Http11NioProtocol">
+            <appender-ref ref="CONSOLE"/>
+            <level value="WARN"/>
+        </logger>
+
+        <logger name="org.apache.tomcat.util.net.NioSelectorPool">
+            <appender-ref ref="CONSOLE"/>
+            <level value="WARN"/>
+        </logger>
+    </springProfile>
+
+    <logger name="com.alibaba.nacos.core.listener.StartingApplicationListener">
+        <appender-ref ref="CONSOLE"/>
+        <level value="INFO"/>
+    </logger>
+
+    <logger name="com.alibaba.nacos.common.notify.NotifyCenter">
+        <appender-ref ref="CONSOLE"/>
+        <level value="INFO"/>
+    </logger>
+
+    <logger name="com.alibaba.nacos.sys.file.WatchFileCenter">
+        <appender-ref ref="CONSOLE"/>
+        <level value="INFO"/>
+    </logger>
+
+    <logger name="com.alibaba.nacos.common.executor.ThreadPoolManager">
+        <appender-ref ref="CONSOLE"/>
+        <level value="INFO"/>
+    </logger>
+
+    <root>
+        <level value="INFO"/>
+        <appender-ref ref="rootFile"/>
+    </root>
+</configuration>
+

+ 1 - 0
nacos/nacos/data/protocol/raft/naming_instance_metadata/log/CURRENT

@@ -0,0 +1 @@
+MANIFEST-000005

+ 1 - 0
nacos/nacos/data/protocol/raft/naming_instance_metadata/log/IDENTITY

@@ -0,0 +1 @@
+6e40f8a7-a529-42f8-bc6e-db3511985b3e

+ 0 - 0
nacos/nacos/data/protocol/raft/naming_instance_metadata/log/LOCK


File diff suppressed because it is too large
+ 60399 - 0
nacos/nacos/data/protocol/raft/naming_instance_metadata/log/LOG


BIN
nacos/nacos/data/protocol/raft/naming_instance_metadata/log/MANIFEST-000005


+ 317 - 0
nacos/nacos/data/protocol/raft/naming_instance_metadata/log/OPTIONS-000007

@@ -0,0 +1,317 @@
+# This is a RocksDB option file.
+#
+# For detailed file format spec, please refer to the example file
+# in examples/rocksdb_option_file_example.ini
+#
+
+[Version]
+  rocksdb_version=8.8.1
+  options_file_version=1.1
+
+[DBOptions]
+  max_background_flushes=-1
+  compaction_readahead_size=2097152
+  strict_bytes_per_sync=false
+  wal_bytes_per_sync=0
+  max_open_files=-1
+  stats_history_buffer_size=1048576
+  max_total_wal_size=1073741824
+  stats_persist_period_sec=600
+  stats_dump_period_sec=600
+  avoid_flush_during_shutdown=false
+  max_subcompactions=1
+  bytes_per_sync=0
+  delayed_write_rate=16777216
+  max_background_compactions=-1
+  max_background_jobs=2
+  delete_obsolete_files_period_micros=21600000000
+  writable_file_max_buffer_size=1048576
+  file_checksum_gen_factory=nullptr
+  allow_data_in_errors=false
+  max_bgerror_resume_count=2147483647
+  best_efforts_recovery=false
+  write_dbid_to_manifest=false
+  atomic_flush=false
+  manual_wal_flush=false
+  two_write_queues=false
+  avoid_flush_during_recovery=false
+  dump_malloc_stats=false
+  info_log_level=INFO_LEVEL
+  write_thread_slow_yield_usec=3
+  unordered_write=false
+  allow_ingest_behind=false
+  fail_if_options_file_error=true
+  persist_stats_to_disk=false
+  WAL_ttl_seconds=0
+  bgerror_resume_retry_interval=1000000
+  allow_concurrent_memtable_write=true
+  paranoid_checks=true
+  WAL_size_limit_MB=0
+  lowest_used_cache_tier=kNonVolatileBlockTier
+  keep_log_file_num=100
+  table_cache_numshardbits=6
+  max_file_opening_threads=16
+  random_access_max_buffer_size=1048576
+  log_readahead_size=0
+  enable_pipelined_write=false
+  wal_recovery_mode=kPointInTimeRecovery
+  db_write_buffer_size=0
+  allow_2pc=false
+  skip_checking_sst_file_sizes_on_db_open=false
+  skip_stats_update_on_db_open=false
+  recycle_log_file_num=0
+  db_host_id=__hostname__
+  track_and_verify_wals_in_manifest=false
+  use_fsync=false
+  wal_compression=kNoCompression
+  compaction_verify_record_count=true
+  error_if_exists=false
+  manifest_preallocation_size=4194304
+  is_fd_close_on_exec=true
+  enable_write_thread_adaptive_yield=true
+  enable_thread_tracking=false
+  avoid_unnecessary_blocking_io=false
+  allow_fallocate=true
+  max_log_file_size=0
+  advise_random_on_open=true
+  create_missing_column_families=true
+  max_write_batch_group_size_bytes=1048576
+  use_adaptive_mutex=false
+  wal_filter=nullptr
+  create_if_missing=true
+  enforce_single_del_contracts=true
+  allow_mmap_writes=false
+  access_hint_on_compaction_start=NORMAL
+  verify_sst_unique_id_in_manifest=true
+  log_file_time_to_roll=0
+  use_direct_io_for_flush_and_compaction=false
+  flush_verify_memtable_count=true
+  max_manifest_file_size=1073741824
+  write_thread_max_yield_usec=100
+  use_direct_reads=false
+  allow_mmap_reads=false
+  
+
+[CFOptions "default"]
+  bottommost_file_compaction_delay=0
+  memtable_protection_bytes_per_key=0
+  compression_per_level=kNoCompression:kNoCompression:kLZ4Compression:kLZ4Compression:kLZ4Compression:kLZ4Compression:kLZ4Compression
+  bottommost_compression=kDisableCompressionOption
+  sample_for_compression=0
+  blob_garbage_collection_age_cutoff=0.250000
+  blob_compression_type=kNoCompression
+  prepopulate_blob_cache=kDisable
+  blob_compaction_readahead_size=0
+  level0_stop_writes_trigger=40
+  min_blob_size=0
+  last_level_temperature=kUnknown
+  compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;}
+  target_file_size_base=67108864
+  ignore_max_compaction_bytes_for_input=true
+  memtable_whole_key_filtering=false
+  blob_file_starting_level=0
+  soft_pending_compaction_bytes_limit=68719476736
+  max_write_buffer_number=6
+  ttl=2592000
+  compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;}
+  check_flush_compaction_key_order=true
+  memtable_huge_page_size=0
+  max_successive_merges=0
+  inplace_update_num_locks=10000
+  enable_blob_garbage_collection=false
+  arena_block_size=1048576
+  bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
+  target_file_size_multiplier=1
+  max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1
+  blob_garbage_collection_force_threshold=1.000000
+  enable_blob_files=false
+  level0_slowdown_writes_trigger=20
+  compression=kLZ4Compression
+  level0_file_num_compaction_trigger=2
+  block_protection_bytes_per_key=0
+  prefix_extractor=rocksdb.FixedPrefix.8
+  max_bytes_for_level_multiplier=10.000000
+  write_buffer_size=134217728
+  disable_auto_compactions=false
+  max_compaction_bytes=1677721600
+  memtable_max_range_deletions=0
+  compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
+  hard_pending_compaction_bytes_limit=274877906944
+  blob_file_size=268435456
+  periodic_compaction_seconds=0
+  paranoid_file_checks=false
+  experimental_mempurge_threshold=0.000000
+  memtable_prefix_bloom_size_ratio=0.125000
+  max_bytes_for_level_base=536870912
+  max_sequential_skip_in_iterations=8
+  report_bg_io_stats=false
+  sst_partitioner_factory=nullptr
+  compaction_pri=kMinOverlappingRatio
+  compaction_style=kCompactionStyleLevel
+  compaction_filter_factory=nullptr
+  compaction_filter=nullptr
+  memtable_factory=SkipListFactory
+  comparator=leveldb.BytewiseComparator
+  bloom_locality=0
+  min_write_buffer_number_to_merge=2
+  table_factory=BlockBasedTable
+  max_write_buffer_size_to_maintain=0
+  max_write_buffer_number_to_maintain=0
+  optimize_filters_for_hits=false
+  default_temperature=kUnknown
+  preserve_internal_time_seconds=0
+  force_consistency_checks=true
+  merge_operator={id=StringAppendOperator;delimiter=,;}
+  num_levels=7
+  level_compaction_dynamic_file_size=true
+  memtable_insert_with_hint_prefix_extractor=nullptr
+  level_compaction_dynamic_level_bytes=true
+  persist_user_defined_timestamps=true
+  preclude_last_level_data_seconds=0
+  inplace_update_support=false
+  
+[TableOptions/BlockBasedTable "default"]
+  num_file_reads_for_auto_readahead=2
+  metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;}
+  read_amp_bytes_per_bit=0
+  verify_compression=false
+  format_version=5
+  optimize_filters_for_memory=false
+  partition_filters=true
+  detect_filter_construct_corruption=false
+  initial_auto_readahead_size=8192
+  max_auto_readahead_size=262144
+  enable_index_compression=true
+  checksum=kXXH3
+  index_block_restart_interval=1
+  pin_top_level_index_and_filter=true
+  block_align=false
+  block_size=4096
+  index_type=kTwoLevelIndexSearch
+  filter_policy=nullptr
+  metadata_block_size=8192
+  no_block_cache=false
+  index_shortening=kShortenSeparators
+  whole_key_filtering=true
+  block_size_deviation=10
+  data_block_index_type=kDataBlockBinarySearch
+  data_block_hash_table_util_ratio=0.750000
+  cache_index_and_filter_blocks=false
+  prepopulate_block_cache=kDisable
+  block_restart_interval=16
+  pin_l0_filter_and_index_blocks_in_cache=true
+  cache_index_and_filter_blocks_with_high_priority=true
+  flush_block_policy_factory=FlushBlockBySizePolicyFactory
+  
+
+[CFOptions "Configuration"]
+  bottommost_file_compaction_delay=0
+  memtable_protection_bytes_per_key=0
+  compression_per_level=kNoCompression:kNoCompression:kLZ4Compression:kLZ4Compression:kLZ4Compression:kLZ4Compression:kLZ4Compression
+  bottommost_compression=kDisableCompressionOption
+  sample_for_compression=0
+  blob_garbage_collection_age_cutoff=0.250000
+  blob_compression_type=kNoCompression
+  prepopulate_blob_cache=kDisable
+  blob_compaction_readahead_size=0
+  level0_stop_writes_trigger=40
+  min_blob_size=0
+  last_level_temperature=kUnknown
+  compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;}
+  target_file_size_base=67108864
+  ignore_max_compaction_bytes_for_input=true
+  memtable_whole_key_filtering=false
+  blob_file_starting_level=0
+  soft_pending_compaction_bytes_limit=68719476736
+  max_write_buffer_number=6
+  ttl=2592000
+  compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;}
+  check_flush_compaction_key_order=true
+  memtable_huge_page_size=0
+  max_successive_merges=0
+  inplace_update_num_locks=10000
+  enable_blob_garbage_collection=false
+  arena_block_size=1048576
+  bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
+  target_file_size_multiplier=1
+  max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1
+  blob_garbage_collection_force_threshold=1.000000
+  enable_blob_files=false
+  level0_slowdown_writes_trigger=20
+  compression=kLZ4Compression
+  level0_file_num_compaction_trigger=2
+  block_protection_bytes_per_key=0
+  prefix_extractor=rocksdb.FixedPrefix.8
+  max_bytes_for_level_multiplier=10.000000
+  write_buffer_size=134217728
+  disable_auto_compactions=false
+  max_compaction_bytes=1677721600
+  memtable_max_range_deletions=0
+  compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
+  hard_pending_compaction_bytes_limit=274877906944
+  blob_file_size=268435456
+  periodic_compaction_seconds=0
+  paranoid_file_checks=false
+  experimental_mempurge_threshold=0.000000
+  memtable_prefix_bloom_size_ratio=0.125000
+  max_bytes_for_level_base=536870912
+  max_sequential_skip_in_iterations=8
+  report_bg_io_stats=false
+  sst_partitioner_factory=nullptr
+  compaction_pri=kMinOverlappingRatio
+  compaction_style=kCompactionStyleLevel
+  compaction_filter_factory=nullptr
+  compaction_filter=nullptr
+  memtable_factory=SkipListFactory
+  comparator=leveldb.BytewiseComparator
+  bloom_locality=0
+  min_write_buffer_number_to_merge=2
+  table_factory=BlockBasedTable
+  max_write_buffer_size_to_maintain=0
+  max_write_buffer_number_to_maintain=0
+  optimize_filters_for_hits=false
+  default_temperature=kUnknown
+  preserve_internal_time_seconds=0
+  force_consistency_checks=true
+  merge_operator={id=StringAppendOperator;delimiter=,;}
+  num_levels=7
+  level_compaction_dynamic_file_size=true
+  memtable_insert_with_hint_prefix_extractor=nullptr
+  level_compaction_dynamic_level_bytes=true
+  persist_user_defined_timestamps=true
+  preclude_last_level_data_seconds=0
+  inplace_update_support=false
+  
+[TableOptions/BlockBasedTable "Configuration"]
+  num_file_reads_for_auto_readahead=2
+  metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;}
+  read_amp_bytes_per_bit=0
+  verify_compression=false
+  format_version=5
+  optimize_filters_for_memory=false
+  partition_filters=true
+  detect_filter_construct_corruption=false
+  initial_auto_readahead_size=8192
+  max_auto_readahead_size=262144
+  enable_index_compression=true
+  checksum=kXXH3
+  index_block_restart_interval=1
+  pin_top_level_index_and_filter=true
+  block_align=false
+  block_size=4096
+  index_type=kTwoLevelIndexSearch
+  filter_policy=nullptr
+  metadata_block_size=8192
+  no_block_cache=false
+  index_shortening=kShortenSeparators
+  whole_key_filtering=true
+  block_size_deviation=10
+  data_block_index_type=kDataBlockBinarySearch
+  data_block_hash_table_util_ratio=0.750000
+  cache_index_and_filter_blocks=false
+  prepopulate_block_cache=kDisable
+  block_restart_interval=16
+  pin_l0_filter_and_index_blocks_in_cache=true
+  cache_index_and_filter_blocks_with_high_priority=true
+  flush_block_policy_factory=FlushBlockBySizePolicyFactory
+  

BIN
nacos/nacos/data/protocol/raft/naming_instance_metadata/meta-data/raft_meta


BIN
nacos/nacos/data/protocol/raft/naming_instance_metadata/snapshot/snapshot_1/__raft_snapshot_meta


+ 1 - 0
nacos/nacos/data/protocol/raft/naming_persistent_service/log/CURRENT

@@ -0,0 +1 @@
+MANIFEST-000005

+ 1 - 0
nacos/nacos/data/protocol/raft/naming_persistent_service/log/IDENTITY

@@ -0,0 +1 @@
+5cf44a8f-af1e-4af2-969a-8dea3e33113a

+ 0 - 0
nacos/nacos/data/protocol/raft/naming_persistent_service/log/LOCK


File diff suppressed because it is too large
+ 60399 - 0
nacos/nacos/data/protocol/raft/naming_persistent_service/log/LOG


BIN
nacos/nacos/data/protocol/raft/naming_persistent_service/log/MANIFEST-000005


+ 317 - 0
nacos/nacos/data/protocol/raft/naming_persistent_service/log/OPTIONS-000007

@@ -0,0 +1,317 @@
+# This is a RocksDB option file.
+#
+# For detailed file format spec, please refer to the example file
+# in examples/rocksdb_option_file_example.ini
+#
+
+[Version]
+  rocksdb_version=8.8.1
+  options_file_version=1.1
+
+[DBOptions]
+  max_background_flushes=-1
+  compaction_readahead_size=2097152
+  strict_bytes_per_sync=false
+  wal_bytes_per_sync=0
+  max_open_files=-1
+  stats_history_buffer_size=1048576
+  max_total_wal_size=1073741824
+  stats_persist_period_sec=600
+  stats_dump_period_sec=600
+  avoid_flush_during_shutdown=false
+  max_subcompactions=1
+  bytes_per_sync=0
+  delayed_write_rate=16777216
+  max_background_compactions=-1
+  max_background_jobs=2
+  delete_obsolete_files_period_micros=21600000000
+  writable_file_max_buffer_size=1048576
+  file_checksum_gen_factory=nullptr
+  allow_data_in_errors=false
+  max_bgerror_resume_count=2147483647
+  best_efforts_recovery=false
+  write_dbid_to_manifest=false
+  atomic_flush=false
+  manual_wal_flush=false
+  two_write_queues=false
+  avoid_flush_during_recovery=false
+  dump_malloc_stats=false
+  info_log_level=INFO_LEVEL
+  write_thread_slow_yield_usec=3
+  unordered_write=false
+  allow_ingest_behind=false
+  fail_if_options_file_error=true
+  persist_stats_to_disk=false
+  WAL_ttl_seconds=0
+  bgerror_resume_retry_interval=1000000
+  allow_concurrent_memtable_write=true
+  paranoid_checks=true
+  WAL_size_limit_MB=0
+  lowest_used_cache_tier=kNonVolatileBlockTier
+  keep_log_file_num=100
+  table_cache_numshardbits=6
+  max_file_opening_threads=16
+  random_access_max_buffer_size=1048576
+  log_readahead_size=0
+  enable_pipelined_write=false
+  wal_recovery_mode=kPointInTimeRecovery
+  db_write_buffer_size=0
+  allow_2pc=false
+  skip_checking_sst_file_sizes_on_db_open=false
+  skip_stats_update_on_db_open=false
+  recycle_log_file_num=0
+  db_host_id=__hostname__
+  track_and_verify_wals_in_manifest=false
+  use_fsync=false
+  wal_compression=kNoCompression
+  compaction_verify_record_count=true
+  error_if_exists=false
+  manifest_preallocation_size=4194304
+  is_fd_close_on_exec=true
+  enable_write_thread_adaptive_yield=true
+  enable_thread_tracking=false
+  avoid_unnecessary_blocking_io=false
+  allow_fallocate=true
+  max_log_file_size=0
+  advise_random_on_open=true
+  create_missing_column_families=true
+  max_write_batch_group_size_bytes=1048576
+  use_adaptive_mutex=false
+  wal_filter=nullptr
+  create_if_missing=true
+  enforce_single_del_contracts=true
+  allow_mmap_writes=false
+  access_hint_on_compaction_start=NORMAL
+  verify_sst_unique_id_in_manifest=true
+  log_file_time_to_roll=0
+  use_direct_io_for_flush_and_compaction=false
+  flush_verify_memtable_count=true
+  max_manifest_file_size=1073741824
+  write_thread_max_yield_usec=100
+  use_direct_reads=false
+  allow_mmap_reads=false
+  
+
+[CFOptions "default"]
+  bottommost_file_compaction_delay=0
+  memtable_protection_bytes_per_key=0
+  compression_per_level=kNoCompression:kNoCompression:kLZ4Compression:kLZ4Compression:kLZ4Compression:kLZ4Compression:kLZ4Compression
+  bottommost_compression=kDisableCompressionOption
+  sample_for_compression=0
+  blob_garbage_collection_age_cutoff=0.250000
+  blob_compression_type=kNoCompression
+  prepopulate_blob_cache=kDisable
+  blob_compaction_readahead_size=0
+  level0_stop_writes_trigger=40
+  min_blob_size=0
+  last_level_temperature=kUnknown
+  compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;}
+  target_file_size_base=67108864
+  ignore_max_compaction_bytes_for_input=true
+  memtable_whole_key_filtering=false
+  blob_file_starting_level=0
+  soft_pending_compaction_bytes_limit=68719476736
+  max_write_buffer_number=6
+  ttl=2592000
+  compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;}
+  check_flush_compaction_key_order=true
+  memtable_huge_page_size=0
+  max_successive_merges=0
+  inplace_update_num_locks=10000
+  enable_blob_garbage_collection=false
+  arena_block_size=1048576
+  bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
+  target_file_size_multiplier=1
+  max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1
+  blob_garbage_collection_force_threshold=1.000000
+  enable_blob_files=false
+  level0_slowdown_writes_trigger=20
+  compression=kLZ4Compression
+  level0_file_num_compaction_trigger=2
+  block_protection_bytes_per_key=0
+  prefix_extractor=rocksdb.FixedPrefix.8
+  max_bytes_for_level_multiplier=10.000000
+  write_buffer_size=134217728
+  disable_auto_compactions=false
+  max_compaction_bytes=1677721600
+  memtable_max_range_deletions=0
+  compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
+  hard_pending_compaction_bytes_limit=274877906944
+  blob_file_size=268435456
+  periodic_compaction_seconds=0
+  paranoid_file_checks=false
+  experimental_mempurge_threshold=0.000000
+  memtable_prefix_bloom_size_ratio=0.125000
+  max_bytes_for_level_base=536870912
+  max_sequential_skip_in_iterations=8
+  report_bg_io_stats=false
+  sst_partitioner_factory=nullptr
+  compaction_pri=kMinOverlappingRatio
+  compaction_style=kCompactionStyleLevel
+  compaction_filter_factory=nullptr
+  compaction_filter=nullptr
+  memtable_factory=SkipListFactory
+  comparator=leveldb.BytewiseComparator
+  bloom_locality=0
+  min_write_buffer_number_to_merge=2
+  table_factory=BlockBasedTable
+  max_write_buffer_size_to_maintain=0
+  max_write_buffer_number_to_maintain=0
+  optimize_filters_for_hits=false
+  default_temperature=kUnknown
+  preserve_internal_time_seconds=0
+  force_consistency_checks=true
+  merge_operator={id=StringAppendOperator;delimiter=,;}
+  num_levels=7
+  level_compaction_dynamic_file_size=true
+  memtable_insert_with_hint_prefix_extractor=nullptr
+  level_compaction_dynamic_level_bytes=true
+  persist_user_defined_timestamps=true
+  preclude_last_level_data_seconds=0
+  inplace_update_support=false
+  
+[TableOptions/BlockBasedTable "default"]
+  num_file_reads_for_auto_readahead=2
+  metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;}
+  read_amp_bytes_per_bit=0
+  verify_compression=false
+  format_version=5
+  optimize_filters_for_memory=false
+  partition_filters=true
+  detect_filter_construct_corruption=false
+  initial_auto_readahead_size=8192
+  max_auto_readahead_size=262144
+  enable_index_compression=true
+  checksum=kXXH3
+  index_block_restart_interval=1
+  pin_top_level_index_and_filter=true
+  block_align=false
+  block_size=4096
+  index_type=kTwoLevelIndexSearch
+  filter_policy=nullptr
+  metadata_block_size=8192
+  no_block_cache=false
+  index_shortening=kShortenSeparators
+  whole_key_filtering=true
+  block_size_deviation=10
+  data_block_index_type=kDataBlockBinarySearch
+  data_block_hash_table_util_ratio=0.750000
+  cache_index_and_filter_blocks=false
+  prepopulate_block_cache=kDisable
+  block_restart_interval=16
+  pin_l0_filter_and_index_blocks_in_cache=true
+  cache_index_and_filter_blocks_with_high_priority=true
+  flush_block_policy_factory=FlushBlockBySizePolicyFactory
+  
+
+[CFOptions "Configuration"]
+  bottommost_file_compaction_delay=0
+  memtable_protection_bytes_per_key=0
+  compression_per_level=kNoCompression:kNoCompression:kLZ4Compression:kLZ4Compression:kLZ4Compression:kLZ4Compression:kLZ4Compression
+  bottommost_compression=kDisableCompressionOption
+  sample_for_compression=0
+  blob_garbage_collection_age_cutoff=0.250000
+  blob_compression_type=kNoCompression
+  prepopulate_blob_cache=kDisable
+  blob_compaction_readahead_size=0
+  level0_stop_writes_trigger=40
+  min_blob_size=0
+  last_level_temperature=kUnknown
+  compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;}
+  target_file_size_base=67108864
+  ignore_max_compaction_bytes_for_input=true
+  memtable_whole_key_filtering=false
+  blob_file_starting_level=0
+  soft_pending_compaction_bytes_limit=68719476736
+  max_write_buffer_number=6
+  ttl=2592000
+  compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;}
+  check_flush_compaction_key_order=true
+  memtable_huge_page_size=0
+  max_successive_merges=0
+  inplace_update_num_locks=10000
+  enable_blob_garbage_collection=false
+  arena_block_size=1048576
+  bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
+  target_file_size_multiplier=1
+  max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1
+  blob_garbage_collection_force_threshold=1.000000
+  enable_blob_files=false
+  level0_slowdown_writes_trigger=20
+  compression=kLZ4Compression
+  level0_file_num_compaction_trigger=2
+  block_protection_bytes_per_key=0
+  prefix_extractor=rocksdb.FixedPrefix.8
+  max_bytes_for_level_multiplier=10.000000
+  write_buffer_size=134217728
+  disable_auto_compactions=false
+  max_compaction_bytes=1677721600
+  memtable_max_range_deletions=0
+  compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
+  hard_pending_compaction_bytes_limit=274877906944
+  blob_file_size=268435456
+  periodic_compaction_seconds=0
+  paranoid_file_checks=false
+  experimental_mempurge_threshold=0.000000
+  memtable_prefix_bloom_size_ratio=0.125000
+  max_bytes_for_level_base=536870912
+  max_sequential_skip_in_iterations=8
+  report_bg_io_stats=false
+  sst_partitioner_factory=nullptr
+  compaction_pri=kMinOverlappingRatio
+  compaction_style=kCompactionStyleLevel
+  compaction_filter_factory=nullptr
+  compaction_filter=nullptr
+  memtable_factory=SkipListFactory
+  comparator=leveldb.BytewiseComparator
+  bloom_locality=0
+  min_write_buffer_number_to_merge=2
+  table_factory=BlockBasedTable
+  max_write_buffer_size_to_maintain=0
+  max_write_buffer_number_to_maintain=0
+  optimize_filters_for_hits=false
+  default_temperature=kUnknown
+  preserve_internal_time_seconds=0
+  force_consistency_checks=true
+  merge_operator={id=StringAppendOperator;delimiter=,;}
+  num_levels=7
+  level_compaction_dynamic_file_size=true
+  memtable_insert_with_hint_prefix_extractor=nullptr
+  level_compaction_dynamic_level_bytes=true
+  persist_user_defined_timestamps=true
+  preclude_last_level_data_seconds=0
+  inplace_update_support=false
+  
+[TableOptions/BlockBasedTable "Configuration"]
+  num_file_reads_for_auto_readahead=2
+  metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;}
+  read_amp_bytes_per_bit=0
+  verify_compression=false
+  format_version=5
+  optimize_filters_for_memory=false
+  partition_filters=true
+  detect_filter_construct_corruption=false
+  initial_auto_readahead_size=8192
+  max_auto_readahead_size=262144
+  enable_index_compression=true
+  checksum=kXXH3
+  index_block_restart_interval=1
+  pin_top_level_index_and_filter=true
+  block_align=false
+  block_size=4096
+  index_type=kTwoLevelIndexSearch
+  filter_policy=nullptr
+  metadata_block_size=8192
+  no_block_cache=false
+  index_shortening=kShortenSeparators
+  whole_key_filtering=true
+  block_size_deviation=10
+  data_block_index_type=kDataBlockBinarySearch
+  data_block_hash_table_util_ratio=0.750000
+  cache_index_and_filter_blocks=false
+  prepopulate_block_cache=kDisable
+  block_restart_interval=16
+  pin_l0_filter_and_index_blocks_in_cache=true
+  cache_index_and_filter_blocks_with_high_priority=true
+  flush_block_policy_factory=FlushBlockBySizePolicyFactory
+  

BIN
nacos/nacos/data/protocol/raft/naming_persistent_service/meta-data/raft_meta


BIN
nacos/nacos/data/protocol/raft/naming_persistent_service/snapshot/snapshot_1/__raft_snapshot_meta


+ 1 - 0
nacos/nacos/data/protocol/raft/naming_persistent_service_v2/log/CURRENT

@@ -0,0 +1 @@
+MANIFEST-000005

+ 1 - 0
nacos/nacos/data/protocol/raft/naming_persistent_service_v2/log/IDENTITY

@@ -0,0 +1 @@
+ac074df2-acb1-46de-b849-f964c574339a

+ 0 - 0
nacos/nacos/data/protocol/raft/naming_persistent_service_v2/log/LOCK


File diff suppressed because it is too large
+ 60399 - 0
nacos/nacos/data/protocol/raft/naming_persistent_service_v2/log/LOG


BIN
nacos/nacos/data/protocol/raft/naming_persistent_service_v2/log/MANIFEST-000005


+ 317 - 0
nacos/nacos/data/protocol/raft/naming_persistent_service_v2/log/OPTIONS-000007

@@ -0,0 +1,317 @@
+# This is a RocksDB option file.
+#
+# For detailed file format spec, please refer to the example file
+# in examples/rocksdb_option_file_example.ini
+#
+
+[Version]
+  rocksdb_version=8.8.1
+  options_file_version=1.1
+
+[DBOptions]
+  max_background_flushes=-1
+  compaction_readahead_size=2097152
+  strict_bytes_per_sync=false
+  wal_bytes_per_sync=0
+  max_open_files=-1
+  stats_history_buffer_size=1048576
+  max_total_wal_size=1073741824
+  stats_persist_period_sec=600
+  stats_dump_period_sec=600
+  avoid_flush_during_shutdown=false
+  max_subcompactions=1
+  bytes_per_sync=0
+  delayed_write_rate=16777216
+  max_background_compactions=-1
+  max_background_jobs=2
+  delete_obsolete_files_period_micros=21600000000
+  writable_file_max_buffer_size=1048576
+  file_checksum_gen_factory=nullptr
+  allow_data_in_errors=false
+  max_bgerror_resume_count=2147483647
+  best_efforts_recovery=false
+  write_dbid_to_manifest=false
+  atomic_flush=false
+  manual_wal_flush=false
+  two_write_queues=false
+  avoid_flush_during_recovery=false
+  dump_malloc_stats=false
+  info_log_level=INFO_LEVEL
+  write_thread_slow_yield_usec=3
+  unordered_write=false
+  allow_ingest_behind=false
+  fail_if_options_file_error=true
+  persist_stats_to_disk=false
+  WAL_ttl_seconds=0
+  bgerror_resume_retry_interval=1000000
+  allow_concurrent_memtable_write=true
+  paranoid_checks=true
+  WAL_size_limit_MB=0
+  lowest_used_cache_tier=kNonVolatileBlockTier
+  keep_log_file_num=100
+  table_cache_numshardbits=6
+  max_file_opening_threads=16
+  random_access_max_buffer_size=1048576
+  log_readahead_size=0
+  enable_pipelined_write=false
+  wal_recovery_mode=kPointInTimeRecovery
+  db_write_buffer_size=0
+  allow_2pc=false
+  skip_checking_sst_file_sizes_on_db_open=false
+  skip_stats_update_on_db_open=false
+  recycle_log_file_num=0
+  db_host_id=__hostname__
+  track_and_verify_wals_in_manifest=false
+  use_fsync=false
+  wal_compression=kNoCompression
+  compaction_verify_record_count=true
+  error_if_exists=false
+  manifest_preallocation_size=4194304
+  is_fd_close_on_exec=true
+  enable_write_thread_adaptive_yield=true
+  enable_thread_tracking=false
+  avoid_unnecessary_blocking_io=false
+  allow_fallocate=true
+  max_log_file_size=0
+  advise_random_on_open=true
+  create_missing_column_families=true
+  max_write_batch_group_size_bytes=1048576
+  use_adaptive_mutex=false
+  wal_filter=nullptr
+  create_if_missing=true
+  enforce_single_del_contracts=true
+  allow_mmap_writes=false
+  access_hint_on_compaction_start=NORMAL
+  verify_sst_unique_id_in_manifest=true
+  log_file_time_to_roll=0
+  use_direct_io_for_flush_and_compaction=false
+  flush_verify_memtable_count=true
+  max_manifest_file_size=1073741824
+  write_thread_max_yield_usec=100
+  use_direct_reads=false
+  allow_mmap_reads=false
+  
+
+[CFOptions "default"]
+  bottommost_file_compaction_delay=0
+  memtable_protection_bytes_per_key=0
+  compression_per_level=kNoCompression:kNoCompression:kLZ4Compression:kLZ4Compression:kLZ4Compression:kLZ4Compression:kLZ4Compression
+  bottommost_compression=kDisableCompressionOption
+  sample_for_compression=0
+  blob_garbage_collection_age_cutoff=0.250000
+  blob_compression_type=kNoCompression
+  prepopulate_blob_cache=kDisable
+  blob_compaction_readahead_size=0
+  level0_stop_writes_trigger=40
+  min_blob_size=0
+  last_level_temperature=kUnknown
+  compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;}
+  target_file_size_base=67108864
+  ignore_max_compaction_bytes_for_input=true
+  memtable_whole_key_filtering=false
+  blob_file_starting_level=0
+  soft_pending_compaction_bytes_limit=68719476736
+  max_write_buffer_number=6
+  ttl=2592000
+  compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;}
+  check_flush_compaction_key_order=true
+  memtable_huge_page_size=0
+  max_successive_merges=0
+  inplace_update_num_locks=10000
+  enable_blob_garbage_collection=false
+  arena_block_size=1048576
+  bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
+  target_file_size_multiplier=1
+  max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1
+  blob_garbage_collection_force_threshold=1.000000
+  enable_blob_files=false
+  level0_slowdown_writes_trigger=20
+  compression=kLZ4Compression
+  level0_file_num_compaction_trigger=2
+  block_protection_bytes_per_key=0
+  prefix_extractor=rocksdb.FixedPrefix.8
+  max_bytes_for_level_multiplier=10.000000
+  write_buffer_size=134217728
+  disable_auto_compactions=false
+  max_compaction_bytes=1677721600
+  memtable_max_range_deletions=0
+  compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
+  hard_pending_compaction_bytes_limit=274877906944
+  blob_file_size=268435456
+  periodic_compaction_seconds=0
+  paranoid_file_checks=false
+  experimental_mempurge_threshold=0.000000
+  memtable_prefix_bloom_size_ratio=0.125000
+  max_bytes_for_level_base=536870912
+  max_sequential_skip_in_iterations=8
+  report_bg_io_stats=false
+  sst_partitioner_factory=nullptr
+  compaction_pri=kMinOverlappingRatio
+  compaction_style=kCompactionStyleLevel
+  compaction_filter_factory=nullptr
+  compaction_filter=nullptr
+  memtable_factory=SkipListFactory
+  comparator=leveldb.BytewiseComparator
+  bloom_locality=0
+  min_write_buffer_number_to_merge=2
+  table_factory=BlockBasedTable
+  max_write_buffer_size_to_maintain=0
+  max_write_buffer_number_to_maintain=0
+  optimize_filters_for_hits=false
+  default_temperature=kUnknown
+  preserve_internal_time_seconds=0
+  force_consistency_checks=true
+  merge_operator={id=StringAppendOperator;delimiter=,;}
+  num_levels=7
+  level_compaction_dynamic_file_size=true
+  memtable_insert_with_hint_prefix_extractor=nullptr
+  level_compaction_dynamic_level_bytes=true
+  persist_user_defined_timestamps=true
+  preclude_last_level_data_seconds=0
+  inplace_update_support=false
+  
+[TableOptions/BlockBasedTable "default"]
+  num_file_reads_for_auto_readahead=2
+  metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;}
+  read_amp_bytes_per_bit=0
+  verify_compression=false
+  format_version=5
+  optimize_filters_for_memory=false
+  partition_filters=true
+  detect_filter_construct_corruption=false
+  initial_auto_readahead_size=8192
+  max_auto_readahead_size=262144
+  enable_index_compression=true
+  checksum=kXXH3
+  index_block_restart_interval=1
+  pin_top_level_index_and_filter=true
+  block_align=false
+  block_size=4096
+  index_type=kTwoLevelIndexSearch
+  filter_policy=nullptr
+  metadata_block_size=8192
+  no_block_cache=false
+  index_shortening=kShortenSeparators
+  whole_key_filtering=true
+  block_size_deviation=10
+  data_block_index_type=kDataBlockBinarySearch
+  data_block_hash_table_util_ratio=0.750000
+  cache_index_and_filter_blocks=false
+  prepopulate_block_cache=kDisable
+  block_restart_interval=16
+  pin_l0_filter_and_index_blocks_in_cache=true
+  cache_index_and_filter_blocks_with_high_priority=true
+  flush_block_policy_factory=FlushBlockBySizePolicyFactory
+  
+
+[CFOptions "Configuration"]
+  bottommost_file_compaction_delay=0
+  memtable_protection_bytes_per_key=0
+  compression_per_level=kNoCompression:kNoCompression:kLZ4Compression:kLZ4Compression:kLZ4Compression:kLZ4Compression:kLZ4Compression
+  bottommost_compression=kDisableCompressionOption
+  sample_for_compression=0
+  blob_garbage_collection_age_cutoff=0.250000
+  blob_compression_type=kNoCompression
+  prepopulate_blob_cache=kDisable
+  blob_compaction_readahead_size=0
+  level0_stop_writes_trigger=40
+  min_blob_size=0
+  last_level_temperature=kUnknown
+  compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;}
+  target_file_size_base=67108864
+  ignore_max_compaction_bytes_for_input=true
+  memtable_whole_key_filtering=false
+  blob_file_starting_level=0
+  soft_pending_compaction_bytes_limit=68719476736
+  max_write_buffer_number=6
+  ttl=2592000
+  compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;}
+  check_flush_compaction_key_order=true
+  memtable_huge_page_size=0
+  max_successive_merges=0
+  inplace_update_num_locks=10000
+  enable_blob_garbage_collection=false
+  arena_block_size=1048576
+  bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
+  target_file_size_multiplier=1
+  max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1
+  blob_garbage_collection_force_threshold=1.000000
+  enable_blob_files=false
+  level0_slowdown_writes_trigger=20
+  compression=kLZ4Compression
+  level0_file_num_compaction_trigger=2
+  block_protection_bytes_per_key=0
+  prefix_extractor=rocksdb.FixedPrefix.8
+  max_bytes_for_level_multiplier=10.000000
+  write_buffer_size=134217728
+  disable_auto_compactions=false
+  max_compaction_bytes=1677721600
+  memtable_max_range_deletions=0
+  compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
+  hard_pending_compaction_bytes_limit=274877906944
+  blob_file_size=268435456
+  periodic_compaction_seconds=0
+  paranoid_file_checks=false
+  experimental_mempurge_threshold=0.000000
+  memtable_prefix_bloom_size_ratio=0.125000
+  max_bytes_for_level_base=536870912
+  max_sequential_skip_in_iterations=8
+  report_bg_io_stats=false
+  sst_partitioner_factory=nullptr
+  compaction_pri=kMinOverlappingRatio
+  compaction_style=kCompactionStyleLevel
+  compaction_filter_factory=nullptr
+  compaction_filter=nullptr
+  memtable_factory=SkipListFactory
+  comparator=leveldb.BytewiseComparator
+  bloom_locality=0
+  min_write_buffer_number_to_merge=2
+  table_factory=BlockBasedTable
+  max_write_buffer_size_to_maintain=0
+  max_write_buffer_number_to_maintain=0
+  optimize_filters_for_hits=false
+  default_temperature=kUnknown
+  preserve_internal_time_seconds=0
+  force_consistency_checks=true
+  merge_operator={id=StringAppendOperator;delimiter=,;}
+  num_levels=7
+  level_compaction_dynamic_file_size=true
+  memtable_insert_with_hint_prefix_extractor=nullptr
+  level_compaction_dynamic_level_bytes=true
+  persist_user_defined_timestamps=true
+  preclude_last_level_data_seconds=0
+  inplace_update_support=false
+  
+[TableOptions/BlockBasedTable "Configuration"]
+  num_file_reads_for_auto_readahead=2
+  metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;}
+  read_amp_bytes_per_bit=0
+  verify_compression=false
+  format_version=5
+  optimize_filters_for_memory=false
+  partition_filters=true
+  detect_filter_construct_corruption=false
+  initial_auto_readahead_size=8192
+  max_auto_readahead_size=262144
+  enable_index_compression=true
+  checksum=kXXH3
+  index_block_restart_interval=1
+  pin_top_level_index_and_filter=true
+  block_align=false
+  block_size=4096
+  index_type=kTwoLevelIndexSearch
+  filter_policy=nullptr
+  metadata_block_size=8192
+  no_block_cache=false
+  index_shortening=kShortenSeparators
+  whole_key_filtering=true
+  block_size_deviation=10
+  data_block_index_type=kDataBlockBinarySearch
+  data_block_hash_table_util_ratio=0.750000
+  cache_index_and_filter_blocks=false
+  prepopulate_block_cache=kDisable
+  block_restart_interval=16
+  pin_l0_filter_and_index_blocks_in_cache=true
+  cache_index_and_filter_blocks_with_high_priority=true
+  flush_block_policy_factory=FlushBlockBySizePolicyFactory
+  

BIN
nacos/nacos/data/protocol/raft/naming_persistent_service_v2/meta-data/raft_meta


BIN
nacos/nacos/data/protocol/raft/naming_persistent_service_v2/snapshot/snapshot_1/__raft_snapshot_meta


+ 1 - 0
nacos/nacos/data/protocol/raft/naming_service_metadata/log/CURRENT

@@ -0,0 +1 @@
+MANIFEST-000005

+ 1 - 0
nacos/nacos/data/protocol/raft/naming_service_metadata/log/IDENTITY

@@ -0,0 +1 @@
+5abec3ce-48c2-4332-9e5a-c80f7be3fba4

+ 0 - 0
nacos/nacos/data/protocol/raft/naming_service_metadata/log/LOCK


File diff suppressed because it is too large
+ 60399 - 0
nacos/nacos/data/protocol/raft/naming_service_metadata/log/LOG


BIN
nacos/nacos/data/protocol/raft/naming_service_metadata/log/MANIFEST-000005


+ 317 - 0
nacos/nacos/data/protocol/raft/naming_service_metadata/log/OPTIONS-000007

@@ -0,0 +1,317 @@
+# This is a RocksDB option file.
+#
+# For detailed file format spec, please refer to the example file
+# in examples/rocksdb_option_file_example.ini
+#
+
+[Version]
+  rocksdb_version=8.8.1
+  options_file_version=1.1
+
+[DBOptions]
+  max_background_flushes=-1
+  compaction_readahead_size=2097152
+  strict_bytes_per_sync=false
+  wal_bytes_per_sync=0
+  max_open_files=-1
+  stats_history_buffer_size=1048576
+  max_total_wal_size=1073741824
+  stats_persist_period_sec=600
+  stats_dump_period_sec=600
+  avoid_flush_during_shutdown=false
+  max_subcompactions=1
+  bytes_per_sync=0
+  delayed_write_rate=16777216
+  max_background_compactions=-1
+  max_background_jobs=2
+  delete_obsolete_files_period_micros=21600000000
+  writable_file_max_buffer_size=1048576
+  file_checksum_gen_factory=nullptr
+  allow_data_in_errors=false
+  max_bgerror_resume_count=2147483647
+  best_efforts_recovery=false
+  write_dbid_to_manifest=false
+  atomic_flush=false
+  manual_wal_flush=false
+  two_write_queues=false
+  avoid_flush_during_recovery=false
+  dump_malloc_stats=false
+  info_log_level=INFO_LEVEL
+  write_thread_slow_yield_usec=3
+  unordered_write=false
+  allow_ingest_behind=false
+  fail_if_options_file_error=true
+  persist_stats_to_disk=false
+  WAL_ttl_seconds=0
+  bgerror_resume_retry_interval=1000000
+  allow_concurrent_memtable_write=true
+  paranoid_checks=true
+  WAL_size_limit_MB=0
+  lowest_used_cache_tier=kNonVolatileBlockTier
+  keep_log_file_num=100
+  table_cache_numshardbits=6
+  max_file_opening_threads=16
+  random_access_max_buffer_size=1048576
+  log_readahead_size=0
+  enable_pipelined_write=false
+  wal_recovery_mode=kPointInTimeRecovery
+  db_write_buffer_size=0
+  allow_2pc=false
+  skip_checking_sst_file_sizes_on_db_open=false
+  skip_stats_update_on_db_open=false
+  recycle_log_file_num=0
+  db_host_id=__hostname__
+  track_and_verify_wals_in_manifest=false
+  use_fsync=false
+  wal_compression=kNoCompression
+  compaction_verify_record_count=true
+  error_if_exists=false
+  manifest_preallocation_size=4194304
+  is_fd_close_on_exec=true
+  enable_write_thread_adaptive_yield=true
+  enable_thread_tracking=false
+  avoid_unnecessary_blocking_io=false
+  allow_fallocate=true
+  max_log_file_size=0
+  advise_random_on_open=true
+  create_missing_column_families=true
+  max_write_batch_group_size_bytes=1048576
+  use_adaptive_mutex=false
+  wal_filter=nullptr
+  create_if_missing=true
+  enforce_single_del_contracts=true
+  allow_mmap_writes=false
+  access_hint_on_compaction_start=NORMAL
+  verify_sst_unique_id_in_manifest=true
+  log_file_time_to_roll=0
+  use_direct_io_for_flush_and_compaction=false
+  flush_verify_memtable_count=true
+  max_manifest_file_size=1073741824
+  write_thread_max_yield_usec=100
+  use_direct_reads=false
+  allow_mmap_reads=false
+  
+
+[CFOptions "default"]
+  bottommost_file_compaction_delay=0
+  memtable_protection_bytes_per_key=0
+  compression_per_level=kNoCompression:kNoCompression:kLZ4Compression:kLZ4Compression:kLZ4Compression:kLZ4Compression:kLZ4Compression
+  bottommost_compression=kDisableCompressionOption
+  sample_for_compression=0
+  blob_garbage_collection_age_cutoff=0.250000
+  blob_compression_type=kNoCompression
+  prepopulate_blob_cache=kDisable
+  blob_compaction_readahead_size=0
+  level0_stop_writes_trigger=40
+  min_blob_size=0
+  last_level_temperature=kUnknown
+  compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;}
+  target_file_size_base=67108864
+  ignore_max_compaction_bytes_for_input=true
+  memtable_whole_key_filtering=false
+  blob_file_starting_level=0
+  soft_pending_compaction_bytes_limit=68719476736
+  max_write_buffer_number=6
+  ttl=2592000
+  compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;}
+  check_flush_compaction_key_order=true
+  memtable_huge_page_size=0
+  max_successive_merges=0
+  inplace_update_num_locks=10000
+  enable_blob_garbage_collection=false
+  arena_block_size=1048576
+  bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
+  target_file_size_multiplier=1
+  max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1
+  blob_garbage_collection_force_threshold=1.000000
+  enable_blob_files=false
+  level0_slowdown_writes_trigger=20
+  compression=kLZ4Compression
+  level0_file_num_compaction_trigger=2
+  block_protection_bytes_per_key=0
+  prefix_extractor=rocksdb.FixedPrefix.8
+  max_bytes_for_level_multiplier=10.000000
+  write_buffer_size=134217728
+  disable_auto_compactions=false
+  max_compaction_bytes=1677721600
+  memtable_max_range_deletions=0
+  compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
+  hard_pending_compaction_bytes_limit=274877906944
+  blob_file_size=268435456
+  periodic_compaction_seconds=0
+  paranoid_file_checks=false
+  experimental_mempurge_threshold=0.000000
+  memtable_prefix_bloom_size_ratio=0.125000
+  max_bytes_for_level_base=536870912
+  max_sequential_skip_in_iterations=8
+  report_bg_io_stats=false
+  sst_partitioner_factory=nullptr
+  compaction_pri=kMinOverlappingRatio
+  compaction_style=kCompactionStyleLevel
+  compaction_filter_factory=nullptr
+  compaction_filter=nullptr
+  memtable_factory=SkipListFactory
+  comparator=leveldb.BytewiseComparator
+  bloom_locality=0
+  min_write_buffer_number_to_merge=2
+  table_factory=BlockBasedTable
+  max_write_buffer_size_to_maintain=0
+  max_write_buffer_number_to_maintain=0
+  optimize_filters_for_hits=false
+  default_temperature=kUnknown
+  preserve_internal_time_seconds=0
+  force_consistency_checks=true
+  merge_operator={id=StringAppendOperator;delimiter=,;}
+  num_levels=7
+  level_compaction_dynamic_file_size=true
+  memtable_insert_with_hint_prefix_extractor=nullptr
+  level_compaction_dynamic_level_bytes=true
+  persist_user_defined_timestamps=true
+  preclude_last_level_data_seconds=0
+  inplace_update_support=false
+  
+[TableOptions/BlockBasedTable "default"]
+  num_file_reads_for_auto_readahead=2
+  metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;}
+  read_amp_bytes_per_bit=0
+  verify_compression=false
+  format_version=5
+  optimize_filters_for_memory=false
+  partition_filters=true
+  detect_filter_construct_corruption=false
+  initial_auto_readahead_size=8192
+  max_auto_readahead_size=262144
+  enable_index_compression=true
+  checksum=kXXH3
+  index_block_restart_interval=1
+  pin_top_level_index_and_filter=true
+  block_align=false
+  block_size=4096
+  index_type=kTwoLevelIndexSearch
+  filter_policy=nullptr
+  metadata_block_size=8192
+  no_block_cache=false
+  index_shortening=kShortenSeparators
+  whole_key_filtering=true
+  block_size_deviation=10
+  data_block_index_type=kDataBlockBinarySearch
+  data_block_hash_table_util_ratio=0.750000
+  cache_index_and_filter_blocks=false
+  prepopulate_block_cache=kDisable
+  block_restart_interval=16
+  pin_l0_filter_and_index_blocks_in_cache=true
+  cache_index_and_filter_blocks_with_high_priority=true
+  flush_block_policy_factory=FlushBlockBySizePolicyFactory
+  
+
+[CFOptions "Configuration"]
+  bottommost_file_compaction_delay=0
+  memtable_protection_bytes_per_key=0
+  compression_per_level=kNoCompression:kNoCompression:kLZ4Compression:kLZ4Compression:kLZ4Compression:kLZ4Compression:kLZ4Compression
+  bottommost_compression=kDisableCompressionOption
+  sample_for_compression=0
+  blob_garbage_collection_age_cutoff=0.250000
+  blob_compression_type=kNoCompression
+  prepopulate_blob_cache=kDisable
+  blob_compaction_readahead_size=0
+  level0_stop_writes_trigger=40
+  min_blob_size=0
+  last_level_temperature=kUnknown
+  compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;}
+  target_file_size_base=67108864
+  ignore_max_compaction_bytes_for_input=true
+  memtable_whole_key_filtering=false
+  blob_file_starting_level=0
+  soft_pending_compaction_bytes_limit=68719476736
+  max_write_buffer_number=6
+  ttl=2592000
+  compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;}
+  check_flush_compaction_key_order=true
+  memtable_huge_page_size=0
+  max_successive_merges=0
+  inplace_update_num_locks=10000
+  enable_blob_garbage_collection=false
+  arena_block_size=1048576
+  bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
+  target_file_size_multiplier=1
+  max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1
+  blob_garbage_collection_force_threshold=1.000000
+  enable_blob_files=false
+  level0_slowdown_writes_trigger=20
+  compression=kLZ4Compression
+  level0_file_num_compaction_trigger=2
+  block_protection_bytes_per_key=0
+  prefix_extractor=rocksdb.FixedPrefix.8
+  max_bytes_for_level_multiplier=10.000000
+  write_buffer_size=134217728
+  disable_auto_compactions=false
+  max_compaction_bytes=1677721600
+  memtable_max_range_deletions=0
+  compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;}
+  hard_pending_compaction_bytes_limit=274877906944
+  blob_file_size=268435456
+  periodic_compaction_seconds=0
+  paranoid_file_checks=false
+  experimental_mempurge_threshold=0.000000
+  memtable_prefix_bloom_size_ratio=0.125000
+  max_bytes_for_level_base=536870912
+  max_sequential_skip_in_iterations=8
+  report_bg_io_stats=false
+  sst_partitioner_factory=nullptr
+  compaction_pri=kMinOverlappingRatio
+  compaction_style=kCompactionStyleLevel
+  compaction_filter_factory=nullptr
+  compaction_filter=nullptr
+  memtable_factory=SkipListFactory
+  comparator=leveldb.BytewiseComparator
+  bloom_locality=0
+  min_write_buffer_number_to_merge=2
+  table_factory=BlockBasedTable
+  max_write_buffer_size_to_maintain=0
+  max_write_buffer_number_to_maintain=0
+  optimize_filters_for_hits=false
+  default_temperature=kUnknown
+  preserve_internal_time_seconds=0
+  force_consistency_checks=true
+  merge_operator={id=StringAppendOperator;delimiter=,;}
+  num_levels=7
+  level_compaction_dynamic_file_size=true
+  memtable_insert_with_hint_prefix_extractor=nullptr
+  level_compaction_dynamic_level_bytes=true
+  persist_user_defined_timestamps=true
+  preclude_last_level_data_seconds=0
+  inplace_update_support=false
+  
+[TableOptions/BlockBasedTable "Configuration"]
+  num_file_reads_for_auto_readahead=2
+  metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;}
+  read_amp_bytes_per_bit=0
+  verify_compression=false
+  format_version=5
+  optimize_filters_for_memory=false
+  partition_filters=true
+  detect_filter_construct_corruption=false
+  initial_auto_readahead_size=8192
+  max_auto_readahead_size=262144
+  enable_index_compression=true
+  checksum=kXXH3
+  index_block_restart_interval=1
+  pin_top_level_index_and_filter=true
+  block_align=false
+  block_size=4096
+  index_type=kTwoLevelIndexSearch
+  filter_policy=nullptr
+  metadata_block_size=8192
+  no_block_cache=false
+  index_shortening=kShortenSeparators
+  whole_key_filtering=true
+  block_size_deviation=10
+  data_block_index_type=kDataBlockBinarySearch
+  data_block_hash_table_util_ratio=0.750000
+  cache_index_and_filter_blocks=false
+  prepopulate_block_cache=kDisable
+  block_restart_interval=16
+  pin_l0_filter_and_index_blocks_in_cache=true
+  cache_index_and_filter_blocks_with_high_priority=true
+  flush_block_policy_factory=FlushBlockBySizePolicyFactory
+  

BIN
nacos/nacos/data/protocol/raft/naming_service_metadata/meta-data/raft_meta


BIN
nacos/nacos/data/protocol/raft/naming_service_metadata/snapshot/snapshot_1/__raft_snapshot_meta


+ 1 - 0
pom.xml

@@ -16,6 +16,7 @@
         <module>xdz-dependencies</module>
         <module>xdz-framework</module>
         <!-- 业务服务模块 -->
+        <module>xdz-module-gateway</module>
         <module>xdz-module-user</module>
         <module>xdz-module-vehicle</module>
         <module>xdz-module-message</module>

+ 44 - 1
xdz-framework/xdz-common/src/main/java/com/xindazhou/framework/common/biz/system/permission/PermissionCommonApi.java

@@ -9,9 +9,15 @@ import io.swagger.v3.oas.annotations.Parameters;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
-@FeignClient(name = RpcConstants.SYSTEM_NAME, primary = false) // TODO xdz:fallbackFactory =
+
+import java.util.Collection;
+import java.util.Set;
+
+@FeignClient(name = RpcConstants.SYSTEM_NAME, primary = false) // TODO hmy:fallbackFactory =
+
 @Tag(name = "RPC 服务 - 权限")
 public interface PermissionCommonApi {
 
@@ -40,4 +46,41 @@ public interface PermissionCommonApi {
     @Parameter(name = "userId", description = "用户编号", example = "2", required = true)
     CommonResult<DeptDataPermissionRespDTO> getDeptDataPermission(@RequestParam("userId") Long userId);
 
+    @PostMapping(PREFIX + "/process-user-deleted")
+    @Operation(summary = "处理用户删除时,删除关联授权数据")
+    @Parameter(name = "userId", description = "用户编号", example = "1", required = true)
+    CommonResult<Boolean> processUserDeleted(@RequestParam("userId") Long userId);
+
+    @GetMapping(PREFIX + "/get-user-role-id-list-by-role-id")
+    @Operation(summary = "获得拥有多个角色的用户编号集合")
+    @Parameter(name = "roleIds", description = "角色编号集合", example = "1,2", required = true)
+    CommonResult<Set<Long>> getUserRoleIdListByRoleId(@RequestParam("roleIds") Collection<Long> roleIds);
+
+    @GetMapping(PREFIX + "/get-user-role-id-list-by-user-id")
+    @Operation(summary = "获得用户拥有的角色编号集合")
+    @Parameter(name = "userId", description = "用户编号", example = "1", required = true)
+    CommonResult<Set<Long>> getUserRoleIdListByUserId(@RequestParam("userId") Long userId);
+
+    @GetMapping(PREFIX + "/get-role-menu-list-by-role-id")
+    @Operation(summary = "获得角色拥有的菜单编号集合")
+    @Parameter(name = "roleIds", description = "角色编号集合", example = "1,2", required = true)
+    CommonResult<Set<Long>> getRoleMenuListByRoleId(@RequestParam("roleIds") Collection<Long> roleIds);
+
+    @PostMapping(PREFIX + "/assign-user-role")
+    @Operation(summary = "分配用户角色")
+    @Parameter(name = "userId", description = "用户编号", example = "1", required = true)
+    @Parameter(name = "roleIds", description = "角色编号集合", example = "1,2", required = true)
+    CommonResult<Boolean> assignUserRole(@RequestParam("userId") Long userId, @RequestParam("roleIds") Set<Long> roleIds);
+
+    @PostMapping(PREFIX + "/assign-role-menu")
+    @Operation(summary = "分配角色菜单")
+    @Parameter(name = "roleId", description = "角色编号", example = "1", required = true)
+    @Parameter(name = "menuIds", description = "菜单编号集合", example = "1,2", required = true)
+    CommonResult<Boolean> assignRoleMenu(@RequestParam("roleId") Long roleId, @RequestParam("menuIds") Set<Long> menuIds);
+
+    @GetMapping(PREFIX + "/get-role-menu-list-by-single-role-id")
+    @Operation(summary = "获得单个角色拥有的菜单编号集合")
+    @Parameter(name = "roleId", description = "角色编号", example = "1", required = true)
+    CommonResult<Set<Long>> getRoleMenuListBySingleRoleId(@RequestParam("roleId") Long roleId);
+
 }

+ 4 - 4
xdz-framework/xdz-common/src/main/java/com/xindazhou/framework/common/enums/RpcConstants.java

@@ -19,7 +19,7 @@ public interface RpcConstants {
      *
      * 注意,需要保证和 spring.application.name 保持一致
      */
-    String SYSTEM_NAME = "system-server";
+    String SYSTEM_NAME = "xdz-user";
 
     /**
      * system 服务的前缀
@@ -31,7 +31,7 @@ public interface RpcConstants {
      *
      * 注意,需要保证和 spring.application.name 保持一致
      */
-    String INFRA_NAME = "infra-server";
+    String INFRA_NAME = "xdz-business";
     /**
      * infra 服务的前缀
      */
@@ -42,7 +42,7 @@ public interface RpcConstants {
      *
      * 注意,需要保证和 spring.application.name 保持一致
      */
-    String BUSINESS_NAME = "xdz-business-server";
+    String BUSINESS_NAME = "xdz-business";
     /**
      * business 服务的前缀
      */
@@ -53,7 +53,7 @@ public interface RpcConstants {
      *
      * 注意,需要保证和 spring.application.name 保持一致
      */
-    String USER_NAME = "xdz-user-server";
+    String USER_NAME = "xdz-user";
     /**
      * user 服务的前缀
      */

+ 42 - 6
xdz-framework/xdz-spring-boot-starter-security/src/main/java/com/xindazhou/framework/security/config/XdzWebSecurityConfigurerAdapter.java

@@ -33,18 +33,21 @@ import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
 import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
 import org.springframework.web.util.pattern.PathPattern;
 
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 import static com.xindazhou.framework.common.util.collection.CollectionUtils.convertList;
+import lombok.extern.slf4j.Slf4j;
 
 /**
  * 自定义的 Spring Security 配置适配器实现
  *
  * @author xdz
  */
+@Slf4j
 @AutoConfiguration
 @AutoConfigureOrder(-1) // 目的:先于 Spring Security 自动配置,避免一键改包后,org.* 基础包无法生效
 @EnableMethodSecurity(securedEnabled = true)
@@ -81,8 +84,8 @@ public class XdzWebSecurityConfigurerAdapter {
      *
      * @see #filterChain(HttpSecurity)
      */
-    @Resource
-    private List<AuthorizeRequestsCustomizer> authorizeRequestsCustomizers;
+    @Autowired(required = false)
+    private List<AuthorizeRequestsCustomizer> authorizeRequestsCustomizers = Collections.emptyList();
 
     @Resource
     private ApplicationContext applicationContext;
@@ -131,6 +134,10 @@ public class XdzWebSecurityConfigurerAdapter {
 
         // 获得 @PermitAll 带来的 URL 列表,免登录
         Multimap<HttpMethod, String> permitAllUrls = getPermitAllUrlsFromAnnotations();
+        // 输出识别到的免登录 URL(用于调试)
+        log.info("[XdzWebSecurityConfigurerAdapter] 从 @PermitAll 注解识别到的免登录 URL:");
+        log.info("  POST: {}", permitAllUrls.get(HttpMethod.POST));
+        log.info("  GET: {}", permitAllUrls.get(HttpMethod.GET));
         // 设置每个请求的权限
         httpSecurity
                 // ①:全局共享规则
@@ -185,16 +192,36 @@ public class XdzWebSecurityConfigurerAdapter {
                     && !handlerMethod.getBeanType().isAnnotationPresent(PermitAll.class)) { // 接口级
                 continue;
             }
-            Set<String> urls = new HashSet<>();
+            Set<String> rawUrls = new HashSet<>();
             if (entry.getKey().getPatternsCondition() != null) {
-                urls.addAll(entry.getKey().getPatternsCondition().getPatterns());
+                rawUrls.addAll(entry.getKey().getPatternsCondition().getPatterns());
             }
             if (entry.getKey().getPathPatternsCondition() != null) {
-                urls.addAll(convertList(entry.getKey().getPathPatternsCondition().getPatterns(), PathPattern::getPatternString));
+                rawUrls.addAll(convertList(entry.getKey().getPathPatternsCondition().getPatterns(), PathPattern::getPatternString));
             }
-            if (urls.isEmpty()) {
+            if (rawUrls.isEmpty()) {
                 continue;
             }
+            // 移除路径前缀(Gateway StripPrefix 后,业务服务接收到的路径不包含 /admin-api 或 /app-api)
+            // 例如:/admin-api/system/captcha/get -> /system/captcha/get
+            Set<String> urls = new HashSet<>();
+            for (String url : rawUrls) {
+                // 移除 /admin-api 前缀
+                if (url.startsWith("/admin-api/")) {
+                    urls.add(url.substring("/admin-api".length()));
+                }
+                // 移除 /app-api 前缀
+                else if (url.startsWith("/app-api/")) {
+                    urls.add(url.substring("/app-api".length()));
+                }
+                // 保留原路径(可能已经是去掉前缀的路径)
+                else {
+                    urls.add(url);
+                }
+            }
+            // 调试日志:输出识别到的 @PermitAll 接口
+            log.debug("[getPermitAllUrlsFromAnnotations] 识别到 @PermitAll 接口: {} -> {}", 
+                    handlerMethod.getBeanType().getSimpleName() + "." + handlerMethod.getMethod().getName(), urls);
 
             // 特殊:使用 @RequestMapping 注解,并且未写 method 属性,此时认为都需要免登录
             Set<RequestMethod> methods = entry.getKey().getMethodsCondition().getMethods();
@@ -231,6 +258,15 @@ public class XdzWebSecurityConfigurerAdapter {
                 }
             });
         }
+        // 调试日志:输出所有识别到的免登录 URL
+        if (log.isDebugEnabled()) {
+            log.debug("[getPermitAllUrlsFromAnnotations] 识别到的免登录 URL 总数: {}", result.size());
+            result.asMap().forEach((method, urlSet) -> {
+                if (!urlSet.isEmpty()) {
+                    log.debug("[getPermitAllUrlsFromAnnotations] {} 方法: {}", method, urlSet);
+                }
+            });
+        }
         return result;
     }
 

+ 15 - 2
xdz-framework/xdz-spring-boot-starter-web/src/main/java/com/xindazhou/framework/apilog/config/XdzApiLogRpcAutoConfiguration.java

@@ -3,14 +3,27 @@ package com.xindazhou.framework.apilog.config;
 import com.xindazhou.framework.common.biz.infra.logger.ApiAccessLogCommonApi;
 import com.xindazhou.framework.common.biz.infra.logger.ApiErrorLogCommonApi;
 import org.springframework.boot.autoconfigure.AutoConfiguration;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.cloud.openfeign.EnableFeignClients;
 
 /**
- * API 日志使用到 Feign 的配置项
+ * API 日志 Feign 客户端配置项
+ * 
+ * 提供 Feign 客户端,让服务可以通过 RPC 调用日志接口
+ * 如果服务有本地实现(如 business-server),会优先使用本地实现
  *
  * @author xdz
  */
 @AutoConfiguration
-@EnableFeignClients(clients = {ApiAccessLogCommonApi.class, ApiErrorLogCommonApi.class}) // 主要是引入相关的 API 服务
+@ConditionalOnMissingBean(name = {"apiAccessLogApiImpl", "apiErrorLogApiImpl"})
+@EnableFeignClients(clients = {ApiAccessLogCommonApi.class, ApiErrorLogCommonApi.class})
 public class XdzApiLogRpcAutoConfiguration {
+    
+    // 注意:
+    // 1. business-server 有本地实现(ApiAccessLogApiImpl、ApiErrorLogApiImpl),会排除此配置
+    // 2. 其他服务(platform-server、user-server 等)会使用 Feign 客户端调用 business-server
+    // 3. 这不是循环依赖!服务间调用是正常的:
+    //    - business-server → user-server:业务调用(获取用户信息)
+    //    - user-server → business-server:日志调用(记录日志)
 }
+

+ 2 - 2
xdz-framework/xdz-spring-boot-starter-web/src/main/java/com/xindazhou/framework/web/config/WebProperties.java

@@ -17,9 +17,9 @@ import jakarta.validation.constraints.NotNull;
 public class WebProperties {
 
     @NotNull(message = "APP API 不能为空")
-    private Api appApi = new Api("/app-api", "**.controller.app.**");
+    private Api appApi = new Api("", "**.controller.app.**");  // 空前缀,因为 Gateway 已经处理了路径
     @NotNull(message = "Admin API 不能为空")
-    private Api adminApi = new Api("/admin-api", "**.controller.admin.**");
+    private Api adminApi = new Api("", "**.controller.admin.**");  // 空前缀,因为 Gateway 已经处理了路径
 
     @NotNull(message = "Admin UI 不能为空")
     private Ui adminUi;

+ 11 - 0
xdz-framework/xdz-spring-boot-starter-web/src/main/java/com/xindazhou/framework/web/config/XdzWebAutoConfiguration.java

@@ -71,11 +71,17 @@ public class XdzWebAutoConfiguration {
 
             /**
              * 设置 API 前缀,仅仅匹配 controller 包下的
+             * 
+             * 注意:当使用 API Gateway 时,路径前缀应该为空,因为 Gateway 已经处理了路径
              */
             private void putPathPrefix(Map<String, Predicate<Class<?>>> pathPrefixes, WebProperties.Api api, AntPathMatcher matcher) {
                 if (api == null || StrUtil.isEmpty(api.getPrefix())) {
                     return;
                 }
+                // 如果前缀为空字符串,则不添加路径前缀(用于 Gateway 场景)
+                if (api.getPrefix().isEmpty()) {
+                    return;
+                }
                 pathPrefixes.put(api.getPrefix(), // api 前缀
                         clazz -> clazz.isAnnotationPresent(RestController.class)
                                 && matcher.match(api.getController(), clazz.getPackage().getName()));
@@ -106,8 +112,13 @@ public class XdzWebAutoConfiguration {
 
     /**
      * 创建 CorsFilter Bean,解决跨域问题
+     * 
+     * 注意:当使用 API Gateway 时,CORS 应该在 Gateway 层面统一处理,
+     * 业务服务不应该再添加 CORS 头,否则会导致重复的 CORS 头。
+     * 可以通过配置 xdz.web.cors.enabled=false 来禁用业务服务的 CORS 配置。
      */
     @Bean
+    @ConditionalOnProperty(value = "xdz.web.cors.enabled", havingValue = "true", matchIfMissing = true)
     @Order(value = WebFilterOrderEnum.CORS_FILTER) // 特殊:修复因执行顺序影响到跨域配置不生效问题
     public FilterRegistrationBean<CorsFilter> corsFilterBean() {
         // 创建 CorsConfiguration 对象

+ 4 - 4
xdz-module-business/xdz-module-business-api/src/main/java/com/xindazhou/business/api/member/MemberGroupApi.java

@@ -15,15 +15,15 @@ import java.util.Map;
 
 /**
  * 会员分组 Feign 客户端
- * 用于调用用户服务(xdz-user-server)的接口
+ * 用于调用用户服务(xdz-user)的接口
  *
  * @author xindazhou
  */
-@FeignClient(name = "xdz-user-server", url = "${feign.user-server.url:}")
+@FeignClient(name = "xdz-user", url = "${feign.user-server.url:}")
 @Tag(name = "RPC 服务 - 会员分组")
 public interface MemberGroupApi {
 
-    String PREFIX = "/admin-api/member/group";
+    String PREFIX = "/member/group";
 
     @GetMapping(PREFIX + "/page")
     @Operation(summary = "获得用户分组分页")
@@ -34,7 +34,7 @@ public interface MemberGroupApi {
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
     CommonResult<Map<String, Object>> getGroup(@RequestParam("id") Long id);
 
-    @GetMapping(PREFIX + "/list-all-simple")
+    @GetMapping(PREFIX + "/listAllSimple")
     @Operation(summary = "获取会员分组精简信息列表")
     CommonResult<List<Map<String, Object>>> getSimpleGroupList();
 

+ 9 - 4
xdz-module-business/xdz-module-business-api/src/main/java/com/xindazhou/business/api/member/MemberLevelApi.java

@@ -14,21 +14,21 @@ import java.util.Map;
 
 /**
  * 会员等级 Feign 客户端
- * 用于调用用户服务(xdz-user-server)的接口
+ * 用于调用用户服务(xdz-user)的接口
  *
  * @author xindazhou
  */
-@FeignClient(name = "xdz-user-server", url = "${feign.user-server.url:}")
+@FeignClient(name = "xdz-user", url = "${feign.user-server.url:}")
 @Tag(name = "RPC 服务 - 会员等级")
 public interface MemberLevelApi {
 
-    String PREFIX = "/admin-api/member/level";
+    String PREFIX = "/member/level";
 
     @GetMapping(PREFIX + "/list")
     @Operation(summary = "获得会员等级列表")
     CommonResult<List<Map<String, Object>>> getLevelList(@SpringQueryMap Map<String, Object> listReqVO);
 
-    @GetMapping(PREFIX + "/list-all-simple")
+    @GetMapping(PREFIX + "/listAllSimple")
     @Operation(summary = "获取会员等级精简信息列表")
     CommonResult<List<Map<String, Object>>> getSimpleLevelList();
 
@@ -49,5 +49,10 @@ public interface MemberLevelApi {
     @Operation(summary = "删除会员等级")
     @Parameter(name = "id", description = "编号", required = true)
     CommonResult<Boolean> deleteLevel(@RequestParam("id") Long id);
+
+    @PutMapping(PREFIX + "/setDefault")
+    @Operation(summary = "设置默认会员等级")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    CommonResult<Boolean> setDefaultLevel(@RequestParam("id") Long id);
 }
 

+ 19 - 4
xdz-module-business/xdz-module-business-api/src/main/java/com/xindazhou/business/api/member/MemberTagApi.java

@@ -16,15 +16,15 @@ import java.util.Map;
 
 /**
  * 会员标签 Feign 客户端
- * 用于调用用户服务(xdz-user-server)的接口
+ * 用于调用用户服务(xdz-user)的接口
  *
  * @author xindazhou
  */
-@FeignClient(name = "xdz-user-server", url = "${feign.user-server.url:}")  // 支持配置 URL,如果不配置则使用 Nacos 服务发现
+@FeignClient(name = "xdz-user", url = "${feign.user-server.url:}")  // 支持配置 URL,如果不配置则使用 Nacos 服务发现
 @Tag(name = "RPC 服务 - 会员标签")
 public interface MemberTagApi {
 
-    String PREFIX = "/admin-api/member/tag";
+    String PREFIX = "/member/tag";
 
     @GetMapping(PREFIX + "/page")
     @Operation(summary = "获得会员标签分页")
@@ -35,7 +35,7 @@ public interface MemberTagApi {
     @Parameter(name = "id", description = "编号", required = true, example = "1024")
     CommonResult<Map<String, Object>> getMemberTag(@RequestParam("id") Long id);
 
-    @GetMapping(PREFIX + "/list-all-simple")
+    @GetMapping(PREFIX + "/listAllSimple")
     @Operation(summary = "获取会员标签精简信息列表")
     CommonResult<List<Map<String, Object>>> getSimpleTagList();
 
@@ -56,5 +56,20 @@ public interface MemberTagApi {
     @Operation(summary = "删除会员标签")
     @Parameter(name = "id", description = "编号", required = true)
     CommonResult<Boolean> deleteTag(@RequestParam("id") Long id);
+
+    @DeleteMapping(PREFIX + "/batchDelete")
+    @Operation(summary = "批量删除会员标签")
+    @Parameter(name = "ids", description = "编号列表", required = true, example = "1,2,3")
+    CommonResult<Boolean> batchDeleteTag(@RequestParam("ids") Collection<Long> ids);
+
+    @PutMapping(PREFIX + "/batchEnable")
+    @Operation(summary = "批量启用会员标签")
+    @Parameter(name = "ids", description = "编号列表", required = true, example = "1,2,3")
+    CommonResult<Boolean> batchEnableTag(@RequestParam("ids") Collection<Long> ids);
+
+    @PutMapping(PREFIX + "/batchDisable")
+    @Operation(summary = "批量禁用会员标签")
+    @Parameter(name = "ids", description = "编号列表", required = true, example = "1,2,3")
+    CommonResult<Boolean> batchDisableTag(@RequestParam("ids") Collection<Long> ids);
 }
 

+ 34 - 5
xdz-module-business/xdz-module-business-api/src/main/java/com/xindazhou/business/api/member/MemberUserApi.java

@@ -10,17 +10,19 @@ import org.springframework.cloud.openfeign.SpringQueryMap;
 import org.springframework.web.bind.annotation.*;
 
 import jakarta.validation.Valid;
+import java.util.Collection;
+import java.util.List;
 import java.util.Map;
 
 /**
  * 会员用户 Feign 客户端
- * 用于调用用户服务(xdz-user-server)的接口
+ * 用于调用用户服务(xdz-user)的接口
  */
-@FeignClient(name = "xdz-user-server", url = "${feign.user-server.url:}") // 使用服务名,Nacos 会自动发现
+@FeignClient(name = "xdz-user", url = "${feign.user-server.url:}") // 使用服务名,Nacos 会自动发现
 @Tag(name = "RPC 服务 - 会员用户")
 public interface MemberUserApi {
 
-    String PREFIX = "/admin-api/member/user";
+    String PREFIX = "/member/user";
 
     @GetMapping(PREFIX + "/page")
     @Operation(summary = "获得会员用户分页")
@@ -35,12 +37,39 @@ public interface MemberUserApi {
     @Operation(summary = "更新会员用户")
     CommonResult<Boolean> updateUser(@Valid @RequestBody Map<String, Object> updateReqVO);
 
-    @PutMapping(PREFIX + "/update-level")
+    @PutMapping(PREFIX + "/updateLevel")
     @Operation(summary = "更新会员用户等级")
     CommonResult<Boolean> updateUserLevel(@Valid @RequestBody Map<String, Object> updateReqVO);
 
-    @PutMapping(PREFIX + "/update-point")
+    @PutMapping(PREFIX + "/updatePoint")
     @Operation(summary = "更新会员用户积分")
     CommonResult<Boolean> updateUserPoint(@Valid @RequestBody Map<String, Object> updateReqVO);
+
+    @PostMapping(PREFIX + "/addTag")
+    @Operation(summary = "添加用户标签")
+    @Parameter(name = "userId", description = "用户编号", required = true, example = "1024")
+    @Parameter(name = "tagId", description = "标签编号", required = true, example = "1")
+    CommonResult<Boolean> addUserTag(@RequestParam("userId") Long userId, @RequestParam("tagId") Long tagId);
+
+    @DeleteMapping(PREFIX + "/removeTag")
+    @Operation(summary = "删除用户标签")
+    @Parameter(name = "userId", description = "用户编号", required = true, example = "1024")
+    @Parameter(name = "tagId", description = "标签编号", required = true, example = "1")
+    CommonResult<Boolean> removeUserTag(@RequestParam("userId") Long userId, @RequestParam("tagId") Long tagId);
+
+    @GetMapping(PREFIX + "/getTags")
+    @Operation(summary = "获取用户标签列表")
+    @Parameter(name = "userId", description = "用户编号", required = true, example = "1024")
+    CommonResult<List<Long>> getUserTagIds(@RequestParam("userId") Long userId);
+
+    @PutMapping(PREFIX + "/batchEnable")
+    @Operation(summary = "批量启用会员")
+    @Parameter(name = "ids", description = "用户编号列表", required = true, example = "1,2,3")
+    CommonResult<Boolean> batchEnableUser(@RequestParam("ids") Collection<Long> ids);
+
+    @PutMapping(PREFIX + "/batchDisable")
+    @Operation(summary = "批量禁用会员")
+    @Parameter(name = "ids", description = "用户编号列表", required = true, example = "1,2,3")
+    CommonResult<Boolean> batchDisableUser(@RequestParam("ids") Collection<Long> ids);
 }
 

+ 51 - 0
xdz-module-business/xdz-module-business-api/src/main/java/com/xindazhou/business/api/service/EvaluationApi.java

@@ -0,0 +1,51 @@
+package com.xindazhou.business.api.service;
+
+import com.xindazhou.framework.common.pojo.CommonResult;
+import com.xindazhou.framework.common.pojo.PageResult;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.Map;
+
+/**
+ * 服务评价 API 接口
+ *
+ * @author xindazhou
+ */
+@FeignClient(name = "xdz-platform", contextId = "evaluationApi")
+public interface EvaluationApi {
+
+    /**
+     * 获得服务评价分页列表
+     *
+     * @param pageNo 页码
+     * @param pageSize 每页条数
+     * @param keyword 关键字
+     * @param rating 评分
+     * @param createTimeStart 评价时间开始
+     * @param createTimeEnd 评价时间结束
+     * @return 服务评价分页
+     */
+    @GetMapping("/service/evaluation/page")
+    CommonResult<PageResult<Map<String, Object>>> getEvaluationPage(
+            @RequestParam("pageNo") Integer pageNo,
+            @RequestParam("pageSize") Integer pageSize,
+            @RequestParam(value = "keyword", required = false) String keyword,
+            @RequestParam(value = "rating", required = false) Integer rating,
+            @RequestParam(value = "createTimeStart", required = false) String createTimeStart,
+            @RequestParam(value = "createTimeEnd", required = false) String createTimeEnd
+    );
+
+    /**
+     * 获得服务评价
+     *
+     * @param id 评价ID
+     * @return 服务评价
+     */
+    @GetMapping("/service/evaluation/{id}")
+    CommonResult<Map<String, Object>> getEvaluation(@PathVariable("id") Long id);
+
+}
+

+ 89 - 0
xdz-module-business/xdz-module-business-api/src/main/java/com/xindazhou/business/api/service/MaintenanceOrderApi.java

@@ -0,0 +1,89 @@
+package com.xindazhou.business.api.service;
+
+import com.xindazhou.framework.common.pojo.CommonResult;
+import com.xindazhou.framework.common.pojo.PageResult;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Map;
+
+/**
+ * 维保订单 API 接口
+ *
+ * @author xindazhou
+ */
+@FeignClient(name = "xdz-platform", contextId = "maintenanceOrderApi")
+public interface MaintenanceOrderApi {
+
+    /**
+     * 获得维保订单分页列表
+     *
+     * @param pageNo 页码
+     * @param pageSize 每页条数
+     * @param keyword 关键字
+     * @param status 订单状态
+     * @param startTime 创建时间开始
+     * @param endTime 创建时间结束
+     * @return 维保订单分页
+     */
+    @GetMapping("/service/maintenance/order/page")
+    CommonResult<PageResult<Map<String, Object>>> getMaintenanceOrderPage(
+            @RequestParam("pageNo") Integer pageNo,
+            @RequestParam("pageSize") Integer pageSize,
+            @RequestParam(value = "keyword", required = false) String keyword,
+            @RequestParam(value = "status", required = false) Integer status,
+            @RequestParam(value = "startTime", required = false) String startTime,
+            @RequestParam(value = "endTime", required = false) String endTime
+    );
+
+    /**
+     * 获得维保订单
+     *
+     * @param id 订单ID
+     * @return 维保订单
+     */
+    @GetMapping("/service/maintenance/order/{id}")
+    CommonResult<Map<String, Object>> getMaintenanceOrder(@PathVariable("id") Long id);
+
+    /**
+     * 创建维保订单
+     *
+     * @param createReqVO 创建信息
+     * @return 订单ID
+     */
+    @PostMapping("/service/maintenance/order")
+    CommonResult<Long> createMaintenanceOrder(@RequestBody Map<String, Object> createReqVO);
+
+    /**
+     * 更新维保订单
+     *
+     * @param id 订单ID
+     * @param updateReqVO 更新信息
+     * @return 是否成功
+     */
+    @PutMapping("/service/maintenance/order/{id}")
+    CommonResult<Boolean> updateMaintenanceOrder(@PathVariable("id") Long id,
+                                                  @RequestBody Map<String, Object> updateReqVO);
+
+    /**
+     * 删除维保订单
+     *
+     * @param id 订单ID
+     * @return 是否成功
+     */
+    @DeleteMapping("/service/maintenance/order/{id}")
+    CommonResult<Boolean> deleteMaintenanceOrder(@PathVariable("id") Long id);
+
+    /**
+     * 更新维保订单状态
+     *
+     * @param id 订单ID
+     * @param statusUpdateReqVO 状态更新信息
+     * @return 是否成功
+     */
+    @PutMapping("/service/maintenance/order/{id}/status")
+    CommonResult<Boolean> updateMaintenanceOrderStatus(@PathVariable("id") Long id,
+                                                        @RequestBody Map<String, Object> statusUpdateReqVO);
+
+}
+

+ 1 - 1
xdz-module-business/xdz-module-business-api/src/main/java/com/xindazhou/business/enums/ApiConstants.java

@@ -14,7 +14,7 @@ public class ApiConstants {
      *
      * 注意,需要保证和 spring.application.name 保持一致
      */
-    public static final String NAME = "xdz-business-server";
+    public static final String NAME = "xdz-business";
 
     /**
      * API 前缀

+ 6 - 0
xdz-module-business/xdz-module-business-api/src/main/java/com/xindazhou/business/enums/ErrorCodeConstants.java

@@ -18,6 +18,12 @@ public interface ErrorCodeConstants {
     // ========== 版本管理 1-002-000-010 ==========
     ErrorCode VERSION_NOT_EXISTS = new ErrorCode(1_002_000_010, "版本不存在");
 
+    // ========== 协议管理 1_002_000_020 ==========
+    ErrorCode AGREEMENT_NOT_EXISTS = new ErrorCode(1_002_000_020, "协议不存在");
+
+    // ========== 服务消息 1_002_000_030 ==========
+    ErrorCode SERVICE_MESSAGE_NOT_EXISTS = new ErrorCode(1_002_000_030, "服务消息不存在");
+
     // ========== AUTH 模块 1-002-000-100 ==========
     ErrorCode AUTH_LOGIN_BAD_CREDENTIALS = new ErrorCode(1_002_000_100, "登录失败,账号密码不正确");
     ErrorCode AUTH_LOGIN_USER_DISABLED = new ErrorCode(1_002_000_101, "登录失败,账号被禁用");

+ 16 - 0
xdz-module-business/xdz-module-business-server/pom.xml

@@ -40,6 +40,16 @@
             <artifactId>xdz-module-user-api</artifactId>
             <version>${revision}</version>
         </dependency>
+        <!-- 移除用户服务 Server 依赖,改为通过 RPC 调用 -->
+        <!-- 注意:如果需要访问权限相关的 DO 类,可以通过 user-api 模块提供,或通过 RPC 返回 VO -->
+        <!--
+        <dependency>
+            <groupId>com.xindazhou</groupId>
+            <artifactId>xdz-module-user-server</artifactId>
+            <version>${revision}</version>
+            <scope>compile</scope>
+        </dependency>
+        -->
         <dependency>
             <groupId>com.xindazhou</groupId>
             <artifactId>xdz-spring-boot-starter-biz-tenant</artifactId>
@@ -138,6 +148,12 @@
             <groupId>org.dromara.hutool</groupId>
             <artifactId>hutool-extra</artifactId> <!-- 邮件 -->
         </dependency>
+        <!-- 敏感词过滤(AC自动机) -->
+        <dependency>
+            <groupId>com.github.houbb</groupId>
+            <artifactId>sensitive-word</artifactId>
+            <version>0.14.0</version>
+        </dependency>
         
         <!-- Test 测试相关 -->
         <dependency>

+ 39 - 0
xdz-module-business/xdz-module-business-server/src/main/java/com/xindazhou/business/api/logger/ApiAccessLogApiImpl.java

@@ -0,0 +1,39 @@
+package com.xindazhou.business.api.logger;
+
+import com.xindazhou.framework.common.biz.infra.logger.ApiAccessLogCommonApi;
+import com.xindazhou.framework.common.pojo.CommonResult;
+import com.xindazhou.framework.common.biz.infra.logger.dto.ApiAccessLogCreateReqDTO;
+import com.xindazhou.business.service.logger.ApiAccessLogService;
+import jakarta.annotation.Resource;
+import org.springframework.context.annotation.Primary;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import static com.xindazhou.framework.common.biz.infra.logger.ApiAccessLogCommonApi.PREFIX;
+import static com.xindazhou.framework.common.pojo.CommonResult.success;
+
+/**
+ * API 访问日志 CommonApi 实现类
+ * 
+ * 提供 HTTP 接口供其他服务通过 Feign 调用
+ * 
+ * @author xindazhou
+ */
+@RestController // 提供 RESTful API 接口,给 Feign 调用
+@RequestMapping(PREFIX) // 添加 @RequestMapping 以暴露 RPC 接口
+@Validated
+@Primary // 由于 ApiAccessLogCommonApi 的存在,必须声明为 @Primary Bean
+public class ApiAccessLogApiImpl implements ApiAccessLogCommonApi {
+
+    @Resource
+    private ApiAccessLogService apiAccessLogService;
+
+    @Override
+    public CommonResult<Boolean> createApiAccessLog(ApiAccessLogCreateReqDTO createDTO) {
+        apiAccessLogService.createApiAccessLog(createDTO);
+        return success(true);
+    }
+
+}
+

+ 39 - 0
xdz-module-business/xdz-module-business-server/src/main/java/com/xindazhou/business/api/logger/ApiErrorLogApiImpl.java

@@ -0,0 +1,39 @@
+package com.xindazhou.business.api.logger;
+
+import com.xindazhou.framework.common.biz.infra.logger.ApiErrorLogCommonApi;
+import com.xindazhou.framework.common.pojo.CommonResult;
+import com.xindazhou.framework.common.biz.infra.logger.dto.ApiErrorLogCreateReqDTO;
+import com.xindazhou.business.service.logger.ApiErrorLogService;
+import jakarta.annotation.Resource;
+import org.springframework.context.annotation.Primary;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import static com.xindazhou.framework.common.biz.infra.logger.ApiErrorLogCommonApi.PREFIX;
+import static com.xindazhou.framework.common.pojo.CommonResult.success;
+
+/**
+ * API 异常日志 CommonApi 实现类
+ * 
+ * 提供 HTTP 接口供其他服务通过 Feign 调用
+ * 
+ * @author xindazhou
+ */
+@RestController // 提供 RESTful API 接口,给 Feign 调用
+@RequestMapping(PREFIX) // 添加 @RequestMapping 以暴露 RPC 接口
+@Validated
+@Primary // 由于 ApiErrorLogCommonApi 的存在,必须声明为 @Primary Bean
+public class ApiErrorLogApiImpl implements ApiErrorLogCommonApi {
+
+    @Resource
+    private ApiErrorLogService apiErrorLogService;
+
+    @Override
+    public CommonResult<Boolean> createApiErrorLog(ApiErrorLogCreateReqDTO createDTO) {
+        apiErrorLogService.createApiErrorLog(createDTO);
+        return success(true);
+    }
+
+}
+

+ 0 - 44
xdz-module-business/xdz-module-business-server/src/main/java/com/xindazhou/business/api/permission/PermissionApiImpl.java

@@ -1,44 +0,0 @@
-package com.xindazhou.business.api.permission;
-
-import com.xindazhou.framework.common.pojo.CommonResult;
-import com.xindazhou.framework.common.biz.system.permission.dto.DeptDataPermissionRespDTO;
-import com.xindazhou.business.service.permission.PermissionService;
-import org.springframework.context.annotation.Primary;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.RestController;
-
-import jakarta.annotation.Resource;
-import java.util.Collection;
-import java.util.Set;
-
-import static com.xindazhou.framework.common.pojo.CommonResult.success;
-
-@RestController // 提供 RESTful API 接口,给 Feign 调用
-@Validated
-@Primary // 由于 PermissionCommonApi 的存在,必须声明为 @Primary Bean
-public class PermissionApiImpl implements PermissionApi {
-
-    @Resource
-    private PermissionService permissionService;
-
-    @Override
-    public CommonResult<Set<Long>> getUserRoleIdListByRoleIds(Collection<Long> roleIds) {
-        return success(permissionService.getUserRoleIdListByRoleId(roleIds));
-    }
-
-    @Override
-    public CommonResult<Boolean> hasAnyPermissions(Long userId, String... permissions) {
-        return success(permissionService.hasAnyPermissions(userId, permissions));
-    }
-
-    @Override
-    public CommonResult<Boolean> hasAnyRoles(Long userId, String... roles) {
-        return success(permissionService.hasAnyRoles(userId, roles));
-    }
-
-    @Override
-    public CommonResult<DeptDataPermissionRespDTO> getDeptDataPermission(Long userId) {
-        return success(permissionService.getDeptDataPermission(userId));
-    }
-
-}

+ 0 - 25
xdz-module-business/xdz-module-business-server/src/main/java/com/xindazhou/business/api/permission/RoleApiImpl.java

@@ -1,25 +0,0 @@
-package com.xindazhou.business.api.permission;
-
-import com.xindazhou.framework.common.pojo.CommonResult;
-import com.xindazhou.business.service.permission.RoleService;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.RestController;
-
-import jakarta.annotation.Resource;
-import java.util.Collection;
-
-import static com.xindazhou.framework.common.pojo.CommonResult.success;
-
-@RestController // 提供 RESTful API 接口,给 Feign 调用
-@Validated
-public class RoleApiImpl implements RoleApi {
-
-    @Resource
-    private RoleService roleService;
-
-    @Override
-    public CommonResult<Boolean> validRoleList(Collection<Long> ids) {
-        roleService.validateRoleList(ids);
-        return success(true);
-    }
-}

+ 0 - 111
xdz-module-business/xdz-module-business-server/src/main/java/com/xindazhou/business/config/ApiLogLocalConfiguration.java

@@ -1,111 +0,0 @@
-package com.xindazhou.business.config;
-
-import com.xindazhou.business.service.logger.ApiAccessLogService;
-import com.xindazhou.business.service.logger.ApiErrorLogService;
-import com.xindazhou.business.service.logger.LoginLogService;
-import com.xindazhou.framework.common.biz.infra.logger.ApiAccessLogCommonApi;
-import com.xindazhou.framework.common.biz.infra.logger.ApiErrorLogCommonApi;
-import com.xindazhou.framework.common.biz.infra.logger.LoginLogCommonApi;
-import com.xindazhou.framework.common.biz.infra.logger.dto.ApiAccessLogCreateReqDTO;
-import com.xindazhou.framework.common.biz.infra.logger.dto.ApiErrorLogCreateReqDTO;
-import com.xindazhou.framework.common.biz.infra.logger.dto.LoginLogCreateReqDTO;
-import com.xindazhou.framework.common.pojo.CommonResult;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Primary;
-import org.springframework.scheduling.annotation.Async;
-
-/**
- * API 日志本地配置
- * 
- * 提供本地的 ApiAccessLogCommonApi 和 ApiErrorLogCommonApi 实现
- * 直接调用本地的 ApiAccessLogService 和 ApiErrorLogService
- * 避免使用 Feign 调用远程服务(因为 infra 功能已经集成到 business-server 中)
- *
- * @author 新大洲
- */
-@Configuration
-@Slf4j
-public class ApiLogLocalConfiguration {
-
-    /**
-     * 创建本地的 ApiAccessLogCommonApi 实现
-     * 直接调用本地的 ApiAccessLogService,不使用 Feign
-     */
-    @Bean
-    @Primary
-    public ApiAccessLogCommonApi apiAccessLogCommonApi(ApiAccessLogService apiAccessLogService) {
-        return new ApiAccessLogCommonApi() {
-            @Override
-            public CommonResult<Boolean> createApiAccessLog(ApiAccessLogCreateReqDTO createDTO) {
-                apiAccessLogService.createApiAccessLog(createDTO);
-                return CommonResult.success(true);
-            }
-
-            @Override
-            @Async
-            public void createApiAccessLogAsync(ApiAccessLogCreateReqDTO createDTO) {
-                apiAccessLogService.createApiAccessLog(createDTO);
-            }
-        };
-    }
-
-    /**
-     * 创建本地的 ApiErrorLogCommonApi 实现
-     * 直接调用本地的 ApiErrorLogService,不使用 Feign
-     */
-    @Bean
-    @Primary
-    public ApiErrorLogCommonApi apiErrorLogCommonApi(ApiErrorLogService apiErrorLogService) {
-        return new ApiErrorLogCommonApi() {
-            @Override
-            public CommonResult<Boolean> createApiErrorLog(ApiErrorLogCreateReqDTO createDTO) {
-                apiErrorLogService.createApiErrorLog(createDTO);
-                return CommonResult.success(true);
-            }
-
-            @Override
-            @Async
-            public void createApiErrorLogAsync(ApiErrorLogCreateReqDTO createDTO) {
-                apiErrorLogService.createApiErrorLog(createDTO);
-            }
-        };
-    }
-
-    /**
-     * 创建本地的 LoginLogCommonApi 实现
-     * 直接调用本地的 LoginLogService,不使用 Feign
-     * 注意:登录日志已迁移到用户服务,此实现保留用于兼容
-     * 建议:业务服务应该通过 Feign 调用用户服务的 LoginLogCommonApi
-     */
-    @Bean
-    @Primary
-    public LoginLogCommonApi loginLogCommonApi(LoginLogService loginLogService) {
-        return new LoginLogCommonApi() {
-            @Override
-            public CommonResult<Boolean> createLoginLog(LoginLogCreateReqDTO reqDTO) {
-                try {
-                    loginLogService.createLoginLog(reqDTO);
-                    return CommonResult.success(true);
-                } catch (Exception e) {
-                    log.error("[createLoginLog][同步记录登录日志失败] reqDTO={}", reqDTO, e);
-                    return CommonResult.error(500, "记录登录日志失败");
-                }
-            }
-
-            @Override
-            @Async
-            public void createLoginLogAsync(LoginLogCreateReqDTO reqDTO) {
-                try {
-                    loginLogService.createLoginLog(reqDTO);
-                } catch (Exception e) {
-                    // 异步方法中的异常不应该影响调用方,只记录错误日志
-                    log.error("[createLoginLogAsync][异步记录登录日志失败] reqDTO={}", reqDTO, e);
-                }
-            }
-        };
-    }
-
-}
-

+ 0 - 0
xdz-module-business/xdz-module-business-server/src/main/java/com/xindazhou/business/controller/admin/agreement/AgreementController.java


Some files were not shown because too many files changed in this diff