当前位置: 首页 > article >正文

hhdb数据库介绍(9-30)

计算节点参数说明

timerExecutor

参数说明:

PropertyValue
参数值timerExecutor
是否可见
参数说明定时器线程数
默认值4
最小值2
最大值8
Reload是否生效

参数设置:

<property name="timerExecutor">4</property><!-- 定时器线程数 -->

参数作用:
参数adaptiveProcessor默认开启,开启时将由计算节点自动适配最大timerExecutor数。登录3325端口,执行show @@threadpool;命令,可查看当前timerExecutor数。

timestampProxy

参数说明:

PropertyValue
参数值timestampProxy
是否可见
参数说明时间代理模式
默认值0
Reload是否生效

参数设置:
timestampProxy参数为0时,代表自动模式,当计算节点检测到存储节点时间差异大于0.5秒时,自动全局代理时间函数。小于0.5秒时,只代理全局表、高精度时间戳和跨节点语句的时间函数。

<property name="timestampProxy">0</property>

参数设置为1时,代表global_table_only,仅全局表模式,计算节点仅代理全局表的时间函数。

<property name="timestampProxy">1</property>

参数设置为2时,代表all,全局模式,计算节点全局代理时间函数。

<property name="timestampProxy">2</property>

参数作用:
该参数用于表上有on update current_timestamp属性或SQL里用时间函数的代理,解决对应场景,insert或update操作可能会导致结果异常以及节点间时间数据存在差值的问题。如果timestampProxy设置为0且时间差异过大或者设置为2时,会大幅影响所有UPDATE语句的执行速度与效率。

unusualSQLMode

参数说明:

PropertyValue
参数值unusualSQLMode
是否可见
参数说明控制unusualSQL输出日志的频率
默认值1
最小值0
最大值2147483647
Reload是否生效

参数设置:
unusualSQLMode属隐藏参数,若要开启,需通过管理平台"更多参数"添加并执行reload操作或者手动添加到server.xml中。参数默认值为1,配置如下:

<property name="unusualSQLMode">1</property><!-- 控制unusualSQL输出日志的频率, 0:记录所有计数器,第一次出现时输出日志;1:记录所有SQL;>1:记录所有计数器,计数器每满N时输出日志; -->

参数作用:

  1. 设置为1时:记录所有unusualSQL类型的日志与计数信息,每触发一次都输出对应日志信息且计数器加1。

日志同时记录计数器和SQL的场景:

  1. 第一次触发时日志:
2021-01-13 14:26:46.564 [INFO] [UNUSUALSQL] [$I-NIOExecutor-7-0] cn.hotpu.hotdb.mysql.nio.a(501) - ERROR 1264:Out of range value for column 'id' at row 1 [frontend:[thread=$I-NIOExecutor-7-0,id=169,user=root,host=192.168.240.142,port=3323,localport=26672,schema=CC]; backend:MySQLConnection [node=2, id=247, threadId=27213, state=idle, closed=false, autocommit=true, host=192.168.240.143, port=3310, database=db01, localPort=58336, isClose:false, toBeClose:false, MySQLVersion:5.7.25]; frontend_sql:insert into success(id,name) values(11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,"lili"); backend_sql:null] [CC.SUCCESS.count]=1
  1. 第二次触发时日志:
2021-01-13 14:27:38.159 [INFO] [UNUSUALSQL] [$I-NIOExecutor-0-0] cn.hotpu.hotdb.mysql.nio.a(501) - ERROR 1264:Out of range value for column 'id' at row 1 [frontend:[thread=$I-NIOExecutor-0-0,id=169,user=root,host=192.168.240.142,port=3323,localport=26672,schema=CC]; backend:MySQLConnection [node=2, id=298, threadId=27230, state=idle, closed=false, autocommit=true, host=192.168.240.143, port=3310, database=db01, localPort=58370, isClose:false, toBeClose:false, MySQLVersion:5.7.25]; frontend_sql:insert into success(id,name) values(11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,"haha"); backend_sql:null] [CC.SUCCESS.count]=2

后续每一次触发该类计数器,对应日志都正常输出。

无日志输出、只在接口统计计数器的场景:

  1. 每一次触发,计数器都正常统计。
mysql> show @@unusualsqlcount;
+--------------+-------------+-------+
| unusual_type | unusual_key | count |
+--------------+-------------+-------+
| TABLE        | CsC.TEST    | 2     |
| SCHEMA       | CC          | 1     |
+--------------+-------------+-------+
  1. 设置为0时:记录所有unusualSQL类型的日志与计数信息,但其日志信息只在第一次出现时输出,后续若再次出现,则只进行个数记录统计并展示在show @@unusualsqlcount结果中。

  2. 第一次触发时日志:

