计算节点参数说明
idcId & idcNodeHost
参数说明:
Property | Value |
---|---|
参数值 | idcId |
是否可见 | 是 |
参数说明 | 机房ID, 1:中心机房,2:容灾机房 |
默认值 | 0 |
Reload是否生效 | 是 |
Property | Value |
---|---|
参数值 | idcNodeHost |
是否可见 | 是 |
参数说明 | 另一个机房的连接信息 |
默认值 | 192.168.200.1:3325,192.168.200.1:3325 |
Reload是否生效 | 是 |
参数作用:
当开启容灾模式后,则需要配置参数idcId和idcNodeHost。idcId配置机房ID,当前默认设置为1表示中心机房,设置为2表示容灾机房。idcNodeHost填写另一个机房的所有计算节点连接信息,配置格式为IP:PORT,计算节点之间以英文逗号分隔,例:192.168.200.186:3325,192.168.200.187:3325。
例如,在中心机房server.xml中设置idcId为1,idcNodeHost填写容灾机房所有计算节点信息;在容灾机房server.xml中设置idcId为2,idcNodeHost填写中心机房所有计算节点信息。
<property name="idcId">2</property><!-- 机房ID, 1:中心机房,2:容灾机房 -->
<property name="idcNodeHost">192.168.220.188:3325,192.168.220.189:3325</property><!-- 另一个机房的连接信息(Computer node info in the other IDC)-->
idleTimeout
参数说明:
Property | Value | ||
---|---|---|---|
参数值 | idleTimeout | ||
是否可见 | 否 | ||
参数说明 | 前端空闲连接超时时间 | ||
默认值 | 28800(s) | ||
最小值 | 0 | ||
最大值 | 31536000 | ||
Reload是否生效 | 是 |
参数设置:
server.xml中idleTimeout参数配置如下:
<property name="idleTimeout">28800</property><!-- 前端空闲连接超时时间,单位:秒-->
参数作用:
此参数为检测前端空闲连接超时时间,当前端连接处于"sleep"状态的"Time"超过设定值,计算节点会关闭该空闲连接。当参数设置为0时,代表当前前端空闲连接永不超市。
为方便演示,测试中设定该值为60秒。
mysql > show processlist;
+----+------+-----------------------+--------------------+---------+------+-----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------------+--------------------+---------+------+-----------+------------------+
| 9 | root | 192.168.220.211:26568 | NULL | Query | 0 | executing | show processlist |
| 7 | ztm | 192.168.220.211:26470 | INFORMATION_SCHEMA | Sleep | 59 | | NULL |
+----+------+-----------------------+--------------------+---------+------+-----------+------------------+
2 rows in set (0.00 sec)
mysql > show processlist;
+----+------+-----------------------+--------------------+---------+------+-----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------------+--------------------+---------+------+-----------+------------------+
| 9 | root | 192.168.220.211:26568 | NULL | Query | 0 | executing | show processlist |
| 7 | ztm | 192.168.220.211:26470 | INFORMATION_SCHEMA | Sleep | 60 | | NULL |
+----+------+-----------------------+--------------------+---------+------+-----------+------------------+
2 rows in set (0.00 sec)
mysql > show processlist;
+----+------+-----------------------+------+---------+------+-----------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------------------+------+---------+------+-----------+------------------+
| 9 | root | 192.168.220.211:26568 | NULL | Query | 0 | executing | show processlist |
+----+------+-----------------------+------+---------+------+-----------+------------------+
1 row in set (0.00 sec)
此时前端连接会话超时输入SQL会提示已断开连接,并尝试重连,最终重连成功:
msyql> show databases;
+--------------------+
| DATABASE |
+--------------------+
| INFORMATION_SCHEMA |
+--------------------+
1 row in set (0.00 sec)
mysql> show databases;
ERROR 2013 (HY000): Lost connection to MySQL server during query
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 10
Current database: INFORMATION_SCHEMA
如果设置成0,则前端空闲连接永不超时,sleep状态的连接Time时间会一直增加。
instanceReadOnly
参数说明:
Property | Value |
---|---|
参数值 | instanceReadOnly |
是否可见 | 是 |
参数说明 | 是否开启计算节点实例级别只读 |
默认值 | 0(不开启) |
Reload是否生效 | 否 |
参数设置:
server.xml中instanceReadOnly参数配置:
<property name="instanceReadOnly">0</property><!-- 是否开启只读实例,默认不开启(Enable instance readonly or not) -->
参数作用:
此参数控制是否开启计算节点实例级别只读,开启后服务端可提供只读服务,一般用于备计算节点类型,使其承担部分只读服务以作抽取数据分析所用。计算节点正常运行的情况下,可直接在管理端执行online_readonly命令开启只读服务,也可直接执行online_readwrite命令关闭只读开启可读写操作(计算节点实例只读在主备模式下等同offline,集群模式下可使其释放可写操作),开启instanceReadOnly后的计算节点只能执行DQL、set会话级参数以及show等非写操作。
例如:计算节点开启instanceReadOnly后的DDL操作:
root@192.168.240.161:(none) 5.7.24 04:21:23> create database test;
ERROR 1289 (HY000): Command CREATE_DATABASE not allowed in Read-Only mode.
inplaceOnlineDdlTakesPrecedence
参数说明:
Property | Value |
---|---|
参数值 | inplaceOnlineDdlTakesPrecedence |
是否可见 | 否 |
参数说明 | 是否onlineDDL语句均优先按照inplace的模式执行 |
默认值 | 1 |
Reload是否生效 | 是 |
参数设置:
<property name="inplaceOnlineDdlTakesPrecedence">1</property><!-- 是否onlineDDL语句均优先按照inplace的模式执行(Whether onlineDDL statements are executed on inplace mode first) -->
参数作用:
控制onlineDDL语句是否优先使用inplace方式执行(若存储节点为8.0版本,则优先使用instant属性执行)。配置为0时,均按原语句执行。配置为1时,所有执行onlineDDL都优先使用inplace的模式执行(即原语句添加algorithm=inplace属性执行),inplace方式不支持的情况下,再自动转换为原有的onlineDDL模式执行。
例如:
1.设置“inplaceOnlineDdlTakesPrecedence”为1。
2.执行onlineDDL,下发到存储节点的SQL如下:
onlineDDL “alter table tablea add column c int;”
通过存储节点的general.log可查看下发到存储节点中的SQL如下:
存储节点版本为5.7时:
ALTER TABLE TABLEA ADD COLUMN C INT, ALGORITHM=INPLACE
存储节点版本为8.0时:
ALTER TABLE TABLEA ADD COLUMN C INT, ALGORITHM=INSTANT
ignoreSetGlobalVariables
参数说明:
Property | Value |
---|---|
参数值 | ignoreSetGlobalVariables |
是否可见 | 否 |
参数说明 | 开启后,设置全局参数直接返回OK |
默认值 | false |
Reload是否生效 | 是 |
参数设置:
<property name="ignoreSetGlobalVariables">false</property><!-- 忽略设置全局参数(ignore set global variables) -->
参数作用:
ignoreSetGlobalVariables参数开启,通过计算节点修改全局表参数,直接返回OK,但实际未生效。
参数为false时禁止设置全局变量:
参数为true时设置全局变量执行成功,但不生效(当前兼容命令可以执行):
ignoreXaRu
参数说明:
Property | Value |
---|---|
参数值 | ignoreXaRu |
是否可见 | 否 |
参数说明 | 设置为true时忽略XA模式下READ-UNCOMMITTED隔离级别的设置报错 |
默认值 | false |
Reload是否生效 | 是 |
参数设置:
<property name="ignoreXaRu">false</property><!-- 设置为true时忽略XA模式下READ-UNCOMMITTED隔离级别的设置报错, 默认为false(Ignore unsupported error message of READ-UNCOMMITTED isolation setting in XA mode when the parameter is set to true, default is false) -->
参数作用:
ignoreXaRu默认为false,设置为true时忽略XA模式下READ-UNCOMMITTED隔离级别的设置报错。
当参数设置为false时,在计算节点服务端执行如下命令,报错:
参数设置为true时,在计算节点服务端执行如下命令,可以执行,但隔离级别的修改实际未生效:
joinable
参数说明:
Property | Value |
---|---|
参数值 | joinable |
是否可见 | 是 |
参数说明 | 是否允许JOIN查询,是:true,否:false |
默认值 | true |
Reload是否生效 | 是 |
参数作用:
该参数可以控制分片表之间的JOIN等,通过关联条件与分片字段的信息,可判断出不是可以直接下发的单库JOIN查询时,相关的JOIN语句是否可执行。在全局表JOIN和垂直分片表JOIN的情况下,这个参数开启不会有对应限制。
将joinable设置为false,在该环境下执行语句,报错ERROR 1064 (HY000): joinable is not configured.
mysql> select * from join_cross_a_jwy a inner join join_cross_b_jwy b on a.adnid between 108 and 110;
ERROR 1064 (HY000): joinable is not configured.
mysql> select a.adept from join_a_jwy a join join_b_jwy b on a.adept=b.bdept limit 5;
ERROR 1064 (HY000): joinable is not configured.
将joinable设置为true,在该环境下执行语句:
mysql> select a.adept from join_a_jwy a join join_b_jwy b on a.adept=b.bdept limit 5;
+-------+
| adept |
+-------+
| aa |
| bb |
| cc |
+-------+
3 rows in set (0.03 sec)
joinBatchSize
参数说明:
Property | Value |
---|---|
参数值 | joinBatchSize |
是否可见 | 是 |
参数说明 | JOIN等值查询时每批量转成IN查询的记录数 |
默认值 | 1000 |
最小值 | 100 |
最大值 | 100000 |
Reload是否生效 | 是 |
参数作用:
跨库有交叉结果集的JOIN等值查询,批量转成IN查询的每批次的最大值,需查询的行数超过设置的值会分多次转成IN。该参数属于JOIN查询优化参数,可以提升JOIN查询速度。例如:
<property name="joinBatchSize">3</property><!---JOIN等值查询时每批量转成IN查询的记录数 -->
此时执行:
select b.* from customer_auto_1 a join customer_auto_3 b on a.id=b.id where a.postcode=123456;
查看general_log实际执行效果如下:
1993 Query SELECT B.`ID`, B.`name`, B.`telephone`, B.`provinceid`, B.`province`, B.`city`, B.`address`, B.`postcode`, B.`birthday`, b.id AS `hotdb_tmp_col_alias_1` FROM customer_auto_3 AS b WHERE B.ID IN **(4064622, 4068449, 4071461)**
1993 Query SELECT B.`ID`, B.`name`, B.`telephone`, B.`provinceid`, B.`province`, B.`city`, B.`address`, B.`postcode`, B.`birthday`, b.id AS `hotdb_tmp_col_alia s_1` FROM customer_auto_3 AS b WHERE B.ID IN **(4043006, 4053408, 4056542)**
...省略更多...
注意
参数值仅作举例说明,不做实际参考。
joinCacheSize
参数说明:
Property | Value |
---|---|
参数值 | joinCacheSize |
是否可见 | 否 |
参数说明 | JOIN缓存的堆外内存占用大小(M) |
默认值 | 32 |
最小值 | 0 |
最大值 | 128 |
Reload是否生效 | 是 |
参数作用:
JOIN操作可使用的直接内存大小,可影响大中间结果集的JOIN的速度。
当JOIN使用的直接内存超过设置值时,将会被临时存放到本地磁盘, JOIN语句执行完后临时文件自动删除。
root> pwd
/usr/local/hhdb-14.0.0/hgdb-server/HHDB-TEMP
You have mail in /var/spool/mail/root
root> ll
-rw-r--r-- 1 root root 8778410 May 9 17:28 positions_5302007528422328273.tmp
-rw-r--r-- 1 root root 141868981 May 9 17:28 row_411809270296834018.tmp
-rw-r--r-- 1 root root 26113612 May 9 18:01 row_4342139033645193593.tmp
joinLoopSize
参数说明:
Property | Value |
---|---|
参数值 | joinLoopSize |
是否可见 | 是 |
参数说明 | 使用BNL算法做JOIN时各节点每批次查询数量 |
默认值 | 1000 |
最小值 | 100 |
最大值 | 10000 |
Reload是否生效 | 是 |
参数作用:
使用BNL算法执行JOIN时各节点每批次下发查询的数量。该参数属于JOIN查询优化参数,可提升JOIN查询速度。
<property name="joinLoopSize">1000</property><!-- 使用BNL算法做JOIN时各节点每批次查询数量 -->
例如: joinLoopSize设置为1000。bn_a_jwy为auto分片表,分片字段为id,bn_b_jwy为match分片表,分片字段为a,bn_c_jwy为auto分片表,分片字段为a,三张表的数据量都为2w。
select * from bn_a_Jwy as a inner join bn_b_jwy as b on a.a=b.a limit 9000;
查看实际general_log执行效果:
1187022 Query SELECT A.id, A.a, A.bchar, A.cdeci, A.dtime FROM bn_a_jwy AS a ORDER BY A.ID LIMIT 1001
1187022 Query SELECT C.id, C.a, C.bchar, C.cdeci, C.dtime FROM bn_c_jwy AS c WHERE C.id IN (0) ORDER BY C.ID LIMIT 0 , 1001
1187022 Query SELECT B.id, B.a, B.bchar, B.cdeci, B.dtime FROM bn_b_jwy AS b WHERE B.a COLLATE utf8_general_ci IN ('d') ORDER BY B.ID LIMIT 0 , 1001 ...省略更多...
joinThreadConcurrency
参数说明:
Property | Value |
---|---|
参数值 | joinThreadConcurrency |
是否可见 | 否 |
参数说明 | 大数据量count from innerjoin时的并发处理线程个数 |
默认值 | 5 |
最小值 | 1 |
最大值 | 128 |
Reload是否生效 | 是 |
参数设置:
<property name="joinThreadConcurrency">5</property><!-- 大数据量count from innerjoin时的并发处理线程个数 -->
参数作用:
应用于count from innerjoin的场景。控制大数据量count from innerjoin时的并发处理线程个数。
keyStore
参数说明:
Property | Value |
---|---|
参数值 | keyStore |
是否可见 | 是 |
参数说明 | 用于TLS连接的数据证书.jks文件的路径 |
默认值 | /server.jks |
Reload是否生效 | 是 |
参数设置:
<property name="keyStore">/server.jks</property><!-- 指定用于TLS连接的数据证书.jks文件的路径 -->
参数作用:
用于设置计算节点是允许使用SSL安全认证方式连接时,其使用的证书存放的位置,需要配合enableSSL、keyStorePass参数一起使用。
keyStorePass
参数说明:
Property | Value |
---|---|
参数值 | keyStorePass |
是否可见 | 是 |
参数说明 | 指定用于TLS连接的数据证书.jks文件的密码 |
默认值 | BB5A70F75DD5FEB214A5623DD171CEEB |
Reload是否生效 | 是 |
参数设置:
<property name="keyStorePass">BB5A70F75DD5FEB214A5623DD171CEEB</property><!-- 指定用于TLS连接的数据证书.jks文件的密码 -->
参数作用:
用于设置计算节点是允许使用SSL安全认证方式连接时,其使用TLS连接的数据证书.jks文件的密码,需要配合配合enableSSL、keyStore参数一起使用。
lockWaitTimeout
参数说明:
Property | Value |
---|---|
参数值 | lockWaitTimeout |
是否可见 | 是 |
参数说明 | 获取元数据锁的超时时间(s) |
默认值 | 31536000 |
Reload是否生效 | 是 |
最大值 | 31536000 |
最小值 | 1 |
参数设置:
lockWaitTimeout此参数指获取元数据锁的超时时间(s),允许值1-31536000s,默认值31536000s,即365天,代表发生元数据锁超时超过365天,则客户端提示锁超时。
<property name="lockWaitTimeout">31536000</property> <!-- 元数据锁超时时间 -->
session A执行:
session B执行:等待超过lockWaitTimeout设置参数值,则给出如下提示:
loginRetryTimes
参数说明:
Property | Value |
---|---|
参数值 | loginRetryTimes |
是否可见 | 是 |
参数说明 | 账户登录失败重试次数限制 |
默认值 | 0 |
最小值 | 0 |
最大值 | 100 |
Reload是否生效 | 是 |
参数设置:
<property name="loginRetryTimes">0</property><!--账户登录失败重试次数限制(Account login failure retry limit) -->
参数作用:
为防止数据库访问账号被暴力破解,可通过该参数限制同一账户短时间内登录失败重试次数,默认为0不限制。当30S内,同一用户,在user@ip中ip范围之内的主机,连续登录失败次数超过设置的次数后,则账号禁用5分钟,禁用期间不增加计数,5分钟之后自动解除限制重新计数。禁用时计算节点会返回错误提示:
ERROR 1045 (HY000): Account is locked for user '<当前用户名>'
目前仅限制3323端口,3325不做限制。可通过输入正确用户密码后,进入3325端,进行以下用户解除禁用的命令:
unlock account '当前用户名'@'用户名所对应的主机';
执行后立即解除账号的禁用,并重新计数。
标签:25,JOIN,是否,数据库,参数值,参数,hhdb,默认值,节点 From: https://www.cnblogs.com/henghuixinda/p/18576204