使用浏览器学习数据库读写分离


读/写分离是一种将读写路由到多个数据库服务器的技术,允许您执行基于查询的负载均衡。在应用程序级别实现这一点很困难,因为它将代码或配置参数耦合到基础数据库拓扑。例如,您可能必须为数据库集群中的每个服务器定义不同的连接池。

MariaDB MaxScale 是一个高级数据库代理,可用作读/写拆分器,将语句路由到副本节点和//语句路由到主节点。此操作会自动发生,而无需更改应用程序代码甚至配置 — 使用 MaxScale,数据库对您的应用程序来说就像一个单节点数据库。SELECTINSERTUPDATEDELETE

在本实践教程中,您将学习如何使用一个主节点和两个副本节点配置 MariaDB 数据库复制,以及如何设置 MaxScale 以隐藏底层拓扑的复杂性。最好的部分:您无需离开网络浏览器即可学习所有这些!

玩与码头工人网站
Play With Docker(PWD) 是一个网站,允许您创建预装Docker的虚拟机,并直接在浏览器中与它们进行交互。登录并启动新会话。

Play with Docker 网站

Play with Docker 网站

您将总共使用 5 个节点:

  • 节点 1:主服务器

  • 节点 2:副本服务器 A

  • 节点 3:副本服务器 B

  • 节点 4:最大规模数据库代理

  • node5:测试计算机(例如,相当于 Web 服务器)

注意:尽管Docker 容器上的数据库非常适合最简单的场景和开发环境,但它可能不是生产环境的最佳选择。MariaDB 公司目前不支持生产环境中的 Docker 部署。对于生产环境,建议使用 MariaDB Enterprise(在云端或本地)或 MariaDB SkySQL(目前在 AWS 和 GCP 上可用)。

运行主服务器

使用相应的按钮添加新实例:

一个 Docker 就绪的实例

一个 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

运行副本服务器

创建两个新实例(node2node3),并在这两个实例上运行以下命令:

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 SwarmKubernetes 等编排部署中。

节点 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

(0)
上一篇 2022年11月5日
下一篇 2022年11月5日

相关推荐

发表回复

登录后才能评论