zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

MySQL Router Restful API (中文)

2023-06-13 09:13:12 时间

MySQL 路由器允许应用程序对后端 MySQL InnoDB Cluster 的 MySQL 服务器进行透明路由访问。

从 MySQL 8.0.17 版本起,Restful API(Http 访问)功能已经被添加到 MySQL Router。

本文旨在提供使用 Router Restful API 的教程。在MySQL 8.0.29 版本上测试过。

设置和假设

1. MySQL InnoDB Cluster 8.0.29 - 集群名称为“mycluster”

2. 安装 MySQL Shell 8.0.29 和使用 Linux 操作系统

3. Restful API 用户:'myapiuser'

路由器配置

Bootstrap 是创建路由器配置设置的过程。

例如

$> mysqlrouter --bootstrap admin:adminPassword@node1:node1Port --directory /tmp/myrouter --account routerfriend --account-create always

创建出来的 /tmp/myrouter 目录有配置、密钥和脚本。

默认在 mysqlrouter.conf 设置定义里,启用 8443 的Http Port 为 API 端口。

---

[http_server]

port=8443

ssl=1

ssl_cert=/tmp/myrouter/data/router-cert.pem

ssl_key=/tmp/myrouter/data/router-key.pem

[http_auth_realm:default_auth_realm]

backend=default_auth_backend

method=basic

name=default_realm

[rest_router]

require_realm=default_auth_realm

[rest_api]

[http_auth_backend:default_auth_backend]

backend=metadata_cache

[rest_routing]

require_realm=default_auth_realm

[rest_metadata_cache]

require_realm=default_auth_realm

---

路由器帐户设置

身份验证在 mysqlrouter.conf 下配置为 'backend=metadata_cache'

[http_auth_backend:default_auth_backend]

backend=metadata_cache

Restful api 用户表 mysql_innodb_cluster_metadata.v2_router_rest_accounts 定义Restful API 的用户。

以下步骤提供有关用户创建的详细信息

1. 使用具有用户创建权限的 root 或管理员登录 MySQL 服务器节点(主节点),并创建用户帐户(例如:myapiuser) - 这是一个虚拟帐户,将在第 3 步中删除。

mysql> CREATE USER myapiuser IDENTIFIED BY 'myapiuser';

2. 创建用户帐户条目 - 密码是来自 mysql.user 的authentication_string。以下SQL是在路由rest用户表account“v2_router_rest_accounts”创建用户名='myapiuser'。可以根据您的设置进行更改。

mysql> INSERT INTO mysql_innodb_cluster_metadata.v2_router_rest_accounts

( cluster_id, user, authentication_method, authentication_string, description, privileges, attributes)

SELECT cluster_id, user, 'modular_crypt_format', authentication_string, 'api user', null, null

FROM mysql_innodb_cluster_metadata.clusters, mysql.user

WHERE user='myapiuser' and cluster_name = 'mycluster'

3. 用户“myapiuser”可以被删除。

mysql> DROP USER myapiuser;

通过浏览器访问Restful API(以Chrome浏览器为例)

Restful API http 端口打开为 8443。可以通过 URL 访问 swagger.json:

https://<MySQL Router IP>:8443/api/20190715/swagger.json

api/20190715/ - 它是 API 基本路径。

它还显示可以通过 API 基本路径访问的“路径”列表。

要访问详细信息,需要用户/密码才能访问。

例如,检查路由器状态 - https://Router IP:8443/api/20190715/router/status

输入之前在路由器帐户设置中创建的用户/密码可以访问状态,如下所示:

可以尝试其他 Restful API paths、metadata/connection/routes 等等 详细信息。

参考:

https://dev.mysql.com/doc/mysql-router/8.0/en/mysql-router-rest-api-setup.html

https://dev.mysql.com/doc/mysql-router/8.0/en/mysql-router-innodb-cluster.html

https://dev.mysql.com/doc/relnotes/mysql-router/en/news-8-0-17.html

https://dev.mysql.com/doc/mysql-router/8.0/en/mysql-router-deploying-bootstrapping.html