Mysql分布式 Dual Master具体是? mysql集群和主从区别

6517℃ CEDRIC

Mysql分布式 Dual Master具体是?mysql集群和主从区别

有人设置过 mysql dual master replication 吗

要看你的实际需求来定1、如果你是数据一致性考虑的多,而且写操作和更新的东西多,用cluster合适。因为multi-master会有数据冲突的情况发生。2、如果你是查询多,也可以较容易的分开,那就用replication好,便宜,也好用。用一个master保证数据的一致性,可以有多个slave用来读去数据,分担负载。其实往往就是数据一致性的问题,会给replication带来麻烦。如果你能保证写入点的唯一,就可以放心的用replication了。

MySQL大型分布式集群具体怎么做

1、主要解决针对大型网站架构中持久化部分中,大量数据存储以及高并发访问所带来是数据读写问题。分布式是将一个业务拆分为多个子业务,部署在不同的服务器上。集群是同一个业务,部署在多个服务器上。

2、着重对数据切分做了细致丰富的讲解,从数据切分的原理出发,一步一步深入理解数据的切分,通过深入理解各种切分策略来设计和优化我们的系统。这部分中我们还用到了数据库中间件和客户端组件来进行数据的切分,让广大网友能够对数据的切分从理论到实战都会有一个质的飞跃。

通过分布式+集群的方式来提高io的吞吐量,以及数据库的主从复制,主主复制,负载均衡,高可用,分库分表以及数据库中间件的使用。

教程样例项目中用到的技术及相应的环境:

MySQL5.7 CentOS6.9 Vmware Spring3.x以上 JDK8 Maven XShell Xftp

Mysql“集群”和”主从“两者的区别是什么?

mysql的主从服务器是地理上独立,通过网络保持同步拷贝的系统,他们的处理器内存,永久存储介质都是独立于其他站点的。

1、最明显也最本质data-sharing和nothing-sharing的区别,集群是共享存储的复制中没有任何共享,每台机器都是独立且完整的系统,由此,带来的是应用和实现技术上的区别。

2、Master执行提交语句时,事务被发送到slave,slave开始准备事务的提交,每个slave都要准备事务,然后向master发送OK(或ABORT)消息,表明事务已经准备好或者无法准备该事务。

3、Master等待所有Slave发送OK或ABORT消息,如果Master收到所有 Slave的OK消息,它就会向所有Slave发送提交消息,告诉Slave提交该事务,如果 Master收到来自任何一个Slave的ABORT消息,它就向所有 Slave发送ABORT消息,告诉Slave去中止事务。

mysql中间件有哪些?

mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等,但其不支持大数据量的分库分表且性能较差。下面介绍几款能代替其的mysql开源中间件产品,Atlas,cobar,tddl,让我们看看它们各自有些什么优点和新特性吧。

Atlas

Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条。

Altas架构:

Atlas是一个位于应用程序与MySQL之间,它实现了MySQL的客户端与服务端协议,作为服务端与应用程序通讯,同时作为客户端与MySQL通讯。它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,它还维护了连接池。

以下是一个可以参考的整体架构,LVS前端做负载均衡,两个Altas做HA,防止单点故障。

Altas的一些新特性:

1.主库宕机不影响读

主库宕机,Atlas自动将宕机的主库摘除,写操作会失败,读操作不受影响。从库宕机,Atlas自动将宕机的从库摘除,对应用没有影响。在mysql官方的proxy中主库宕机,从库亦不可用。

2.通过管理接口,简化管理工作,DB的上下线对应用完全透明,同时可以手动上下线。

3.自己实现读写分离

(1)为了解决读写分离存在写完马上就想读而这时可能存在主从同步延迟的情况,Altas中可以在SQL语句前增加 /*master*/ 就可以将读请求强制发往主库。

主库可设置多项,用逗号分隔,从库可设置多项和权重,达到负载均衡。

4.自己实现分表

(1)需带有分表字段。

(2)支持SELECT、INSERT、UPDATE、DELETE、REPLACE语句。

(3)支持多个子表查询结果的合并和排序。

这里不得不吐槽Atlas的分表功能,不能实现分布式分表,所有的子表必须在同一台DB的同一个database里且所有的子表必须事先建好,Atlas没有自动建表的功能。

5.之前官方主要功能逻辑由使用lua脚本编写,效率低,Atlas用C改写,QPS提高,latency降低。

6.安全方面的提升

(1)通过配置文件中的pwds参数进行连接Atlas的用户的权限控制。

(2)通过client-ips参数对有权限连接Atlas的ip进行过滤。

(3)日志中记录所有通过Altas处理的SQL语句,包括客户端IP、实际执行该语句的DB、执行成功与否、执行所耗费的时间 ,如下面例子。