Mysql复制架构_MySQL

php中文网
发布: 2016-06-01 13:32:39
原创
1136人浏览过

bitsCN.com

mysql复制架构
 Mysql复制架构_MySQL
这是mysql主从复制最基本的原理图,左边是主master,右边是从slave,从图中可以清晰看到mysql的复制进程,master产生二进制日志binlog,输出到binlog文件,然后slave主机请求日志文件,master主机发送二进制到slave主机,二进制到slave后,写入中继日志,realylog,然后slave主机调用sql进程读取中继日志内容,写入到数据库,从而维持服务器的数据同步。
 Mysql复制架构_MySQL
和上面不同的是,这个架构是一个三级架构,三台mysql服务器组成一个链式复制架构
,从左至右的master--slave--slave,前面两个,即master--slave和第一个图一样,没什么可说的,唯一的小变化是中间的slave主机也开启了二进制日志,他把从master上更新到的信息写入自身的logbin中,这样的目的可以从图中看到,为后面的slave主机提供二进制日志,此时这台slave主机其实充当了master主机的作用。
 Mysql复制架构_MySQL
这个图中说明了mysql二进制日志的过滤,除非你想同步所有的数据库(包括mysql数据库,这会造成不必要的麻烦),二进制的日志过滤主要取决于master主机的设置binlog_do_db和binlog_ignore_db,他们决定了什么数据会记录到二进制日志中,并传送到slave主机,而slave主机也可以通过配置一些选项决定怎么利用这些数据,如replicate_do_db,replicate_do_table等
 Mysql复制架构_MySQL
这个是一主多从的复制架构,实际应用也很多,可以用master来充当更新服务器,其他的几台slave充当只读服务器,在一定程度上分担了数据库流量,一定确保只在master上更新数据。
Mysql复制架构_MySQL
这个一个主主复制的架构,两台master互为主从,更新和读取操作可以同时在两台上进行、
Mysql复制架构_MySQL
这是一个反例,这种复制是不被允许的,一台slave不可能同时接受两台master的数据,不过我们可以考虑其他的办法来实现,比如后面的blackhole数据存储引擎就可以实现。
Mysql复制架构_MySQL
这个则是在主主复制架构上的一个扩展,每台master下面还有一层slave结构
Mysql复制架构_MySQL
这个其实也是主主复制结构的扩展(我的个人理解)只是master的结构组成了一个环状结构
Mysql复制架构_MySQL
这个也就容易理解,在环状结构的基础上又延伸出slave层。
Mysql复制架构_MySQL
这个图不太好理解,因为中间涉及到一个blackhole(黑洞)存储引擎,blackhole其实就相当于 linux系统中的/dev/null 
Mysql复制架构_MySQL
主要意思就是一主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复制架构_MySQL
Mysql复制架构_MySQL
最后这种情况大致的意思,有三台mysql server,1,2和3,3做为复制从服务器,想同时复制1上的db1和2上的db2,这样可以在2上引进一个blackhole的db1来解决问题.

bitsCN.com
相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号