Home  >  Article  >  Database  >  MySQL主从、主主复制及高可用性

MySQL主从、主主复制及高可用性

WBOY
WBOYOriginal
2016-06-07 17:31:041047browse

将master服务器中主数据库的ddl和dml操作通过二进制日志传到slaves服务器上,然后在master服务器上将这些日志文件重新执行,从而

一:MySQL复制:

MySQL复制简介:

将master服务器中主数据库的ddl和dml操作通过二进制日志传到slaves服务器上,然后在master服务器上将这些日志文件重新执行,从而使得slave服务器和master服务器上的数据信息保持同步。

Mysql复制的原理:

将数据分布到多个系统上去,是通过将Mysql的某一台master主机的数据复制到其它(slave)主机上,并重新执行一遍来实现的;

复制过程中一个服务器充当master服务器,而一台或多台其它服务器充当slave服务器。master服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。

这些日志可以记录发送到slave服务器的更新。当一个slaves服务器连接master服务器时,它通知master服务器从服务器在日志中读取的最后一次成功更新的位置。slave服务器接收从那时起发生的任何更新,,然后封锁并等待master服务器通知新的更新。

推荐阅读:

生产环境MySQL主主同步主键冲突处理

MySQL + KeepAlived + LVS 单点写入主主同步高可用架构实验

MySQL 主主同步配置

CentOS 6.3下MySQL主从复制笔记

mysql复制的优点:

在slave服务器上执行查询操作,降低master服务器的访问压力

当master服务器上出现了问题可以切换到slave服务器上,不会造成访问中断等问题

在slave服务器上进行备份,以避免备份期间影响master服务器的服务使用及日常访问

Mysql自身的复制功能:是构建大型、高性能应用程序的基础。

mysql支持的复制类型:

基于语句的复制:在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。一旦发现没法精确复制时,会自动选着基于行的复制。

基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍. 从mysql5.0开始支持

混合类型的复制::默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。

MySQL复制技术的特点:

数据分布 (Data distribution )

备份(Backups)

负载平衡(load balancing)

高可用性和容错性 High availability and failover

复制的工作过程:

master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events);

slave将master的binary log events拷贝到它的中继日志(relay log);

slave重做中继日志中的事件,将改变反映它自己的数据。

第一步:master记录二进制日志。在每个事务更新数据完成之前,master在二日志记录这些改变。MySQL将事务串行的写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务;

第二步:slave将master的binary log拷贝到自己的中继日志。首先,slave开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件,如果已经跟上master,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志;

第三步:SQL slave thread(SQL从线程)处理该过程的最后一步。SQL线程从中继日志读取事件,并重放其中的事件而更新slave的数据,使其与master中的数据一致。只要该线程与I/O线程保持一致,中继日志通常会位于OS的缓存中,所以中继日志的开销很小。

接下来请看第2页:

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn