复制有两种方式,一种是基于二进制日志文件位置的复制,一种是基于GTID(global transaction identifiers)的复制。
MySQL中的复制支持不同类型的同步方式。原始的同步方式是单行的,异步复制。与其对应的是MySQL集群使用的同步复制。在MySQL5.7中开始支持针对异步复制的半同步复制。
一、基于二进制日志文件位置的复制
在作为主的服务器上把对数据库的更新和改变作为“事件”写入二进制文件,二进制文件中的信息根据记录下的对数据库改变的不同而记录成不同的日志格式。从服务区通过一定的配置,去读取主服务器的二进制文件并在本地服务器中执行文件中纪录的事件。
每个从服务器都会收到主服务器上的二进制日志文件的完整拷贝。从服务器自己决定二进制文件中的哪些语句应该被执行。除非你额外指明,否则主服务器上二进制日志文件中的所有事件都会在从上执行。如果需要,可以指定从只处理应用于特定数据库或者表的事件。
tips:不能对主服务器指定只纪录某些事件
每个从服务器都保存了一条二进制日志的坐标:文件名和它现在从主服务器上读和处理到的当前文件名对应的文件中的位置。这意味着多个从可以连接到主并且执行同一个二进制日志的不同部分。还有,因为每个从都纪录了当前执行到的二进制文件的位置,所以从就有可能断开到主的连接,重连和继续处理。
具体的操作步骤