奇发28网

首页 > 数据库 > MySQL > 使用MySQL 8.2透明读/写分离,代价几何?(译文)

使用MySQL 8.2透明读/写分离,代价几何?(译文)

MySQL 作者:数据库工作笔记 时间:2023-11-20 10:10:27 0 删除 编辑

来源:小咸鱼 网址:http://www.cibkglfj.cn/a/liuzhou.uumfw.com/

播报:

            支持258人次已投票7.所属城市:无锡市弘阳三万顷的整体环境非常好,是2004首届中国别墅节特色山水别墅金奖项目。支持258人次已投票7.所属城市:北京润泽御府是一座城市独栋别墅住区,清河营郊野公园,周边有奥林匹克森林公园、东小口森林公园、立水桥公园等多座公园,自然环境优美。与2010年相比,城镇人口增加23642万人,乡村人口减少16436万人,城镇人口比重上升个百分点。

            支持246人次已投票3.所属城市:宿雾薄荷岛位于菲律宾,是一座珊瑚岛屿。支持250人次已投票5.所属城市:安大略省多伦多加拿大国家电视塔是位于加拿大安大略省多伦多的建筑,其塔高米,现为世界上第五高的自立式建筑物,同时也是当地的标志性景点,每年吸引超过200万人次参观,其地理位置优越,从这里登顶远眺,可以一览最完整的多伦多都市风景,塔内装有多部高速外罩玻璃电梯,只需58秒就可以将游客从电视塔底层送至最高层,在塔顶可以远远眺望整个多伦多城市以及安大略湖等周围的景色,现也被评为世界工程第七大奇迹。

            如果您正在查找结婚胸花什么牌子好?那么本结婚胸花十大品牌榜单可供您作为选购参考,我们致力于用最真实的用户数据推荐口碑最好的结婚胸花品牌,让您选得放心。  孟加拉国是南亚地区的一个人口稠密的大国,与缅甸,印度,尼泊尔和不丹等国接壤。

            [责任编辑:沫朵]VMate,是阿里巴巴创新业务事业群旗下的短视频社区产品,于2017年底在印度创立。

          重点推荐:观众预登记通道开启,慕尼黑华南电子生产设备展邀您共聚电子“智造”盛会! 成熟双模式经营在多年市场实践的基础上,“快吉客”品牌的经营模式逐渐成熟,进而形成了完全标准化的操作流程。  其他方面,根据此前曝光的消息,全新的iPhone15系列将继续提供与iPhone14系列相同的四款机型,并且仍然有着明显的两极分化,其中两个Pro版将进一步提高屏幕亮度,达到2500尼特,边框也将进一步缩窄。

          观众预登记通道开启,慕尼黑华南电子生产设备展邀您共聚电子“智造”盛会!

          来源:oracleace

          摘要:MySQL 8.2引入了透明读/写分离功能,MySQL 路由器可以自动将只读SQL路由到集群的只读节点。然而,MySQL路由器在此过程中需要对接收到的SQL进行一定程度的解析,以确定其是否为只读SQL。这个解析过程对系统性能会有怎样的影响呢?知名MySQL布道师Frédéric Descamps对此进行了测试,让我们一起看看他的分析。


          这里号主翻译了知名MySQL布道师Frédéric Descamps撰写的关于MySQL 8.2透明读/写分离性能的测试和分析。
          原文网址:
          作者:Frédéric Descamps,Oracle公司MySQL社区经理,知名MySQL布道师 。

          我们一直在等待它!它现在已经可用了!MySQL中的读/写分离!!
          在之前的文章中,我们已经了解了MySQL 8.2的透明读/写拆分是什么,以及如何与MySQL Connector/Python一起使用。我对这一新功能表示欢迎,但我想了解它是否真的值得。应用程序是否能够从将读操作卸载到另一个节点中受益,并且使用MySQL路由器和解析请求是否会减慢连接速度?这些是我在本文中要介绍和回答的问题。


          01

          环境


          为了执行测试,我使用以下环境:

          • Linux Kernel 5.15.0 – aarch64

          • MySQL Community Server 8.2.0

          • MySQL Router 8.2.0

          • sysbench 1.1.0 using LuaJIT 2.1.0-beta3

          • VM.Standard.A1.Flex – Neoverse-N1 (50 BogoMIPS) 4 cores

          • 24GB of RAM

          MySQL InnoDB 集群在 3 台机器上运行,一台机器用于 MySQL 路由器和 Sysbench。

          Sysbench 准备了 8 个表,每个表有 100000 条记录。

          MySQL连接使用SSL。



          02

          MySQL InnoDB 集群


          以下是 MySQL Shell 中集群的概述:










































































          JS > cluster.describe(){    "clusterName": "myCluster",     "defaultReplicaSet": {        "name": "default",         "topology": [            {                "address": "mysql1:3306",                 "label": "mysql1:3306",                 "role": "HA"            },             {                "address": "mysql2:3306",                 "label": "mysql2:3306",                 "role": "HA"            },             {                "address": "mysql3:3306",                 "label": "mysql3:3306",                 "role": "HA"            }        ],         "topologyMode": "Single-Primary"    }}

          JS > cluster.status(){    "clusterName": "myCluster",    "defaultReplicaSet": {        "name": "default",        "primary": "mysql1:3306",        "ssl": "REQUIRED",        "status": "OK",        "statusText": "Cluster is ONLINE and can tolerate up to ONE failure.",        "topology": {            "mysql1:3306": {                "address": "mysql1:3306",                "memberRole": "PRIMARY",                "mode": "R/W",                "readReplicas": {},                "replicationLag": "applier_queue_applied",                "role": "HA",                "status": "ONLINE",                "version": "8.2.0"            },            "mysql2:3306": {                "address": "mysql2:3306",                "memberRole": "SECONDARY",                "mode": "R/O",                "readReplicas": {},                "replicationLag": "applier_queue_applied",                "role": "HA",                "status": "ONLINE",                "version": "8.2.0"            },            "mysql3:3306": {                "address": "mysql3:3306",                "memberRole": "SECONDARY",                "mode": "R/O",                "readReplicas": {},                "replicationLag": "applier_queue_applied",                "role": "HA",                "status": "ONLINE",                "version": "8.2.0"            }        },        "topologyMode": "Single-Primary"    },    "groupInformationSourceMember": "mysql1:3306"}

          还有已经引导到集群的MySQL路由器,在MySQL路由器中我们可以看到所有的端口:

















          JS > cluster.listRouters(){    "clusterName": "myCluster",     "routers": {        "router.sub09280951550.mysqlgermany.oraclevcn.com::system": {            "hostname": "router.subXXXXXXX.mysqlgermany.oraclevcn.com",             "lastCheckIn": "2023-11-15 09:27:18",             "roPort": "6447",             "roXPort": "6449",             "rwPort": "6446",             "rwSplitPort": "6450",             "rwXPort": "6448",             "version": "8.2.0"        }    }}


          03

          OLTP 读/写


          我们首先在主节点(端口 3306 )上使用 sysbench 的oltp_read_write.lua脚本,然后使用 MySQL 路由器的读/写专用端口 (端口6446) 再次运行它,最后使用读/写拆分端口 (端口6450)。测试使用 8 个线程,每次运行 3 次。
          下面是测试使用的命令,主机和端口当然会变化:




          $ sysbench /usr/share/sysbench/oltp_read_write.lua --db-driver=mysql \   --mysql-user=sysbench --mysql-password=XxxxXX --mysql-ssl=REQUIRED \   --mysql-host=<...> --mysql-port=<...> --tables=8 --table-size=100000 \   --threads=8 run
          ?

          8 个线程并不多,在这个工作负载中也没有太多的争用,但我们可以看到差异很小。当然,分析每个事务/查询并将它们发送到不同的主机是有成本的。


          04

          OLTP 只读


          这一次,我们再次运行 sysbench,但我们使用oltp_read_only.lua脚本。再次使用 8 个线程和 3 次运行:

          我们在这里看到了更大的区别,因为没有写入,一台机器可以轻松处理满载。因此,解析请求并将其发送到多个服务器的成本更高。
          当然,这只是因为单台服务器可以轻松地承担工作负载。
          如果我们有一个只读工作负载,那么我建议使用 MySQL Router 的只读端口:6447

          04

          OLTP 只写


          我们还使用脚本oltp_write_only.lua测试了只写工作负载。再次 8 个线程和 3 次运行:


          我们可以看到,差异很小,但差异的确存在。



          05

          更复杂的工作负载


          使用更复杂且优化程度较低的工作负载,例如oltp_update_non_index.lua,我们可以看到显著的差异。


          06

          结论


          MySQL 8.2 的透明读/写分离是我们一直在等待的一个非常有趣的功能,它在性能方面的消耗非常低,它更加适合于查询模式稳定的应用,因为这样的应用会降低MySQL路由器解析SQL的成本。
          您真的应该测试一下,并将您的意见发送给我们。
          享受MySQL、MySQL路由器和所有集成解决方案(InnoDB ReplicaSet,InnoDB Cluster,InnoDB ClusterSet,InnoDB Read Replicas)。


          来自 “ ITPUB博客 ” ,链接:http://www.cibkglfj.cn/70027826/viewspace-2996093/,如需转载,请注明出处,否则将追究法律责任。

          请登录后发表评论 登录
          全部评论

          注册时间:2023-03-16

          • 博文量
            277
          • 访问量
            172639
          分享:

          收藏

          --

          --

          无障碍浏览