MySQL 8.0.19支持DNS SRV

Ubuntu 14.04下Consul 0.7.5生产级部署与加固实践 服务发现是现代分布式系统的核心能力,其底层依赖于可靠的协调服务与安全的节点通信机制。Consul作为主流服务网格控制平面组件,通过Raft一致性协议、Gossip传播和ACL访问控制实现高可用服务注册与健康监测。在遗留系统运维场景中,老旧OS(如Ubuntu 14.04)与受限运行环境倒逼工程师深入理解进程权限隔离、TLS双向认证、systemd资源约束及健康检查分级响应等关键技术原理。本文聚焦Consul 0.7.5这一兼容GLIBC_2.19的关键版本,详解如何在停止维护的操作系统上构建零单点故障、毫秒 阅读详情

点击蓝字关注我们

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。

我在本机做了测试。

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

for i in `seq 4000 4002`; do
    echo "Deploy mysql  sandbox $i"
    mysqlsh -- dba deploy-sandbox-instance $i --password=root
done


echo "Create innodb cluster..."
mysqlsh root@localhost:4000 -- dba create-cluster cluster01
mysqlsh root@localhost:4000 -- cluster add-instance --recoveryMethod=clone --password=root root@localhost:4001
mysqlsh root@localhost:4000 -- cluster add-instance --recoveryMethod=clone --password=root root@localhost:4002

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

for i in 6446 6556; do
    echo "Bootstrap router $i"
    mysqlrouter --bootstrap root@localhost:4000 --conf-use-gr-notifications -d router_$i --conf-base-port $i --name router_$i
    sed -i 's/level = INFO/level = DEBUG/g router_$i/mysqlrouter.conf
    sh router_$i/stop.sh
    sh router_$i/start.sh
done

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

echo "Install consul..."
brew install consul
consul agent -dev &

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

echo "Services register..."
consul services register -name router -id router1 -port 6446 -tag rw
consul services register -name router -id router2 -port 6556 -tag rw

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

echo "Test dns srv..."
dig router.service.consul SRV -p 8600
;; QUESTION SECTION:
;router.service.consul.        IN    SRV


;; ANSWER SECTION:
router.service.consul.    0    IN    SRV    1 1 6556 MBP.node.dc1.consul.
router.service.consul.    0    IN    SRV    1 1 6446 MBP.node.dc1.consul.


;; ADDITIONAL SECTION:
MBP.node.dc1.consul.    0    IN    A    127.0.0.1
MBP.node.dc1.consul.    0    IN    TXT    "consul-network-segment="
MBP.node.dc1.consul.    0    IN    A    127.0.0.1
MBP.node.dc1.consul.    0    IN    TXT    "consul-network-segment="

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

echo "Install dnsmasq..."
brew install dnsmasq
echo 'server=/consul/127.0.0.1#8600' > /usr/local/etc/dnsmasq.d/consul
sudo brew services restart dnsmasq

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

echo "Test dns forwarding..."
dig router.service.consul SRV

8. 安装 python connector

pip install mysql-connector-python

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

import mysql.connector
cnx = mysql.connector.connect(user='root', password='root', database='mysql_innodb_cluster_metadata', host='router.service.consul', dns_srv=True)
cursor = cnx.cursor()
query = ("select instance_id from v2_this_instance")
cursor.execute(query)
for (instance_id) in cursor:
    print("instance id: {}".format(instance_id))
cursor.close()
cnx.close()

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

叶老师新课程《MySQL性能优化》已经在腾讯课堂发布,本课程讲解读几个MySQL性能优化的核心要素:合理利用索引,降低锁影响,提高事务并发度。下面是报名小程序码,厚着脸皮请求大家推荐给需要的小伙伴们。

下面是本课程内容目录

扫码加入MySQL技术Q群

(群号:650149401)

点“在看”给我一朵小黄花

【信息科学与工程学】【安全领域】第一百四十一篇 SDN+SRv6安全服务链场景中的算法01 编号类型领域子领域问题(要解决什么)问题的数学分析及数值分析及优化分析参数列表及参数的边界范围及极限及常量/数值/数字关联知识和法律法规A1(五元组→匹配树/TCAM映射)转发面 / 接入-边缘SC分流点(MCR/CR/BRAS)引流:按IP五元组+VLAN/QinQ+SRv6隧道信息区分租户/业务,决定送入哪个SRv6 TE Policy/BSID给定海量微流,如何把"租户T+业务B+(sa/da/SP/DP/proto)"快速映射为一条。 阅读详情

相关推荐

mysql-connector-java-8.0.19.zip驱动下载window和liux

mysql-connector-java-8.0.19.zip驱动下载window和liux

MySQL8.0.19安装、驱动下载 连接Navicat、eclipse

下载 MySQL Community Server 官网下载地址:链接: https://dev.mysql.com/downloads/mysql/. 选择自己下载的版本,我举的例子是8.0.19的版本 这里选择第二个,第一个需要联网安装,我们一般都普遍选择第二个离线安装使用的版本。 之后大家下载好之后,自行进行安装,详细安装步骤可以再查。 安装好之后,配置一下系统环境变量,Path下新...

Xingchenhua的博客 5009

MySQL 8.0.19.rar

此文档是MySQL的处理压缩文件,已经定义好相关环境,建立my.ini文件,下载后,直接解压缩(不要解压缩到MySQL 8.0.19文件夹),然后放置到C盘 C:\Program Files文件夹下即可 (如果要修改存放的文件夹,需要调整文件里面的my.ini文件里面的部分设置路径,不建议这样操作)

mysql dns解析参数_新特性解读 | MySQL 8.0.19 支持 DNS SRV

