主服务器需要开启Binary日志文件,从服务器需要开启Relay日志文件,主服务器中的MySQL每次操作都会记录到Binary日志文件中。
举个例子:比如这时候主服务器被插入了一条数据,这时候这个操作将会被记录在Binary日志文件中,这时候从服务器会创建一个IO线程把这个Binary日志文件中的数据读取到然后再写入从服务器中的Relay日志文件中,从服务器又创建一个SQL线程把Relay日志文件中的数据读取到,然后进行相应的操作两台服务器上不同的数据库实现同步的原理就是这样.
1.主库将
增删改
操作写入
binlog
日志(每个增删改的改变数据的操作,写入日志文件,记录操作的日志);
2.然后
从库连接到主库
之后,从库有一个IO线程,将主库的
binlog日志
拷贝到自己本地,写入一个
relay中继日志中;
3.接着从库中有一个
SQL线程
会从中继日志
读取binlog,
然后执行binlog日志中的内容,也就是在自己本地再次执行一遍SQL,这样就可以保证自己跟主库的数