# mongo_cluster_test **Repository Path**: andnnl/mongo_cluster_test ## Basic Information - **Project Name**: mongo_cluster_test - **Description**: mongo->kafka->sqlserver - **Primary Language**: Java - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-25 - **Last Updated**: 2025-10-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MongoDB集群测试项目 本项目用于测试MongoDB集群的主从切换、故障转移和读写分离功能。 ## 项目结构 ``` mongo-cluster-test/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/jiaying/sync/ │ │ │ ├── config/ │ │ │ │ ├── MongoConfig.java # MongoDB配置管理类 │ │ │ │ └── SqlServerConfig.java # SQL Server配置管理类 │ │ │ ├── beans/ │ │ │ │ ├── SmsContentForm.java # 短信内容实体类 │ │ │ │ ├── SmsContentForm_dll.sql # 短信内容表结构 │ │ │ │ ├── SmsMobilesForm.java # 短信号码实体类 │ │ │ │ └── SmsMobilesForm_dll.sql # 短信号码表结构 │ │ │ ├── KafkaListener.java # Kafka消息监听器 │ │ │ ├── KafkaMessageParser.java # Kafka消息解析器 │ │ │ ├── DebeziumMongoToSqlSync.java # Debezium同步器 │ │ │ ├── DataInsertionTest.java # 数据插入测试类 │ │ │ ├── KafkaListenerSQLTest.java # Kafka监听器SQL测试类 │ │ │ ├── MongoClusterTest.java # MongoDB集群测试类 │ │ │ └── App.java # 简化版测试应用 │ │ └── resources/ │ │ └── application.properties # 配置文件 │ └── test/ │ └── java/ ├── pom.xml # Maven配置文件 └── README.md # 项目说明文件 ``` ## 功能特性 1. **自动故障转移**: 当主节点失效时,自动切换到备用节点 2. **读写分离**: 写操作定向到主节点,读操作可以从从节点执行 3. **连接池管理**: 高效的连接池管理机制 4. **并发访问测试**: 测试多线程环境下的集群性能 5. **集群状态监控**: 实时监控集群各节点状态 6. **MongoDB到SQL Server同步**: 使用Debezium实现MongoDB变更数据捕获并同步到SQL Server 7. **Kafka消息监听与SQL执行**: 监听MongoDB变更事件并通过SQL Server连接池执行生成的SQL语句 ## 配置说明 在 `src/main/resources/application.properties` 文件中配置MongoDB和SQL Server信息: ```properties # MongoDB集群配置 mongodb.cluster.hosts=192.168.5.124:27018,192.168.5.87:27018,192.168.5.128:27018 mongodb.database.name=testdb mongodb.collection.name=cluster_test # MongoDB连接池配置 mongodb.connection.pool.max.size=20 mongodb.connection.pool.min.size=5 mongodb.connection.timeout.ms=10000 mongodb.socket.timeout.ms=10000 mongodb.server.selection.timeout.ms=5000 # MongoDB读写分离配置 mongodb.read.preference=secondaryPreferred mongodb.write.concern=ACKNOWLEDGED # SQL Server配置 sqlserver.host=192.168.5.123 sqlserver.port=1433 sqlserver.database.name=MyTest sqlserver.username=sa sqlserver.password=jy@88250860 # SQL Server连接池配置 sqlserver.connection.pool.max.size=20 sqlserver.connection.pool.min.idle=5 sqlserver.connection.timeout.ms=30000 sqlserver.idle.timeout.ms=600000 sqlserver.max.lifetime.ms=1800000 sqlserver.leak.detection.threshold.ms=60000 ``` ## 编译和运行 ### 编译项目 ```bash # 标准编译 mvn clean compile # 使用指定settings.xml编译 mvn -s D:\tools\settings-chenss.xml clean compile # 使用批处理脚本编译 mvn-with-settings.bat "clean compile" ``` ### 打包项目 ```bash # 标准打包 mvn clean package # 使用指定settings.xml打包 mvn -s D:\tools\settings-chenss.xml clean package # 使用批处理脚本打包 mvn-with-settings.bat "clean package" # 打包后生成的文件 target/mongo-cluster-test-1.0-SNAPSHOT.jar ``` ### 运行测试 ```bash # 运行简化版测试 java -cp target/classes com.jiaying.sync.App # 运行完整版测试 java -cp target/classes com.jiaying.sync.MongoClusterTest # 运行数据插入测试 mvn exec:java@data-insertion-test # 运行Kafka监听器SQL测试 mvn exec:java@kafka-listener-sql-test # 运行Debezium同步测试 java -cp target/classes com.jiaying.sync.DebeziumMongoToSqlSync # 运行打包后的JAR文件 java -jar target/mongo-cluster-test-1.0-SNAPSHOT.jar # 使用批处理脚本运行测试 run-test.bat ``` ## 测试功能说明 ### 1. 基础连接测试 验证与MongoDB集群的基本连接功能。 ### 2. 读写分离测试 - 写操作默认使用主节点 - 读操作可以指定从节点优先 ### 3. 并发访问测试 使用多线程模拟并发访问,测试集群在高并发下的表现。 ### 4. 故障转移测试 通过连续的读写操作,观察集群在节点故障时的自动切换能力。 ### 5. 数据同步测试 使用Debezium实现MongoDB到SQL Server的数据同步。 ### 6. Kafka消息监听与SQL执行测试 监听MongoDB变更事件并通过SQL Server连接池执行生成的SQL语句。 ## 相关文档 - [数据库配置说明](README_DatabaseConfig.md) - [SQL语句生成说明](README_SQLGeneration.md) - [Kafka监听器SQL执行说明](README_KafkaListenerSQL.md) ## 依赖项 - MongoDB Java Driver 5.6.1 - SLF4J 1.7.36 - Debezium 1.9.7.Final - SQL Server JDBC Driver 8.4.1 - HikariCP 4.0.3 - Kafka Client 2.8.1 - Java EE JSON Processing 1.1.4 ## 注意事项 1. 确保MongoDB集群地址和端口配置正确 2. 确保网络连通性 3. 根据实际需求调整连接池配置 4. 在生产环境中使用时,请根据实际情况调整读写偏好设置 5. 确保SQL Server配置正确且可访问 ## Maven配置 如果需要使用特定的Maven settings.xml文件(如D:\tools\settings-chenss.xml),可以使用以下方法: 1. **命令行指定**: ```bash mvn -s D:\tools\settings-chenss.xml clean compile ``` 2. **使用批处理脚本**: ```bash mvn-with-settings.bat "clean compile" ``` 3. **环境变量配置**: 设置MAVEN_OPTS环境变量包含`-s D:\tools\settings-chenss.xml`参数 ### 自动设置(需要管理员权限): ```bash set-maven-opts.bat ``` ### 手动设置: 1. 右键点击"此电脑"或"我的电脑",选择"属性" 2. 点击"高级系统设置" 3. 在"系统属性"窗口中点击"环境变量" 4. 在"系统变量"或"用户变量"中点击"新建" 5. 变量名输入:`MAVEN_OPTS` 6. 变量值输入:`-s D:\tools\settings-chenss.xml` 7. 点击"确定"保存设置 注意: - 设置环境变量后需要重新打开命令行窗口或重启系统才能生效 - 设置系统环境变量可能需要管理员权限