计算节点参数说明
secureFilePriv
参数说明:
Property | Value |
---|---|
参数值 | secureFilePriv |
是否可见 | 否 |
参数说明 | Load data或into outfile时文件的本地读取/写入路径(绝对路径) |
默认值 | 空 |
Reload是否生效 | 是 |
参数设置:
server.xml中secureFilePriv参数如下配置:
<property name="secureFilePriv"></property><!-- Load data或into outfile时文件的本地读取/写入路径(绝对路径),为空时则默认为程序目录下的HotDB-TEMP子目录 -->
参数作用:
Load data或into outfile时文件的本地读取/写入路径(绝对路径),为空时则默认为程序目录下的HotDB-TEMP子目录,配置路径后,无论Load data或into outfile时是否指定路径,均以配置路径为准。
例:secureFilePriv配置路径为/usr/local/yds/
root@127.0.0.1:(none) 5.7.35 03:44:27> use hotdb
Database changed
root@127.0.0.1:hotdb 5.7.35 03:44:30> SELECT * FROM table8 INTO OUTFILE 'data8.txt' FIELDS TERMINATED BY ',' lines terminated by '/n';
Query OK, 3 rows affected (0.09 sec)
已配置路径时,Into outfile和load data都会使用已配置的路径,手动指定路径和配置路径不一致时以配置路径为准
使用非计算节点服务器连接计算节点load data时,可使用load data local infile来导入本地文件,如:
计算节点服务器为192.168.240.142,需要导入的文件在192.168.210.134服务器的/data/目录下,使用192.168.210.134连接192.168.240.142计算节点做load data
semiJoinToInThreshold
参数说明:
Property | Value |
---|---|
参数值 | semiJoinToInThreshold |
是否可见 | 否 |
参数说明 | 基于semi-join类型的相关子查询可以转换为IN类型的非相关子查询的场景下,若同时满足内查询没有其他where条件,且缓存的内表行数大于该参数值时,不对其进行转换 |
默认值 | 5000 |
最小值 | 0 |
最大值 | / |
Reload是否生效 | 是 |
参数设置:
server.xml中serverId参数如下配置:
<property name="semiJoinToInThreshold"></property><!-- 如果semi-join类型的相关子查询可以转换为IN类型的非相关子查询,如果内查询没有其他where条件,且缓存的内表行数大于参数值时,不对其进行转换 -->
参数作用:
基于semi-join类型的相关子查询可以转换为IN类型的非相关子查询的场景下,若同时满足内查询没有其他where条件,且缓存的内表行数大于该参数值时,不对其进行转换
serverId
参数说明:
Property | Value |
---|---|
参数值 | serverId |
是否可见 | 是 |
参数说明 | 集群节点编号1-N(节点数),集群内唯一 |
默认值 | 1 |
Reload是否生效 | 否 |
参数设置:
server.xml中serverId参数如下配置:
<property name="serverId">1</property><!-- 集群节点编号1-N(节点数),集群内唯一 -->
参数作用:
用来区分集群里不同计算节点的ID值,该参数设置需从1开始连续且不重复,若设置重复会导致集群启动异常。
serverPort & managerPort
参数说明:
Property | Value |
---|---|
参数值 | serverPort |
是否可见 | 是 |
参数说明 | 服务端口 |
默认值 | 3323 |
Reload是否生效 | 否 |
Property | Value |
---|---|
参数值 | managerPort |
是否可见 | 是 |
参数说明 | 管理端口 |
默认值 | 3325 |
Reload是否生效 | 否 |
参数作用:
服务端口用于登录计算节点执行数据操作语句。
管理端口用来监控计算节点服务信息及监控统计信息,还可执行相关的计算节点管理控制命令。
showAllAffectedRowsInGlobalTable
参数说明:
Property | Value |
---|---|
参数值 | showAllAffectedRowsInGlobalTable |
是否可见 | 是 |
参数说明 | 全局表IDU语句是否显示所有节点中AffectedRows的总和 |
默认值 | false |
Reload是否生效 | 是 |
参数作用:
showAllAffectedRowsInGlobalTable参数设置为true后,全局表执行insert,delete,update相关的SQL语句,结果将显示所有影响到的行数总和。
例如:全局表join_c06_ct关联8个节点,执行该条SQL语句实际数据更新1条,将该参数设置为true时,结果将显示影响到的行数为8(即:更新行数*影响节点数)。
mysql> delete from join_us06_ct where id = 8;Query OK, 8 rows affected (0.01 sec)mysql> update join_us06_ct set e = 'y' where id =7;Query OK, 8 rows affected (0.04 sec)
Rows matched: 8 Changed: 8 Warnings: 0mysql> insert into join_us06_ct values (8,6,1.3,1.4,'y','u',now(),now(),2017);Query OK, 8 rows affected (0.01 sec)
Records: 8 Duplicates: 0 Warnings: 0
将该参数设置为false时,只显示影响的行数,有如下提示:
mysql> update join_us06_ct set e = 'm' where id =4;Query OK, 1 rows affected (0.10 sec)
Rows matched: 1 Changed: 1 Warnings: 0
skipDatatypeCheck
参数说明:
Property | Value |
---|---|
参数值 | skipDatatypeCheck |
是否可见 | 否 |
参数说明 | 控制是否跳过表结构中对列数据类型的校验 |
默认值 | false |
Reload是否生效 | Y |
参数设置:
server.xml中skipDatatypeCheck参数
<property name="skipDatatypeCheck">true</property>
参数作用:
对中间件服务器执行CREATE、ALTER语句时,是否校验表中非分片字段是否包含DOUBLE,FLOAT,REAL的数据类型。
例如:
mysql> alter table skipDatatypeCheck add(phone double(10,3));
skipDatatypeCheck=false:
mysql> alter table skipDatatypeCheck add(phone double(10,3));
ERROR 1064 (HY000): Column type:'DOUBLE' is forbidden, you could change column:'PHONE' to type 'DECIMAL'
skipDatatypeCheck=true:
mysql> alter table skipDatatypeCheck add(phone double(10,3));
Query OK, 0 rows affected (0.23 sec)
socketBacklog
参数说明:
Property | Value |
---|---|
参数值 | socketBacklog |
是否可见 | 否 |
参数说明 | 服务端Socket backlog |
默认值 | 1000 |
最小值 | 1000 |
最大值 | 4000 |
Reload是否生效 | 否 |
参数设置:
<property name="socketBacklog">1000</property><!-- 服务端Socket backlog(单位个) -->
参数作用:
服务端socket处理客户端socket连接是需要一定时间的。ServerSocket有一个队列,存放还没有来得及处理的客户端Socket,这个队列的容量就是backlog的含义。如果队列已经被客户端socket占满了,如果还有新的连接过来,那么ServerSocket会拒绝新的连接。也即合适的backlog是为了保证队列有一定容量,提高应对瞬间突发大量连接请求的能力,不因瞬时性的队列太小而直接拒绝连接。
sqlTimeout
参数说明:
Property | Value |
---|---|
参数值 | sqlTimeout |
是否可见 | 是 |
参数说明 | sql执行超时时间(秒) |
默认值 | 3600 |
最小值 | 1 |
最大值 | 28800 |
Reload是否生效 | Y |
参数作用:
计算节点从往存储节点发送SQL到接收完SQL执行结果的最大时间(包括单库和跨库)。若超过设置时间,会提示执行超时。
SQL执行时间超过设置时间时,会有如下提示:
mysql> select a.*,b.*,c.* from customer_auto_3 a join customer_auto_1 b on a.postcode=b.postcode join customer_auto_2 c on a.provinceid=c.provinceid where c.provinceid in (12,15) and b.province !='anhui' group by a.postcode order by a.birthday,a.provinceid,b.birthday,c.postcode limit 1000;
ERROR 1003 (HY000): query timeout, transaction rollbacked automatically and a new transaction started automatically
sslUseSM4
参数说明:
Property | Value |
---|---|
参数值 | sslUseSM4 |
是否可见 | 否 |
参数说明 | 是否支持国密算法 |
默认值 | false |
Reload是否生效 | true |
参数设置:
server.xml中sslUseSM4参数如下配置:
<property name="sslUseSM4">true</property><!--是否支持国密算法 -->
参数作用:
在server.xml中打开enableSSL和sslUseSM4开关,可以使客户端访问计算节点的过程处于国密验证的加密状态。
该功能对于用户来说只能通过抓包查看,示例:抓包可见TLS握手包中存在HHDB Server国密SM4定义的加密套件编号:0xff01,说明SM4加解密套件已生效。
statisticsUpdatePeriod
参数说明:
Property | Value |
---|---|
参数值 | statisticsUpdatePeriod |
是否可见 | 是 |
参数说明 | 命令统计持久化周期,单位:毫秒 |
默认值 | 0 不持久化 |
最小值 | 0 |
最大值 | 3600000 |
Reload是否生效 | Y |
参数作用:
命令统计信息持久化到配置库的周期,单位:毫秒。
若设置为0,程序异常退出不会持久化,若配置的值大于0,则可以定时持久化到数据库,重启也能累计。
在客户端执行SQL语句,会把相关命令统计在配置库中。当设置为0时,则不统计到配置库。
mysql> use test_ctDatabase changedmysql> select * from tid;Empty set (0.03 sec)
skipFTWRLAndUnlockTables
参数说明:
Property | Value |
---|---|
参数值 | skipFTWRLAndUnlockTables |
是否可见 | 否 |
参数说明 | 控制是否禁用FLUSH,LOCK TABLE,UNLOCK TABLE命令 |
默认值 | 0 |
Reload是否生效 | 是 |
参数设置:
通过该参数控制是否禁用FLUSH,LOCK TABLE,UNLOCK TABLE命令,当前主要用于兼容mydumper,默认0,返回报错:
<property name=" skipFTWRLAndUnlockTables ">0</property><!--对FTWRL语句的响应方式的开关,0/1,默认0,返回报错 -->
参数作用:
参数为0时,FLUSH,LOCK TABLE,UNLOCK TABLE命令禁用:
参数为1时,FLUSH,LOCK TABLE,UNLOCK TABLE命令可以执行:
strategyForRWSplit
参数说明:
Property | Value |
---|---|
参数值 | strategyForRWSplit |
是否可见 | 是 |
参数说明 | 是否开启读写分离 |
默认值 | 0 |
Reload是否生效 | 是 |
参数作用:
参数设置为0时,代表不开启读写分离,全部读主机。
mysql> select * from ss order by id;
+----+--------+
| id | a |
+----+--------+
| 1 | master |
| 2 | master |
| 3 | master |
| 4 | master |
| 5 | master |
+----+--------+
5 rows in set (0.00 sec)
参数设置为1时,代表可分离的读请求发往所有可用存储节点,根据设置的从机读比例,读取从机或主机。
mysql> select * from ss;
+----+--------+
| id | a |
+----+--------+
| 1 | master |
| 2 | master |
| 3 | master |
| 4 | slave |
| 5 | slave |
+----+--------+
5 rows in set (0.00 sec)
参数设置为2时,代表可分离的读请求发往可用备存储节点,事务外的读请求全部发往备存储节点,事务内的读请求发往主存储节点。
- 事务外:
mysql> select * from ss;
+----+-------+
| id | a |
+----+-------+
| 1 | slave |
| 2 | slave |
| 3 | slave |
| 4 | slave |
| 5 | slave |
+----+-------+
5 rows in set (0.00 sec)
- 事务内:
mysql> select * from ss order by id;
+----+—-------+
| id | a |
+----+—-------+
| 1 | master |
| 2 | master |
| 3 | master |
| 4 | master |
| 5 | master |
+----+—-------+
5 rows in set (0.00 sec)
参数设置为3时,代表事务中发生写前的读请求发往可用备存储节点。事务外的读请求发往可用备存储节点。
mysql> beginQuery OK, 0 row affected (0.00 sec)mysql> select * from ss;
+--------+-------+
| id | a |
+--------+-------+
| 4 | slave |
| 5 | slave |
| 600004 | write |
| 600007 | write |
| 600013 | write |
| 1 | slave |
| 2 | slave |
| 3 | slave |
+--------+-------+
8 rows in set (0.00 sec)mysql> insert into ss values(null,'write');Query OK, 0 row affected (0.01 sec)
mysql> select * from ss;
+--------+--------+
| id | a |
+--------+--------+
| 1 | master |
| 2 | master |
| 3 | master |
| 600014 | write |
| 4 | master |
| 5 | master |
| 600004 | write |
| 600007 | write |
| 600013 | write |
+--------+--------+
9 rows in set (0.00 sec)
subInnerFilterThreshold
参数说明:
Property | Value |
---|---|
参数值 | subInnerFilterThreshold |
是否可见 | 否 |
参数说明 | 相关子查询内查询使用分组过滤时,如果外查询行数小于参数值,内查询将额外使用外查询的数据进行过滤 |
默认值 | 200 |
最小值 | 0 |
最大值 | 50000 |
Reload是否生效 | 是 |
参数设置:
<property name="subInnerFilterThreshold">false</property><!-- 相关子查询内查询使用分组过滤时,如果外查询行数小于参数值,内查询将额外使用外查询的数据进行过滤 -->
参数作用:
控制内查询是否额外使用外查询的数据进行过滤。
switchByLogInFailover
参数说明:
Property | Value |
---|---|
参数值 | switchByLogInFailover |
是否可见 | 否 |
参数说明 | 控制故障切换时是否由节点下各存储节点Master_Log_File位置决定切换优先级 |
默认值 | false |
Reload是否生效 | 是 |
参数设置:
<property name="switchByLogInFailover">false</property><!-- 故障切换时根据Read_Master_Log_Pos选择切换优先级 -->
参数作用:
- True状态:故障切换优先通过从库同步速度来确定切换的优先级,具体由Master_Log_File和Read_Master_Log_Pos位置决定,优先取同步速度最快的切换,若所有从机Read_Master_Log_Pos位置相同,则再根据设置的优先级匹配。
- False状态:根据用户的故障切换规则进行切换。
注意
手动切换操作不受该参数控制。
switchoverTimeoutForTrans
参数说明:
Property | Value |
---|---|
参数值 | switchoverTimeoutForTrans |
是否可见 | 是 |
参数说明 | 手动切换时旧有事务等待提交超时时间(ms) |
默认值 | 3000 |
最大值 | 1800000 |
最小值 | 0 |
Reload是否生效 | 是 |
参数设置:
server.xml的switchoverTimeoutForTrans参数设置 如下图:
<property name="switchoverTimeoutForTrans">3000</property>
参数作用:
手动主备切换时将等待已经开启的事务提交,超过此参数配置的时间,还没有发出提交请求的事务会被回滚。
即:在手动执行主备切换前,开启执行事务不提交,然后执行手动切换,在超时时间内提交事务,事务可提交成功。若大于超时则前端连接断开,事务自动回滚。
例如:
-
设置switchoverTimeoutForTrans超时时间36000ms。
-
开启事务执行插入操作,手动执行主备切换,在36000ms内提交事务。提交成功如下:
mysql> begin;Query OK, 0 rows affected (0.00 sec)mysql> insert into TEST_001 values(1);Query OK, 0 rows affected (0.00 sec)mysql> commit;Query OK, 0 rows affected (0.00 sec)mysql> select * from TEST_001;+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.01 sec)
提交事务后查询到id=1
- 开启事务执行插入操作,手动执行主备切换,超过36000 ms事务未提交,由于提交超时,事务回滚如下:
mysql> begin;Query OK, 0 rows affected (0.00 sec)mysql> insert into TEST_001 values(2);Query OK, 0 rows affected (0.00 sec)
一分钟后执行查询语句:
mysql> select * from TEST_001;ERROR 2013 (HY000): Lost connection to MySQL server during query
ERROR 2016 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 40672
Current database: test_jzl
重新登录后查询,发现事务没有提交:
mysql> select * from TEST_001;+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.01 sec)
switchSlaveMasterInFailover
参数说明:
Property | Value |
---|---|
参数值 | switchSlaveMasterFailover |
是否可见 | 否 |
参数说明 | 控制当前主库切换至其他可用从库时,其他关联从库是否同步CHANGE MASTER到接管服务的新主库 |
默认值 | 1 |
Reload是否生效 | 是 |
参数设置:
<property name="switchSlaveMasterFailover">1</property><!-- 控制当前主库切换至其他可用从库时,其他关联从库是否同步CHANGE MASTER到接管服务的新主库 -->
参数作用:
参数开启时,发生故障或切换的存储节点对象如果有级联从库,就将级联从库change master到当前新主上。所有实际复制关系的延迟可通过show @@latency展示,若出现故障则对应的复制关系状态为stopped。可结合数据节点高可用章节了解详情。