转载自公众号:玩转MySQL作者:洪斌MySQL Router 是 InnoDB Cluster 架构的访问入口,在架构部署上,官方给出的建议是 router 与应用端绑定部署,避免 router 单点问题。之前还有客户咨询,能否 router 不与应用端绑定部署,不便于部署,在此之前都需要在 router 前面加 VIP 或者一层负载均衡。我还在想这事儿就应该由 MySQL Connector ...

weixin_42354944的博客 340

mysql8.0.19驱动包下载_MySQL8.0.19最新版本rpm包和源码包百度地址

链接:https://pan.baidu.com/s/1e0dn7zqBVos54xy56eq6VA提取码:1udmrpm包安装步骤如下:mysql-8.0.19-1.el7.x86_64.rpm-bundle.tartar -xvf mysql-8.0.19-1.el7.x86_64.rpm-bundle.tarrpm -ivh mysql-community-common-8.0.19-1.e...

weixin_32843345的博客 1046

MYSQL8问题汇总

mysql显示[Warning] IP address 'xxxx' could not be resolved: Name or service not known错误解决 因为mysql默认会反向解析DNS,对于访问者Mysql不会判断是hosts还是ip都会进行dns反向解析,频繁地查询数据库和权限检查,这大大增加了数据库的压力,导致数据库连接缓慢,严重的时候甚至死机,出现“连接数据库时出错”等字样。 解决办法:禁用dns反查即可 //进入/etc 找到mysql的配置文件my.cnf(linux环境

aaxh01的博客 727

端口如何支持非localhost访问_MySQL 8.0.19支持DNS SRV

点击蓝字关注我们MySQL Router是InnoDB Cluster架构的访问入口,在架构部署上,官方给出的建议是router与应用端绑定部署,避免router单点问题。之前还有客户咨询,能否router不与应用端绑定部署,不便于部署,在此之前都需要在router前面加VIP或者一层负载均衡。我还在想这事儿就应该由MySQL Connector来实现访问链路的Failover和Load...

weixin_40009026的博客 126

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

转载自公众号:玩转MySQL 作者:洪斌 MySQL Router 是 InnoDB Cluster 架构的访问入口,在架构部署上,官方给出的建议是 router 与应用端绑定部署,避免 router 单点问题。 之前还有客户咨询,能否 router 不与应用端绑定部署,不便于部署,在此之前都需要在 router 前面加 VIP 或者一层负载均衡。 我还在想这事儿就应该由 MySQL Conn...

ActionTech的博客 583

端口如何支持非localhost访问_新特性解读 | MySQL 8.0.19 支持 DNS SRV

转载自公众号:玩转MySQL作者:洪斌MySQL Router 是 InnoDB Cluster 架构的访问入口,在架构部署上,官方给出的建议是 router 与应用端绑定部署,避免 router 单点问题。之前还有客户咨询,能否 router 不与应用端绑定部署,不便于部署,在此之前都需要在 router 前面加 VIP 或者一层负载均衡。我还在想这事儿就应该由 MySQL Connector ...

weixin_39842617的博客 142

mysql-connector-java-8.0.19.jar MySQL 连接驱动

mysql-connector-java-8.0.19.jar 截至 2020-03 最新版 MySQL 连接驱动

MySQL8.0.13 最新驱动jar包

MySQLL8.0.13 最新驱动jar包,JAVA开发连接MYSQL的驱动JAR包

mysql8.0.19数据库驱动jar包,亲测有效.rar

数据bai库驱动是不同数据库开发商du(比如oracle mysql等)为了某一种开发语zhi言环境(比如java)能够实现统一的数dao据库调用而开发的一个程序,他的作用相当于一个翻译人员,将Java语言中对数据库的调用语言通过这个翻译翻译成各个种类的数据库自己的数据库语言,当然这个翻译(数据库驱动)是由各个开发商针对统一的接口自定义开发的

mysql-jdbc驱动包8.0.11

一个.jar包,是MySQL数据库厂商提供的jdbc驱动,将其放入web项目中的WEB-INF下的lib中,可用于jsp连接MySQL数据库。

云原生技术问题

整体流程涉及DNS、ARP、TCP、IP、HTTP核心协议,完整过程如下:首先进行DNS解析,将域名解析为服务器IP,依次查询浏览器缓存、系统hosts、本地DNS缓存,未命中则向DNS服务器迭代查询。核心区别:TCP是面向连接的可靠传输协议,需三次握手建连,具备重传、校验、流量控制、拥塞控制机制,报文开销大、传输延迟高;traceroute利用ICMP超时报文:通过逐级递增数据包TTL值,每经过一台路由器TTL减1,TTL归零后路由器返回ICMP超时报文,以此获取链路所有路由节点IP,定位故障链路。

2303_81849819的博客 423

计算机面试例题搜集(更新)

MySQL的逻辑架构从上到下分为四层。最上面是连接层,负责处理客户端的连接请求,包括TCP握手、用户名密码认证、权限校验,以及维护连接线程。连接池就在这里,每个客户端连接会分配一个独立线程,线程会缓存起来复用,减少频繁创建销毁的开销。连接层还会做安全检查,比如SSL连接加密。第二层是服务层,这是MySQL的核心功能层。它包含SQL接口模块,接收SQL语句并返回结果;查询解析器会把SQL解析成解析树,检查语法和语义是否正确;查询优化器会根据成本模型选择最优执行计划,比如决定用哪个索引、join顺序怎么排;还有

2301_81704123的博客 419
上一篇: MySQL Shell:02 部署InnoDB ReplicaSet
下一篇: 经典案例:磁盘I/O巨高排查全过程
老叶茶馆_
博客等级 码龄9年 1137粉丝 411原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值