浅析电商、社区、游戏常用的 MySQL 架构

一般 、或者必须是这样、MySQL 架构一定要结合业务来分析、设计、优化
   所以不管是那种架构、根据业务要求组合成符合需求的即是最好的、不能泛泛而谈
   同时、也必须注意数据的安全(如ipsec,ssh,vpn传输)
   
   
见的架构都是进行业务切分、前端缓存、分库分表、若是过亿的查询量、
   先从业务上拆分、将 bbs、web、blog 分成几个组、然后再做成一主多从、读写分离的方式
   而且、在设计表的时候、一般情况下、备库常充当起备份查询的作用
   至于、读写分离、在程序设计之初、读和写是通过不同的IP入口、这是思路一、或者定义类、或者用代理层,比如 MySQL-proxy
   
   
大多 数的场合、一般在应用层做读写分离、然后 MySQL 通过复制来实现、优点比较多,可控性非常好、
   MySQL Replication、这个是王道、起码现在是、将来说不准哈
   相比复制而言、Cluster 在生产环境核心环节基本不用、或者现在少用
   因为、前期投入的硬件成本(相对于主从)较高、一般的小项目不会使用、Cluster的成本(大部分是维护成本)还是比较高的
   但随着后续版本的发布、估计案例会越来越多、毕竟是非常好的 sharding-nothing 的方案
   
   
   
戏中的:好友关系、排行榜、计数器、队列、cache 都很适合通过 Redis 来实现

   至于 Redis 的事务功能、可以不必放太多的心思去关心

   另外、Redis 相对 Memcached 而言、也稳定很多

   
   
   
电商 中、生产环境也都是主从架构、然后用 DRBD + HA 做 Master 备份
   主主不推荐、高可用还是推荐 DRBD 方案
   DRBD 注意不设置自动启动、重启时候手动启动、脑裂的情况发生非常的少
   不过、工作中基本不重启 DRBD、更不会重启服务器了、基本上没遇到脑裂的问题
   DRBD 这个在做风险容灾的时候有一定作用、但不能起到扩展、结合 LVS相信也是一种 perfect方案
   如:LVS+Keepalived 可以通过脚本剔除延迟慢或失效的从MySQL机器、
   而且LVS在软件负载均衡器中是最强的、在后端节点超过10台以上的情况、估计只有LVS能胜任
   
      
   
模大的公司(如Sina、taobao)
   1、不用集群是说mysql自身的集群用的不多(目前看也是可以用的)
   2、主从可以是多组,数个
   3、每组都可能一主多从(业务数据的1/N)
   4、3中每一组里的读或写 都可能是前端调度器的一个RS
   5、调度器分发可以hash分组,可以根据用户ID切分数据,当然还有更高级的手段
   提示:SINA开发经理承认,他们的SAE平台还是主从,甚至还有单点(靠监控和手工处理))
   
   
规模 中等的公司(如CSDN)
   1)mysql一主多从程序读写分离(甚至还没实现),多组。出问题直接手工或自动切从后在change master(脚本或程序实现)
   2)drbd+ha实现高可用(也是双主多从,自动切换M,正常备M不可提供服务)
   3)或双主多从,前端结合读及写分别负载均衡
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
docker-compose 是 Docker 官方的一个用于定义和运行容器化应用的工具。它使用 YAML 文件来配置应用的服务、网络和卷等方面的设置。 当使用 docker-compose 部署 MySQL 时,可能会遇到无法访问 MySQL 的问题。出现这种情况一般有以下几个可能的原因: 1. 网络配置问题:docker-compose 在默认情况下会创建一个默认的网络,并将所有定义的服务连接到该网络。如果服务的网络配置不正确,可能导致无法访问 MySQL。可以通过检查网络配置或创建自定义网络来解决此问题。 2. 端口映射问题:MySQL 默认使用 3306 端口进行通信,但是在容器内部的端口与宿主机上的端口之间可能存在映射问题。可以通过检查端口映射配置或使用容器的 IP 地址来解决此问题。 3. 认证问题:MySQL 服务通常需要进行身份验证才能访问。在 docker-compose 文件中,可以通过设置环境变量来指定 MySQL 的用户名和密码。如果未正确设置这些环境变量,可能导致无法访问 MySQL。可以检查环境变量配置或者在容器内部手动配置用户名和密码来解决此问题。 4. 容器启动顺序问题:如果在 docker-compose 文件中定义了多个服务,并且它们之间有依赖关系,那么容器启动的顺序可能会影响 MySQL 的访问。可以通过在容器之间添加依赖或者设置延迟启动来解决此问题。 总结起来,当 docker-compose 部署的 MySQL 无法访问时,通常是由于网络配置、端口映射、认证配置或容器启动顺序等问题造成的。通过检查这些配置,并进行适当的调整或修复,通常可以解决无法访问 MySQL 的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值