# 腾讯TDSQL项目化部署手册
北京致远互联软件股份有限公司 2025年07月修订
# 1 前言
腾讯TDSQL数据库标准产品未支持,目前可项目化集成(有项目成功上线案例)。
项目化支持,意味着可能存在项目化适配成本,并且项目化过程中产生的BUG、以及后续OA版本升级需要额外项目化成本解决
腾讯TDSQL 有多种关系型数据库产品:
- TDSQL MySQL 版,InnoDB引擎,等同于标准的MySQL数据库,无需客开即可接入
- TDSQL PostgreSQL 版,提供PG和Oracle两种模式二选一,PG 模式完全兼容 PostgreSQL、Oracle 模式高度兼容 Oracle。两种模式均需要客开才能接入。
不同客户项目建议使用不同的产品模式:
数据库 | 新客户 | MySQL老客户转TDSQL | SQLServer老客户转TDSQL | Oracle老客户转TDSQL |
---|---|---|---|---|
TDSQL MySQL版(InnoDB引擎) | 推荐,无需客开 | 推荐,无需客开 | 不推荐 | 不推荐 |
TDSQL PostgreSQL 版(PG模式) | 不推荐 | 不推荐 | 推荐,需客开 | 不推荐 |
TDSQL PostgreSQL 版(Oracle模式) | 不推荐 | 不推荐 | 推荐,需客开 | 推荐,需客开 |
注意:
- 新客户只推荐TDSQL MySQL版,无需客开,当做MySQL安装部署,协同OA后续可平滑升级
- MySQL老客户只推荐转TDSQL MySQL版,转库风险低,后续维护升级成本低(成功项目PMP-JFZC-2023-3919、PMP-JFZC-2024-5083)
- SQLServer老客户并不推荐转TDSQL。如必须用TDSQL,则只推荐转PG或Oracle模式,二选一,涉及客开,协同OA后续升级较困难
- Oracle老客户并不推荐转TDSQL。如必须用TDSQL,则只推荐转Oracle模式,涉及客开,协同OA后续升级较困难(成功项目JSFW-2025-02062)
# 2 转库注意事项
如项目需要Oracle、SQLServer、PostgreSQL或其它数据库转MySQL数据库均存在转库风险,MySQL数据库每行数据不能超过65535字节,意味着:
- 如使用utf8字符集(每个字符3字节),则单表字段VARCHAR总和不能超21845;
- 如使用utf8mb4字符集(每个字符4字节),则单表字段VARCHAR总和不能超16383;
- 而Oracle等数据库则无此限制(意味着原库单表字段VARCHAR总和超过21845),此时转MySQL会直接报错
- 此问题常见于表单动态表(formmain_xxx),稍微复杂一点的表单即会遇到
- 此问题是数据库架构决定,应用层面无优化方案,如要解决,就必须人工调整、拆分表单,成本周期较长
注意:如果要进行转库,比如原来是oracle转成TDSQL的PG模式,那么必须按照我们PG初始化sql文件中的字段类型,否则将会有很大问题,如果厂商的转库工具不支持转库过程对目标数据库字段类型进行映射修改,建议提前向客户暴露风险(JSFW-2024-02263流程的客户使用腾讯转库工具无法直接调整字段类型,后期维护成本特别大)
例如: 客户原来oracle数据库中字段类型是NUMERIC,不能直接转成NUMERIC类型,需要按我们文档要求或初始化sql文件中转为对应的字段类型
MySQL | ORACLE | SQLSERVER | POSTGRESQL | JAVA POJO类型 | 场景 |
---|---|---|---|---|---|
BIGINT | INTEGER | BIGINT | INT8 | java.lang.Long | 主键 |
DATE | DATE | DATETIME | TIMESTAMP(0) | java.util.Date | 日期 |
DATETIME | DATE | DATETIME | TIMESTAMP(0) | java.util.Date | 日期时间 |
DECIMAL | NUMBER | NUMERIC | NUMERIC | java.lang.Double | 小数 |
INT | INTEGER | INT | INT4 | java.lang.Integer | 整数 |
LONGBLOB | BLOB | IMAGE | BYTEA | java.lang.String | 二进制对象 |
LONGTEXT | CLOB | NTEXT | TEXT | java.lang.String | 大文本 |
SMALLINT | NUMBER(4) | SMALLINT | INT2 | java.lang.Integer | 数字枚举 |
VARCHAR | VARCHAR2 | NVARCHAR | VARCHAR | java.lang.String | 文本 |
# 3 TDSQL MySQL版部署维护参考
# 3-1 TDSQL MySQL版基础信息
TDSQL MySQL版(InnoDB引擎)数据库参数信息如下:
数据库url格式=jdbc:mysql://127.0.0.1:3306/v3x?autoReconnection=true
JDBC驱动名driverClassName=com.mysql.jdbc.Driver
JDBC连接获取数据库名DatabaseMetaData.getDatabaseProductName()=MySQL
驱动jar:使用TDSQL官方驱动
TDSQL MySQL版数据库参数配置要求:
- 1、数据引擎要求为InnoDB
- 2、MySQL8字符集要求为utf8mb4,也可设置为utf8
- 3、要求不区分表/字段大小写
lower_case_table_names=1
- 4、MySQL8系列,时区默认为美国时区,中国用户若要正常使用,需修改mysql配置文件为
default-time-zone='+8:00'
- 5、MySQL5.7或者以上版本,需要设置数据库日志时间匹配系统时区
log_timestamps=system
# 3-2 协同程序安装
由于TDSQL MySQL版完全兼容MySQL,故全新安装部署就将其当做MySQL数据库,使用信创部署工具一键安装即可。
提前下载最新的协同-N安装程序XinChuang.zip,部署方式可完全参考最新版本的信创部署手册,中间件可以任意选择标准产品支持的版本。
以下为基于Tomcat部署的示例图:
协同服务的后续配置、启停均参考信创部署手册操作即可。
# 3-3 协同程序升级
由于TDSQL MySQL版完全兼容MySQL,故后续协同升级就将其当做MySQL数据库,使用信创部署工具一键升级即可。
协同程序升级具体操作可见对应版本的信创升级手册操作即可。
# 4 TDSQL Oracle模式部署维护参考
# 4-1 TDSQL Oracle模式基础信息
TDSQL PostgreSQL版(Oracle模式)数据库参数信息如下:
数据库url格式=jdbc:tdsql-pg://host:port/database?oracle_compile=true&reWriteBatchedInserts=true
JDBC驱动名driverClassName=com.tencentcloud.tdsql.pg.jdbc.Driver
JDBC连接获取数据库名DatabaseMetaData.getDatabaseProductName()=Oracle
驱动jar:使用TDSQL官方驱动
数据库URL中oracle_compile=true
参数表示使用Oracle兼容模式。
# 4-2 TDSQL Oracle模式客开适配
由于标准产品不认识TDSQL Oracle的JDBC驱动名和数据库URL,故必须定制开发,将其注册到协同系统中!
V9.0SP1适配代码参考:
修改点一:ctp-panda/src/main/java/com/seeyon/ctp/giant/panda/database/url/ValidateContext.java
public static final String OPENGAUSS = "opengauss";
/*客开 在public static final String OPENGAUSS附近增加tdsql的常量 start*/
public static final String TENCENTDB = "tdsql-pg";
/*客开 在public static final String OPENGAUSS附近增加tdsql的常量 end*/
} else if (urlTypeMatches(sourcesUrl, OPENGAUSS)) {
jdbcUrlParamsValidate = new DefaultJdbcUrlParamsValidate(OPENGAUSS);
/*客开 在不支持的数据库类型的else前插入tdssql的支持 start*/
}else if (urlTypeMatches(sourcesUrl, TENCENTDB)) {
jdbcUrlParamsValidate = new DefaultJdbcUrlParamsValidate(TENCENTDB);
/*客开 在不支持的数据库类型的else前插入tdssql的支持 end*/
} else {
throw new RuntimeException("不支持的数据库类型,Url:" + sourcesUrl);
}
修改点二:ctp-jdbcproxydriver/src/main/java/com/seeyon/ctp/monitor/perf/jdbcmonitor/proxyobj/ProxyDriverList.properties
# 在ProxyDriverList.properties最后一行追加如下tdsql的基础信息
com.tencentcloud.tdsql.pg.jdbc.Driver=jdbc:tdsql-pg://host:port/database?oracle_compile=true&reWriteBatchedInserts=true
修改点三:ctp-panda/src/main/java/com/seeyon/ctp/giant/panda/database/url/jdbcParamsBlackWhiteList.properties
# 在jdbcParamsBlackWhiteList.properties最后一行追加如下tdsql的基础信息
tdsql-pg.white=
tdsql-pg.black=
修改点四:ctp-panda/src/main/java/com/seeyon/ctp/giant/panda/database/url/vendorDriverUrlWhiteList.properties
# 在vendorDriverUrlWhiteList.properties最后一行追加如下tdsql的基础信息
tdsql-pg=
以上完成后,编译打包每个工程的文件。待协同程序部署后,将补丁文件放到对应位置,确保客开程序生效。
# 4-3 协同程序安装
由于标准产品不认识TDSQL Oracle的JDBC驱动名和数据库URL,故无法使用标准产品的信创部署工具一键连接数据库部署。
4-3-1 提前下载最新的协同-N安装程序XinChuang.zip
4-3-2 信创部署工具页面,数据库选择“不初始化数据库”。其余内容按对应版本信创部署手册配置,中间件可以任意选择标准产品支持的版本。
以下为基于Tomcat部署的示例图:
4-3-3 上一步信创部署工具仅仅能部署协同程序和配置中间件信息,无法初始化数据库数据,数据库数据需要手动导入,按如下思路取得数据脚本并导入到TDSQL数据库中:
如果是新客户,需要协同的初始化数据脚本,该脚本存放于XinChuang部署包中,由于本次使用Oracle兼容,则取标准产品对应产品线的Oracle初始化脚本,位置参考:XinChuang\deploytools\file\sql\init\A8N-2\Oracle\A8N-2_ALL_IN_ONE_ORACLE.SQL
。注意:示例目录是A8N-2(多组织版)的脚本。
如果是老客户,涉及数据库转库迁移到TDSQL,这个工作全部由数据库厂商完成。
4-3-4 协同数据导入数据库后,参考如下方式在中间件下配置数据库的连接信息:
首先,放置找数据库厂商获取相匹配的驱动jar,将驱动jar放置到信创中间件lib目录下(金蝶是放域lib下,宝兰德放实例lib下)
随后,在信创中间件控制台的JVM配置页面增加一行配置:-Djdbcproxydriver.driverclass=com.tencentcloud.tdsql.pg.jdbc.Driver
,保存后重启一次中间件使配置生效:
再然后,在信创中间件控制台的JDBC数据源配置按如下要求设置:
- 名称:必须是
jdbc/ctpDataSource
- 资源类型:默认java.sql.Driver(有的叫DataSource)
- 数据库驱动类名:必须填写
com.seeyon.ctp.monitor.perf.jdbcmonitor.proxyobj.JMProxyDriver
- 数据库连接URL:参考
jdbc:tdsql-pg://host:port/database?oracle_compile=true&reWriteBatchedInserts=true
(必须含oracle_compile=true
参数,这个代表走Oracle) - 数据库驱动路径:不用选择,确保驱动放置到信创中间件对应lib下即可
- 主机名、端口、数据库名、用户名、密码根据实际情况填写
注:如果是Tomcat中间件,则通过ApacheJetspeed\conf\SeeyonConfig.sh
协同应用配置器配置数据库连接:
- 数据库可以选择Oracle,先进行基础数据库信息配置保存
- 保存后到协同程序的
\base\conf\datasourceCtp.properties
进行调整,调整数据库驱动类等信息为TDSQL
4-3-5 将“TDSQL Oracle模式客开适配”章节的客开代码经过编译后,放置到协同OA程序目录对应位置。
4-3-6 以上完成后,继续参考信创部署手册检查其它配置,如无问题,则参考手册发布seeyon应用,测试功能是否正常。
# 4-4 协同程序升级
信创部署工具支持标准适配的数据库升级,但TDSQL Oracle模式标准不支持,故目前无法直接升级协同程序。
所有涉及协同升级的项目,需要单独报客开价格,通过修改升级工具来进行个性化定制升级!
# 5 TDSQL PG模式部署维护参考
# 5-1 TDSQL PG模式基础信息
TDSQL PostgreSQL版(PG模式)数据库参数信息如下:
数据库url格式=jdbc:tdsql-pg://host:port/database?reWriteBatchedInserts=true
JDBC驱动名driverClassName=com.tencentcloud.tdsql.pg.jdbc.Driver
JDBC连接获取数据库名DatabaseMetaData.getDatabaseProductName()=PostgreSQL
驱动jar:使用TDSQL官方驱动
TDSQL PG兼容模式和Oracle兼容模式参数对比相差无几,PG兼容模式仅仅URL不含oracle_compile=true
参数。
# 5-2 TDSQL PG模式客开适配
由于PG模式和Oracle模式参数几乎一致,故客开代码可以完全参考“Oracle模式客开适配”章节适配(仅涉及数据库URL部分,不要包含oracle_compile=true
参数即可)。
# 5-3 协同程序安装
由于PG模式和Oracle模式参数几乎一致,故协同程序的安装步骤可完全参考Oracle模式下的协同程序安装。仅涉及数据库URL部分,不要包含oracle_compile=true
参数即可。
# 5-4 协同程序升级
信创部署工具支持标准适配的数据库升级,但TDSQL PG模式标准不支持,故目前无法直接升级协同程序。
所有涉及协同升级的项目,需要单独报客开价格,通过修改升级工具来进行个性化定制升级!
快速跳转
