mysql基于BLACKHOLE复制基础的各种架构

Mysql复制架构

 

 

这是mysql主从复制最基本的原理图,左边是主master,右边是从slave,从图中可以清晰看到mysql的复制进程,master产生二进制日志binlog,输出到binlog文件,然后slave主机请求日志文件,master主机发送二进制到slave主机,二进制到slave后,写入中继日志,realylog,然后slave主机调用sql进程读取中继日志内容,写入到数据库,从而维持服务器的数据同步。

 

和上面不同的是,这个架构是一个三级架构,三台mysql服务器组成一个链式复制架构

,从左至右的master–slave–slave,前面两个,即master–slave和第一个图一样,没什么可说的,唯一的小变化是中间的slave主机也开启了二进制日志,他把从master上更新到的信息写入自身的logbin中,这样的目的可以从图中看到,为后面的slave主机提供二进制日志,此时这台slave主机其实充当了master主机的作用。

 

这个图中说明了mysql二进制日志的过滤,除非你想同步所有的数据库(包括mysql数据库,这会造成不必要的麻烦),二进制的日志过滤主要取决于master主机的设置binlog_do_db和binlog_ignore_db,他们决定了什么数据会记录到二进制日志中,并传送到slave主机,而slave主机也可以通过配置一些选项决定怎么利用这些数据,如replicate_do_db,replicate_do_table等

 

这个是一主多从的复制架构,实际应用也很多,可以用master来充当更新服务器,其他的几台slave充当只读服务器,在一定程度上分担了数据库流 量,一定确保只在master上更新数据。

这个一个主主复制的架构,两台master互为主从,更新和读取操作可以同时在两台上进行

这是一个反例,这种复制是不被允许的,一台slave不可能同时接受两台master的数据,不过我们可以考虑其他的办法来实现,比如后面的blackhole数据存储引擎就可以实现。

这个则是在主主复制架构上的一个扩展,每台master下面还有一层slave结构

这个其实也是主主复制结构的扩展(我的个人理解)只是master的结构组成了一个环状结构

这个也就容易理解,在环状结构的基础上又延伸出slave层。

这个图不太好理解,因为中间涉及到一个blackhole(黑洞)存储引擎,blackhole其实就相当于 linux系统中的/dev/null

主 要意思就是一主N从的结构,这里这个N可能会有很多,几十台,百台,那这样master主机就会为每台slave主机分配出一个binlog dump进程,这样的话会严重影响master的性能,这样可以考虑在主从之间添加一个分布式master,配置blackhole存储引擎,他起到一个 中继的作用,他接收数据但丢其他而不是存储,只是会把master的二进制日志供下层的slave来读取。

 

这里摘录一段别人的解释:

 

把blackhole引擎,用做slave,配置一些过滤规则,比如复制某些表、不复制某些表。然后也作为一个master,带多个slave。这样的好 处是省了一定的网络带宽,如果没有blackhole做中间环节,那么就需要把第一个master的所有日志都传递到各个slave上去。经过 blackhole这一个slave兼master过滤后再传递给多个slave,减少了带宽占用。而使用blackhole引擎的原因是它不占硬盘空 间,作为一个中转,只负责记日志、传日志。

 

BLACKHOLE 存储引擎就像 “ 黑洞 ” 一样,它接收数据但丢弃它而不是存储它。查询总是返回空集。

mysql> CREATE TABLE test(i INT, c CHAR(10)) ENGINE = BLACKHOLE;

Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO test VALUES(1,’record one’),(2,’record two’);

Query OK, 2 rows affected (0.00 sec)

Records: 2 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM test;

Empty set (0.00 sec)

虽然 BLACKHOLE 表不存储任何数据,但是如果开启二进制日志 ( Binary Log ),SQL 语句将被写入 日志,反之 SQL 语句会 被过滤掉。

BLACKHOLE 表的其他用途:

*  通 过对比开启和关闭二进制日志 ( Binary Log ) 时 BLACKHOLE 的性能,来计算二进制日志记录的开销。
*  BLACKHOLE 本质上是一个 “ no-op ” 存储引擎,它可能被用来查找与存储引擎自身不相关的性能瓶颈

下面这两张图也是跟blackhole存储相关,等慢慢研究blackhole后再细细研究

最后这种情况大致的意思,有三台mysql server,1,2和3,3做为复制从服务器,想同时复制1上的DB1和2上的DB2,这样可以在2上引进一个blackhole的DB1来解决问题.

 

参考:http://blog.csdn.net/zhaohang1983/archive/2009/08/11/4432634.aspx

时间: 2025-01-24 23:09:40

mysql基于BLACKHOLE复制基础的各种架构的相关文章

MySQL基于SSL协议进行主从复制的详细操作教程_Mysql