2021-01-13 14:48:55.314 [INFO] [UNUSUALSQL] [$I-NIOExecutor-6-0] cn.hotpu.hotdb.mysql.nio.a(501) - ERROR 1264:Out of range value for column 'id' at row 1 [frontend:[thread=$I-NIOExecutor-6-0,id=106,user=root,host=192.168.240.142,port=3323,localport=27698,schema=CC]; backend:MySQLConnection [node=2, id=262, threadId=27511, state=idle, closed=false, autocommit=true, host=192.168.240.143, port=3310, database=db01, localPort=59424, isClose:false, toBeClose:false, MySQLVersion:5.7.25]; frontend_sql:insert into success(id,name) values(11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,"zhang"); backend_sql:null] [CC.SUCCESS.count]=1
  1. 第二次触发时:无对应日志输出

  2. 第三次触发时:无对应日志输出

后续该类计数器每一次触发,都不再有对应日志输出。

无日志输出、只在接口统计计数器的场景:

  1. 每一次触发,计数器都正常统计。
mysql> show @@unusualsqlcount;
+--------------+-------------+-------+
| unusual_type | unusual_key | count |
+--------------+-------------+-------+
| TABLE        | CC.TEST     | 3     |
| SCHEMA       | CC          | 1     |
+--------------+-------------+-------+
  1. 当该参数设置为N(N>1)时:记录所有unusualSQL类型的日志与计数信息,但其日志信息只在每统计满N时输出一次日志,总出现次数依旧可以通过show @@unusualsqlcount结果查看 (此处以N为3进行测试)

  2. 第一次触发:无对应日志输出

  3. 第二次触发:无对应日志输出

  4. 第三次触发时日志

2021-01-13 15:10:47.953 [INFO] [UNUSUALSQL] [$I-NIOExecutor-4-2] cn.hotpu.hotdb.mysql.nio.a(501) - ERROR 1264:Out of range value for column 'id' at row 1 [frontend:[thread=$I-NIOExecutor-4-2,id=100,user=root,host=192.168.240.142,port=3323,localport=28882,schema=CC]; backend:MySQLConnection [node=2, id=253, threadId=27759, state=idle, closed=false, autocommit=true, host=192.168.240.143, port=3310, database=db01, localPort=60634, isClose:false, toBeClose:false, MySQLVersion:5.7.25]; frontend_sql:insert into success(id,name) values(11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,"log"); backend_sql:null] [CC.SUCCESS.count]=3
  1. 第四次触发:无对应日志输出

后续每当该类计数器统计满3时都会输出对应日志一次。

无日志输出、只在接口统计计数器的场景:

每一次触发,计数器都正常统计。

mysql> show @@unusualsqlcount;
+--------------+-------------+-------+
| unusual_type | unusual_key | count |
+--------------+-------------+-------+
| TABLE        | CC.TEST     | 4     |
| SCHEMA       | CC          | 1     |
+--------------+-------------+-------+

注意
计数器细化到表级别,针对表级别的每个错误号都有个计数器进行统计
日志路径:/usr/local/hhdb/hhdb-server/logs/extra/unusualsql/hotdb-unusualsql.log

url & username & password

参数说明:

PropertyValue
参数值url
是否可见
参数说明配置库地址
默认值jdbcmysql//127.0.0.1:3306/hotdb_config
Reload是否生效
PropertyValue
参数值username
是否可见
参数说明配置库用户名
默认值hotdb_config
Reload是否生效
PropertyValue
参数值password
是否可见
参数说明配置库密码
默认值DRDS_config@2013
Reload是否生效

参数作用:
url,username,password属于配套参数,url是存储计算节点配置信息的配置库路径,username,password属于连接该物理库的用户名密码,该配置库用于存储配置信息。

<property name="url">jdbc:mysql://192.168.200.191:3310/hotdb_config</property><!-- 主配置库地址 -->
<property name="username">hotdb_config</property><!-- 主配置库用户名 -->
<property name="password">DRDS_config@2013</property><!-- 主配置库密码 -->

该用户名和密码需要在实例中创建,并赋予权限方可登录该配置库。用户名和密码均可自定义。

