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