当mysql跨越互联网进行复制时别人可以窃取到mysql的复制信息,这些信息是明文的,因此存在不安全性,这里通过ssl对复制的信息进行加密.当在客户没有固定ip而要访问服务器时,mysql要允许任意地址的访问,服务端和客户端通过证书验证可以防止暴力破解. 开始之前让我们先来回顾一下SSL协议客户端OpenSSL的安装过程:安装openssl mkdir /test/setup cd /test/setup tar zxvf openssl-0.9.8b.tar.gz cd openssl-0.9

MySQL数据库复制概念及数据库架构不断扩展方案

MySQL Replication 系统扩展的方式:        scale up:向上扩展,垂直扩展    使用更高性能的硬件来扩展        scale out:向外扩展,水平扩展    提供更多的节点来提供更多的访问需求          复制:水平扩展的一种方案   如果构建一个httpd负载均衡集群会面临的问题: 当用户请求到达时,负载均衡器给调度到后端的各realserver上,如果web服务器允许用户上传数据,用户上传数据到第一个节点上,而后他又访问被调度到第三个节点上来,则

mysql基于RHCS、Gtid主从复制的高性能、LB、HA集群架构

mysql基于RHCS.Gtid主从复制的高性能.LB.HA集群架构 本文基于2个角度进行 1:mysql主从复制,读写分离部分 2:RHCS实现mysql-proxy.mysql-master.lvs高可用 架构图 可能会用到的yum源 http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm http://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.r

MySQL基于SSL的半同步复制

MySQL的主从复制应用场景非常多,默认的MySQL复制是基于异步且明文传输的,也就是说,速度快,但是从服务器的数据会有着一定的滞后性,明文也就意味着数据传输的不安全.因此笔者这里构建一个简单的基于加密并半同步的主从MySQL,当然由于其半同步的特性,主服务器的写操作速度必会有所降低.究竟如何选择,这取决于场景需要了. 实验环境:RHEL5.8  MySQL5.5.28 192.168.88.21       master.mos.com  master 192.168.88.22      

MySQL主备复制原理、实现及异常处理

复制概述 MySQL支持三种复制方式:基于行(Row)的复制.基于语句(Statement)的复制和混合类型(Mixed)的复制. 基于语句的复制早在3.23版本中就存在,而基于行的复制方式在5.1版本中才被加进来.这两种方式都是通过在主库上记录二进制日志.在备库重放日志的方式来实现异步的数据复制. 混合类型的复制:默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制. 复制通常不会增加主库的开销,主要是启用二进制日志带来的开销,但出于备份或及时从崩溃中恢复的目的,这

MySQL支持多线程复制

我们知道从5.6开始,MySQL支持多线程复制,到5.7版本又引入了基于GROUP COMMIT的并发事务分发机制.这意味着没有冲突的事务可以在备库并发执行.很显然,备库的事务提交顺序和主库是不能保证一致的. 这可能带来一些问题,尤其是事务之间有一定的业务关联时,提供读访问时可能会带来业务上的不一致问题.因此在MySQL 5.7.6版本,引入了一个新的特性,来保证主库和备库的commit顺序是一致的. 对应的changelog: Replication: Multi-threaded slave

如何快速复制阿里”企业级互联网架构“的最佳实践

本期采访嘉宾--赵林 (丹臣),<企业级互联网架构专场>出品人. 2016云栖大会深圳峰会,点击报名! 企业级互联网架构解决方案,点击查看! 赵林:这次之所以策划这个主题,主要是想帮助那些由传统IT架构到企业级互联网架构跨越式升级的企业,实现互联网转型,共同应对互联网+浪潮的挑战. 以前,阿里中间件事业部其实是一个为内部各BU提供企业级高可用互联网应用架构支撑的平台型支撑部门.近两年,我们尝试着将我们已经比较稳定和可靠的分布式系统架构以服务的形式对外提供实践,帮助了很多传统的IT企业在软件研发

MySQL · 源码分析 · MySQL 半同步复制数据一致性分析

简介 MySQL Replication为MySQL用户提供了高可用性和可扩展性解决方案.本文介绍了MySQL Replication的主要发展历程,然后通过三个参数rpl_semi_sync_master_wait_point.sync_binlog.sync_relay_log的配置简要分析了MySQL半同步的数据一致性. MySQL Replication的发展 在2000年,MySQL 3.23.15版本引入了Replication.Replication作为一种准实时同步方式,得到广泛

MySQL基于DOS命令行登录操作实例(图文说明)[原创]_Mysql

本文实例讲述了MySQL基于DOS命令行登录操作方法.分享给大家供大家参考,具体如下: 常用的MySQL命令行登录语句如下: 复制代码 代码如下: mysql -h localhost -u root -p123456 其中: -h 表示服务器地址,可省略,默认表示本机服务器 -u 表示登录用户,必选,可与用户名连在一起写,如:-uroot -p 表示数据库密码,必选,但这里可不输入密码(注意:命令行中-p与密码之间不能有空格) 因此,上述语句可写成如下几种形式: mysql -u root -