我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL 8.0.19支持DNS SRV

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL 8.0.19支持DNS SRV

MySQL 8.0.19支持DNS SRV

MySQL Router是InnoDB Cluster架构的访问入口,在架构部署上,官方给出的建议是router与应用端绑定部署,避免router单点问题。

之前还有客户咨询,能否router不与应用端绑定部署,不便于部署,在此之前都需要在router前面加VIP或者一层负载均衡。

我还在想这事儿就应该由MySQL Connector来实现访问链路的Failover和Loadbalance, 现在有了DNS SRV的支持,router不必和应用端绑定部署,也可以省了VIP和负载均衡,MySQL InnoDB Cluster方案更加完善,配合consul等服务发现组件,更容易适配service mesh架构。 

DNS SRV是DNS记录的一种,用来指定服务地址。SRV记录不仅有服务目标地址,还有服务的端口,并且可以设置每个服务地址的优先级和权重。

MySQL Connector 8.0.19 覆盖多种语言支持DNS SRV,包括经典协议和X协议。遵循RFC 2782实现,支持Priority和Weight客户端必须连接优先级值最低的可达地址,若优先级相同,权重值越大的访问概率越高。

  • Connector/NET 

  • Connector/ODBC 

  • Connector/J 

  • Connector/Node.js

  • Connector/Python 

  • Connector/C++

我们来演示下应用是如何使用DNS SRV的,这里使用consul做服务发现。

  1. consul agent与MySQL Router部署在相同节点,检查服务活性,并向consul server 注册服务信息。

  2. 应用端的Connector配置了服务地址,访问DB时先向consul server发起DNS SRV服务请求。

  3. consul server回复应用端 MySQL Router的服务地址和端口,应用端再去访问MySQL Router。

我在本机做了测试。

首先使用mysql shell创建一组InnoDB Cluster集群

for i in `seq 4000 4002`; do

部署两个mysql router作为访问代理

for i in 6446 6556; do

安装 consul用作服务注册和DNS解析,在测试环境我们使用开发模式,只部署一个consul节点,若用在生产环境需要部署多个agent和server

echo "Install consul..."

在consul中注册两个router代理服务

echo "Services register..."

测试下DNS SRV是否能正常解析,SRV记录的应答返回服务端口和服务地址,服务地址有对应的A记录,是127.0.0.1地址。

echo "Test dns srv..."

consul的DNS服务端口是8600 ,需要在本机设置DNS 转发,将应用对consul服务的DNS请求转发到consul的端口,这里我使用dnsmasq做本地转发,对于生产环境可使用BIND服务。

echo "Install dnsmasq..."

DNS转发设置完成后,不指定DNS端口,测试转发是否依然正常解析SRV记录。

echo "Test dns forwarding..."

安装 python connector

pip install mysql-connector-python

在设置connector连接参数是注意host填写在consul注册的服务地址,并加上dns_srv参数,不需要指定端口。

import mysql.connector

从MySQL Router 日志中可以看到请求以负载均衡方式发送到两边。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL 8.0.19支持DNS SRV

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL 8.0.19支持DNS SRV

MySQL Router是InnoDB Cluster架构的访问入口,在架构部署上,官方给出的建议是router与应用端绑定部署,避免router单点问题。之前还有客户咨询,能否router不与应用端绑定部署,不便于部署,在此之前都需要在router前面加VI
MySQL 8.0.19支持DNS SRV
2016-03-13

新特性解读 | MySQL 8.0.19 支持 DNS SRV

MySQL Router 是 InnoDB Cluster 架构的访问入口,在架构部署上,官方给出的建议是 router 与应用端绑定部署,避免 router 单点问题。之前还有客户咨询,能否 router 不与应用端绑定部署,不便于部署,在此之前都需要在 r
新特性解读 | MySQL 8.0.19 支持 DNS SRV
2019-02-10

mysql支不支持unique索引

这篇文章主要讲解了“mysql支不支持unique索引”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql支不支持unique索引”吧!mysql支持uni
2023-04-13

PHP支持MySQL吗

这篇文章主要讲解了“PHP支持MySQL吗”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP支持MySQL吗”吧!PHP支持MySQL;MySQL是与PHP搭配使用最多的数据库,它们常被称
2023-07-02

PHP是否支持MySQL

PHP支持MySQL;MySQL是与PHP搭配使用最多的数据库,它们常被称为“黄金组合”。PHP中提供了完整的操作MySQL数据库的函数,这些函数包括了从连接数据库、执行SQL语句、处理数据结果集到关闭数据库的方方面面;通过这些函数,使基于 MySQL 数据库的 Web 开发高效而简单。本教程操作环境:windows7系统、PHP8.1&&mysql8版本、Dell G3电脑。数据库可以说是一个网站
2022-06-14

MySQL 支持Hash Join咯

8.0.20 对非等值条件(执行Hash Join再进行过滤(Filter)),笛卡尔积都能使用Hash Join。CREATE TABLE `t4` ( `c1` int DEFAULT NULL, `c2` int DEFAULT NULL, `c3
MySQL 支持Hash Join咯
2018-12-05

MySQL的主要支持者

让我们看看MySQL的主要支持者是谁 -Oracle公司和/或其附属公司拥有MySQL服务器和MySQL手册的所有版权。有许多个人、组织、学生和其他人为 MySQL 的开发、维护和改进提供了帮助。许多公司都参与了 MySQL 服务器的开发。
2023-10-22

mysql哪个版本支持json

mysql 5.7 及更高版本支持 json 数据,包括创建、存储、查询、修改和嵌套 json 数据,并提供 json 函数和操作符支持。哪个 MySQL 版本支持 JSON?MySQL 5.7 及更高版本支持 JSON。详细解释:J
mysql哪个版本支持json
2024-08-01

MySQL 支持的存储引擎

参考资料:C语言中文网存储引擎:数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。注:InnoDB 事务型数据库
MySQL 支持的存储引擎
2015-06-20

支持 MySQL 的主要软件包

让我们看看支持 MySQL 的主要软件包 -本文列出了一些最重要软件包的创建者和维护者随着 MySQL 的使用,很多人都使用 API/包/应用程序。下面列出了通过提供支持来支持 MySQL 的主要软件包及其贡献 -Tim Bunce,Al
2023-10-22

编程热搜

目录