mysql> grant select,insert,update,delete,create,drop,index,alter,create temporary tables,references,super,reload,lock tables,replication slave,replication client on *.* to 'hotdb_config'@'%';

Query OK, 0 row affected (0.00 sec)

root> mysql -uhotdb_config_9 -photdb_config_9 -h127.0.0.1 -P3306

mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 16323
Server version: 5.7.42 HHDB-14.0.0 HHDB Server
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

当启动计算节点,没有配置库高可用且配置库无法连接时,计算节点会间隔3秒重连,直到最终重试超过30分钟仍无法连接,则中断启动:

The last packet set successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
2018-06-12 15:25:56.789 [ERROR] [INIT] [main] HotdbConfig(275) -- no available config datasources. retry in 3 seconds.

usingAIO

参数说明:

PropertyValue
参数值usingAIO
是否可见
参数说明是否使用AIO
默认值0
Reload是否生效

参数设置:

<property name="usingAIO">0</property><!-- 是否使用AIO,是:1,否:0 -->

当参数为0时,计算节点使用的是NIO,标记AIO与NIO互斥。
参数作用:
用于设置当前计算节点是否启用AIO。

AIO:异步非阻塞,服务器实现模式为一个有效请求创建一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,IO方式适用于连接数目多且连接比较长(重操作)的架构。由于目前Linux上AIO的实现尚未完成,计算节点对AIO的优化也远远不如NIO,建议不要开启这个参数。

root> tail -n 300 hotdb.log | grep 'aio'
2018-06-01 13:51:18.961 [INFO] [INIT] [main] j(-1) -- using aio network handler
2018-06-01 13:52:19.644 [INFO] [INIT] [main] j(-1) -- using aio network handler

version

参数说明:

PropertyValue
参数值version
是否可见隐藏
参数说明计算节点对外显示的版本号
默认值与计算节点show @@version的结果同步
Reload是否生效

参数作用:
计算节点对外显示的版本号,可自定义修改,能指定低版本的相关连接协议。

<property name="version">**5.6.1**</property><!-- 版本号 -->

登陆实例时可查看相应版本号:

root> mysql -uct -pct -h127.0.0.1 -P2473

mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 30
Server version:** 5.6.1**-HHDB-14.0.0
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

root@127.0.0.1:(none) 5.6.1-HHDB-14.0.0 04:20:14> select version();
+-----------------------+
| VERSION()             |
+-----------------------+
| 5.6.1-HHDB-14.0.0     |
+-----------------------+
1 row in set (0.03 sec)

注意
当没有配置此参数时:所有存储节点的最低版本号低于或等于计算节点支持的最高版本号时,对外显示所有存储节点中最低的版本号;存储节点的版本号超过计算节点支持的最高版本号时,对外显示计算节点最高支持的协议版本的一个完整版本号。当配置了此参数时,这个参数会改变对外显示的版本号。

versionComment

参数说明:

PropertyValue
参数值versionComment
是否可见隐藏
参数说明计算节点的版本备注信息
默认值(空)
Reload是否生效

参数作用:
计算节点对外显示的版本备注信息,可自定义修改,及配合Version参数使用。如果该参数值为其他字符串,则将原版本备注信息替换为配置的字符串;若不想显示任何备注信息,可配置为空格(实际显示也是空格)。

例如:

配置为空:,连接计算节点:

[root@hotdb]## mysql -uroot -proot -P3323 -h192.168.210.49

mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 235
Server version: 5.7.42 HHDB-14.0.0 HHDB Server
......

配置为空格: ,连接计算节点:

[root@hotdb]## mysql -uroot -proot -P3323 -h192.168.210.49

mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 235
Server version: 5.7.23
......

配置为自定义字符串:hotpu,连接计算节点:

[root@hotdb]## mysql -uroot -proot -P3323 -h192.168.210.49

mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 235
Server version: 5.7.23
......

注意
连接后的status结果及客户端连接计算节点时的提示信息均会同步按照版本备注信息显示。例如:

root@192.168.210.49:(none) 5.7.23 08:41:42> status;
--------------
mysql Ver 14.14 Distrib 5.7.21, for linux-glibc2.12 (x86_64) using EditLine wrapper
Connection id: 444
Current database:
Current user: root@192.168.210.49
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.7.23 
Protocol version: 10
Connection: 192.168.210.49 via TCP/IP
......

VIP & checkVIPPeriod

参数说明:

