mysql知识点(二)
1. mysql数据同步原理
-
MySql复制给予主服务器在二进制中跟踪所有对数据库的更改(更新、删除等)。因此,要进行复制,必须在主服务器上启用二进制日志。
-
每个从服务器从主服务器接收主服务器已经记录到其二进制日志的保存的更新,以便从服务器可以对其数据拷贝执行相同的更新。
-
认识到二进制日志只是一个从启用二进制日志的固定时间点开始的记录非常重要。任何设置的从服务器需要主服务器上的在主服务器上启用二进制日志时的数据拷贝。如果启动从服务器时,其数据库与主服务器上的启动二进制日志时的状态不相同,从服务器很可能失败。
-
将主服务器的数据拷贝到从服务器的一个途径是使用LOAD DATA FROM MASTER语句。请注意LOAD DATA FROM MASTER目前只在所有表使用MyISAM存储引擎的主服务器上工作。并且,该语句将获得全局读锁锁定,因此当表正复制到从服务器上时,不可能在主服务器上进行更新。当我们执行表的无锁热备份时,则不需要全局锁定。
MySql数据复制原理图如下:
从上图我们可以看出MySql数据库的复制需要启动三个线程实现(一个在主服务器,另外两个在从服务器): -
当发出START SLAVE时,从服务器创建一个I/O线程,以连接主服务器并让它发送记录在其二进制日志中的语句。
-
主服务器创建一个线程将二进制日志中的内容发送到从服务器。该线程可以识别为主服务器上SHOW PROCESSLIST的输出中的Binlog Dump线程。
-
从服务器I/O线程读取主服务器Binlog Dump线程发送的内容并将该数据拷贝到从服务器数据目录中的本地文件中,即中级日志。
-
第三个线程是SQL线程,是从服务器创建用于读取中继日志并执行日志中包含的更新。
2. 实例说明MySql的主从复制架构和详细设计过程
主从架构数据库的复制图如下: