集中式代理后端数据库的小型读写分离中间件, 功能比较少,只有读写分离以及连接池功能。 在读写分离场景下,多个业务DB组需要多个读写分离中间件才能完成,而使用该中间件则可以一个同时代理多个后端DB组。
获取源码进行编译运行 RUST_LOG=debug ./tubing --defaults-file test.toml 日志方式可以选择info或者debug,退出则使用kill pid的方式,程序会平滑关闭
配置文件为标准的toml格式, 可参考test.toml,全局配置为基本信息
没有专用的管理端或者管理端口,直接使用mysql命令行工具进行连接并通过set platform=admin命令设置就可以。
MySQL [(none)]> set platform=admin;
Query OK, 0 rows affected (0.00 sec)
MySQL [(none)]> show questions;
+----------+-------------------+------------+------------+------------+------------+--------------------+
| platform | host_info | com_select | com_update | com_insert | com_delete | platform_questions |
+----------+-------------------+------------+------------+------------+------------+--------------------+
| test001 | 192.168.1.80:3306 | 1 | 0 | 0 | 0 | 3 |
| test001 | 192.168.1.81:3306 | 0 | 0 | 0 | 0 | 3 |
+----------+-------------------+------------+------------+------------+------------+--------------------+
2 rows in set (0.00 sec)
MySQL [(none)]> show connections;
+----------+-------------------+------------+------------+---------------+------------+
| platform | host_info | min_thread | max_thread | active_thread | pool_count |
+----------+-------------------+------------+------------+---------------+------------+
| test001 | 192.168.1.80:3306 | 10 | 100 | 0 | 10 |
| test001 | 192.168.1.81:3306 | 10 | 100 | 0 | 10 |
+----------+-------------------+------------+------------+---------------+------------+
2 rows in set (0.00 sec)
查询状态目前只支持show connections/questions/status/fuse四个操作,可以看到连接池使用情况以及qps,都可以通过命令where platform='' 添加条件查询。
MySQL [(none)]> set min_thread=1 where platform="test001" and host_info="192.168.1.80:3306";
Query OK, 0 rows affected (0.00 sec)
MySQL [(none)]> show connections;
+----------+-------------------+------------+------------+---------------+------------+
| platform | host_info | min_thread | max_thread | active_thread | pool_count |
+----------+-------------------+------------+------------+---------------+------------+
| test001 | 192.168.1.80:3306 | 1 | 100 | 0 | 10 |
| test001 | 192.168.1.81:3306 | 10 | 100 | 0 | 10 |
+----------+-------------------+------------+------------+---------------+------------+
2 rows in set (0.00 sec)
可以通过set命令修改连接池大小情况以及开关日志记录(set auth=1/0 whre ....), sql记录可供临时开启排查问题作用,不建议一直使用, 由于sql语句需要写入文件,所有比较损耗性能,set命令必须带where条件,防止误操作, set 命令支持:
使用命令行执行的方式, 当更新了用户权限、或者主从关系变更等情况下可以直接使用命令行执行对应命令就可以。
reload user [where platform=''] : where条件可选, 当带有platform则只更新对应的user权限, 如果没有where条件则全部重载
reload config: 重新读取配置文件并修改, 需要注意的是只有部分配置项会重载,全局配置项、连接池大小配置、创建连接池使用的用户不会重载, 在使用mode='file'时,该功能可结合高可用进行读写关系变化, 增加、删除业务时也可以使用, 重载配置也会重载所有用户权限。
该工具已在我司生产环境中的主业务上使用很长一段时间,但仅适配好golang、python、java的mysql框架,而且jdbc也仅适配了8.0版本。rust暂时没有完全兼容mysql的语法解析包,tubing中使用的是我用sqlparse-rs修改支持的mysql, 可能有语法未涉及到,如在使用或测试中遇到问题欢迎提issues
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )