读/写分离是一种将读写路由到多个数据库服务器的技术,允许您执行基于查询的负载均衡。在应用程序级别实现这一点很困难,因为它将代码或配置参数耦合到基础数据库拓扑。例如,您可能必须为数据库集群中的每个服务器定义不同的连接池。
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
标签:数据库,代码,高级,maxscale,网站,虚拟机 来源:
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。