diff --git a/nladmin-system/README.md b/nladmin-system/README.md
index dea0b8b..3b8b24c 100644
--- a/nladmin-system/README.md
+++ b/nladmin-system/README.md
@@ -1 +1,3 @@
# 诺力开发平台
+## 主从复制(Master-Slave Replication)
+
diff --git a/nladmin-system/doc/img.png b/nladmin-system/doc/img.png
new file mode 100644
index 0000000..73cc05f
Binary files /dev/null and b/nladmin-system/doc/img.png differ
diff --git a/nladmin-system/nlsso-server/pom.xml b/nladmin-system/nlsso-server/pom.xml
index 92dfc2c..7988986 100644
--- a/nladmin-system/nlsso-server/pom.xml
+++ b/nladmin-system/nlsso-server/pom.xml
@@ -32,6 +32,12 @@
+
+
+ org.apache.shardingsphere
+ shardingsphere-jdbc-core-spring-boot-starter
+ 5.1.1
+
com.dameng
DmJdbcDriver18
@@ -76,11 +82,11 @@
11.2.0.4
-
- com.baomidou
- dynamic-datasource-spring-boot-starter
- 4.1.3
-
+
+
+
+
+
org.fusesource.jansi
diff --git a/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml b/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml
index 5e418f1..0b088db 100644
--- a/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml
+++ b/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml
@@ -9,6 +9,12 @@ nl:
username: root
password: 12356
database: nl-platform
+ slave:
+ ip: 127.0.0.1
+ port: 3306
+ username: root
+ password: 12356
+ database: nl_platform
redis:
ip: 127.0.0.1
port: 6379
diff --git a/nladmin-system/nlsso-server/src/main/resources/config/application.yml b/nladmin-system/nlsso-server/src/main/resources/config/application.yml
index 38d4fa7..7677c51 100644
--- a/nladmin-system/nlsso-server/src/main/resources/config/application.yml
+++ b/nladmin-system/nlsso-server/src/main/resources/config/application.yml
@@ -12,62 +12,102 @@ spring:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
messages:
basename: language/login/login,language/error/error,language/buss/buss,language/task/task
- datasource:
- druid:
- initial-size: 5 #初始化时建立物理连接的个数
- min-idle: 15 #最小连接池数量
- maxActive: 30 #最大连接池数量
- maxWait: 3000 #获取连接时最大等待时间,单位毫秒
- #申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
- test-while-idle: true
- time-between-eviction-runs-millis: 300000 #既作为检测的间隔时间又作为test-while-idle执行的依据
- min-evictable-idle-time-millis: 900000 #销毁线程时检测当前连接的最后活动时间和当前时间差大于该值时,关闭当前连接
- #用来检测连接是否有效的sql
- #mysql中为 select 'x'
- #oracle中为 select 1 from dual
- validation-query: SELECT 'x'
- test-on-borrow: true #申请连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
- test-on-return: false #归还连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为true
- exception-sorter: true #当数据库抛出不可恢复的异常时,抛弃该连接
- pool-prepared-statements: true #是否缓存preparedStatement,mysql5.5+建议开启
- max-pool-prepared-statement-per-connection-size: 20 #当值大于20时poolPreparedStatements会自动修改为true
- #通过connectProperties属性来打开mergeSql功能;慢SQL记录
- connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
-# use-global-data-source-stat: true #合并多个DruidDataSource的监控数据
- #filters通过别名的方式配置扩展插件,常用的插件有:
- #监控统计用的filter:stat 日志用的filter:log4j 防御sql注入的filter:wall
- filter:
- stat:
+ shardingsphere:
+ datasource:
+ names: master,slave
+ master:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ # 初始连接数
+ initial-size: 20
+ # 最小连接数
+ min-idle: 30
+ # 最大连接数
+ max-active: 300
+ # 是否自动回收超时连接
+ socket-timeout: 10
+ query-time-out: 7
+ transaction-query-timeout: 30
+ # 获取连接超时时间
+ max-wait: 4000
+ # 连接有效性检测时间
+ time-between-eviction-runs-millis: 60000
+ # 连接在池中最小生存的时间
+ min-evictable-idle-time-millis: 300000
+ # 连接在池中最大生存的时间
+ max-evictable-idle-time-millis: 900000
+ # 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除
+ test-while-idle: true
+ # 指明是否在从池中取出连接前进行检验,如果检验失败, 则从池中去除连接并尝试取出另一个
+ test-on-borrow: true
+ # 是否在归还到池中前进行检验
+ test-on-return: false
+ # 检测连接是否有效
+ validation-query: select 1
+ # 配置监控统计
+ webStatFilter:
enabled: true
- # 记录慢SQL
- log-slow-sql: true
- slow-sql-millis: 1000
- merge-sql: true
- wall:
- config:
- multi-statement-allow: true
- #设置访问druid监控页面的拦截路径及账号和密码,默认没有
- stat-view-servlet:
- enabled: true
- url-pattern: /druid/*
- login-username: admin
- login-password: admin
- dynamic:
- primary: mysql
- datasource:
- mysql:
- driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
- url: jdbc:log4jdbc:mysql://${DB_HOST:${nl.config.mysql.ip}}:${DB_PORT:${nl.config.mysql.port}}/${DB_NAME:${nl.config.mysql.database}}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
- username: ${DB_USER:${nl.config.mysql.username}}
- password: ${DB_PWD:${nl.config.mysql.password}}
- type: com.alibaba.druid.pool.DruidDataSource
- druid:
+ stat-view-servlet:
+ enabled: true
+ url-pattern: /druid/*
+ reset-enable: false
filters:
DruidFilter,stat
- initial-size: 5 #初始化时建立物理连接的个数
- min-idle: 15 #最小连接池数量
- maxActive: 30 #最大连接池数量
- maxWait: 3000 #获取连接时最大等待时间,单位毫秒
+ url: jdbc:mysql://${DB_HOST:${nl.config.mysql.ip}}:${DB_PORT:${nl.config.mysql.port}}/${DB_NAME:${nl.config.mysql.database}}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
+ username: ${DB_USER:${nl.config.mysql.username}}
+ password: ${DB_PWD:${nl.config.mysql.password}}
+ slave:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ # 初始连接数
+ initial-size: 20
+ # 最小连接数
+ min-idle: 30
+ # 最大连接数
+ max-active: 300
+ # 是否自动回收超时连接
+ socket-timeout: 10
+ query-time-out: 7
+ transaction-query-timeout: 30
+ # 获取连接超时时间
+ max-wait: 4000
+ # 连接有效性检测时间
+ time-between-eviction-runs-millis: 60000
+ # 连接在池中最小生存的时间
+ min-evictable-idle-time-millis: 300000
+ # 连接在池中最大生存的时间
+ max-evictable-idle-time-millis: 900000
+ # 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除
+ test-while-idle: true
+ # 指明是否在从池中取出连接前进行检验,如果检验失败, 则从池中去除连接并尝试取出另一个
+ test-on-borrow: true
+ # 是否在归还到池中前进行检验
+ test-on-return: false
+ # 检测连接是否有效
+ validation-query: select 1
+ # 配置监控统计
+ webStatFilter:
+ enabled: true
+ stat-view-servlet:
+ enabled: true
+ url-pattern: /druid/*
+ reset-enable: false
+ filters:
+ DruidFilter,stat
+ url: jdbc:mysql://${DB_HOST:${nl.config.slave.ip}}:${DB_PORT:${nl.config.slave.port}}/${DB_NAME:${nl.config.slave.database}}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true
+ username: ${DB_USER:${nl.config.slave.username}}
+ password: ${DB_PWD:${nl.config.slave.password}}
+ rules:
+ readwrite-splitting:
+ data-sources:
+ db:
+ type: Static
+ props:
+ #接口有事务,读写分离不生效,默认全部使用主库
+ write-data-source-name: master
+ read-data-source-names: slave
+ #负载均衡算法名称
+ load-balancer-name: round-robin
flyway:
#开启
enabled: false