IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

逻辑连接层与物理连接层

AnySQL.net 2010-01-24 16:46:57 累计浏览 3,163 次
本机暂存

       为了更好地利用MySQL的廉价复制(Slave)功能, 在DataReport的数据库连接层中增加了逻辑连接层, 原来是直接指定物理边接层. 当然数据库连接池还是在物理连接层实现的, 逻辑连接层则可以指定一种关系, 然后根据关系来获得指定的数据库物理连接, 当应用使用逻辑连接层来访问时, 其实是自动根据关系挑选一个物理连接.

       还是举一个例子来说明一下, 比如你有一台主MySQL库(master)后面挂了三台从MySQL库(Slave), 然后用DataReport去搭建一个以读为主的应用, 希望DataReport能首先随机挑选三个Slave库中的一台进行读取, 如果三台Slave都不行, 则从Master进行读取.

       首先定义四台MySQL数据库的连接, 称为物理层的配置.

PHYSICAL.DBLIST=MASTER|SLAVE1|SLAVE2|SLAVE3

       然后定义逻辑连接层, 以实现上面的要求.

LOGICAL.DBLIST=writedb|slavedb|readdb

    LOGICAL.WRITEDB=FIRST|MASTER

    LOGICAL.SLAVEDB=RANDOM|SLAVE1,SLAVE2,SLAVE3

    LOGICAL.READDB=FAILOVER|SLAVEDB,WRITEDB

       其中FIRST表示读取第一个连接池, RANDOM表示从后面的连接中随机选一个, FAILOVER表示第一个失败的话,取下一个. 通过这三种关系, 就实现了我们的要求. 然后给物理连接池及每个逻辑连接都加上状态判断, 当遇到连接关闭的错误时, 就将相应的连接池标记为不可用(Markdown), 逻辑库层可以主动跳过已经被Markdown的下一级节点, 按照规则查找到一个可用的物理数据库连接.

       在DataReport中还设置了一个守护进程, 会每分钟检查各个Markdown的物理连接池, 偿试去Markup, 一当出现意外的物理库回到正常状态, 就可以提供服务, 使应用保持高可用状态.

同分类推荐文章

  1. 使用deepseek进行Oracle恢复,引起重大故障 (2026-06-22 10:56:00)
  2. 接手一个只差临门一脚的数据库恢复 (2026-06-18 00:13:09)
  3. 我做了一个 AI 版的 StarRocks 升级风险扫描工具,直接帮我定位到一个风险 (2026-06-15 01:00:00)

查看更多 数据库 文章 →

建议继续学习

  1. 用Hyer来进行网站的抓取 (累计阅读 158,251)
  2. MySQL数据库在实际应用一些方面的介绍 (累计阅读 36,399)
  3. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,164)
  4. Mysql监控指南 (累计阅读 21,351)
  5. 由浅入深探究mysql索引结构原理、性能分析与优化 (累计阅读 16,523)
  6. 在Apache2.2.XX下安装Mod-myvhost模块 (累计阅读 13,058)
  7. 15个最好的免费开源电子商务平台 (累计阅读 12,541)
  8. 浅谈MySQL索引背后的数据结构及算法 (累计阅读 11,908)
  9. 整理了一份招PHP高级工程师的面试题 (累计阅读 11,708)
  10. 深入浅出INNODB MVCC机制与原理 (累计阅读 9,693)