目录
一、mysql主从复制原理
1、主数据库的数据发生变化,通过其IO线程记录到binlog日志中。
2、从库的IO线程和主库的dump线程建立连接。从库根据change master to 语句提供的file名和position号,IO线程向主库发起binlog的请求。
3、主库dump线程根据从库的请求,将本地binlog以events的方式发给从库IO线程。从库IO线程接收binlog events,并存放到本地relay-log中,传送过来的信息,会记录到master.info中
4、从库SQL线程应用relay-log,并且把应用过的记录到relay-log.info中,默认情况下,已经应用过的relay 会自动被清理purge
=========================================================================
二、mysql 主从复制配置(一主一从)
主数据库环境:
从数据库环境:
做此实验前需要把主数据库和从数据库的防火墙都要关闭。
2.1 修改主数据库的配置
vim /etc/my.cnf
server_id 的值可以自定义。
修改完成之后需要重新启动服务,命令是systemctl restart mysqld
保证主数据库和从数据库的时间同步。(不同步可以用ntpdate ntp1.aliyun.com 同步)
2.2 在主数据库上添加用户并授权
grant replication slave on *.* to 'rep'@'192.168.95.%' identified by '123456';
show grants for 'rep'@'192.168.95.%';
2.3 查看主数据库的file和position
2.4 配置从数据库
如果此时从数据库的开启的,需要先停止。
2.5 开启从数据库
2.6 测试
主数据库上的lianxi1的ceshi表的数据如下:
从数据库上的lianxi1的ceshi表的数据如下:
向主数据库中插入数据。
从数据库中的数据如下:
=========================================================================
补充:
1、一主多从也是类似的配置
2、主从复制是当主从复制配置完成之后,主数据库的操作会同步到从数据库上,并不是说当配置完主从复制之后,之前不一样的数据,从数据库会自动变得和主数据库一样。一样的是后续操作影响的数据。也就是说,配置主从同步之前不一样的数据的那一部分,配置主从复制之后还是不一样。所以当配置主从复制之前需要把主数据库的数据复制到从数据库上。这样才能保证配置完主从复制之后,数据完全一致。