使用浏览器学习数据库读写分离
2022/11/5 23:23:57
本文主要是介绍使用浏览器学习数据库读写分离,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
读/写分离是一种将读写路由到多个数据库服务器的技术,允许您执行基于查询的负载均衡。在应用程序级别实现这一点很困难,因为它将代码或配置参数耦合到基础数据库拓扑。例如,您可能必须为数据库集群中的每个服务器定义不同的连接池。
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
这篇关于使用浏览器学习数据库读写分离的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?
- 2024-05-09企业src漏洞挖掘-有意思的命令执行