[feat]: add MySQL R2DBC query engine support (#4074)

Signed-off-by: Logic <zqr10159@dromara.org>
Co-authored-by: Duansg <siguoduan@gmail.com>
Co-authored-by: Tomsun28 <tomsun28@outlook.com>
This commit is contained in:
Logic
2026-03-21 16:12:17 +08:00
committed by GitHub
co-authored by Duansg Tomsun28
parent 2016b18249
commit 922aa311e0
100 changed files with 4921 additions and 259 deletions
+7 -1
View File
@@ -2,9 +2,15 @@
Suggest the [HertzBeat + GreptimeDB + Postgresql Solution](hertzbeat-postgresql-greptimedb) for the best performance and stability.
Notes:
- MySQL, MariaDB, OceanBase, and TiDB SQL query metrics can use the built-in MySQL-compatible query engine without `mysql-connector-j`.
- If you place `mysql-connector-j` in `ext-lib`, HertzBeat prefers JDBC after restart.
- Oracle and DB2 still require external JDBC driver jars in `ext-lib`.
- Use Postgresql + GreptimeDB as HertzBeat dependent storage -> [HertzBeat+PostgreSQL+GreptimeDB Solution](hertzbeat-postgresql-greptimedb)
- Use Postgresql + VictoriaMetrics as HertzBeat dependent storage -> [HertzBeat+PostgreSQL+VictoriaMetrics Solution](hertzbeat-postgresql-victoria-metrics)
- Use Mysql + VictoriaMetrics as HertzBeat dependent storage -> [HertzBeat+Mysql+VictoriaMetrics Solution](hertzbeat-mysql-victoria-metrics)
- Use Mysql + IoTDB as HertzBeat dependent storage -> [HertzBeat+Mysql+IoTDB Solution](hertzbeat-mysql-iotdb)
- Use Mysql + Tdengine as HertzBeat dependent storage -> [HertzBeat+Mysql+Tdengine Solution](hertzbeat-mysql-tdengine)
@@ -17,10 +17,11 @@
1. Download the hertzbeat-docker-compose installation deployment script file
The script file is located in `script/docker-compose/hertzbeat-mysql-iotdb` link [script/docker-compose](https://github.com/apache/hertzbeat/tree/master/script/docker-compose/ hertzbeat-mysql-iotdb)
2. Add MYSQL jdbc driver jar
2. Optional: add external JDBC driver jars to `ext-lib`
Download the MYSQL jdbc driver jar package, such as mysql-connector-java-8.0.25.jar. https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.25.zip
Copy the jar package to the ext-lib directory.
MySQL-compatible monitoring can use the built-in query engine directly, so `mysql-connector-j` is optional.
If you want HertzBeat to prefer JDBC after restart, place `mysql-connector-j` in `ext-lib`.
Oracle and DB2 still require external JDBC jars in `ext-lib`.
3. Enter the deployment script docker-compose directory, execute
@@ -19,9 +19,10 @@
1. 下载hertzbeat-docker-compose安装部署脚本文件
脚本文件位于代码仓库下`script/docker-compose/hertzbeat-mysql-iotdb` 链接 [script/docker-compose](https://github.com/apache/hertzbeat/tree/master/script/docker-compose/hertzbeat-mysql-iotdb)
2. 添加 MYSQL jdbc 驱动 jar
下载 MYSQL jdbc driver jar, 例如 mysql-connector-java-8.0.25.jar. https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.25.zip
将此 jar 包拷贝放入 ext-lib 目录下.
2. 可选:向 `ext-lib` 添加外部 JDBC 驱动 jar
MySQL 兼容监控现在可以直接使用内置查询引擎,所以 `mysql-connector-j` 不是必需项。
如果你希望 HertzBeat 在重启后优先走 JDBC,可以把 `mysql-connector-j` 放到 `ext-lib`。
Oracle、DB2 这类场景仍然需要把外部 JDBC 驱动放到 `ext-lib`。
3. 进入部署脚本 docker-compose 目录, 执行
@@ -236,6 +236,13 @@ grafana:
password: admin
hertzbeat:
collector:
mysql:
# MySQL-compatible query engine routing for MySQL, MariaDB, OceanBase, and TiDB SQL metrics.
# auto : prefer JDBC only when mysql-connector-j is available from ext-lib, otherwise use the built-in query engine
# jdbc : always use JDBC
# r2dbc : always use the built-in query engine
query-engine: ${HERTZBEAT_COLLECTOR_MYSQL_QUERY_ENGINE:auto}
# Optional virtual-thread overrides. Remove this whole block to use built-in defaults.
vthreads:
enabled: true
@@ -68,6 +68,7 @@ services:
hostname: hertzbeat
restart: always
environment:
HERTZBEAT_COLLECTOR_MYSQL_QUERY_ENGINE: auto
TZ: Asia/Shanghai
LANG: zh_CN.UTF-8
depends_on:
@@ -13,9 +13,14 @@
# See the License for the specific language governing permissions and
# limitations under the License.
Please move external libs to this folder like:
Please move external libs to this folder only when you need external JDBC jars, for example:
ojdbc8-21.5.0.0.jar
orai18n-21.5.0.0.jar
mysql-connector-java-8.0.30.jar
Notes:
- MySQL, MariaDB, OceanBase, and TiDB SQL query metrics can use the built-in MySQL-compatible query engine without `mysql-connector-j`.
- If `mysql-connector-j` is present here, HertzBeat prefers JDBC after restart.
- Oracle and DB2 still require external JDBC jars in `ext-lib`.
@@ -17,10 +17,11 @@
1. Download the hertzbeat-docker-compose installation deployment script file
The script file is located in `script/docker-compose/hertzbeat-mysql-tdengine` link [script/docker-compose](https://github.com/apache/hertzbeat/tree/master/script/docker-compose/hertzbeat-mysql-tdengine)
2. Add MYSQL jdbc driver jar
2. Optional: add external JDBC driver jars to `ext-lib`
Download the MYSQL jdbc driver jar package, such as mysql-connector-java-8.0.25.jar. https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.25.zip
Copy the jar package to the ext-lib directory.
MySQL-compatible monitoring can use the built-in query engine directly, so `mysql-connector-j` is optional.
If you want HertzBeat to prefer JDBC after restart, place `mysql-connector-j` in `ext-lib`.
Oracle and DB2 still require external JDBC jars in `ext-lib`.
3. Enter the deployment script docker-compose directory, execute
@@ -19,9 +19,10 @@
1. 下载hertzbeat-docker-compose安装部署脚本文件
脚本文件位于代码仓库下`script/docker-compose/hertzbeat-mysql-tdengine` 链接 [script/docker-compose](https://github.com/apache/hertzbeat/tree/master/script/docker-compose/hertzbeat-mysql-tdengine)
2. 添加 MYSQL jdbc 驱动 jar
下载 MYSQL jdbc driver jar, 例如 mysql-connector-java-8.0.25.jar. https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.25.zip
将此 jar 包拷贝放入 ext-lib 目录下.
2. 可选:向 `ext-lib` 添加外部 JDBC 驱动 jar
MySQL 兼容监控现在可以直接使用内置查询引擎,所以 `mysql-connector-j` 不是必需项。
如果你希望 HertzBeat 在重启后优先走 JDBC,可以把 `mysql-connector-j` 放到 `ext-lib`。
Oracle、DB2 这类场景仍然需要把外部 JDBC 驱动放到 `ext-lib`。
3. 进入部署脚本 docker-compose 目录, 执行
@@ -233,6 +233,13 @@ grafana:
password: admin
hertzbeat:
collector:
mysql:
# MySQL-compatible query engine routing for MySQL, MariaDB, OceanBase, and TiDB SQL metrics.
# auto : prefer JDBC only when mysql-connector-j is available from ext-lib, otherwise use the built-in query engine
# jdbc : always use JDBC
# r2dbc : always use the built-in query engine
query-engine: ${HERTZBEAT_COLLECTOR_MYSQL_QUERY_ENGINE:auto}
# Optional virtual-thread overrides. Remove this whole block to use built-in defaults.
vthreads:
enabled: true
@@ -67,6 +67,7 @@ services:
hostname: hertzbeat
restart: always
environment:
HERTZBEAT_COLLECTOR_MYSQL_QUERY_ENGINE: auto
TZ: Asia/Shanghai
LANG: zh_CN.UTF-8
depends_on:
@@ -13,9 +13,14 @@
# See the License for the specific language governing permissions and
# limitations under the License.
Please move external libs to this folder like:
Please move external libs to this folder only when you need external JDBC jars, for example:
ojdbc8-21.5.0.0.jar
orai18n-21.5.0.0.jar
mysql-connector-java-8.0.30.jar
Notes:
- MySQL, MariaDB, OceanBase, and TiDB SQL query metrics can use the built-in MySQL-compatible query engine without `mysql-connector-j`.
- If `mysql-connector-j` is present here, HertzBeat prefers JDBC after restart.
- Oracle and DB2 still require external JDBC jars in `ext-lib`.
@@ -17,10 +17,11 @@
1. Download the hertzbeat-docker-compose installation deployment script file
The script file is located in `script/docker-compose/hertzbeat-mysql-victoria-metrics` link [script/docker-compose](https://github.com/apache/hertzbeat/tree/master/script/docker-compose/hertzbeat-mysql-victoria-metrics)
2. Add MYSQL jdbc driver jar
2. Optional: add external JDBC driver jars to `ext-lib`
Download the MYSQL jdbc driver jar package, such as mysql-connector-java-8.0.25.jar. https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.25.zip
Copy the jar package to the ext-lib directory.
MySQL-compatible monitoring can use the built-in query engine directly, so `mysql-connector-j` is optional.
If you want HertzBeat to prefer JDBC after restart, place `mysql-connector-j` in `ext-lib`.
Oracle and DB2 still require external JDBC jars in `ext-lib`.
3. Enter the deployment script docker-compose directory, execute
@@ -19,9 +19,10 @@
1. 下载hertzbeat-docker-compose安装部署脚本文件
脚本文件位于代码仓库下`script/docker-compose/hertzbeat-mysql-victoria-metrics` 链接 [script/docker-compose](https://github.com/apache/hertzbeat/tree/master/script/docker-compose/hertzbeat-mysql-victoria-metrics)
2. 添加 MYSQL jdbc 驱动 jar
下载 MYSQL jdbc driver jar, 例如 mysql-connector-java-8.0.25.jar. https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.25.zip
将此 jar 包拷贝放入 ext-lib 目录下.
2. 可选:向 `ext-lib` 添加外部 JDBC 驱动 jar
MySQL 兼容监控现在可以直接使用内置查询引擎,所以 `mysql-connector-j` 不是必需项。
如果你希望 HertzBeat 在重启后优先走 JDBC,可以把 `mysql-connector-j` 放到 `ext-lib`。
Oracle、DB2 这类场景仍然需要把外部 JDBC 驱动放到 `ext-lib`。
3. 进入部署脚本 docker-compose 目录, 执行
@@ -236,6 +236,13 @@ grafana:
password: admin
hertzbeat:
collector:
mysql:
# MySQL-compatible query engine routing for MySQL, MariaDB, OceanBase, and TiDB SQL metrics.
# auto : prefer JDBC only when mysql-connector-j is available from ext-lib, otherwise use the built-in query engine
# jdbc : always use JDBC
# r2dbc : always use the built-in query engine
query-engine: ${HERTZBEAT_COLLECTOR_MYSQL_QUERY_ENGINE:auto}
# Optional virtual-thread overrides. Remove this whole block to use built-in defaults.
vthreads:
enabled: true
@@ -67,6 +67,7 @@ services:
hostname: hertzbeat
restart: always
environment:
HERTZBEAT_COLLECTOR_MYSQL_QUERY_ENGINE: auto
TZ: Asia/Shanghai
LANG: zh_CN.UTF-8
depends_on:
@@ -13,9 +13,14 @@
# See the License for the specific language governing permissions and
# limitations under the License.
Please move external libs to this folder like:
Please move external libs to this folder only when you need external JDBC jars, for example:
ojdbc8-21.5.0.0.jar
orai18n-21.5.0.0.jar
mysql-connector-java-8.0.30.jar
Notes:
- MySQL, MariaDB, OceanBase, and TiDB SQL query metrics can use the built-in MySQL-compatible query engine without `mysql-connector-j`.
- If `mysql-connector-j` is present here, HertzBeat prefers JDBC after restart.
- Oracle and DB2 still require external JDBC jars in `ext-lib`.
@@ -18,7 +18,13 @@
The script file is located in `script/docker-compose/hertzbeat-postgresql-greptimedb` link [script/docker-compose](https://github.com/apache/hertzbeat/tree/master/script/docker-compose/hertzbeat-postgresql-greptimedb)
2. Enter the deployment script docker-compose directory, execute
2. Optional: add external JDBC driver jars to `ext-lib`
MySQL-compatible monitoring can use the built-in query engine directly, so `mysql-connector-j` is optional.
If you want HertzBeat to prefer JDBC after restart, place `mysql-connector-j` in `ext-lib`.
Oracle and DB2 still require external JDBC jars in `ext-lib`.
3. Enter the deployment script docker-compose directory, execute
`docker compose up -d`
@@ -20,7 +20,12 @@
脚本文件位于代码仓库下`script/docker-compose/hertzbeat-postgresql-greptimedb` 链接 [script/docker-compose](https://github.com/apache/hertzbeat/tree/master/script/docker-compose/hertzbeat-postgresql-greptimedb)
2. 进入部署脚本 docker-compose 目录, 执行
2. 可选:向 `ext-lib` 添加外部 JDBC 驱动 jar
MySQL 兼容监控现在可以直接使用内置查询引擎,所以 `mysql-connector-j` 不是必需项。
如果你希望 HertzBeat 在重启后优先走 JDBC,可以把 `mysql-connector-j` 放到 `ext-lib`。
Oracle、DB2 这类场景仍然需要把外部 JDBC 驱动放到 `ext-lib`。
3. 进入部署脚本 docker-compose 目录, 执行
`docker compose up -d`
@@ -233,6 +233,13 @@ grafana:
password: admin
hertzbeat:
collector:
mysql:
# MySQL-compatible query engine routing for MySQL, MariaDB, OceanBase, and TiDB SQL metrics.
# auto : prefer JDBC only when mysql-connector-j is available from ext-lib, otherwise use the built-in query engine
# jdbc : always use JDBC
# r2dbc : always use the built-in query engine
query-engine: ${HERTZBEAT_COLLECTOR_MYSQL_QUERY_ENGINE:auto}
# Optional virtual-thread overrides. Remove this whole block to use built-in defaults.
vthreads:
enabled: true
@@ -87,6 +87,7 @@ services:
hostname: hertzbeat
restart: always
environment:
HERTZBEAT_COLLECTOR_MYSQL_QUERY_ENGINE: auto
TZ: Asia/Shanghai
LANG: zh_CN.UTF-8
depends_on:
@@ -13,9 +13,14 @@
# See the License for the specific language governing permissions and
# limitations under the License.
Please move external libs to this folder like:
Please move external libs to this folder only when you need external JDBC jars, for example:
ojdbc8-21.5.0.0.jar
orai18n-21.5.0.0.jar
mysql-connector-java-8.0.30.jar
Notes:
- MySQL, MariaDB, OceanBase, and TiDB SQL query metrics can use the built-in MySQL-compatible query engine without `mysql-connector-j`.
- If `mysql-connector-j` is present here, HertzBeat prefers JDBC after restart.
- Oracle and DB2 still require external JDBC jars in `ext-lib`.
@@ -18,7 +18,13 @@
The script file is located in `script/docker-compose/hertzbeat-postgresql-victoria-metrics` link [script/docker-compose](https://github.com/apache/hertzbeat/tree/master/script/docker-compose/hertzbeat-postgresql-victoria-metrics)
2. Enter the deployment script docker-compose directory, execute
2. Optional: add external JDBC driver jars to `ext-lib`
MySQL-compatible monitoring can use the built-in query engine directly, so `mysql-connector-j` is optional.
If you want HertzBeat to prefer JDBC after restart, place `mysql-connector-j` in `ext-lib`.
Oracle and DB2 still require external JDBC jars in `ext-lib`.
3. Enter the deployment script docker-compose directory, execute
`docker compose up -d`
@@ -20,7 +20,12 @@
脚本文件位于代码仓库下`script/docker-compose/hertzbeat-postgre-victoria-metrics` 链接 [script/docker-compose](https://github.com/apache/hertzbeat/tree/master/script/docker-compose/hertzbeat-postgresql-victoria-metrics)
2. 进入部署脚本 docker-compose 目录, 执行
2. 可选:向 `ext-lib` 添加外部 JDBC 驱动 jar
MySQL 兼容监控现在可以直接使用内置查询引擎,所以 `mysql-connector-j` 不是必需项。
如果你希望 HertzBeat 在重启后优先走 JDBC,可以把 `mysql-connector-j` 放到 `ext-lib`。
Oracle、DB2 这类场景仍然需要把外部 JDBC 驱动放到 `ext-lib`。
3. 进入部署脚本 docker-compose 目录, 执行
`docker compose up -d`
@@ -235,6 +235,13 @@ grafana:
password: admin
hertzbeat:
collector:
mysql:
# MySQL-compatible query engine routing for MySQL, MariaDB, OceanBase, and TiDB SQL metrics.
# auto : prefer JDBC only when mysql-connector-j is available from ext-lib, otherwise use the built-in query engine
# jdbc : always use JDBC
# r2dbc : always use the built-in query engine
query-engine: ${HERTZBEAT_COLLECTOR_MYSQL_QUERY_ENGINE:auto}
# Optional virtual-thread overrides. Remove this whole block to use built-in defaults.
vthreads:
enabled: true
@@ -70,6 +70,7 @@ services:
hostname: hertzbeat
restart: always
environment:
HERTZBEAT_COLLECTOR_MYSQL_QUERY_ENGINE: auto
TZ: Asia/Shanghai
LANG: zh_CN.UTF-8
depends_on:
@@ -13,9 +13,14 @@
# See the License for the specific language governing permissions and
# limitations under the License.
Please move external libs to this folder like:
Please move external libs to this folder only when you need external JDBC jars, for example:
ojdbc8-21.5.0.0.jar
orai18n-21.5.0.0.jar
mysql-connector-java-8.0.30.jar
Notes:
- MySQL, MariaDB, OceanBase, and TiDB SQL query metrics can use the built-in MySQL-compatible query engine without `mysql-connector-j`.
- If `mysql-connector-j` is present here, HertzBeat prefers JDBC after restart.
- Oracle and DB2 still require external JDBC jars in `ext-lib`.