mysql router 介绍_mysql router

MySQL Router 是InnoDB Cluster的一部分,是轻量级的中间件,可在应用程序和后端MySQL服务器之间提供透明的路由。它用于各种用例,例如通过将数据库流量路由到适当的后端MySQL服务器来提供高可用性和可伸缩性。

Windows安装

方法1:

https://dev.mysql.com/downloads/windows/installer/下载MySQL Installer,安装时选择MySQL Router;通常安装在C:\Program Files\MySQL\MySQL

方法2:

https://dev.mysql.com/downloads/router/下载ZIP存档,安装必备组件(Visual Studio 2015)后,解压缩ZIP存档按bin/mysqlrouter.exe的方式执行。

linux安装

如果mysql不是使用yum安装的,那么需要先获取mysql的rpm

yum install mysql-router

启动

systemctl start mysqlrouter.service

MySQL Router的工作流程

MySQL客户端或连接器连接到MySQL路由器到例如端口6446。

路由器检查可用的MySQL服务器。

路由器打开与合适的MySQL服务器的连接。

路由器在应用程序和MySQL服务器之间来回转发数据包

如果连接的MySQL服务器出现故障,路由器将断开应用程序的连接。然后,应用程序可以重试连接到路由器,然后路由器选择其他可用的MySQL服务器。

使用情境

作为开发人员,我希望我的应用程序连接到服务,以便默认情况下它与组复制群集的当前主数据库建立连接。

作为管理员,我想设置多个服务,以便MySQL Router在每个高可用副本集的不同端口上侦听。

作为管理员,我希望能够在端口3306上运行连接路由服务,以便它对用户或应用程序更加透明。

作为管理员,我想为每个连接路由服务配置一个模式,以便我可以指定返回主服务器还是辅助服务器。

使用建议

在与应用程序相同的主机上安装并运行MySQL Router

在配置文件中使用bind_port = 127.0.0.1将路由器绑定到本地主机。或者在Linux上,禁用TCP连接(--conf-skip-tcp),并将其限制为仅使用Unix套接字连接(--conf-use-sockets)。

为了获得最佳性能,MySQL路由器通常与使用它的应用程序安装在同一主机上。可能的原因包括:

允许本地UNIX域可以连接到应用程序,而不是TCP/IP。Unix域可以与连接到MySQL Router的应用程序一起使用,但不能用于连接到MySQL Server的MySQL Router。

减少网络延迟

为了允许MySQL路由器连接到MySQL而不需要路由器主机的额外帐户,为了专门为应用程序主机创建的MySQL帐户(例如myapp@198.51.100.45),而不是像myapp @%这样的值。

通常,应用程序服务器最容易扩展

您可以在网络上运行多个MySQL Router实例,而不必将MySQL Router隔离到就是因为MySQL路由器对任何特定的服务器或主机都没有亲和力。

使用

简单的基于连接的路由设置

[logger]

level = INFO

[routing:secondary]

bind_address = localhost

bind_port = 7001

destinations = foo.example.org:3306,bar.example.org:3306,baz.example.org:3306

routing_strategy = round-robin

[routing:primary]

bind_address = localhost

bind_port = 7002

destinations = foo.example.org:3306,bar.example.org:3306

routing_strategy = first-available

使用连接路由来轮循MySQL连接到端口7001上的三个MySQL服务器,这是轮循是由routing_strategy定义的。

示例还为两个使用端口7002的服务器配置了first-available策略。第一个可用策略使用了目的地列表中的第一个可用服务器。分配给每个实例的MySQL实例的数量destinations取决于您,因为这只是一个示例。路由器不检查数据包,也不基于分配的策略或模式限制连接,因此由应用程序决定在哪里发送读和写请求,在我们的示例中是端口7001或7002。

启动

shell> ./bin/mysqlrouter -config=/etc/mysqlrouter-config.con

测试1

首先将连接到foo.example.org,

然后连接到bar.example.org,

然后是baz.example.org,

第四个调用返回到foo.example.org

shell> ./bin/mysql --user=root --port 7001 --protocol=TCP

测试2

首先连接到foo.example.org,

然后其他请求将继续连接到foo.example.org,

直到出现故障为止,将使用bar.example.org

shell> ./bin/mysql --user=root --port 7002 --protocol=TCP

优点

并发客户端连接的最大数量从大约500个增加到超过5000个,此限制现在取决于操作系统。为此,将基于select()的fd事件调用替换为poll()(或Windows上的WSAPoll())。

命令

查看系统上的默认配置文件位置

mysqlrouter --help

重置日志

方法1:重命名日志文件,然后通知Router,以便它创建并切换到新的日志文件

sudo mv /var/log/mysqlrouter/mysqlrouter.log /var/log/mysqlrouter/mysqlrouter.log.old

kill -HUP $(pidof mysqlrouter)

方法2:重置后,将通知路由器重新打开日志文件,这是通过将HUP发送到路由器进程来完成的

logrotate配置文件

/var/log/mysqlrouter/mysqlrouter.log {

rotate 9

size 10M

create 0755 mysqlrouter mysqlrouter

postrotate

kill -HUP $(pidof mysqlrouter)

endscript

}

该示例将日志循环为mysqlrouter.log,mysqlrouter.log.1,...,mysqlrouter.log.9。仅当大小大于10MB时,才会根据当前mysqlrouter.log文件的大小触发轮换

[sudo] logrotate /etc/mysqlrouter/logrotate.conf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值