AB复制(重点)
一、什么是主从复制?
1、主从同步也叫AB复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是准实时的业务数据库。
2、主从复制的作用
1.做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。
2.架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足,此时做多库的存储,降低磁盘I/O访问的频率,提高单个机器的I/O性能。
3.读写分离,使数据库能支撑更大的并发。
1--在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;(主库写,从库读,降压)
2--在从服务器进行备份,避免备份期间影响主服务器服务;(确保数据安全)
为什么要搞主从同步?
因为只有一个服务器 上面跑着mysql 万一发生故障 数据会丢失 业务访问无法正常运行,业务量过大的情况下,对服务器的压力也是很大的,所以要考虑到服务要高可用,既降低服务器压力又提高可用性
写库(写入)专门放一个数据库 主库负责写入
查询(select)在专门放一个库 从库负责查询
AB复制也叫读写分离
二、主从同步原理(面试题)
主服务器把数据修改之后,会放入到二进制日志中(binary log)中,然后通过内部进程机制把日志传递到从服务器(从服务器在通过IO线程写入到中继日志)中并表示为中继日志(中继日志在通过sql线程传输给从服务器并执行),从而达到了主从一致
从服务器有俩个线程(I/O线程和SQL线程)I/O线程负责把主服务器上的日志拉取过来,slq线程是负责把日志执行的,从服务器干的活最多
主服务器写入数据,从服务器就写入,主服务器删除数据,从服务器就会接着删除数据
从服务器不能写入数据
主从同步也叫异步模式,时间会有0.几毫秒延时,
主服务器做好授权 从服务器具有授权的凭证进行把日志传递
丛库可以写数据库 但是主库是不会有的
三、M-S 架构GTID 基于事务ID复制
1、什么是GTID?
全局事务标识:global transaction identifiers
是用来代替传统复制的方法,GTID复制与普通复制模式的最大不同就是不需要指定二进制文件名和位置。
2、GTID工作原理
1、master更新数据时,会在事务前产生GTID,一同记录到binlog日志中。
2、slave端的i/o 线程将变更的binlog,写入到本地的relay log中。
3、sql线程从relay log中获取GTID,然后对比slave端的binlog是否有记录。
4、如果有记录,说明该GTID的事务已经执行,slave会忽略。
5、如果没有记