因为背景缘由,所作的主从同步仍是要基于MySQL 5.1的版本,主从同步主要是一个数据库读写访问原来的数据库热度过大,须要作到使用从库对读分压。mysql
MySQL主从同步介绍sql MySQL 支持单双向、链式级联、异步复制。在复制过程当中,一个服务器充当主服务器(Master),而一个或多个其它的服务器充当从服务器(Slave)。数据库 若是设置了链式级联复制,那么,从(slave)服务器自己除了充当从服务器外,也会同时充当其下面从服务器的主服务器。链式级联复制相似A->B ->C ->D 的复制形式。服务器 当配置好主从复制后,全部对数据库内容的更新就必须在主服务器上进行,以免用户对主服务器上数据内容的更新与对从服务器上数据库内容的更新之间发生冲突。生产环境中通常会,忽略受权表同步,而后对从服务器上的而用户受权select读权限,或在my.cnf配置文件中加read-only 参数来确保从库只读,固然两者同时操做效果更佳。异步
MySQL主从复制的原理spa MySQL 主从复制是一个异步复制过程(但看起来也是实时的),数据库数据从一个MySQL数据库(咱们称为Master)复制到另外一个MySQL数据库(咱们称之为Slave)。在Master和Slave之间实现整个主从复制的过程有三个线程参与完成。其中两个线程(SQL线程和IO线程)在Slave端,另外一个线程(IO线程)在Master端。线程 要实现MySQL的主从复制,首先必须打开Master端的Binlog(MySQL-bin.XXXXX)功能,不然没法实现主从复制。由于整个复制过程实际上就是Slave从Master端获取Binlog日志,而后再在Slave自身上以相同顺序执行binlog日志中所记录的各类操做。打开MySQL的binlog能够经过MySQL的配置文件my.cnf中的mysqld模块([mysqld]标识后的参数部分)添加“log-bin”参数项。日志
MySQL主从复制过程描述ci 下面简单描述下MySQL Replication的复制过程:同步 一、Slave服务器上执行start slave,开启主从复制开关。 二、此时,Slave服务器的IO线程会经过在Master上受权的复制用户请求链接Master服务器,并请求从指定Binlog日志文件的指定位置(日志文件和位置是在配置主从服务时change master 时指定的)以后的Binlog日志内容。 三、Master服务器接收到来自Slave服务器的IO线程的请求后,Master服务器上负责复制IO线程根据Slave服务器的IO线程请求的信息读取指定Binlog日志文件指定位置以后的Binlog日志信息,而后返回给Slave端的IO线程。返回的信息中除了日志内容外,还有本次返回日志内容在Master服务器端的新Binlog文件名称以及在Binlog中的指定位置。 4.、当Slave服务器的IO线程获取到来自Master服务器上IO线程发送日志内容及日志文件及位置点后,将Binlog日志内容依次写入到Slave端自身的Relay Log(即中继日志)文件(MySQL-relay-bin.xxxxx)的最末端,并将新的Binlog文件名和位置记录到master-info文件中,以便下一次读取Master端新binlog日志时可以告诉Master服务器须要重新binlog日志的那个文件那个位置开始请求新的Binlog日志内容。 5.、Slave服务器的SQL线程会实时的检测本地Relay Log中新增长了日志内容,而后及时的把Log文件中的内容解析成在Master端曾经执行的SQL语句的内容,并在自身Slave服务器上按语句的顺序执行应用这些SQL语句。 六、 通过了上面的过程,就能够确保在Master端和Slave端执行了一样的SQL语句。当复制状态正常的状况下,Master端和Slave端的数据是彻底同样的。 主从复制的原理图 |