PropertyValue
参数值VIP
是否可见
参数说明虚拟IP地址
默认值
Reload是否生效
PropertyValue
参数值CheckVIPPeriod
是否可见
参数说明检测VIP周期
默认值500ms
最小值10ms
最大值1000ms
Reload是否生效

VIP与checkVIPPeriod属于配套参数,VIP设置为Keepalived虚拟IP,checkVIPPeriod用于控制虚拟IP的检测频率。当计算节点开启了VIP检测时,如果备状态的计算节点发现VIP存在则自动执行online,如果主状态的计算节点发现VIP不存在则自动offline。该组参数适用于计算节点高可用环境,建议在计算节点主备节点的环境下配置,且需要设置为当前Keepalived的实际虚拟IP,若不设置或者设置错误将不做处理,单计算节点可忽略该参数。
参数设置:
server.xml的VIP参数设置为Keepalived的虚拟IP,CheckVIPPeriod为检测周期,单位ms

<property name="VIP">192.168.220.106</property><!-- 虚拟IP(不填或格式不为IPv4表示此选项为空) -->
<property name="checkVIPPeriod">500</property><!-- 虚拟IP检测周期(如VIP有效,检测VIP周期,单位ms) -->

查看Keepalived的配置脚本:

cat /etc/keepalived/keepalived.conf

确定对应IP:

virtual_ipaddress {
  192.168.220.106/24 dev bond0 label bond0:1
}

参数作用:
用于计算节点高可用的环境中,在root密码有变更的情况下进行高可用切换时根据VIP存在性的方式进行检测与切换,规避修改密码后无法切换的场景:

主计算节点:

2019-12-19 15:08:49.595 [INFO] [EXIT[ FLOW]] [ShutdownHook] cn.hotpu.hotdb.c(691) - begin to exit...
2019-12-19 15:08:49.596 [WARN] [CONNECTION] [ShutdownHook] cn.hotpu.hotdb.net.t(175) - HotDB SocketChannel close due to:System exit
2019-12-19 15:08:49.597 [WARN] [CONNECTION] [ShutdownHook] cn.hotpu.hotdb.net.t(175) - HotDB SocketChannel close due to:System exit
2019-12-19 15:08:49.598 [WARN] [CONNECTION] [ShutdownHook] cn.hotpu.hotdb.net.q(349) - processor close due to:System exit
2019-12-19 15:08:49.598 [WARN] [CONNECTION] [ShutdownHook] cn.hotpu.hotdb.net.q(349) - processor close due to:System exit
2019-12-19 15:08:49.599 [WARN] [CONNECTION] [ShutdownHook] cn.hotpu.hotdb.net.q(349) - processor close due to:System exit

备计算节点:

2019-12-19 15:09:02.911 [INFO] [MANAGER] [Labor-2] cn.hotpu.hotdb.c(2165) - MANAGER online end
2019-12-19 15:09:02.911 [INFO] [MANAGER] [Labor-2] cn.hotpu.hotdb.c(2134) - VIP online start
2019-12-19 15:09:02.911 [INFO] [TIMER] [Labor-2] cn.hotpu.hotdb.c(2148) - CheckVIP timer execute online...
2019-12-19 15:09:03.142 [INFO] [INIT] [$I-NIOREACTOR-1-RW] cn.hotpu.hotdb.c(3594) - persist sequence at abnormal starting server.
2019-12-19 15:09:03.143 [INFO] [INIT] [Labor-7] cn.hotpu.hotdb.c(1300) - start xa recover in starter
2019-12-19 15:09:03.150 [INFO] [INIT] [$I-NIOREACTOR-1-RW] cn.hotpu.hotdb.g.c.a.a.g(205) - wait datanodes synchronizing to recover XA transactions.
2019-12-19 15:09:03.207 [INFO] [INIT] [$NIOREACTOR-6-RW] cn.hotpu.hotdb.g.c.a.a.k(130) - no xa recover result
2019-12-19 15:09:03.249 [INFO] [INIT] [$NIOREACTOR-1-RW] cn.hotpu.hotdb.c(1442) - persist XID at abnormal starting server.
2019-12-19 15:09:03.257 [INFO] [MANAGER] [Labor-7] cn.hotpu.hotdb.a(5360) - Some sharding table have unique key, and the unique key don't contain rule column, you can turn on global unique key according to the actual.
2019-12-19 15:09:03.340 [INFO] [INIT] [Labor-7] cn.hotpu.hotdb.c(1808) - HotDB-Server listening on 3323
2019-12-19 15:09:03.340 [INFO] [INIT] [Labor-7] cn.hotpu.hotdb.c(1809) - ===============================================
2019-12-19 15:09:03.350 [INFO] [WATCHDOG] [Labor-7] cn.hotpu.hotdb.f(197) - Watchdog started.
2019-12-19 15:09:03.712 [INFO] [TIMER] [Labor-2] cn.hotpu.hotdb.c(2150) - CheckVIP timer finish online.
2019-12-19 15:09:03.713 [INFO] [MANAGER] [Labor-2] cn.hotpu.hotdb.c(2165) - VIP online end

waitConfigSyncFinish

参数说明:

PropertyValue
参数值waitConfigSyncFinish
是否可见
参数说明启动时是否等待配置库同步追上
默认值false
Reload是否生效

参数设置:

<property name="waitConfigSyncFinish">true</property><!-- 启动时是否等待配置库同步追上 -->

参数作用:
用于设置启动时是否等待配置库同步追上。默认关闭,启动时若连上主配置库则不等待复制追上,开启开关,当选定的当前配置库配置有复制作为某个实例的从机,且复制存在延迟时的情况下,需要等到当前配置库追上复制,确保当前使用的配置库的数据为最新的数据,才继续启动。

关闭状态:启动时若连上主配置库,则若当前配置库存在延迟的情况下也直接继续启动:

2018-06-01 16:21:14.958 [INFO] [INIT] [main] j(-1) - reading config...
2018-06-01 16:21:15.170 [INFO] [INIT] [main] a(-1) - using config datasource in start up:[id:-1,nodeId:-1 l27.0.0.l:3306/hotdb_config_249 status:l,charset:utf8]
2018-06-01 16:21:15.518 [INFO] [INIT] [main] a(-1) - master config datasource [id:-1,nodeId:-1 l27.0.0.l:3306/hotdb_config_249 status:l,charset:utf8] connect success.
2018-06-01 16:21:16.892 [INFO] [INIT] [main] j(-1) - ===============================================
2018-06-01 16:21:16.893 [INFO] [INIT] [main] j(-1) - HotDB-2.4.9 is ready to startup ...
2018-06-01 16:21:16.894 [INFO] [INIT] [main] j(-1) - Sysconfig params:SystemConfig [ frontwriteQueueSize=2048, serverPort=9993, managerPort=999S, charset=utf8, processors=8, processorExecutor=4, timerExecutor=4, managerExecutor=2, idleTimeout=28800, processorcheckPeriod=1000, dataNodeIdleCheckPeriod=120, dataNodeHeartbeatPeriod=3000, txIsolation=2, processorBufferPool=163840000, processorBufferchunk=16384, enableXA=false, enableHeartbeat=true, sqlTimeout=42100, configDatabase=jdbc:mysql://l27.0.0.l:3306/hotdb_config_249,backConfigDatasource=jdbc:mysql://l27.0.0.l:3306/botdb_config_249, usingAIO=0, hastate=master, cryptMandatory=false, autoIncrement=true, heartbeatPeriod=1, heartbeatTimeoutMs=100, joinable=true, joincachesize=4, errorsPermittedInTransaction=true, strategyForRWSplit=3, deadlockCheckPeriod=0, maxAllowedPacket=64M,viP=nul1,checkVIPPeriod=l600]
2018-06-01 16:21:17.210 [INFO] [INIT] [main] BufferPool(-1) - total buffer:163840000,every chunk bytes:16384,chunk number:10000,every threadLocalMaxNumber:10000
2018-06-01 16:21:17.216 [INFO] [INIT] [main] j(-1) - usinq aio network handler

开启的状态下:

需要等到复制同步后才继续启动

2018-07-12 14:28:52.019 [INFO] [INIT] [$NIOREACTOR-9-RW] XAInitRecoverHandler(125) -- wait for config datasource synchronizing...

waitForSlaveInFailover

参数说明:

PropertyValue
参数值waitForSlaveInFailover
是否可见
参数说明高可用切换是否等待从机追上复制
默认值true
Reload是否生效

参数设置:

<property name="waitForSlaveInFailover">true</property><!---高可用切换是否等待从机追上复制

参数作用:
用于设置高可用中是否等待从机追上复制。

开启状态:

当从机存在复制延迟时,无法切换到从机上, 计算节点会一直检测,等到复制追平才能进行切换:

mysql> show @@latency;
+----+----------------------------+----------------------------+----------+
| dn | info                       |                            | latency  |
+----+----------------------------+----------------------------+----------+
| 4  | 192.168.200.51:3310/phy248 | 192.168.200.51:3310/phy248 | 0 ms     |
| 5  | 192.168.200.51:3311/phy248 | 192.168.200.51:3311/phy248 | 0 ms     |
| 6  | 192.168.200.51:3312/phy248 | 192.168.200.51:3312/phy248 | 19582 ms |
| 7  | 192.168.200.51:3313/phy248 | 192.168.200.51:3313/phy248 | 0 ms     |
+----+----------------------------+----------------------------+----------+
4 rows in set (0.02 sec)

日志能够看到提示不再用故障的主存储节点,并且不会启用没有复制同步追上的存储节点:

2018-06-08 10:36:47.921 [INFO] [FAILOVER] [Labor-1552] j(-1) - slave_sql_running is Yes in :[id:178,nodeId:6 192.168.200.52:3312/phy248 status:1,charset:utf8] during failover of datanode 6
2018-06-08 10:36:48.417 [WARN] [HEARTBEAT] [$NIOConnector] m(-1) - datasoruce 6 192.168.200.51:3312/phy248 init heartbeat failed due to:Get backend connection failed:java.net.ConnectException:connection refused
2018-06-08 10:36:48.418 [WARN] [HEARTBEAT] [$NIOConnector] m(-1) - datasoruce 6 192.168.200.51:3312/phy248 init heartbeat failed due to:Get backend connection failed:cn.hotpu.hotdb.h.l:java.net.connectException: connection refused
2018-06-08 10:36:48.918 [WARN] [HEARTBEAT] [$NIOConnector] m(-1) - datasoruce 6 192.168.200.51:3312/phy248 init heartbeat failed due to:Get backend connection failed:j ava.net.ConnectException: connection refused
2018-06-08 10:36:48.918 [WARN] [HEARTBEAT] [$NIOConnector] m(-1) - datasoruce 6 192.168.200.51:3312/phy248 init heartbeat failed due to:Get backend connection failed:cn.hotpu.hotdb.h.l:java.net.connectException: connection refused
2018-06-08 10:36:48.982 [INFO] [FAILOVER] [Labor-1552] j(-1) - masterLogFile:mysql-bin.000518,readMasterLogFile:mysql-bin.000518,readMasterLogPos:384545127,execMaster LogPos:384512435,relayLogFiTe:mysql-relay-bin.000002,relayLogPos; 248414,secondBehindMaster:19,execLogchanged:true in slave: MySQLConnection [node=6, id=140, threadId=3 15945, state=borrowed, closed=false, autocommit=true, host=192.168.200.52, port=3312, database=phy248, localPort=64694, isClose:false, toBeclose:false]

关闭状态:

当主从存储节点存在复制延迟时,可以直接切换到从机,不再等待复制追上:

2018-06-08 16:19:22.864 [INFO] [FAILOVER] [Labor-1852] bh(-1) -- switch datasource:6 for datanode:6 successfully by Manager.

注意
计算节点调整了master_delay对切换的影响,waitForSlaveInFailover参数(高可用切换是否等待从机追上复制)开启,当切换时检测到有master_delay的延时设置,会自动在追复制前取消,切换成功后恢复延时复制的设置。若取消master_delay后的复制延迟仍大于10s,则不允许切换,master_delay也会恢复之前设置的值。

waitSyncFinishAtStartup

参数说明:

PropertyValue
参数值waitSyncFinishAtStartup
是否可见
参数说明启动时是否等待主存储节点同步追上
默认值true
Reload是否生效

参数设置:

<property name="waitSyncFinishAtStartup">true</property><!-- 启动时是否等待主存储节点同步追上 -->

参数作用:
启动时是否等待主存储节点同步追上,开启开关,启动计算节点时,等待存储节点复制追平,从而保证存储节点数据一致且为最新。

前提条件:

在主存储节点延迟未同步追上的情况下,启动计算节点会提示当前存储节点复制没有同步追上,需要等到复制追上之后再提供服务。

开启开关:启动计算节点时,等待存储节点主从复制追平,从而保证存储节点数据一致且为最新:

2018-06-01 17:15:12.990 [info] [INIT] [$NIOREACTOR-3-RW] k(-1) - masterLogFile:mysql-bin.000667,relayMasterLogFile:mysql-bin.000667,readMasterLogPos:4668659,execMasterLogPos:4555931,relayLogFile:mysql-relay-bin.000004,relayLogPos: 2121597,secondBehindMaster:90,execLogchanged:true in server:MySQLConnection [node=3, id=41, threadId=l7054, state=running, closed=false, autocommit=true, host=192.168.200.52, port=3310, database=db249, localPort=18965, isClose:false, toBeClose:false]
2018-06-01 17:15:12.990 [info] [INIT] [$NIOREACTOR-3-RW] k(-1) - masterLogFile:mysql-bin.000667,relayMasterLogFile:mysql-bin.000667,readMasterLogPos: 4669275,execMasterLogPos:4555931,relayLogFile:mysql-relay-bin.000004,relayLogPos: 2121597,secondBehindMaster:90,execLogchanged:true in server:MySQLConnection [node=3, id=50, threadId=l7084, state=running, closed=false, autocommit=true, host=192.168.200.52, port=3310, database=db249, localPort=20329, isClose:false, toBeClose:false]
2018-06-01 17:15:12.990 [info] [INIT] [$NIOREACTOR-3-RW] k(-1) - masterLogFile:mysql-bin.000667,relayMasterLogFile:mysql-bin.000667,readMasterLogPos: 4670199,execMasterLogPos: 4557471,relayLogFile:mysql-relay-bin.000004,relayLogPos: 2122521,secondBehindMaster:90,execLogchanged:true in server:MySQLConnection [node=3, id=41, threadId=l7054, state=running, closed=false, autocommit=true, host=192.168.200.52, port=3310, database=db249, localPort=18965, isClose:false, toBeClose:false]

关闭开关:无其他异常,可以直接初始化存储节点

2018-06-01 16:21:14.958 [INFO] [INIT] [main] j(-1) - reading config...
2018-06-01 16:21:15.170 [info] [INIT] [main] a(-1) - using config datasource in start up:[id:-1,nodeld:-1 l27.0.0.1:3306/hotdb_config_249 status:1,charset:utf8]
2018-06-01 16:21:15.518 [info] [INIT] [main] a(-1) - master config datasource [id:-1,nodeld:-1 l27.0.0.1:3306/hotdb_config_249 status:1,charset:utf8] connect success.
2018-06-01 16:21:16.892 [info] [INIT] [main] j(-1) - ===============================================
2018-06-01 16:21:16.893 [info] [INIT] [main] j(-1) - HotDB-2.4.9 is ready to startup ...
2018-06-01 16:21:16.894 [info] [INIT] [main] j(-1) - Sysconfig params:SystemConfig [ frontwriteQueueSize=2048, service port=9993, management port=9995, charset=utf8, processors=8, processorExecutor=4, timerExecutor=4, managerExecutor=2, idleTimeout=28800, processorcheckPeriod=1000, dataNodeIdleCheckPeriod=120, dataNodeHeartbeatPeriod=3000, txIsolation=2, processorBufferPool=163840000, processorBufferChunk=16384, enableXA=false, enableHeartbeat=true, sqlTimeout=42100, configDatabase=jdbc:mysql://127.0.0.1:3306/hotdb_config_249,backConfigDatasource=jdbc:mysql://127.0.0.l:3306/hotdb_config_249, usingAIO=o, hastate=master, cryptMandatory=false, autoIncrement=true, heartbeatPeriod=l, heartbeatTimeoutMs=l00, joinable=true, joinCacheSize=4, errorsPermittedInTransaction=true, strategyForRWSplit=3, deadlockCheckPeriod=0, maxAllowedPacket=64M,VIP=null,checkVIPPeriod=1600]
2018-06-01 16:21:17.210 [info] [INIT] [main] BufferPool(-1) - total buffer:163840000,every chunk bytes:16384,chunk number:10000,every threadLocalMaxNumber:1000
2018-06-01 16:21:17.216 [info] [INIT] [main] j(-1) - usinq aio network handler

weightForSlaveRWSplit

参数说明:

PropertyValue
参数值weightForSlaveRWSplit
是否可见
参数说明从机读比例,默认50(百分比)
默认值50(%)
最小值0
最大值100
Reload是否生效

参数设置:
server.xml的weightForSlaveRWSplit参数设置为50:

<property name="weightForSlaveRWSplit">50</property>

参数作用:
weightForSlaveRWSplit和strategyForRWSplit参数属于配套参数,读写分离策略为1(可分离的读请求发往所有可用存储节点)时,从机读比例才有意义。若从机延迟超过可读从库阈值的情况下则读主库。

一主一从的情况下:从机的读取比例默认50%

一主多从情况下,例如一主双从,主的读取比例50%,从机A读取比例25%,从机B读取比例25%。

例如:

主库标识:name=Master

mysql> select * from vrab001;
+----+--------+
| id | name   |
+----+--------+
| 1  | Master |
| 2  | Master |
| 3  | Master |
| 4  | Master |
+----+--------+

备库标识:name=Slave

mysql> select * from vrab001;
+----+-------+
| id | name  |
+----+-------+
| 1  | slave |
| 2  | slave |
| 3  | slave |
| 4  | slave |
+----+-------+

多次执行select查询操作,主从各读50%。

附录

计算节点注意事项

JDBC版本建议

建议JDBC的版本使用mysql-connector-java-5.1.27.jar,最高可兼容到8.0。

JAVA数据库连接池建议

建议连接池使用proxool-0.9。

log4j的日志类型

若开启了日志记录相关参数仍无法找到该日志类型的记录,例如,开启参数recordDDL却无法查看DDL相关的记录,可检查计算节点安装目录/conf目录下的log4j2.xml下,与"特殊SQL记录在另外一个文件"的相关代码中是否有对应日志类型。

<!-- 特殊SQL记录在另外一个文件 -->
<filters>
<MarkerFilter marker="DDL" onMatch="**ACCEPT**" onMismatch="NEUTRAL"></MarkerFilter>
</filters>

以及"不在hotdb.log中记录特殊SQL"的相关代码中不存在对应日志类型:

<!-- 不在hotdb.log中记录特殊SQL -->
<filters>
<MarkerFilter marker="DDL" onMatch="**DENY**" onMismatch="NEUTRAL"></MarkerFilter>
</filters>

Marker所有类型(All Markers):AUTHORITY, BUFFER, CONNECTION, DEADLOCK, EXIT, FAILOVER, HEARTBEAT, HOLD, INIT, INNER, JOIN, MANAGER, ONLINEDDL, RELATIVE, RESPONSE, ROUTE, SQL, SQLSYNTAXERROR, CROSSDNJOIN, UNION, SUBQUERY, MYSQLWARNING, MYSQLERROR, HOTDBWARNING, HOTDBERROR, LIMITOFFSETWITHOUTORDERBY, SQLKEYCONFLICT, SQLUNSUPPORTED, DDL, SQLINTERCEPTED, TIMER, TRANSFER, WATCHDOG。

数据库设计的保留字段

计算节点可根据DNID来显示数据来源的数据节点,故DNID为数据库的保留字段(表结构中请勿使用该字段名称)。

计算节点判断存储节点是否可用,是通过对存储节点hotdb_heartbeat表的操作来判断的,故hotdb_heartbeat作为表名称的保留字。


http://www.kler.cn/a/408594.html

相关文章:

  • RabbitMQ 之 死信队列
  • 微信小程序全局配置:导航栏、下拉刷新与上拉触底设置教程
  • VSCode打开c#项目报错:DotnetAcquisitionTimeoutError
  • mybatis-plus方法无效且字段映射失败错误排查
  • Typora+PicGo+云服务器搭建博客图床
  • 堆优化版本的Prim
  • 【大数据学习 | Spark-Core】详解分区个数
  • strongswan测试流程
  • STM32 UART的DMA与非DMA性能对比
  • LeetCode 135.分发糖果
  • Load-Balanced-Online-OJ(负载均衡式在线OJ)
  • ubuntu16.04在ros使用USB摄像头-解决could not open /dev/video0问题
  • Ubuntu22.04配置强化学习环境及运行相关Demo
  • VMware虚拟机(Ubuntu或centOS)共享宿主机网络资源
  • (免费送源码)计算机毕业设计原创定制:Java+B/S+SSM+Web前端开发技术+IDEA+MySQL+Navicat 有风小院
  • 【热门主题】000060 探索 Windows 11 开发的无限可能
  • 【计算机网络】网段划分
  • clickhouse 分区键的重要性
  • 记一次ES写入优化
  • 对比 MyBatis 批处理 BATCH 模式与 INSERT INTO ... SELECT ... UNION ALL 进行批量插入
  • C++(进阶) 第1章 继承
  • Linux:confluence8.5.9的部署(下载+安装+pojie)离线部署全流程 遇到的问题
  • 嵌入式驱动开发详解2(设备挂载问题)
  • ESP-KeyBoard:基于 ESP32-S3 的三模客制化机械键盘
  • C++ 关于函数模板 详解
  • Java基础面试题04:Iterator 和 ListIterator 的区别是什么?