读/写分离是一种将读写路由到多个数据库服务器的技术,允许您执行基于查询的负载均衡。在应用程序级别实现这一点很困难,因为它将代码或配置参数耦合到基础数据库拓扑。例如,您可能必须为数据库集群中的每个服务器定义不同的连接池。
MariaDB MaxScale 是一个高级数据库代理,可用作读/写拆分器,将语句路由到副本节点和//语句路由到主节点。此操作会自动发生,而无需更改应用程序代码甚至配置 — 使用 MaxScale,数据库对您的应用程序来说就像一个单节点数据库。SELECTINSERTUPDATEDELETE
在本实践教程中,您将学习如何使用一个主节点和两个副本节点配置 MariaDB 数据库复制,以及如何设置 MaxScale 以隐藏底层拓扑的复杂性。最好的部分:您无需离开网络浏览器即可学习所有这些!
玩与码头工人网站
Play With Docker(PWD) 是一个网站,允许您创建预装Docker的虚拟机,并直接在浏览器中与它们进行交互。登录并启动新会话。
Play with Docker 网站
您将总共使用 5 个节点:
-
节点 1:主服务器
-
节点 2:副本服务器 A
-
节点 3:副本服务器 B
-
节点 4:最大规模数据库代理
-
node5:测试计算机(例如,相当于 Web 服务器)
注意:尽管Docker 容器上的数据库非常适合最简单的场景和开发环境,但它可能不是生产环境的最佳选择。MariaDB 公司目前不支持生产环境中的 Docker 部署。对于生产环境,建议使用 MariaDB Enterprise(在云端或本地)或 MariaDB SkySQL(目前在 AWS 和 GCP 上可用)。
运行主服务器
使用相应的按钮添加新实例:
一个 Docker 就绪的实例
在节点 1 上,运行 MariaDB 主服务器,如下所示:
docker run --name mariadb-primary /
-d /
--net=host /
-e MARIADB_ROOT_PASSWORD=password /
-e MARIADB_DATABASE=demo /
-e MARIADB_USER=user /
-e MARIADB_PASSWORD=password /
-e MARIADB_REPLICATION_MODE=master /
-e MARIADB_REPLICATION_USER=replication_user /
-e MARIADB_REPLICATION_PASSWORD=password /
bitnami/mariadb:latest
这将配置运行 MariaDB 社区服务器的容器,其中包含用于复制的数据库用户 ()。副本将使用此用户连接到主副本。replication_user
运行副本服务器
创建两个新实例(node2和node3),并在这两个实例上运行以下命令:
docker run --name mariadb-replica /
-d /
--net=host /
-e MARIADB_MASTER_ROOT_PASSWORD=password /
-e MARIADB_REPLICATION_MODE=slave /
-e MARIADB_REPLICATION_USER=replication_user /
-e MARIADB_REPLICATION_PASSWORD=password /
-e MARIADB_MASTER_HOST=<PRIMARY_IP_ADDRESS> /
bitnami/mariadb:latest
替换为节点 1 的 IP 地址。您可以在实例列表中找到 IP 地址。<PRIMARY_IP_ADDRESS>
现在,您有一个由一个主节点和两个副本组成的集群。您在主节点 (node1) 上执行的所有写入都会自动复制到所有副本节点(节点 1和节点2)。
运行最大规模
MaxScale 是一个理解SQL 的数据库代理。这允许它以负载平衡的方式将写入操作路由到主节点,并将读取操作路由到副本。应用程序可以使用单个终结点连接到 MaxScale,就像它是单节点数据库一样。
创建一个新实例 (node4) 并运行MaxScale,如下所示:
docker run –name maxscale /
-d /
–publish 4000:4000 /
mariadb/maxscale:latest
您可以通过配置文件配置 MaxScale,但在本教程中,我们将使用命令行来确保您了解每个步骤。在不太短暂的环境中,您应该使用配置文件,尤其是在Docker Swarm和Kubernetes 等编排部署中。
在节点 4 中启动一个新的 shell:
docker exec -it maxscale bash
您需要在 MaxScale 中创建对象。这些是 MaxScale 路由读取和写入的 MariaDB 数据库。将 和 替换为相应节点(节点 1、节点 2 和节点 3)的 IP 地址,然后执行以下操作:server
<NODE_1_IP_ADDRESS>
<NODE_2_IP_ADDRESS>
<NODE_3_IP_ADDRESS>
maxctrl create server node1 <NODE_1_IP_ADDRESS>
maxctrl create server node2 <NODE_2_IP_ADDRESS>
maxctrl create server node3 <NODE_3_IP_ADDRESS>
接下来,您需要创建一个最大缩放来检查群集的状态。运行以下命令:monitor
maxctrl create monitor mdb_monitor mariadbmon /
--monitor-user root --monitor-password 'password' /
--servers node1 node2 node3
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/292633.html