首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >hhdb数据库介绍(9-25)

hhdb数据库介绍(9-25)

原创
作者头像
恒辉信达
修改2025-03-12 10:54:39
修改2025-03-12 10:54:39
1140
举报
文章被收录于专栏:mysqlmysql

计算节点参数说明

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填写中心机房所有计算节点信息。

代码语言:xml
复制
<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参数配置如下:

代码语言:xml
复制
<property name="idleTimeout">28800</property><!-- 前端空闲连接超时时间,单位:秒-->

参数作用:

此参数为检测前端空闲连接超时时间,当前端连接处于"sleep"状态的"Time"超过设定值,计算节点会关闭该空闲连接。当参数设置为0时,代表当前前端空闲连接永不超时。

为方便演示,测试中设定该值为60秒。

代码语言:bash
复制
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会提示已断开连接,并尝试重连,最终重连成功:

代码语言:bash
复制
mysql> 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参数配置:

代码语言:xml
复制
<property name="instanceReadOnly">0</property><!-- 是否开启只读实例,默认不开启(Enable instance readonly or not) -->

参数作用:

此参数控制是否开启计算节点实例级别只读,开启后服务端可提供只读服务,一般用于备计算节点类型,使其承担部分只读服务以作抽取数据分析所用。计算节点正常运行的情况下,可直接在管理端执行online_readonly命令开启只读服务,也可直接执行online_readwrite命令关闭只读开启可读写操作(计算节点实例只读在主备模式下等同offline,集群模式下可使其释放可写操作),开启instanceReadOnly后的计算节点只能执行DQL、set会话级参数以及show等非写操作。

例如:计算节点开启instanceReadOnly后的DDL操作:

代码语言:bash
复制
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是否生效

参数设置:

代码语言:xml
复制
<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如下:

代码语言:bash
复制
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是否生效

参数设置:

代码语言:xml
复制
<property name="ignoreSetGlobalVariables">false</property><!--   忽略设置全局参数(ignore set global variables)   -->

参数作用:

ignoreSetGlobalVariables参数开启,通过计算节点修改全局表参数,直接返回OK,但实际未生效。

参数为false时禁止设置全局变量:

参数为true时设置全局变量执行成功,但不生效(当前兼容命令可以执行):

ignoreXaRu

参数说明:

Property

Value

参数值

ignoreXaRu

是否可见

参数说明

设置为true时忽略XA模式下READ-UNCOMMITTED隔离级别的设置报错

默认值

false

Reload是否生效

参数设置:

代码语言:xml
复制
<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.

代码语言:bash
复制
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,在该环境下执行语句:

代码语言:bash
复制
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查询速度。例如:

代码语言:xml
复制
<property name="joinBatchSize">3</property><!---JOIN等值查询时每批量转成IN查询的记录数 -->

此时执行:

代码语言:xml
复制
select b.* from customer_auto_1 a join customer_auto_3 b on a.id=b.id where a.postcode=123456;

查看general_log实际执行效果如下:

代码语言:xml
复制
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_alias_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语句执行完后临时文件自动删除。

代码语言:bash
复制
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查询速度。

代码语言:xml
复制
<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。

代码语言:xml
复制
select * from bn_a_Jwy as a inner join bn_b_jwy as b on a.a=b.a limit 9000;

查看实际general_log执行效果:

代码语言:bash
复制
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是否生效

参数设置:

代码语言:xml
复制
<property name="joinThreadConcurrency">5</property><!-- 大数据量count from innerjoin时的并发处理线程个数 -->

参数作用:

应用于count from innerjoin的场景。控制大数据量count from innerjoin时的并发处理线程个数。

keyStore

参数说明:

Property

Value

参数值

keyStore

是否可见

参数说明

用于TLS连接的数据证书.jks文件的路径

默认值

/server.jks

Reload是否生效

参数设置:

代码语言:xml
复制
<property name="keyStore">/server.jks</property><!-- 指定用于TLS连接的数据证书.jks文件的路径 -->

参数作用:

用于设置计算节点是允许使用SSL安全认证方式连接时,其使用的证书存放的位置,需要配合enableSSL、keyStorePass参数一起使用。

keyStorePass

参数说明:

Property

Value

参数值

keyStorePass

是否可见

参数说明

指定用于TLS连接的数据证书.jks文件的密码

默认值

BB5A70F75DD5FEB214A5623DD171CEEB

Reload是否生效

参数设置:

代码语言:xml
复制
<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天,则客户端提示锁超时。

代码语言:xml
复制
<property name="lockWaitTimeout">31536000</property> <!-- 元数据锁超时时间 -->

session A执行:

session B执行:等待超过lockWaitTimeout设置参数值,则给出如下提示:

loginRetryTimes

参数说明:

Property

Value

参数值

loginRetryTimes

是否可见

参数说明

账户登录失败重试次数限制

默认值

0

最小值

0

最大值

100

Reload是否生效

参数设置:

代码语言:xml
复制
<property name="loginRetryTimes">0</property><!--账户登录失败重试次数限制(Account login failure retry limit) -->

参数作用:

为防止数据库访问账号被暴力破解,可通过该参数限制同一账户短时间内登录失败重试次数,默认为0不限制。当30S内,同一用户,在user@ip中ip范围之内的主机,连续登录失败次数超过设置的次数后,则账号禁用5分钟,禁用期间不增加计数,5分钟之后自动解除限制重新计数。禁用时计算节点会返回错误提示:

代码语言:bash
复制
ERROR 1045 (HY000): Account is locked for user '<当前用户名>'

目前仅限制3323端口,3325不做限制。可通过输入正确用户密码后,进入3325端,进行以下用户解除禁用的命令:

代码语言:bash
复制
unlock account '当前用户名'@'用户名所对应的主机';

执行后立即解除账号的禁用,并重新计数。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 计算节点参数说明
    • idcId & idcNodeHost
    • idleTimeout
    • instanceReadOnly
    • inplaceOnlineDdlTakesPrecedence
    • ignoreSetGlobalVariables
    • ignoreXaRu
    • joinable
    • joinBatchSize
    • joinCacheSize
    • joinLoopSize
    • joinThreadConcurrency
    • keyStore
    • keyStorePass
    • lockWaitTimeout
    • loginRetryTimes
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档