• MySQL 8.2 – 透明的读写分离(译)


    在MySQL 8.2的版本中,MySQL Router能自动分辨对数据库读写/操作并把这些操作路由到正确的实例上,这是要革众多SQL中间件的命!大家说这个算不算遥遥领先呢?

    关于号主,姚远:

    • Oracle ACE(Oracle和MySQL数据库方向)。
    • 华为云最有价值专家。
    • 《MySQL 8.0运维与优化》的作者。
    • 拥有 Oracle 10g、12c和19c OCM等数十项数据库认证。
    • 曾任IBM公司数据库部门经理,服务2万+客户。
    • 精通C和JAVA,发明两项计算机专利

    这里号主翻译了知名MySQL布道师Frédéric Descamps撰写的关于这个功能的介绍。

    原文网址:https://lefred.be/content/mysql-8-2-transparent-read-write-splitting/

    作者: Frédéric Descamps,Oracle公司MySQL社区经理,知名MySQL布道师 。
    在这里插入图片描述
    我们一直在等待它!它现在已经可用了!MySQL中的读/写分离!!

    在大规模应用中,我们将读操作分发到副本之间,但这需要在应用程序中进行管理:将写操作指向某处,将读操作指向另外的地方。

    在MySQL 8.2中,MySQL路由器现在能够识别读操作和写操作,并将它们路由到InnoDB集群的主实例,或将写操作路由到异步复制源,而将读操作路由到非主实例或副本。

    为了说明这一点,我部署了最简单的架构:MySQL InnoDB ReplicaSet。

    MySQL InnoDB ReplicaSet

    这只是一个复制源实例和一个(或多个)异步副本:
    在这里插入图片描述
    这是MySQL Shell中ReplicaSet对象的状态:
    在这里插入图片描述

    启动MySQL Router 8.2

    让我们配置(引导)MySQL Router:

    mysqlrouter --bootstrap root@127.0.0.1:3306 --user mysqlrouter
    
    • 1

    在这里插入图片描述
    我们还可以在MySQL Shell中看到Router的ReplicaSet对象:

    在这里插入图片描述
    通过读写端口(6450)连接到MySQL数据库
    在这里插入图片描述
    可以看到,默认情况下,如果我们执行读操作,会连接到副本(或者非主实例),但如果我们启动一个事务,将连接到复制源(主实例),这个过程会在同一个连接中自动完成,并且不需要应用更改端口。

    我们还可以看到在使用只读事务时的区别:
    在这里插入图片描述
    我们还可以在MySQL Router的配置文件中看到读写分离的生成设置:

    [routing:bootstrap_rw_split]
    bind_address=0.0.0.0
    bind_port=6450
    destinations=metadata-cache://myreplica/?role=PRIMARY_AND_SECONDARY
    routing_strategy=round-robin
    protocol=classic
    connection_sharing=1
    client_ssl_mode=PREFERRED
    server_ssl_mode=PREFERRED
    access_mode=auto
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    用户还可以在会话中使用ROUTER SET access_mode=命令来定义应用要连接的实例类型:
    在这里插入图片描述

    总结

    总之,MySQL Router 8.2支持读写分离。这是一项有价值的功能,可以优化数据库性能和可扩展性,而无需在应用程序中进行任何更改。

    这种配置使您能够将所有读流量引导到只读实例,将所有写流量引导到读写实例。

    这不仅增强了用户的整体体验,还简化了数据库管理和部署。

    读写实例是主实例或源实例。只读实例是副本(InnoDB集群的非主实例、ReplicaSet的非主实例或复制集群中的非主实例)。

    享受MySQL,再也没有不将工作负载分配到副本的借口了!

  • 相关阅读:
    2个小时的腾讯面试经历(C++),来看看它终究考察了些什么?
    3-2主机发现-三层发现
    熟悉开机后登陆进入Linux系统和退出系统的过程。
    KASan介绍
    ARM64汇编入门
    资深Java工程师蚂蚁金服三面详解,看完你也可以拿offer
    CircuitPython入门贴
    JUC第四讲:Java中的锁/CAS原理与案例分析
    使用spring-data-redis实现incr自增
    ICC2分析时序的神器 analyze_design_violations
  • 原文地址:https://blog.csdn.net/weixin_43424368/article/details/134058625